@typemove/move 1.0.0-rc.9 → 1.0.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 (81) hide show
  1. package/dist/cjs/abstract-codegen.d.ts +49 -0
  2. package/dist/cjs/abstract-codegen.d.ts.map +1 -0
  3. package/dist/cjs/abstract-codegen.js +405 -0
  4. package/dist/cjs/abstract-codegen.js.map +1 -0
  5. package/dist/cjs/abstract-move-coder.d.ts +26 -0
  6. package/dist/cjs/abstract-move-coder.d.ts.map +1 -0
  7. package/dist/cjs/abstract-move-coder.js +253 -0
  8. package/dist/cjs/abstract-move-coder.js.map +1 -0
  9. package/dist/cjs/account.d.ts +16 -0
  10. package/dist/cjs/account.d.ts.map +1 -0
  11. package/dist/cjs/account.js +76 -0
  12. package/dist/cjs/account.js.map +1 -0
  13. package/dist/cjs/chain-adapter.d.ts +14 -0
  14. package/dist/cjs/chain-adapter.d.ts.map +1 -0
  15. package/dist/cjs/chain-adapter.js +11 -0
  16. package/dist/cjs/chain-adapter.js.map +1 -0
  17. package/dist/cjs/index.d.ts +8 -0
  18. package/dist/cjs/index.d.ts.map +1 -0
  19. package/dist/cjs/index.js +11 -0
  20. package/dist/cjs/index.js.map +1 -0
  21. package/dist/cjs/internal-models.d.ts +36 -0
  22. package/dist/cjs/internal-models.d.ts.map +1 -0
  23. package/dist/cjs/internal-models.js +10 -0
  24. package/dist/cjs/internal-models.js.map +1 -0
  25. package/dist/cjs/package.json +3 -0
  26. package/dist/cjs/ts-type.test.d.ts +2 -0
  27. package/dist/cjs/ts-type.test.d.ts.map +1 -0
  28. package/dist/cjs/ts-type.test.js.map +1 -0
  29. package/dist/cjs/types.d.ts +43 -0
  30. package/dist/cjs/types.d.ts.map +1 -0
  31. package/dist/cjs/types.js +218 -0
  32. package/dist/cjs/types.js.map +1 -0
  33. package/dist/cjs/utils.d.ts +17 -0
  34. package/dist/cjs/utils.d.ts.map +1 -0
  35. package/dist/cjs/utils.js +82 -0
  36. package/dist/cjs/utils.js.map +1 -0
  37. package/dist/cjs/utils.test.d.ts +2 -0
  38. package/dist/cjs/utils.test.d.ts.map +1 -0
  39. package/dist/cjs/utils.test.js.map +1 -0
  40. package/dist/esm/abstract-codegen.d.ts +49 -0
  41. package/dist/esm/abstract-codegen.d.ts.map +1 -0
  42. package/dist/esm/abstract-codegen.js +399 -0
  43. package/dist/esm/abstract-codegen.js.map +1 -0
  44. package/dist/esm/abstract-move-coder.d.ts +26 -0
  45. package/dist/esm/abstract-move-coder.d.ts.map +1 -0
  46. package/dist/esm/abstract-move-coder.js +249 -0
  47. package/dist/esm/abstract-move-coder.js.map +1 -0
  48. package/dist/esm/account.d.ts +16 -0
  49. package/dist/esm/account.d.ts.map +1 -0
  50. package/dist/esm/account.js +71 -0
  51. package/dist/esm/account.js.map +1 -0
  52. package/dist/esm/chain-adapter.d.ts +14 -0
  53. package/dist/esm/chain-adapter.d.ts.map +1 -0
  54. package/dist/esm/chain-adapter.js +7 -0
  55. package/dist/esm/chain-adapter.js.map +1 -0
  56. package/dist/esm/index.d.ts +8 -0
  57. package/dist/esm/index.d.ts.map +1 -0
  58. package/dist/esm/index.js.map +1 -0
  59. package/dist/esm/internal-models.d.ts +36 -0
  60. package/dist/esm/internal-models.d.ts.map +1 -0
  61. package/dist/esm/internal-models.js +7 -0
  62. package/dist/esm/internal-models.js.map +1 -0
  63. package/dist/esm/ts-type.test.d.ts +2 -0
  64. package/dist/esm/ts-type.test.d.ts.map +1 -0
  65. package/dist/esm/ts-type.test.js.map +1 -0
  66. package/dist/esm/types.d.ts +43 -0
  67. package/dist/esm/types.d.ts.map +1 -0
  68. package/dist/esm/types.js +211 -0
  69. package/dist/esm/types.js.map +1 -0
  70. package/dist/esm/utils.d.ts +17 -0
  71. package/dist/esm/utils.d.ts.map +1 -0
  72. package/dist/esm/utils.js +69 -0
  73. package/dist/esm/utils.js.map +1 -0
  74. package/dist/esm/utils.test.d.ts +2 -0
  75. package/dist/esm/utils.test.d.ts.map +1 -0
  76. package/dist/esm/utils.test.js.map +1 -0
  77. package/package.json +12 -7
  78. package/src/abstract-codegen.ts +60 -224
  79. package/src/abstract-move-coder.ts +35 -144
  80. package/src/internal-models.ts +1 -0
  81. /package/dist/{index.js → esm/index.js} +0 -0
@@ -1,20 +1,6 @@
1
- import {
2
- accountAddressString,
3
- moduleQname,
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
- protected async encode(data: any, type: TypeDescriptor): Promise<any> {
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
- async encodeArray(
288
- entriesDecoded: any[],
289
- types: TypeDescriptor[]
290
- ): Promise<any[]> {
291
- const entries: any[] = []
292
- for (const [idx, arg] of entriesDecoded.entries()) {
293
- // TODO consider apply payload.type_arguments, but this might be hard since we don't code gen for them
294
- const argType = types[idx]
295
- try {
296
- entries.push(await this.encode(arg, argType))
297
- } catch (e) {
298
- throw Error(
299
- 'Decoding error for ' +
300
- JSON.stringify(arg) +
301
- 'using type' +
302
- argType +
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 entries
207
+ return data
308
208
  }
309
209
 
310
- async encodeCallArgs(args: any[], func: string): Promise<any[]> {
311
- const f = await this.getMoveFunction(func)
312
- return this.encodeArray(
313
- args,
314
- this.adapter.getMeaningfulFunctionParams(f.params)
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
  }
@@ -11,6 +11,7 @@ export interface InternalMoveFunction {
11
11
  name: string
12
12
  visibility: InternalMoveFunctionVisibility
13
13
  isEntry: boolean
14
+ isView?: boolean
14
15
  typeParams: InternalMoveTypeParam[]
15
16
  params: TypeDescriptor[]
16
17
  return: TypeDescriptor[]
File without changes