@ckb-ccc/core 1.20.0 → 1.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/advanced.d.mts +1 -1
- package/dist/advanced.mjs +1 -1
- package/dist/{advancedBarrel-CZxkR1dk.d.mts → advancedBarrel-Di0YBlWc.d.mts} +8 -4
- package/dist/{advancedBarrel-CZxkR1dk.d.mts.map → advancedBarrel-Di0YBlWc.d.mts.map} +1 -1
- package/dist/advancedBarrel.d.mts +1 -1
- package/dist/advancedBarrel.mjs +1 -1
- package/dist/{barrel-CqiwnGqc.mjs → barrel-G6e8gZrB.mjs} +3 -3
- package/dist/{barrel-CqiwnGqc.mjs.map → barrel-G6e8gZrB.mjs.map} +1 -1
- package/dist/barrel.d.mts +1 -1
- package/dist/barrel.mjs +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/{transformers-BJyj6caX.mjs → transformers-DxPrDQko.mjs} +2 -2
- package/dist/{transformers-BJyj6caX.mjs.map → transformers-DxPrDQko.mjs.map} +1 -1
- package/dist.commonjs/advanced.d.ts +1 -1
- package/dist.commonjs/advanced.js +1 -1
- package/dist.commonjs/{advancedBarrel-Czsr2VlG.d.ts → advancedBarrel-B57gAzdK.d.ts} +8 -4
- package/dist.commonjs/{advancedBarrel-Czsr2VlG.d.ts.map → advancedBarrel-B57gAzdK.d.ts.map} +1 -1
- package/dist.commonjs/advancedBarrel.d.ts +1 -1
- package/dist.commonjs/advancedBarrel.js +1 -1
- package/dist.commonjs/{barrel-BCS94_-c.js → barrel-BOCFtFjq.js} +3 -3
- package/dist.commonjs/{barrel-BCS94_-c.js.map → barrel-BOCFtFjq.js.map} +1 -1
- package/dist.commonjs/barrel.d.ts +1 -1
- package/dist.commonjs/barrel.js +1 -1
- package/dist.commonjs/index.d.ts +1 -1
- package/dist.commonjs/index.js +1 -1
- package/dist.commonjs/{transformers-Cue1Z8Up.js → transformers-0FqvcPy2.js} +2 -2
- package/dist.commonjs/{transformers-Cue1Z8Up.js.map → transformers-0FqvcPy2.js.map} +1 -1
- package/package.json +1 -1
- package/src/ckb/transaction.ts +2 -0
- package/src/signer/jsonRpc/signer.ts +61 -8
package/package.json
CHANGED
package/src/ckb/transaction.ts
CHANGED
|
@@ -2272,6 +2272,7 @@ export class Transaction extends Entity.Base<TransactionLike, Transaction>() {
|
|
|
2272
2272
|
type: ScriptLike,
|
|
2273
2273
|
balanceTweak?: NumLike,
|
|
2274
2274
|
): Promise<number> {
|
|
2275
|
+
const scriptSize = Script.from(type).occupiedSize;
|
|
2275
2276
|
const expectedBalance =
|
|
2276
2277
|
this.getOutputsUdtBalance(type) + numFrom(balanceTweak ?? 0);
|
|
2277
2278
|
if (expectedBalance === Zero) {
|
|
@@ -2302,6 +2303,7 @@ export class Transaction extends Entity.Base<TransactionLike, Transaction>() {
|
|
|
2302
2303
|
from,
|
|
2303
2304
|
{
|
|
2304
2305
|
script: type,
|
|
2306
|
+
scriptLenRange: [scriptSize, scriptSize + 1],
|
|
2305
2307
|
outputDataLenRange: [16, numFrom("0xffffffff")],
|
|
2306
2308
|
},
|
|
2307
2309
|
(acc, { outputData }, _i, collected) => {
|
|
@@ -24,6 +24,9 @@ export type SignerJsonRpcConfig = Omit<
|
|
|
24
24
|
export class SignerJsonRpc extends Signer {
|
|
25
25
|
private connecting?: Promise<void>;
|
|
26
26
|
private disconnecting?: Promise<void>;
|
|
27
|
+
private scriptsPromise?: Promise<Script[]>;
|
|
28
|
+
private internalAddressPromise?: Promise<string>;
|
|
29
|
+
private identityPromise?: Promise<string>;
|
|
27
30
|
private readonly replacedListeners = new Set<() => void>();
|
|
28
31
|
|
|
29
32
|
private constructor(
|
|
@@ -90,6 +93,7 @@ export class SignerJsonRpc extends Signer {
|
|
|
90
93
|
}
|
|
91
94
|
|
|
92
95
|
disconnect(): Promise<void> {
|
|
96
|
+
this.clearReadCache();
|
|
93
97
|
if (this.disconnecting) {
|
|
94
98
|
return this.disconnecting;
|
|
95
99
|
}
|
|
@@ -114,6 +118,7 @@ export class SignerJsonRpc extends Signer {
|
|
|
114
118
|
|
|
115
119
|
replace() {
|
|
116
120
|
this.connecting = undefined;
|
|
121
|
+
this.clearReadCache();
|
|
117
122
|
const listeners = [...this.replacedListeners];
|
|
118
123
|
this.replacedListeners.clear();
|
|
119
124
|
listeners.forEach((listener) => listener());
|
|
@@ -128,9 +133,24 @@ export class SignerJsonRpc extends Signer {
|
|
|
128
133
|
);
|
|
129
134
|
}
|
|
130
135
|
|
|
131
|
-
getScripts
|
|
132
|
-
|
|
133
|
-
|
|
136
|
+
getScripts(): Promise<Script[]> {
|
|
137
|
+
if (this.scriptsPromise) {
|
|
138
|
+
return this.scriptsPromise.then((scripts) => [...scripts]);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const pending = this.requestor
|
|
142
|
+
.request("get_scripts", [], [], (scripts: JsonRpcScript[]) =>
|
|
143
|
+
scripts.map((script) => JsonRpcTransformers.scriptTo(script)),
|
|
144
|
+
)
|
|
145
|
+
.catch((cause: unknown) => {
|
|
146
|
+
if (this.scriptsPromise === pending) {
|
|
147
|
+
this.scriptsPromise = undefined;
|
|
148
|
+
}
|
|
149
|
+
throw cause;
|
|
150
|
+
}) as Promise<Script[]>;
|
|
151
|
+
this.scriptsPromise = pending;
|
|
152
|
+
return pending.then((scripts) => [...scripts]);
|
|
153
|
+
}
|
|
134
154
|
|
|
135
155
|
async getAddressObjs() {
|
|
136
156
|
return (await this.getScripts()).map((script) =>
|
|
@@ -138,12 +158,39 @@ export class SignerJsonRpc extends Signer {
|
|
|
138
158
|
);
|
|
139
159
|
}
|
|
140
160
|
|
|
141
|
-
getInternalAddress
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
161
|
+
getInternalAddress(): Promise<string> {
|
|
162
|
+
if (this.internalAddressPromise) {
|
|
163
|
+
return this.internalAddressPromise;
|
|
164
|
+
}
|
|
145
165
|
|
|
146
|
-
|
|
166
|
+
const pending = this.requestor
|
|
167
|
+
.request("get_native_address", [], [])
|
|
168
|
+
.catch((cause: unknown) => {
|
|
169
|
+
if (this.internalAddressPromise === pending) {
|
|
170
|
+
this.internalAddressPromise = undefined;
|
|
171
|
+
}
|
|
172
|
+
throw cause;
|
|
173
|
+
}) as Promise<string>;
|
|
174
|
+
this.internalAddressPromise = pending;
|
|
175
|
+
return pending;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
getIdentity(): Promise<string> {
|
|
179
|
+
if (this.identityPromise) {
|
|
180
|
+
return this.identityPromise;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
const pending = this.requestor
|
|
184
|
+
.request("get_identity", [], [])
|
|
185
|
+
.catch((cause: unknown) => {
|
|
186
|
+
if (this.identityPromise === pending) {
|
|
187
|
+
this.identityPromise = undefined;
|
|
188
|
+
}
|
|
189
|
+
throw cause;
|
|
190
|
+
}) as Promise<string>;
|
|
191
|
+
this.identityPromise = pending;
|
|
192
|
+
return pending;
|
|
193
|
+
}
|
|
147
194
|
|
|
148
195
|
signMessageRaw = this.buildSender("sign_message", [
|
|
149
196
|
SignerJsonRpcTransformers.messageFrom,
|
|
@@ -175,6 +222,12 @@ export class SignerJsonRpc extends Signer {
|
|
|
175
222
|
);
|
|
176
223
|
}
|
|
177
224
|
|
|
225
|
+
private clearReadCache() {
|
|
226
|
+
this.scriptsPromise = undefined;
|
|
227
|
+
this.internalAddressPromise = undefined;
|
|
228
|
+
this.identityPromise = undefined;
|
|
229
|
+
}
|
|
230
|
+
|
|
178
231
|
private requestConnect = this.buildSender("connect", []) as (
|
|
179
232
|
networkId: string,
|
|
180
233
|
) => Promise<void>;
|