@typemove/move 1.0.0-rc.9 → 1.0.1-rc.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/dist/cjs/abstract-codegen.d.ts +49 -0
- package/dist/cjs/abstract-codegen.d.ts.map +1 -0
- package/dist/cjs/abstract-codegen.js +405 -0
- package/dist/cjs/abstract-codegen.js.map +1 -0
- package/dist/cjs/abstract-move-coder.d.ts +26 -0
- package/dist/cjs/abstract-move-coder.d.ts.map +1 -0
- package/dist/cjs/abstract-move-coder.js +253 -0
- package/dist/cjs/abstract-move-coder.js.map +1 -0
- package/dist/cjs/account.d.ts +16 -0
- package/dist/cjs/account.d.ts.map +1 -0
- package/dist/cjs/account.js +76 -0
- package/dist/cjs/account.js.map +1 -0
- package/dist/cjs/chain-adapter.d.ts +14 -0
- package/dist/cjs/chain-adapter.d.ts.map +1 -0
- package/dist/cjs/chain-adapter.js +11 -0
- package/dist/cjs/chain-adapter.js.map +1 -0
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +11 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internal-models.d.ts +36 -0
- package/dist/cjs/internal-models.d.ts.map +1 -0
- package/dist/cjs/internal-models.js +10 -0
- package/dist/cjs/internal-models.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/ts-type.test.d.ts +2 -0
- package/dist/cjs/ts-type.test.d.ts.map +1 -0
- package/dist/cjs/ts-type.test.js.map +1 -0
- package/dist/cjs/types.d.ts +43 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +218 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +17 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +82 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/utils.test.d.ts +2 -0
- package/dist/cjs/utils.test.d.ts.map +1 -0
- package/dist/cjs/utils.test.js.map +1 -0
- package/dist/esm/abstract-codegen.d.ts +49 -0
- package/dist/esm/abstract-codegen.d.ts.map +1 -0
- package/dist/esm/abstract-codegen.js +399 -0
- package/dist/esm/abstract-codegen.js.map +1 -0
- package/dist/esm/abstract-move-coder.d.ts +26 -0
- package/dist/esm/abstract-move-coder.d.ts.map +1 -0
- package/dist/esm/abstract-move-coder.js +249 -0
- package/dist/esm/abstract-move-coder.js.map +1 -0
- package/dist/esm/account.d.ts +16 -0
- package/dist/esm/account.d.ts.map +1 -0
- package/dist/esm/account.js +71 -0
- package/dist/esm/account.js.map +1 -0
- package/dist/esm/chain-adapter.d.ts +14 -0
- package/dist/esm/chain-adapter.d.ts.map +1 -0
- package/dist/esm/chain-adapter.js +7 -0
- package/dist/esm/chain-adapter.js.map +1 -0
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internal-models.d.ts +36 -0
- package/dist/esm/internal-models.d.ts.map +1 -0
- package/dist/esm/internal-models.js +7 -0
- package/dist/esm/internal-models.js.map +1 -0
- package/dist/esm/ts-type.test.d.ts +2 -0
- package/dist/esm/ts-type.test.d.ts.map +1 -0
- package/dist/esm/ts-type.test.js.map +1 -0
- package/dist/esm/types.d.ts +43 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +211 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +17 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +69 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/utils.test.d.ts +2 -0
- package/dist/esm/utils.test.d.ts.map +1 -0
- package/dist/esm/utils.test.js.map +1 -0
- package/package.json +12 -7
- package/src/abstract-codegen.ts +60 -224
- package/src/abstract-move-coder.ts +35 -144
- package/src/internal-models.ts +1 -0
- /package/dist/{index.js → esm/index.js} +0 -0
|
@@ -1,20 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
SPLITTER,
|
|
5
|
-
VECTOR_STR,
|
|
6
|
-
} from './utils.js'
|
|
7
|
-
import {
|
|
8
|
-
DecodedStruct,
|
|
9
|
-
matchType,
|
|
10
|
-
parseMoveType,
|
|
11
|
-
TypeDescriptor,
|
|
12
|
-
} from './types.js'
|
|
13
|
-
import {
|
|
14
|
-
InternalMoveFunction,
|
|
15
|
-
InternalMoveModule,
|
|
16
|
-
InternalMoveStruct,
|
|
17
|
-
} from './internal-models.js'
|
|
1
|
+
import { accountAddressString, moduleQname, SPLITTER, VECTOR_STR } from './utils.js'
|
|
2
|
+
import { DecodedStruct, matchType, parseMoveType, TypeDescriptor } from './types.js'
|
|
3
|
+
import { InternalMoveFunction, InternalMoveModule, InternalMoveStruct } from './internal-models.js'
|
|
18
4
|
// import { bytesToBigInt } from '../utils/index.js'
|
|
19
5
|
import { ChainAdapter } from './chain-adapter.js'
|
|
20
6
|
|
|
@@ -40,10 +26,7 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
40
26
|
if (this.contains(account, module.name)) {
|
|
41
27
|
return
|
|
42
28
|
}
|
|
43
|
-
this.moduleMapping.set(
|
|
44
|
-
moduleQname({ address: account, name: module.name }),
|
|
45
|
-
module
|
|
46
|
-
)
|
|
29
|
+
this.moduleMapping.set(moduleQname({ address: account, name: module.name }), module)
|
|
47
30
|
|
|
48
31
|
for (const struct of module.structs) {
|
|
49
32
|
// TODO move to util
|
|
@@ -71,10 +54,6 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
71
54
|
return BigInt(data)
|
|
72
55
|
}
|
|
73
56
|
|
|
74
|
-
protected encodeBigInt(data: bigint): any {
|
|
75
|
-
return '0x' + data.toString(16)
|
|
76
|
-
}
|
|
77
|
-
|
|
78
57
|
private requestMap = new Map<string, Promise<InternalMoveModule>>()
|
|
79
58
|
|
|
80
59
|
async getMoveStruct(type: string): Promise<InternalMoveStruct> {
|
|
@@ -99,9 +78,7 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
99
78
|
if (struct) {
|
|
100
79
|
return struct
|
|
101
80
|
}
|
|
102
|
-
throw new Error(
|
|
103
|
-
'Failed to load function ' + type + ' type are not imported anywhere'
|
|
104
|
-
)
|
|
81
|
+
throw new Error('Failed to load function ' + type + ' type are not imported anywhere')
|
|
105
82
|
}
|
|
106
83
|
|
|
107
84
|
async getMoveFunction(type: string): Promise<InternalMoveFunction> {
|
|
@@ -126,9 +103,7 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
126
103
|
if (func) {
|
|
127
104
|
return func
|
|
128
105
|
}
|
|
129
|
-
throw new Error(
|
|
130
|
-
'Failed to load function ' + type + ' type are not imported anywhere'
|
|
131
|
-
)
|
|
106
|
+
throw new Error('Failed to load function ' + type + ' type are not imported anywhere')
|
|
132
107
|
}
|
|
133
108
|
|
|
134
109
|
protected async decode<T>(data: any, type: TypeDescriptor<T>): Promise<T> {
|
|
@@ -193,74 +168,7 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
193
168
|
return typedData
|
|
194
169
|
}
|
|
195
170
|
|
|
196
|
-
|
|
197
|
-
// process simple type
|
|
198
|
-
if (type.reference) {
|
|
199
|
-
return data
|
|
200
|
-
}
|
|
201
|
-
switch (type.qname) {
|
|
202
|
-
case 'signer': // TODO check this, aptos only
|
|
203
|
-
case 'address':
|
|
204
|
-
case 'Address':
|
|
205
|
-
case '0x2::object::ID':
|
|
206
|
-
case '0x2::coin::Coin':
|
|
207
|
-
case '0x1::string::String':
|
|
208
|
-
case 'bool':
|
|
209
|
-
case 'Bool':
|
|
210
|
-
case 'u8':
|
|
211
|
-
case 'U8':
|
|
212
|
-
case 'u16':
|
|
213
|
-
case 'U16':
|
|
214
|
-
case 'u32':
|
|
215
|
-
case 'U32':
|
|
216
|
-
return data
|
|
217
|
-
case 'u64':
|
|
218
|
-
case 'U64':
|
|
219
|
-
case 'u128':
|
|
220
|
-
case 'U128':
|
|
221
|
-
case 'u256':
|
|
222
|
-
case 'U256':
|
|
223
|
-
return this.encodeBigInt(data)
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// process vector
|
|
227
|
-
if (type.qname.toLowerCase() === VECTOR_STR) {
|
|
228
|
-
// vector<u8> as hex string
|
|
229
|
-
if (type.typeArgs[0].qname === 'u8' || type.typeArgs[0].qname === 'U8') {
|
|
230
|
-
return data
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
const res = []
|
|
234
|
-
for (const entry of data) {
|
|
235
|
-
res.push(this.encode(entry, type.typeArgs[0]))
|
|
236
|
-
}
|
|
237
|
-
return res
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// Process complex type
|
|
241
|
-
const struct = await this.getMoveStruct(type.qname)
|
|
242
|
-
|
|
243
|
-
const typeCtx = new Map<string, TypeDescriptor>()
|
|
244
|
-
for (const [idx, typeArg] of type.typeArgs.entries()) {
|
|
245
|
-
typeCtx.set('T' + idx, typeArg)
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
const typedData: any = {}
|
|
249
|
-
|
|
250
|
-
for (const field of struct.fields) {
|
|
251
|
-
let filedType = field.type
|
|
252
|
-
filedType = filedType.applyTypeArgs(typeCtx)
|
|
253
|
-
const value = await this.encode(data[field.name], filedType)
|
|
254
|
-
typedData[field.name] = value
|
|
255
|
-
}
|
|
256
|
-
return typedData
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
async decodeArray(
|
|
260
|
-
entries: any[],
|
|
261
|
-
types: TypeDescriptor[],
|
|
262
|
-
strict = true
|
|
263
|
-
): Promise<any[]> {
|
|
171
|
+
async decodeArray(entries: any[], types: TypeDescriptor[], strict = true): Promise<any[]> {
|
|
264
172
|
const entriesDecoded: any[] = []
|
|
265
173
|
for (const [idx, arg] of entries.entries()) {
|
|
266
174
|
// TODO consider apply payload.type_arguments, but this might be hard since we don't code gen for them
|
|
@@ -272,47 +180,39 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
272
180
|
entriesDecoded.push(await this.decode(arg, argType))
|
|
273
181
|
}
|
|
274
182
|
} catch (e) {
|
|
275
|
-
throw Error(
|
|
276
|
-
'Decoding error for ' +
|
|
277
|
-
JSON.stringify(arg) +
|
|
278
|
-
'using type' +
|
|
279
|
-
argType +
|
|
280
|
-
e.toString()
|
|
281
|
-
)
|
|
183
|
+
throw Error('Decoding error for ' + JSON.stringify(arg) + 'using type' + argType + e.toString())
|
|
282
184
|
}
|
|
283
185
|
}
|
|
284
186
|
return entriesDecoded
|
|
285
187
|
}
|
|
286
188
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
e.toString()
|
|
304
|
-
)
|
|
189
|
+
public encode(data: any): any {
|
|
190
|
+
if (!data) {
|
|
191
|
+
return undefined
|
|
192
|
+
}
|
|
193
|
+
if (typeof data === 'bigint') {
|
|
194
|
+
return data.toString()
|
|
195
|
+
}
|
|
196
|
+
if (Array.isArray(data)) {
|
|
197
|
+
return this.encodeArray(data)
|
|
198
|
+
}
|
|
199
|
+
for (const [key, value] of Object.entries(data)) {
|
|
200
|
+
if (!value) {
|
|
201
|
+
continue
|
|
202
|
+
}
|
|
203
|
+
if (typeof value === 'bigint') {
|
|
204
|
+
data[key] = value.toString()
|
|
305
205
|
}
|
|
306
206
|
}
|
|
307
|
-
return
|
|
207
|
+
return data
|
|
308
208
|
}
|
|
309
209
|
|
|
310
|
-
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
210
|
+
encodeArray(entriesDecoded: any[]): any[] {
|
|
211
|
+
const entries: any[] = []
|
|
212
|
+
for (const [idx, arg] of entriesDecoded.entries()) {
|
|
213
|
+
entries.push(this.encode(arg))
|
|
214
|
+
}
|
|
215
|
+
return entries
|
|
316
216
|
}
|
|
317
217
|
|
|
318
218
|
async decodeCallResult(res: any[], func: string): Promise<any[]> {
|
|
@@ -346,9 +246,7 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
346
246
|
return results
|
|
347
247
|
}
|
|
348
248
|
|
|
349
|
-
protected async decodedStruct<T, ST extends StructType>(
|
|
350
|
-
typeStruct: ST
|
|
351
|
-
): Promise<DecodedStruct<ST, T> | undefined> {
|
|
249
|
+
protected async decodedStruct<T, ST extends StructType>(typeStruct: ST): Promise<DecodedStruct<ST, T> | undefined> {
|
|
352
250
|
const typeDescriptor = parseMoveType(this.adapter.getType(typeStruct))
|
|
353
251
|
const typeArguments = typeDescriptor.typeArgs.map((t) => t.getSignature())
|
|
354
252
|
|
|
@@ -356,9 +254,7 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
356
254
|
try {
|
|
357
255
|
dataTyped = await this.decode(typeStruct, typeDescriptor)
|
|
358
256
|
} catch (e) {
|
|
359
|
-
throw Error(
|
|
360
|
-
'Decoding error for struct' + JSON.stringify(typeStruct) + e.toString()
|
|
361
|
-
)
|
|
257
|
+
throw Error('Decoding error for struct' + JSON.stringify(typeStruct) + e.toString())
|
|
362
258
|
// return undefined
|
|
363
259
|
}
|
|
364
260
|
return {
|
|
@@ -367,18 +263,13 @@ export abstract class AbstractMoveCoder<ModuleType, StructType> {
|
|
|
367
263
|
type_arguments: typeArguments,
|
|
368
264
|
}
|
|
369
265
|
}
|
|
370
|
-
async decodedType<T, ST>(
|
|
371
|
-
typeStruct: ST,
|
|
372
|
-
type: TypeDescriptor<T>
|
|
373
|
-
): Promise<T | undefined> {
|
|
266
|
+
async decodedType<T, ST>(typeStruct: ST, type: TypeDescriptor<T>): Promise<T | undefined> {
|
|
374
267
|
if (typeStruct === null || typeStruct == undefined) {
|
|
375
268
|
return typeStruct as any
|
|
376
269
|
}
|
|
377
270
|
if (typeof typeStruct === 'object') {
|
|
378
271
|
if ('type' in typeStruct) {
|
|
379
|
-
const typeInStruct = parseMoveType(
|
|
380
|
-
(typeStruct.type as any).toString() || ''
|
|
381
|
-
)
|
|
272
|
+
const typeInStruct = parseMoveType((typeStruct.type as any).toString() || '')
|
|
382
273
|
if (!matchType(type, typeInStruct)) {
|
|
383
274
|
return undefined
|
|
384
275
|
}
|
package/src/internal-models.ts
CHANGED
|
File without changes
|