@ckb-ccc/core 0.0.6-alpha.0 → 0.0.7-alpha.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.
Files changed (215) hide show
  1. package/dist/address/address.advanced.d.ts.map +1 -1
  2. package/dist/address/address.advanced.js +2 -5
  3. package/dist/address/index.d.ts +1 -1
  4. package/dist/address/index.d.ts.map +1 -1
  5. package/dist/address/index.js +2 -5
  6. package/dist/ckb/script.d.ts +43 -1
  7. package/dist/ckb/script.d.ts.map +1 -1
  8. package/dist/ckb/script.js +51 -0
  9. package/dist/ckb/transaction.d.ts +198 -21
  10. package/dist/ckb/transaction.d.ts.map +1 -1
  11. package/dist/ckb/transaction.js +437 -21
  12. package/dist/client/advanced.d.ts +2 -0
  13. package/dist/client/advanced.d.ts.map +1 -1
  14. package/dist/client/advanced.js +2 -0
  15. package/dist/client/client.advanced.d.ts +10 -0
  16. package/dist/client/client.advanced.d.ts.map +1 -0
  17. package/dist/client/client.advanced.js +80 -0
  18. package/dist/client/client.d.ts +44 -8
  19. package/dist/client/client.d.ts.map +1 -1
  20. package/dist/client/client.js +137 -9
  21. package/dist/client/clientPublicMainnet.advanced.d.ts +4 -2
  22. package/dist/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  23. package/dist/client/clientPublicMainnet.advanced.js +102 -0
  24. package/dist/client/clientPublicMainnet.d.ts +4 -2
  25. package/dist/client/clientPublicMainnet.d.ts.map +1 -1
  26. package/dist/client/clientPublicMainnet.js +5 -1
  27. package/dist/client/clientPublicTestnet.advanced.d.ts +4 -2
  28. package/dist/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  29. package/dist/client/clientPublicTestnet.advanced.js +151 -0
  30. package/dist/client/clientPublicTestnet.d.ts +4 -2
  31. package/dist/client/clientPublicTestnet.d.ts.map +1 -1
  32. package/dist/client/clientPublicTestnet.js +6 -1
  33. package/dist/client/clientTypes.advanced.d.ts +23 -0
  34. package/dist/client/clientTypes.advanced.d.ts.map +1 -0
  35. package/dist/client/clientTypes.advanced.js +4 -0
  36. package/dist/client/clientTypes.d.ts +22 -36
  37. package/dist/client/clientTypes.d.ts.map +1 -1
  38. package/dist/client/clientTypes.js +15 -12
  39. package/dist/client/jsonRpc/index.d.ts +3 -3
  40. package/dist/client/jsonRpc/index.d.ts.map +1 -1
  41. package/dist/client/jsonRpc/index.js +3 -3
  42. package/dist/client/jsonRpc/transformers.d.ts +5 -7
  43. package/dist/client/jsonRpc/transformers.d.ts.map +1 -1
  44. package/dist/client/jsonRpc/transformers.js +8 -6
  45. package/dist/hasher/index.d.ts +1 -1
  46. package/dist/hasher/index.d.ts.map +1 -1
  47. package/dist/hasher/index.js +4 -2
  48. package/dist/num/index.d.ts +12 -0
  49. package/dist/num/index.d.ts.map +1 -1
  50. package/dist/num/index.js +21 -0
  51. package/dist/signer/btc/signerBtc.d.ts.map +1 -1
  52. package/dist/signer/btc/signerBtc.js +2 -1
  53. package/dist/signer/evm/signerEvm.d.ts.map +1 -1
  54. package/dist/signer/evm/signerEvm.js +5 -3
  55. package/dist/signer/nostr/signerNostr.d.ts.map +1 -1
  56. package/dist/signer/nostr/signerNostr.js +2 -1
  57. package/dist/utils/index.d.ts +1 -1
  58. package/dist/utils/index.d.ts.map +1 -1
  59. package/dist/utils/index.js +1 -1
  60. package/dist.commonjs/address/address.advanced.d.ts +29 -24
  61. package/dist.commonjs/address/address.advanced.d.ts.map +1 -1
  62. package/dist.commonjs/address/address.advanced.js +115 -92
  63. package/dist.commonjs/address/advanced.d.ts +1 -1
  64. package/dist.commonjs/address/advanced.js +30 -14
  65. package/dist.commonjs/address/index.d.ts +51 -44
  66. package/dist.commonjs/address/index.d.ts.map +1 -1
  67. package/dist.commonjs/address/index.js +84 -68
  68. package/dist.commonjs/advanced.d.ts +1 -1
  69. package/dist.commonjs/advanced.js +47 -22
  70. package/dist.commonjs/advancedBarrel.d.ts +1 -1
  71. package/dist.commonjs/advancedBarrel.js +30 -14
  72. package/dist.commonjs/barrel.d.ts +1 -1
  73. package/dist.commonjs/barrel.js +30 -14
  74. package/dist.commonjs/bytes/advanced.d.ts +11 -2
  75. package/dist.commonjs/bytes/index.d.ts +9 -3
  76. package/dist.commonjs/bytes/index.js +28 -26
  77. package/dist.commonjs/ckb/advanced.d.ts +1 -1
  78. package/dist.commonjs/ckb/advanced.js +47 -22
  79. package/dist.commonjs/ckb/index.d.ts +1 -1
  80. package/dist.commonjs/ckb/index.js +30 -14
  81. package/dist.commonjs/ckb/molecule.advanced/generated.d.ts +420 -260
  82. package/dist.commonjs/ckb/molecule.advanced/generated.js +1536 -1332
  83. package/dist.commonjs/ckb/molecule.advanced/index.d.ts +3 -3
  84. package/dist.commonjs/ckb/molecule.advanced/index.js +34 -18
  85. package/dist.commonjs/ckb/script.advanced.d.ts +1 -1
  86. package/dist.commonjs/ckb/script.advanced.js +12 -9
  87. package/dist.commonjs/ckb/script.d.ts +123 -77
  88. package/dist.commonjs/ckb/script.d.ts.map +1 -1
  89. package/dist.commonjs/ckb/script.js +221 -126
  90. package/dist.commonjs/ckb/transaction.advanced.d.ts +1 -1
  91. package/dist.commonjs/ckb/transaction.advanced.js +4 -4
  92. package/dist.commonjs/ckb/transaction.d.ts +796 -544
  93. package/dist.commonjs/ckb/transaction.d.ts.map +1 -1
  94. package/dist.commonjs/ckb/transaction.js +1371 -725
  95. package/dist.commonjs/client/advanced.d.ts +3 -1
  96. package/dist.commonjs/client/advanced.d.ts.map +1 -1
  97. package/dist.commonjs/client/advanced.js +32 -14
  98. package/dist.commonjs/client/client.advanced.d.ts +27 -0
  99. package/dist.commonjs/client/client.advanced.d.ts.map +1 -0
  100. package/dist.commonjs/client/client.advanced.js +116 -0
  101. package/dist.commonjs/client/client.d.ts +118 -22
  102. package/dist.commonjs/client/client.d.ts.map +1 -1
  103. package/dist.commonjs/client/client.js +218 -56
  104. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts +9 -3
  105. package/dist.commonjs/client/clientPublicMainnet.advanced.d.ts.map +1 -1
  106. package/dist.commonjs/client/clientPublicMainnet.advanced.js +144 -25
  107. package/dist.commonjs/client/clientPublicMainnet.d.ts +9 -5
  108. package/dist.commonjs/client/clientPublicMainnet.d.ts.map +1 -1
  109. package/dist.commonjs/client/clientPublicMainnet.js +18 -12
  110. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts +8 -3
  111. package/dist.commonjs/client/clientPublicTestnet.advanced.d.ts.map +1 -1
  112. package/dist.commonjs/client/clientPublicTestnet.advanced.js +204 -28
  113. package/dist.commonjs/client/clientPublicTestnet.d.ts +9 -5
  114. package/dist.commonjs/client/clientPublicTestnet.d.ts.map +1 -1
  115. package/dist.commonjs/client/clientPublicTestnet.js +14 -9
  116. package/dist.commonjs/client/clientTypes.advanced.d.ts +23 -0
  117. package/dist.commonjs/client/clientTypes.advanced.d.ts.map +1 -0
  118. package/dist.commonjs/client/clientTypes.advanced.js +8 -0
  119. package/dist.commonjs/client/clientTypes.d.ts +57 -46
  120. package/dist.commonjs/client/clientTypes.d.ts.map +1 -1
  121. package/dist.commonjs/client/clientTypes.js +60 -22
  122. package/dist.commonjs/client/index.d.ts +1 -1
  123. package/dist.commonjs/client/index.js +30 -14
  124. package/dist.commonjs/client/jsonRpc/advanced.d.ts +1 -1
  125. package/dist.commonjs/client/jsonRpc/advanced.js +30 -14
  126. package/dist.commonjs/client/jsonRpc/index.d.ts +94 -75
  127. package/dist.commonjs/client/jsonRpc/index.d.ts.map +1 -1
  128. package/dist.commonjs/client/jsonRpc/index.js +135 -108
  129. package/dist.commonjs/client/jsonRpc/transformers.d.ts +76 -38
  130. package/dist.commonjs/client/jsonRpc/transformers.d.ts.map +1 -1
  131. package/dist.commonjs/client/jsonRpc/transformers.js +174 -150
  132. package/dist.commonjs/client/jsonRpc/types.d.ts +38 -38
  133. package/dist.commonjs/fixedPoint/index.d.ts +9 -3
  134. package/dist.commonjs/fixedPoint/index.js +26 -20
  135. package/dist.commonjs/fixedPoint/index.test.d.ts +1 -1
  136. package/dist.commonjs/fixedPoint/index.test.js +42 -36
  137. package/dist.commonjs/hasher/advanced.d.ts +1 -1
  138. package/dist.commonjs/hasher/index.d.ts +37 -37
  139. package/dist.commonjs/hasher/index.d.ts.map +1 -1
  140. package/dist.commonjs/hasher/index.js +55 -46
  141. package/dist.commonjs/hex/index.d.ts +1 -1
  142. package/dist.commonjs/hex/index.js +1 -1
  143. package/dist.commonjs/index.d.ts +1 -1
  144. package/dist.commonjs/index.js +47 -22
  145. package/dist.commonjs/num/index.d.ts +13 -1
  146. package/dist.commonjs/num/index.d.ts.map +1 -1
  147. package/dist.commonjs/num/index.js +53 -19
  148. package/dist.commonjs/signer/btc/index.d.ts +1 -1
  149. package/dist.commonjs/signer/btc/index.js +30 -14
  150. package/dist.commonjs/signer/btc/signerBtc.d.ts +47 -47
  151. package/dist.commonjs/signer/btc/signerBtc.d.ts.map +1 -1
  152. package/dist.commonjs/signer/btc/signerBtc.js +89 -65
  153. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.d.ts +45 -45
  154. package/dist.commonjs/signer/btc/signerBtcPublicKeyReadonly.js +52 -52
  155. package/dist.commonjs/signer/btc/verify.d.ts +6 -2
  156. package/dist.commonjs/signer/btc/verify.js +10 -3
  157. package/dist.commonjs/signer/ckb/index.d.ts +1 -1
  158. package/dist.commonjs/signer/ckb/index.js +30 -14
  159. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.d.ts +45 -45
  160. package/dist.commonjs/signer/ckb/signerCkbScriptReadonly.js +56 -56
  161. package/dist.commonjs/signer/ckb/verifyJoyId.d.ts +6 -2
  162. package/dist.commonjs/signer/ckb/verifyJoyId.js +11 -8
  163. package/dist.commonjs/signer/dummy/alwaysError.d.ts +4 -4
  164. package/dist.commonjs/signer/dummy/alwaysError.js +7 -7
  165. package/dist.commonjs/signer/dummy/dummy.d.ts +7 -7
  166. package/dist.commonjs/signer/dummy/dummy.js +16 -16
  167. package/dist.commonjs/signer/dummy/index.d.ts +1 -1
  168. package/dist.commonjs/signer/dummy/index.js +30 -14
  169. package/dist.commonjs/signer/dummy/openLink.d.ts +4 -4
  170. package/dist.commonjs/signer/dummy/openLink.js +7 -7
  171. package/dist.commonjs/signer/evm/index.d.ts +1 -1
  172. package/dist.commonjs/signer/evm/index.js +30 -14
  173. package/dist.commonjs/signer/evm/signerEvm.d.ts +42 -38
  174. package/dist.commonjs/signer/evm/signerEvm.d.ts.map +1 -1
  175. package/dist.commonjs/signer/evm/signerEvm.js +105 -68
  176. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.d.ts +37 -37
  177. package/dist.commonjs/signer/evm/signerEvmAddressReadonly.js +42 -42
  178. package/dist.commonjs/signer/evm/verify.d.ts +6 -2
  179. package/dist.commonjs/signer/evm/verify.js +7 -2
  180. package/dist.commonjs/signer/index.d.ts +1 -1
  181. package/dist.commonjs/signer/index.js +30 -14
  182. package/dist.commonjs/signer/nostr/index.d.ts +1 -1
  183. package/dist.commonjs/signer/nostr/index.js +30 -14
  184. package/dist.commonjs/signer/nostr/signerNostr.d.ts +57 -57
  185. package/dist.commonjs/signer/nostr/signerNostr.d.ts.map +1 -1
  186. package/dist.commonjs/signer/nostr/signerNostr.js +100 -70
  187. package/dist.commonjs/signer/nostr/verify.d.ts +9 -3
  188. package/dist.commonjs/signer/nostr/verify.js +50 -39
  189. package/dist.commonjs/signer/signer/index.d.ts +156 -150
  190. package/dist.commonjs/signer/signer/index.js +208 -181
  191. package/dist.commonjs/utils/index.d.ts +38 -8
  192. package/dist.commonjs/utils/index.d.ts.map +1 -1
  193. package/dist.commonjs/utils/index.js +18 -12
  194. package/package.json +2 -2
  195. package/src/address/address.advanced.ts +2 -5
  196. package/src/address/index.ts +2 -5
  197. package/src/ckb/script.ts +62 -2
  198. package/src/ckb/transaction.ts +634 -46
  199. package/src/client/advanced.ts +2 -0
  200. package/src/client/client.advanced.ts +134 -0
  201. package/src/client/client.ts +225 -16
  202. package/src/client/clientPublicMainnet.advanced.ts +116 -2
  203. package/src/client/clientPublicMainnet.ts +8 -3
  204. package/src/client/clientPublicTestnet.advanced.ts +171 -2
  205. package/src/client/clientPublicTestnet.ts +9 -3
  206. package/src/client/clientTypes.advanced.ts +26 -0
  207. package/src/client/clientTypes.ts +41 -43
  208. package/src/client/jsonRpc/index.ts +4 -4
  209. package/src/client/jsonRpc/transformers.ts +13 -11
  210. package/src/hasher/index.ts +4 -2
  211. package/src/num/index.ts +22 -0
  212. package/src/signer/btc/signerBtc.ts +2 -1
  213. package/src/signer/evm/signerEvm.ts +5 -3
  214. package/src/signer/nostr/signerNostr.ts +2 -1
  215. package/src/utils/index.ts +6 -2
@@ -1,4 +1,6 @@
1
+ export * from "./client.advanced";
1
2
  export * from "./clientPublicMainnet.advanced";
2
3
  export * from "./clientPublicTestnet.advanced";
4
+ export * from "./clientTypes.advanced";
3
5
  export * from "./jsonRpc/advanced";
4
- //# sourceMappingURL=advanced.d.ts.map
6
+ //# sourceMappingURL=advanced.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/client/advanced.ts"],"names":[],"mappings":"AAAA,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../src/client/advanced.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC"}
@@ -1,19 +1,37 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
2
+ var __createBinding =
3
+ (this && this.__createBinding) ||
4
+ (Object.create
5
+ ? function (o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (
9
+ !desc ||
10
+ ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)
11
+ ) {
12
+ desc = {
13
+ enumerable: true,
14
+ get: function () {
15
+ return m[k];
16
+ },
17
+ };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }
21
+ : function (o, m, k, k2) {
22
+ if (k2 === undefined) k2 = k;
23
+ o[k2] = m[k];
24
+ });
25
+ var __exportStar =
26
+ (this && this.__exportStar) ||
27
+ function (m, exports) {
28
+ for (var p in m)
29
+ if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p))
30
+ __createBinding(exports, m, p);
31
+ };
16
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
+ __exportStar(require("./client.advanced"), exports);
17
34
  __exportStar(require("./clientPublicMainnet.advanced"), exports);
18
35
  __exportStar(require("./clientPublicTestnet.advanced"), exports);
36
+ __exportStar(require("./clientTypes.advanced"), exports);
19
37
  __exportStar(require("./jsonRpc/advanced"), exports);
@@ -0,0 +1,27 @@
1
+ import { CellLike, ScriptLike } from "../ckb";
2
+ import { HexLike } from "../hex";
3
+ import { NumLike } from "../num";
4
+ import { ClientCollectableSearchKeyLike } from "./clientTypes.advanced";
5
+ export declare function filterData(
6
+ dataLike: HexLike,
7
+ filterLike: HexLike | undefined,
8
+ filterMode: "exact" | "prefix" | "partial",
9
+ ): boolean;
10
+ export declare function filterScript(
11
+ valueLike: ScriptLike | undefined,
12
+ filterLike: ScriptLike | undefined,
13
+ filterMode: "prefix" | "exact" | "partial",
14
+ ): boolean;
15
+ export declare function filterNumByRange(
16
+ lengthLike: NumLike,
17
+ range: [NumLike, NumLike] | undefined,
18
+ ): boolean;
19
+ export declare function filterScriptByLenRange(
20
+ valueLike?: ScriptLike,
21
+ scriptLenRange?: [NumLike, NumLike],
22
+ ): boolean;
23
+ export declare function filterCell(
24
+ searchKeyLike: ClientCollectableSearchKeyLike,
25
+ cellLike: CellLike,
26
+ ): boolean;
27
+ //# sourceMappingURL=client.advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.advanced.d.ts","sourceRoot":"","sources":["../../src/client/client.advanced.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,QAAQ,EAAU,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAW,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAW,MAAM,QAAQ,CAAC;AAE1C,OAAO,EACL,8BAA8B,EAE/B,MAAM,wBAAwB,CAAC;AAEhC,wBAAgB,UAAU,CACxB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,GAAG,SAAS,EAC/B,UAAU,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GACzC,OAAO,CAgBT;AAED,wBAAgB,YAAY,CAC1B,SAAS,EAAE,UAAU,GAAG,SAAS,EACjC,UAAU,EAAE,UAAU,GAAG,SAAS,EAClC,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GACzC,OAAO,CAkBT;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,OAAO,EACnB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,WAStC;AAED,wBAAgB,sBAAsB,CACpC,SAAS,CAAC,EAAE,UAAU,EACtB,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAClC,OAAO,CAYT;AAED,wBAAgB,UAAU,CACxB,aAAa,EAAE,8BAA8B,EAC7C,QAAQ,EAAE,QAAQ,GACjB,OAAO,CA4CT"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterCell =
4
+ exports.filterScriptByLenRange =
5
+ exports.filterNumByRange =
6
+ exports.filterScript =
7
+ exports.filterData =
8
+ void 0;
9
+ const bytes_1 = require("../bytes");
10
+ const ckb_1 = require("../ckb");
11
+ const hex_1 = require("../hex");
12
+ const num_1 = require("../num");
13
+ const clientTypes_1 = require("./clientTypes");
14
+ const clientTypes_advanced_1 = require("./clientTypes.advanced");
15
+ function filterData(dataLike, filterLike, filterMode) {
16
+ if (!filterLike) {
17
+ return true;
18
+ }
19
+ const data = (0, hex_1.hexFrom)(dataLike);
20
+ const filter = (0, hex_1.hexFrom)(filterLike);
21
+ if (
22
+ (filterMode === "exact" && data !== filter) ||
23
+ (filterMode === "prefix" && !data.startsWith(filter)) ||
24
+ (filterMode === "partial" && data.search(filter) === -1)
25
+ ) {
26
+ return false;
27
+ }
28
+ return true;
29
+ }
30
+ exports.filterData = filterData;
31
+ function filterScript(valueLike, filterLike, filterMode) {
32
+ if (!filterLike) {
33
+ return true;
34
+ }
35
+ if (!valueLike) {
36
+ return false;
37
+ }
38
+ const value = ckb_1.Script.from(valueLike);
39
+ const filter = ckb_1.Script.from(filterLike);
40
+ if (
41
+ value.codeHash !== filter.codeHash ||
42
+ value.hashType !== filter.hashType
43
+ ) {
44
+ return false;
45
+ }
46
+ return filterData(value.args, filter?.args, filterMode);
47
+ }
48
+ exports.filterScript = filterScript;
49
+ function filterNumByRange(lengthLike, range) {
50
+ if (!range) {
51
+ return true;
52
+ }
53
+ const length = (0, num_1.numFrom)(lengthLike);
54
+ const [lower, upper] = (0, clientTypes_advanced_1.clientSearchKeyRangeFrom)(
55
+ range,
56
+ );
57
+ return lower <= length && length < upper;
58
+ }
59
+ exports.filterNumByRange = filterNumByRange;
60
+ function filterScriptByLenRange(valueLike, scriptLenRange) {
61
+ if (!scriptLenRange) {
62
+ return true;
63
+ }
64
+ const len = (() => {
65
+ if (!valueLike) {
66
+ return 0;
67
+ }
68
+ return (
69
+ (0, bytes_1.bytesFrom)(ckb_1.Script.from(valueLike).args).length + 33
70
+ );
71
+ })();
72
+ return filterNumByRange(len, scriptLenRange);
73
+ }
74
+ exports.filterScriptByLenRange = filterScriptByLenRange;
75
+ function filterCell(searchKeyLike, cellLike) {
76
+ const key = clientTypes_1.ClientIndexerSearchKey.from(searchKeyLike);
77
+ const cell = ckb_1.Cell.from(cellLike);
78
+ if (key.scriptType === "lock") {
79
+ if (
80
+ !filterScript(cell.cellOutput.lock, key.script, key.scriptSearchMode) ||
81
+ !filterScript(cell.cellOutput.type, key.filter?.script, "prefix") ||
82
+ !filterScriptByLenRange(cell.cellOutput.type, key.filter?.scriptLenRange)
83
+ ) {
84
+ return false;
85
+ }
86
+ }
87
+ if (key.scriptType === "type") {
88
+ if (
89
+ !filterScript(cell.cellOutput.type, key.script, key.scriptSearchMode) ||
90
+ !filterScript(cell.cellOutput.lock, key.filter?.script, "prefix") ||
91
+ !filterScriptByLenRange(cell.cellOutput.lock, key.filter?.scriptLenRange)
92
+ ) {
93
+ return false;
94
+ }
95
+ }
96
+ if (
97
+ !filterData(
98
+ cell.outputData,
99
+ key.filter?.outputData,
100
+ key.filter?.outputDataSearchMode ?? "prefix",
101
+ ) ||
102
+ !filterNumByRange(
103
+ (0, bytes_1.bytesFrom)(cell.outputData).length,
104
+ key.filter?.outputDataLenRange,
105
+ )
106
+ ) {
107
+ return false;
108
+ }
109
+ if (
110
+ !filterNumByRange(cell.cellOutput.capacity, key.filter?.outputCapacityRange)
111
+ ) {
112
+ return false;
113
+ }
114
+ return true;
115
+ }
116
+ exports.filterCell = filterCell;
@@ -1,28 +1,124 @@
1
- import { Cell, OutPointLike, Script, ScriptLike, TransactionLike } from "../ckb";
1
+ import {
2
+ Cell,
3
+ CellDep,
4
+ CellDepLike,
5
+ CellLike,
6
+ OutPointLike,
7
+ Script,
8
+ ScriptLike,
9
+ TransactionLike,
10
+ } from "../ckb";
2
11
  import { Hex, HexLike } from "../hex";
3
12
  import { Num, NumLike } from "../num";
4
- import { ClientFindCellsResponse, ClientIndexerSearchKeyLike, ClientTransactionResponse, OutputsValidator } from "./clientTypes";
13
+ import {
14
+ ClientFindCellsResponse,
15
+ ClientIndexerSearchKeyLike,
16
+ ClientTransactionResponse,
17
+ OutputsValidator,
18
+ } from "./clientTypes";
19
+ import { ClientCollectableSearchKeyLike } from "./clientTypes.advanced";
5
20
  export declare enum KnownScript {
6
- Secp256k1Blake160 = "Secp256k1Blake160",
7
- Secp256k1Multisig = "Secp256k1Multisig",
8
- AnyoneCanPay = "AnyoneCanPay",
9
- JoyId = "JoyId",
10
- COTA = "COTA",
11
- OmniLock = "OmniLock",
12
- NostrLock = "NostrLock"
21
+ Secp256k1Blake160 = "Secp256k1Blake160",
22
+ Secp256k1Multisig = "Secp256k1Multisig",
23
+ AnyoneCanPay = "AnyoneCanPay",
24
+ TypeId = "TypeId",
25
+ XUdt = "XUdt",
26
+ JoyId = "JoyId",
27
+ COTA = "COTA",
28
+ OmniLock = "OmniLock",
29
+ NostrLock = "NostrLock",
30
+ SingleUseLock = "SingleUseLock",
31
+ OutputTypeProxyLock = "OutputTypeProxyLock",
32
+ }
33
+ export type CellDepInfoLike = {
34
+ cellDep: CellDepLike;
35
+ type?: ScriptLike;
36
+ };
37
+ export declare class CellDepInfo {
38
+ cellDep: CellDep;
39
+ type?: Script | undefined;
40
+ constructor(cellDep: CellDep, type?: Script | undefined);
41
+ static from(cellDepInfoLike: CellDepInfoLike): CellDepInfo;
13
42
  }
14
43
  export declare abstract class Client {
15
- abstract get url(): string;
16
- abstract get addressPrefix(): string;
17
- abstract getKnownScript(script: KnownScript): Promise<Pick<Script, "codeHash" | "hashType">>;
18
- abstract sendTransaction(transaction: TransactionLike, validator?: OutputsValidator): Promise<Hex>;
19
- abstract getTransaction(txHash: HexLike): Promise<ClientTransactionResponse | null>;
20
- getCell(outPoint: OutPointLike): Promise<Cell | null>;
21
- abstract findCellsPaged(key: ClientIndexerSearchKeyLike, order?: "asc" | "desc", limit?: NumLike, after?: string): Promise<ClientFindCellsResponse>;
22
- findCells(key: ClientIndexerSearchKeyLike, order?: "asc" | "desc", limit?: number): AsyncGenerator<Cell>;
23
- findCellsByLockAndType(lock: ScriptLike, type: ScriptLike, withData?: boolean): AsyncGenerator<Cell>;
24
- abstract getCellsCapacity(key: ClientIndexerSearchKeyLike): Promise<Num>;
25
- getBalanceSingle(lock: ScriptLike): Promise<Num>;
26
- getBalance(locks: ScriptLike[]): Promise<Num>;
44
+ private readonly cachedTransactions;
45
+ private readonly unusableOutPoints;
46
+ private readonly usableCells;
47
+ private readonly knownCells;
48
+ abstract get url(): string;
49
+ abstract get addressPrefix(): string;
50
+ abstract getKnownScript(script: KnownScript): Promise<
51
+ Pick<Script, "codeHash" | "hashType"> & {
52
+ cellDeps: CellDepInfo[];
53
+ }
54
+ >;
55
+ markUsable(cellLike: CellLike): Promise<void>;
56
+ markUnusable(outPointLike: OutPointLike): Promise<void>;
57
+ abstract sendTransactionNoCache(
58
+ transaction: TransactionLike,
59
+ validator?: OutputsValidator,
60
+ ): Promise<Hex>;
61
+ abstract getTransactionNoCache(
62
+ txHash: HexLike,
63
+ ): Promise<ClientTransactionResponse | null>;
64
+ getCell(outPointLike: OutPointLike): Promise<Cell | null>;
65
+ abstract findCellsPagedNoCache(
66
+ key: ClientIndexerSearchKeyLike,
67
+ order?: "asc" | "desc",
68
+ limit?: NumLike,
69
+ after?: string,
70
+ ): Promise<ClientFindCellsResponse>;
71
+ findCellsPaged(
72
+ key: ClientIndexerSearchKeyLike,
73
+ order?: "asc" | "desc",
74
+ limit?: NumLike,
75
+ after?: string,
76
+ ): Promise<ClientFindCellsResponse>;
77
+ findCells(
78
+ key: ClientIndexerSearchKeyLike,
79
+ order?: "asc" | "desc",
80
+ limit?: number,
81
+ ): AsyncGenerator<Cell>;
82
+ /**
83
+ * Find cells by search key designed for collectable cells.
84
+ *
85
+ * @param key - The search key.
86
+ * @returns A async generator for yielding cells.
87
+ */
88
+ findCellsByCollectableSearchKey(
89
+ keyLike: ClientCollectableSearchKeyLike,
90
+ order?: "asc" | "desc",
91
+ limit?: number,
92
+ ): AsyncGenerator<Cell>;
93
+ findCellsByLockAndType(
94
+ lock: ScriptLike,
95
+ type: ScriptLike,
96
+ withData?: boolean,
97
+ order?: "asc" | "desc",
98
+ limit?: number,
99
+ ): AsyncGenerator<Cell>;
100
+ findCellsByType(
101
+ type: ScriptLike,
102
+ withData?: boolean,
103
+ order?: "asc" | "desc",
104
+ limit?: number,
105
+ ): AsyncGenerator<Cell>;
106
+ findSingletonCellByType(
107
+ type: ScriptLike,
108
+ withData?: boolean,
109
+ ): Promise<Cell | undefined>;
110
+ getCellDeps(
111
+ ...cellDepsInfoLike: (CellDepInfoLike | CellDepInfoLike[])[]
112
+ ): Promise<CellDep[]>;
113
+ abstract getCellsCapacity(key: ClientIndexerSearchKeyLike): Promise<Num>;
114
+ getBalanceSingle(lock: ScriptLike): Promise<Num>;
115
+ getBalance(locks: ScriptLike[]): Promise<Num>;
116
+ sendTransaction(
117
+ transaction: TransactionLike,
118
+ validator?: OutputsValidator,
119
+ ): Promise<Hex>;
120
+ getTransaction(
121
+ txHashLike: HexLike,
122
+ ): Promise<ClientTransactionResponse | null>;
27
123
  }
28
- //# sourceMappingURL=client.d.ts.map
124
+ //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,eAAe,EAChB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAW,MAAM,QAAQ,CAAC;AAE/C,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AAEvB,oBAAY,WAAW;IACrB,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,SAAS,cAAc;CACxB;AAED,8BAAsB,MAAM;IAC1B,QAAQ,KAAK,GAAG,IAAI,MAAM,CAAC;IAC3B,QAAQ,KAAK,aAAa,IAAI,MAAM,CAAC;IAErC,QAAQ,CAAC,cAAc,CACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;IAEjD,QAAQ,CAAC,eAAe,CACtB,WAAW,EAAE,eAAe,EAC5B,SAAS,CAAC,EAAE,gBAAgB,GAC3B,OAAO,CAAC,GAAG,CAAC;IACf,QAAQ,CAAC,cAAc,CACrB,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAEtC,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAmB3D,QAAQ,CAAC,cAAc,CACrB,GAAG,EAAE,0BAA0B,EAC/B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,CAAC,EAAE,OAAO,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,uBAAuB,CAAC;IAE5B,SAAS,CACd,GAAG,EAAE,0BAA0B,EAC/B,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,EACtB,KAAK,SAAK,GACT,cAAc,CAAC,IAAI,CAAC;IAoBvB,sBAAsB,CACpB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,EAChB,QAAQ,UAAO,GACd,cAAc,CAAC,IAAI,CAAC;IAYvB,QAAQ,CAAC,gBAAgB,CAAC,GAAG,EAAE,0BAA0B,GAAG,OAAO,CAAC,GAAG,CAAC;IAElE,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAYhD,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;CAOpD"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
@@ -1,74 +1,236 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Client = exports.KnownScript = void 0;
3
+ exports.Client = exports.CellDepInfo = exports.KnownScript = void 0;
4
4
  const ckb_1 = require("../ckb");
5
5
  const fixedPoint_1 = require("../fixedPoint");
6
+ const hex_1 = require("../hex");
6
7
  const num_1 = require("../num");
7
8
  const utils_1 = require("../utils");
9
+ const client_advanced_1 = require("./client.advanced");
10
+ const clientTypes_1 = require("./clientTypes");
8
11
  var KnownScript;
9
12
  (function (KnownScript) {
10
- KnownScript["Secp256k1Blake160"] = "Secp256k1Blake160";
11
- KnownScript["Secp256k1Multisig"] = "Secp256k1Multisig";
12
- KnownScript["AnyoneCanPay"] = "AnyoneCanPay";
13
- KnownScript["JoyId"] = "JoyId";
14
- KnownScript["COTA"] = "COTA";
15
- KnownScript["OmniLock"] = "OmniLock";
16
- KnownScript["NostrLock"] = "NostrLock";
13
+ KnownScript["Secp256k1Blake160"] = "Secp256k1Blake160";
14
+ KnownScript["Secp256k1Multisig"] = "Secp256k1Multisig";
15
+ KnownScript["AnyoneCanPay"] = "AnyoneCanPay";
16
+ KnownScript["TypeId"] = "TypeId";
17
+ KnownScript["XUdt"] = "XUdt";
18
+ KnownScript["JoyId"] = "JoyId";
19
+ KnownScript["COTA"] = "COTA";
20
+ KnownScript["OmniLock"] = "OmniLock";
21
+ KnownScript["NostrLock"] = "NostrLock";
22
+ KnownScript["SingleUseLock"] = "SingleUseLock";
23
+ KnownScript["OutputTypeProxyLock"] = "OutputTypeProxyLock";
17
24
  })(KnownScript || (exports.KnownScript = KnownScript = {}));
25
+ class CellDepInfo {
26
+ constructor(cellDep, type) {
27
+ this.cellDep = cellDep;
28
+ this.type = type;
29
+ }
30
+ static from(cellDepInfoLike) {
31
+ return new CellDepInfo(
32
+ ckb_1.CellDep.from(cellDepInfoLike.cellDep),
33
+ (0, utils_1.apply)(ckb_1.Script.from, cellDepInfoLike.type),
34
+ );
35
+ }
36
+ }
37
+ exports.CellDepInfo = CellDepInfo;
18
38
  class Client {
19
- async getCell(outPoint) {
20
- const transaction = await this.getTransaction(outPoint.txHash);
21
- if (!transaction) {
22
- return null;
23
- }
24
- const index = Number((0, num_1.numFrom)(outPoint.index));
25
- if (index >= transaction.transaction.outputs.length) {
26
- return null;
27
- }
28
- return ckb_1.Cell.from({
29
- outPoint,
30
- cellOutput: transaction.transaction.outputs[index],
31
- outputData: transaction.transaction.outputsData[index] ?? "0x",
32
- blockNumber: transaction.blockNumber,
33
- });
39
+ constructor() {
40
+ this.cachedTransactions = [];
41
+ this.unusableOutPoints = [];
42
+ this.usableCells = [];
43
+ this.knownCells = [];
44
+ }
45
+ async markUsable(cellLike) {
46
+ const cell = ckb_1.Cell.from(cellLike).clone();
47
+ this.usableCells.push(cell);
48
+ this.knownCells.push(cell);
49
+ const index = this.unusableOutPoints.findIndex((o) => cell.outPoint.eq(o));
50
+ if (index !== -1) {
51
+ this.unusableOutPoints.splice(index, 1);
34
52
  }
35
- async *findCells(key, order, limit = 10) {
36
- let last = undefined;
37
- while (true) {
38
- const { cells, lastCursor } = await this.findCellsPaged(key, order, limit, last);
39
- for (const cell of cells) {
40
- yield cell;
41
- }
42
- if (cells.length === 0 || cells.length < limit) {
43
- return;
44
- }
45
- last = lastCursor;
46
- }
53
+ }
54
+ async markUnusable(outPointLike) {
55
+ const outPoint = ckb_1.OutPoint.from(outPointLike);
56
+ this.unusableOutPoints.push(outPoint.clone());
57
+ const index = this.usableCells.findIndex((c) => c.outPoint.eq(outPoint));
58
+ if (index !== -1) {
59
+ this.usableCells.splice(index, 1);
47
60
  }
48
- findCellsByLockAndType(lock, type, withData = true) {
49
- return this.findCells({
50
- script: lock,
51
- scriptType: "lock",
52
- scriptSearchMode: "exact",
53
- filter: {
54
- script: type,
55
- },
56
- withData,
57
- });
61
+ }
62
+ async getCell(outPointLike) {
63
+ const outPoint = ckb_1.OutPoint.from(outPointLike);
64
+ const cached = this.knownCells.find((cell) => cell.outPoint.eq(outPoint));
65
+ if (cached) {
66
+ return cached.clone();
67
+ }
68
+ const transaction = await this.getTransactionNoCache(outPoint.txHash);
69
+ if (!transaction) {
70
+ return null;
58
71
  }
59
- async getBalanceSingle(lock) {
60
- return this.getCellsCapacity({
61
- script: lock,
62
- scriptType: "lock",
63
- scriptSearchMode: "exact",
64
- filter: {
65
- scriptLenRange: [0, 1],
66
- outputDataLenRange: [0, 1],
67
- },
72
+ const index = Number((0, num_1.numFrom)(outPoint.index));
73
+ if (index >= transaction.transaction.outputs.length) {
74
+ return null;
75
+ }
76
+ const cell = ckb_1.Cell.from({
77
+ outPoint,
78
+ cellOutput: transaction.transaction.outputs[index],
79
+ outputData: transaction.transaction.outputsData[index] ?? "0x",
80
+ });
81
+ this.knownCells.push(cell);
82
+ return cell.clone();
83
+ }
84
+ async findCellsPaged(key, order, limit, after) {
85
+ const res = await this.findCellsPagedNoCache(key, order, limit, after);
86
+ this.knownCells.push(...res.cells);
87
+ return res;
88
+ }
89
+ async *findCells(key, order, limit = 10) {
90
+ let last = undefined;
91
+ while (true) {
92
+ const { cells, lastCursor } = await this.findCellsPaged(
93
+ key,
94
+ order,
95
+ limit,
96
+ last,
97
+ );
98
+ for (const cell of cells) {
99
+ yield cell;
100
+ }
101
+ if (cells.length === 0 || cells.length < limit) {
102
+ return;
103
+ }
104
+ last = lastCursor;
105
+ }
106
+ }
107
+ /**
108
+ * Find cells by search key designed for collectable cells.
109
+ *
110
+ * @param key - The search key.
111
+ * @returns A async generator for yielding cells.
112
+ */
113
+ async *findCellsByCollectableSearchKey(keyLike, order, limit = 10) {
114
+ const key = clientTypes_1.ClientIndexerSearchKey.from(keyLike);
115
+ for (const cell of this.usableCells) {
116
+ if ((0, client_advanced_1.filterCell)(key, cell)) {
117
+ yield cell;
118
+ }
119
+ }
120
+ for await (const cell of this.findCells(key, order, limit)) {
121
+ if (!this.unusableOutPoints.some((o) => o.eq(cell.outPoint))) {
122
+ yield cell;
123
+ }
124
+ }
125
+ }
126
+ findCellsByLockAndType(lock, type, withData = true, order, limit = 10) {
127
+ return this.findCellsByCollectableSearchKey(
128
+ {
129
+ script: lock,
130
+ scriptType: "lock",
131
+ scriptSearchMode: "exact",
132
+ filter: {
133
+ script: type,
134
+ },
135
+ withData,
136
+ },
137
+ order,
138
+ limit,
139
+ );
140
+ }
141
+ findCellsByType(type, withData = true, order, limit = 10) {
142
+ return this.findCellsByCollectableSearchKey(
143
+ {
144
+ script: type,
145
+ scriptType: "type",
146
+ scriptSearchMode: "exact",
147
+ withData,
148
+ },
149
+ order,
150
+ limit,
151
+ );
152
+ }
153
+ async findSingletonCellByType(type, withData = false) {
154
+ for await (const cell of this.findCellsByType(
155
+ type,
156
+ withData,
157
+ undefined,
158
+ 1,
159
+ )) {
160
+ return cell;
161
+ }
162
+ }
163
+ async getCellDeps(...cellDepsInfoLike) {
164
+ return Promise.all(
165
+ cellDepsInfoLike.flat().map(async (infoLike) => {
166
+ const { cellDep, type } = CellDepInfo.from(infoLike);
167
+ if (type === undefined) {
168
+ return cellDep;
169
+ }
170
+ const found = await this.findSingletonCellByType(type);
171
+ if (!found) {
172
+ return cellDep;
173
+ }
174
+ return ckb_1.CellDep.from({
175
+ outPoint: found.outPoint,
176
+ depType: cellDep.depType,
68
177
  });
178
+ }),
179
+ );
180
+ }
181
+ async getBalanceSingle(lock) {
182
+ return this.getCellsCapacity({
183
+ script: lock,
184
+ scriptType: "lock",
185
+ scriptSearchMode: "exact",
186
+ filter: {
187
+ scriptLenRange: [0, 1],
188
+ outputDataLenRange: [0, 1],
189
+ },
190
+ });
191
+ }
192
+ async getBalance(locks) {
193
+ return (0, utils_1.reduceAsync)(
194
+ locks,
195
+ async (acc, lock) => acc + (await this.getBalanceSingle(lock)),
196
+ fixedPoint_1.Zero,
197
+ );
198
+ }
199
+ async sendTransaction(transaction, validator) {
200
+ const tx = ckb_1.Transaction.from(transaction);
201
+ const txHash = await this.sendTransactionNoCache(tx, validator);
202
+ this.cachedTransactions.push(tx.clone());
203
+ await Promise.all(
204
+ tx.inputs.map((i) => this.markUnusable(i.previousOutput)),
205
+ );
206
+ await Promise.all(
207
+ tx.outputs.map((o, i) =>
208
+ this.markUsable({
209
+ cellOutput: o,
210
+ outputData: tx.outputsData[i],
211
+ outPoint: {
212
+ txHash,
213
+ index: i,
214
+ },
215
+ }),
216
+ ),
217
+ );
218
+ return txHash;
219
+ }
220
+ async getTransaction(txHashLike) {
221
+ const txHash = (0, hex_1.hexFrom)(txHashLike);
222
+ const res = await this.getTransactionNoCache(txHash);
223
+ if (res !== null) {
224
+ return res;
69
225
  }
70
- async getBalance(locks) {
71
- return (0, utils_1.reduceAsync)(locks, async (acc, lock) => acc + (await this.getBalanceSingle(lock)), fixedPoint_1.Zero);
226
+ const tx = this.cachedTransactions.find((t) => t.hash() === txHash);
227
+ if (!tx) {
228
+ return null;
72
229
  }
230
+ return {
231
+ transaction: tx,
232
+ status: "proposed",
233
+ };
234
+ }
73
235
  }
74
236
  exports.Client = Client;