@iota/graphql-transport 0.1.1 → 0.2.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 (35) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +1 -1
  3. package/dist/cjs/generated/queries.d.ts +1054 -1944
  4. package/dist/cjs/generated/queries.js +126 -752
  5. package/dist/cjs/generated/queries.js.map +3 -3
  6. package/dist/cjs/mappers/bcs.js.map +1 -1
  7. package/dist/cjs/mappers/move.js.map +2 -2
  8. package/dist/cjs/mappers/transaction-block.d.ts +1 -0
  9. package/dist/cjs/mappers/transaction-block.js +316 -146
  10. package/dist/cjs/mappers/transaction-block.js.map +2 -2
  11. package/dist/cjs/mappers/validator.js +4 -6
  12. package/dist/cjs/mappers/validator.js.map +2 -2
  13. package/dist/cjs/methods.js +26 -58
  14. package/dist/cjs/methods.js.map +2 -2
  15. package/dist/cjs/transport.d.ts +1 -1
  16. package/dist/cjs/transport.js +18 -33
  17. package/dist/cjs/transport.js.map +2 -2
  18. package/dist/esm/generated/queries.d.ts +1054 -1944
  19. package/dist/esm/generated/queries.js +126 -752
  20. package/dist/esm/generated/queries.js.map +3 -3
  21. package/dist/esm/mappers/bcs.js.map +1 -1
  22. package/dist/esm/mappers/move.js.map +2 -2
  23. package/dist/esm/mappers/transaction-block.d.ts +1 -0
  24. package/dist/esm/mappers/transaction-block.js +318 -148
  25. package/dist/esm/mappers/transaction-block.js.map +2 -2
  26. package/dist/esm/mappers/validator.js +4 -6
  27. package/dist/esm/mappers/validator.js.map +2 -2
  28. package/dist/esm/methods.js +27 -61
  29. package/dist/esm/methods.js.map +2 -2
  30. package/dist/esm/transport.d.ts +1 -1
  31. package/dist/esm/transport.js +17 -32
  32. package/dist/esm/transport.js.map +2 -2
  33. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +16 -16
@@ -1,21 +1,9 @@
1
- import { fromB64, toB64 } from "@iota/bcs";
2
- import { bcs, TypeTagSerializer } from "@iota/iota-sdk/bcs";
3
- import { mapGraphQLOwnerToRpcOwner } from "./owner.js";
1
+ import { fromB64, toB58 } from "@iota/bcs";
2
+ import { bcs } from "@iota/iota-sdk/bcs";
3
+ import { normalizeIotaAddress } from "@iota/iota-sdk/utils";
4
4
  import { toShortTypeString } from "./util.js";
5
5
  function mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, options, errors) {
6
- const deletedChanges = transactionBlock.effects?.objectChanges?.nodes?.filter((change) => change?.idDeleted === true).map((change) => ({
7
- digest: change?.inputState?.digest,
8
- version: String(change?.inputState?.version),
9
- objectId: change?.inputState?.address
10
- }));
11
- const createdChanges = transactionBlock.effects?.objectChanges?.nodes?.filter((change) => change?.idCreated === true).map((change) => ({
12
- owner: mapGraphQLOwnerToRpcOwner(change?.outputState?.owner),
13
- reference: {
14
- digest: change?.outputState?.digest,
15
- version: change?.outputState?.version,
16
- objectId: change?.outputState?.address
17
- }
18
- }));
6
+ const effects = transactionBlock.effects?.bcs ? mapEffects(transactionBlock.effects.bcs) : null;
19
7
  return {
20
8
  balanceChanges: transactionBlock.effects?.balanceChanges?.nodes.map((balanceChange) => ({
21
9
  amount: balanceChange?.amount,
@@ -29,53 +17,12 @@ function mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, optio
29
17
  ...typeof transactionBlock.effects?.checkpoint?.sequenceNumber === "number" ? { checkpoint: transactionBlock.effects.checkpoint.sequenceNumber.toString() } : {},
30
18
  ...transactionBlock.effects?.timestamp ? { timestampMs: new Date(transactionBlock.effects?.timestamp).getTime().toString() } : {},
31
19
  digest: transactionBlock.digest,
32
- effects: options?.showEffects ? {
33
- ...createdChanges?.length ? { created: createdChanges } : {},
34
- ...deletedChanges?.length ? { deleted: deletedChanges } : {},
35
- dependencies: transactionBlock.effects?.dependencies?.nodes.map(
36
- (dep) => dep?.digest
37
- ),
38
- executedEpoch: String(transactionBlock.effects?.executedEpoch?.epochId),
39
- gasObject: {
40
- owner: mapGraphQLOwnerToRpcOwner(
41
- transactionBlock.effects?.gasEffects?.gasObject?.owner
42
- ),
43
- reference: {
44
- digest: transactionBlock.effects?.gasEffects?.gasObject?.digest,
45
- version: transactionBlock.effects?.gasEffects?.gasObject?.version,
46
- objectId: transactionBlock.effects?.gasEffects?.gasObject?.address
47
- }
48
- },
49
- gasUsed: {
50
- computationCost: transactionBlock.effects?.gasEffects?.gasSummary?.computationCost,
51
- nonRefundableStorageFee: transactionBlock.effects?.gasEffects?.gasSummary?.nonRefundableStorageFee,
52
- storageCost: transactionBlock.effects?.gasEffects?.gasSummary?.storageCost,
53
- storageRebate: transactionBlock.effects?.gasEffects?.gasSummary?.storageRebate
54
- },
55
- messageVersion: "v1",
56
- modifiedAtVersions: transactionBlock.effects?.objectChanges?.nodes?.filter((change) => !change?.idCreated && !change?.idDeleted)?.map((change) => ({
57
- objectId: change?.inputState?.address,
58
- sequenceNumber: String(change?.inputState?.version)
59
- })),
60
- mutated: transactionBlock.effects?.objectChanges?.nodes?.filter((change) => !change?.idCreated && !change?.idDeleted)?.map((change) => ({
61
- owner: mapGraphQLOwnerToRpcOwner(change?.outputState?.owner),
62
- reference: {
63
- digest: change?.outputState?.digest,
64
- version: change?.outputState?.version,
65
- objectId: change?.outputState?.address
66
- }
67
- })),
68
- status: {
69
- status: transactionBlock.effects?.status?.toLowerCase()
70
- },
71
- transactionDigest: transactionBlock.digest
72
- // sharedObjects: [], // TODO
73
- // unwrapped: [], // TODO
74
- // unwrappedThenDeleted: [], // TODO
75
- // wrapped: [], // TODO
76
- } : void 0,
20
+ ...options?.showRawEffects ? {
21
+ rawEffects: transactionBlock.effects?.bcs ? Array.from(fromB64(transactionBlock.effects?.bcs)) : void 0
22
+ } : {},
23
+ effects: options?.showEffects ? effects : void 0,
77
24
  ...errors ? { errors } : {},
78
- events: options?.showEvents ? transactionBlock.effects?.events?.nodes.map((event) => ({
25
+ events: transactionBlock.effects?.events?.nodes.map((event) => ({
79
26
  bcs: event.bcs,
80
27
  id: {
81
28
  eventSeq: "",
@@ -89,45 +36,92 @@ function mapGraphQLTransactionBlockToRpcTransactionBlock(transactionBlock, optio
89
36
  timestampMs: new Date(event.timestamp).getTime().toString(),
90
37
  transactionModule: `${event.sendingModule?.package.address}::${event.sendingModule?.name}`,
91
38
  type: toShortTypeString(event.type?.repr)
92
- })) ?? [] : void 0,
39
+ })) ?? [],
93
40
  rawTransaction: options?.showRawInput ? transactionBlock.rawTransaction : void 0,
94
41
  ...options?.showInput ? {
95
42
  transaction: transactionBlock.rawTransaction && mapTransactionBlockToInput(
96
43
  bcs.SenderSignedData.parse(fromB64(transactionBlock.rawTransaction))[0]
97
44
  )
98
45
  } : {},
99
- objectChanges: options?.showObjectChanges ? transactionBlock.effects?.objectChanges?.nodes?.map(
100
- (change) => change?.idDeleted ? {
101
- digest: change?.inputState?.digest,
102
- objectId: change?.inputState?.address,
103
- owner: mapGraphQLOwnerToRpcOwner(change.inputState?.owner),
104
- objectType: toShortTypeString(
105
- change?.inputState?.asMoveObject?.contents?.type.repr
106
- ),
107
- sender: transactionBlock.sender?.address,
108
- type: "deleted",
109
- version: change?.inputState?.version.toString()
110
- } : {
111
- digest: change?.outputState?.digest,
112
- objectId: change?.outputState?.address,
113
- owner: mapGraphQLOwnerToRpcOwner(change.outputState?.owner),
46
+ objectChanges: options?.showObjectChanges ? mapObjectChanges(transactionBlock, effects) : void 0
47
+ };
48
+ }
49
+ function mapObjectChanges(transactionBlock, effects) {
50
+ const changes = [];
51
+ effects?.mutated?.forEach((mutated) => {
52
+ const objectChange = transactionBlock.effects?.objectChanges?.nodes.find(
53
+ (change) => change.address === mutated.reference.objectId
54
+ );
55
+ changes.push({
56
+ type: "mutated",
57
+ digest: mutated.reference.digest,
58
+ previousVersion: String(objectChange?.inputState?.version),
59
+ objectId: mutated.reference.objectId,
60
+ owner: mutated.owner,
61
+ objectType: toShortTypeString(
62
+ objectChange?.outputState?.asMoveObject?.contents?.type.repr
63
+ ),
64
+ sender: transactionBlock.sender?.address,
65
+ version: mutated.reference.version?.toString()
66
+ });
67
+ });
68
+ effects?.created?.forEach((created) => {
69
+ const objectChange = transactionBlock.effects?.objectChanges?.nodes.find(
70
+ (change) => change.address === created.reference.objectId
71
+ );
72
+ if (objectChange?.outputState?.asMovePackage) {
73
+ changes.push({
74
+ type: "published",
75
+ digest: created.reference.digest,
76
+ version: created.reference.version?.toString(),
77
+ packageId: objectChange.address,
78
+ modules: objectChange.outputState.asMovePackage.modules?.nodes.map(
79
+ (module) => module.name
80
+ )
81
+ });
82
+ } else {
83
+ changes.push({
84
+ type: "created",
85
+ digest: created.reference.digest,
86
+ objectId: created.reference.objectId,
87
+ owner: created.owner,
114
88
  objectType: toShortTypeString(
115
- change?.outputState?.asMoveObject?.contents?.type.repr
89
+ transactionBlock.effects?.objectChanges?.nodes.find(
90
+ (change) => change.address === created.reference.objectId
91
+ )?.outputState?.asMoveObject?.contents?.type.repr
116
92
  ),
117
- ...typeof change?.inputState?.version === "number" ? { previousVersion: change?.inputState?.version.toString() } : {},
118
93
  sender: transactionBlock.sender?.address,
119
- type: change?.idCreated ? "created" : "mutated",
120
- version: change?.outputState?.version.toString()
121
- }
122
- ).sort((a, b) => {
123
- if (a.type === "created" && b.type === "deleted") {
124
- return -1;
125
- } else if (a.type === "deleted" && b.type === "created") {
126
- return 1;
127
- }
128
- return 0;
129
- }) : void 0
130
- };
94
+ version: created.reference.version?.toString()
95
+ });
96
+ }
97
+ });
98
+ effects?.deleted?.forEach((deleted) => {
99
+ changes.push({
100
+ type: "deleted",
101
+ objectId: deleted.objectId,
102
+ objectType: toShortTypeString(
103
+ transactionBlock.effects?.objectChanges?.nodes.find(
104
+ (change) => change.address === deleted.objectId
105
+ )?.inputState?.asMoveObject?.contents?.type.repr
106
+ ),
107
+ sender: transactionBlock.sender?.address,
108
+ version: deleted.version?.toString()
109
+ });
110
+ });
111
+ effects?.unwrapped?.forEach((unwrapped) => {
112
+ changes.push({
113
+ type: "wrapped",
114
+ objectId: unwrapped.reference.objectId,
115
+ objectType: toShortTypeString(
116
+ transactionBlock.effects?.objectChanges?.nodes.find(
117
+ (change) => change.address === unwrapped.reference.objectId
118
+ )?.outputState?.asMoveObject?.contents?.type.repr
119
+ ),
120
+ sender: transactionBlock.sender?.address,
121
+ version: unwrapped.reference.version?.toString()
122
+ });
123
+ });
124
+ return changes;
131
125
  }
132
126
  function mapTransactionBlockToInput(data) {
133
127
  const txData = data.intentMessage.value.V1;
@@ -158,105 +152,101 @@ function mapProgramableTransaction(programableTransaction) {
158
152
  return {
159
153
  inputs: programableTransaction.inputs.map(mapTransactionInput),
160
154
  kind: "ProgrammableTransaction",
161
- transactions: programableTransaction.transactions.map(mapTransaction)
155
+ transactions: programableTransaction.commands.map(mapTransaction)
162
156
  };
163
157
  }
164
158
  function mapTransactionInput(input) {
165
- if ("Pure" in input) {
159
+ if (input.Pure) {
166
160
  return {
167
161
  type: "pure",
168
- value: Uint8Array.from(input.Pure)
162
+ value: fromB64(input.Pure.bytes)
169
163
  };
170
164
  }
171
- if ("Object" in input) {
172
- if ("ImmOrOwned" in input.Object) {
173
- return {
174
- type: "object",
175
- digest: input.Object.ImmOrOwned.digest,
176
- version: input.Object.ImmOrOwned.version,
177
- objectId: input.Object.ImmOrOwned.objectId,
178
- objectType: "immOrOwnedObject"
179
- };
180
- }
181
- if ("Shared" in input.Object) {
182
- return {
183
- type: "object",
184
- initialSharedVersion: input.Object.Shared.initialSharedVersion,
185
- objectId: input.Object.Shared.objectId,
186
- mutable: input.Object.Shared.mutable,
187
- objectType: "sharedObject"
188
- };
189
- }
190
- if ("Receiving" in input.Object) {
191
- return {
192
- type: "object",
193
- digest: input.Object.Receiving.digest,
194
- version: input.Object.Receiving.version,
195
- objectId: input.Object.Receiving.objectId,
196
- objectType: "receiving"
197
- };
198
- }
199
- throw new Error(`Unknown object type: ${input.Object}`);
165
+ if (input.Object.ImmOrOwnedObject) {
166
+ return {
167
+ type: "object",
168
+ digest: input.Object.ImmOrOwnedObject.digest,
169
+ version: input.Object.ImmOrOwnedObject.version,
170
+ objectId: input.Object.ImmOrOwnedObject.objectId,
171
+ objectType: "immOrOwnedObject"
172
+ };
173
+ }
174
+ if (input.Object.SharedObject) {
175
+ return {
176
+ type: "object",
177
+ initialSharedVersion: input.Object.SharedObject.initialSharedVersion,
178
+ objectId: input.Object.SharedObject.objectId,
179
+ mutable: input.Object.SharedObject.mutable,
180
+ objectType: "sharedObject"
181
+ };
182
+ }
183
+ if (input.Object.Receiving) {
184
+ return {
185
+ type: "object",
186
+ digest: input.Object.Receiving.digest,
187
+ version: input.Object.Receiving.version,
188
+ objectId: input.Object.Receiving.objectId,
189
+ objectType: "receiving"
190
+ };
200
191
  }
201
- throw new Error(`Unknown input type ${input}`);
192
+ throw new Error(`Unknown object type: ${input.Object}`);
202
193
  }
203
194
  function mapTransaction(transaction) {
204
- switch (transaction.kind) {
195
+ switch (transaction.$kind) {
205
196
  case "MoveCall": {
206
- const [pkg, module, fn] = transaction.target.split("::");
207
197
  return {
208
198
  MoveCall: {
209
- arguments: transaction.arguments.map(mapTransactionArgument),
210
- function: fn,
211
- module,
212
- package: pkg,
213
- type_arguments: transaction.typeArguments
199
+ arguments: transaction.MoveCall.arguments.map(mapTransactionArgument),
200
+ function: transaction.MoveCall.function,
201
+ module: transaction.MoveCall.module,
202
+ package: transaction.MoveCall.package,
203
+ type_arguments: transaction.MoveCall.typeArguments
214
204
  }
215
205
  };
216
206
  }
217
207
  case "MakeMoveVec": {
218
208
  return {
219
209
  MakeMoveVec: [
220
- "Some" in transaction.type ? TypeTagSerializer.tagToString(transaction.type.Some) : null,
221
- transaction.objects.map(mapTransactionArgument)
210
+ transaction.MakeMoveVec.type,
211
+ transaction.MakeMoveVec.elements.map(mapTransactionArgument)
222
212
  ]
223
213
  };
224
214
  }
225
215
  case "MergeCoins": {
226
216
  return {
227
217
  MergeCoins: [
228
- mapTransactionArgument(transaction.destination),
229
- transaction.sources.map(mapTransactionArgument)
218
+ mapTransactionArgument(transaction.MergeCoins.destination),
219
+ transaction.MergeCoins.sources.map(mapTransactionArgument)
230
220
  ]
231
221
  };
232
222
  }
233
223
  case "Publish": {
234
224
  return {
235
- Publish: transaction.modules.map((module) => toB64(Uint8Array.from(module)))
225
+ Publish: transaction.Publish.modules.map((module) => module)
236
226
  };
237
227
  }
238
228
  case "SplitCoins": {
239
229
  return {
240
230
  SplitCoins: [
241
- mapTransactionArgument(transaction.coin),
242
- transaction.amounts.map(mapTransactionArgument)
231
+ mapTransactionArgument(transaction.SplitCoins.coin),
232
+ transaction.SplitCoins.amounts.map(mapTransactionArgument)
243
233
  ]
244
234
  };
245
235
  }
246
236
  case "TransferObjects": {
247
237
  return {
248
238
  TransferObjects: [
249
- transaction.objects.map(mapTransactionArgument),
250
- mapTransactionArgument(transaction.address)
239
+ transaction.TransferObjects.objects.map(mapTransactionArgument),
240
+ mapTransactionArgument(transaction.TransferObjects.address)
251
241
  ]
252
242
  };
253
243
  }
254
244
  case "Upgrade": {
255
245
  return {
256
246
  Upgrade: [
257
- transaction.modules.map((module) => toB64(Uint8Array.from(module))),
258
- transaction.packageId,
259
- mapTransactionArgument(transaction.ticket)
247
+ transaction.Upgrade.modules.map((module) => module),
248
+ transaction.Upgrade.package,
249
+ mapTransactionArgument(transaction.Upgrade.ticket)
260
250
  ]
261
251
  };
262
252
  }
@@ -264,29 +254,209 @@ function mapTransaction(transaction) {
264
254
  throw new Error(`Unknown transaction type ${transaction}`);
265
255
  }
266
256
  function mapTransactionArgument(arg) {
267
- switch (arg.kind) {
257
+ switch (arg.$kind) {
268
258
  case "GasCoin": {
269
259
  return "GasCoin";
270
260
  }
271
261
  case "Input": {
272
262
  return {
273
- Input: arg.index
263
+ Input: arg.Input
274
264
  };
275
265
  }
276
266
  case "Result": {
277
267
  return {
278
- Result: arg.index
268
+ Result: arg.Result
279
269
  };
280
270
  }
281
271
  case "NestedResult": {
282
272
  return {
283
- NestedResult: [arg.index, arg.resultIndex]
273
+ NestedResult: arg.NestedResult
284
274
  };
285
275
  }
286
276
  }
287
277
  throw new Error(`Unknown argument type ${arg}`);
288
278
  }
279
+ const OBJECT_DIGEST_DELETED = toB58(Uint8Array.from({ length: 32 }, () => 99));
280
+ const OBJECT_DIGEST_WRAPPED = toB58(Uint8Array.from({ length: 32 }, () => 88));
281
+ const OBJECT_DIGEST_ZERO = toB58(Uint8Array.from({ length: 32 }, () => 0));
282
+ const ADDRESS_ZERO = normalizeIotaAddress("0x0");
283
+ function mapEffects(data) {
284
+ const effects = bcs.TransactionEffects.parse(fromB64(data));
285
+ const sharedObjects = effects.V1.unchangedSharedObjects.map(([id, sharedObject]) => {
286
+ switch (sharedObject.$kind) {
287
+ case "ReadOnlyRoot":
288
+ return {
289
+ objectId: id,
290
+ version: Number(sharedObject.ReadOnlyRoot[0]),
291
+ digest: sharedObject.ReadOnlyRoot[1]
292
+ };
293
+ case "MutateDeleted":
294
+ return {
295
+ objectId: id,
296
+ version: Number(sharedObject.MutateDeleted),
297
+ digest: OBJECT_DIGEST_DELETED
298
+ };
299
+ case "ReadDeleted":
300
+ return {
301
+ objectId: id,
302
+ version: Number(sharedObject.ReadDeleted),
303
+ digest: OBJECT_DIGEST_DELETED
304
+ };
305
+ default:
306
+ throw new Error(`Unknown shared object type: ${sharedObject}`);
307
+ }
308
+ });
309
+ effects.V1.changedObjects.filter(([_id, change]) => change.inputState.Exist?.[1].Shared).forEach(([id, change]) => {
310
+ sharedObjects.push({
311
+ objectId: id,
312
+ version: Number(change.inputState.Exist[0][0]),
313
+ digest: change.inputState.Exist[0][1]
314
+ });
315
+ });
316
+ const modifiedAtVersions = effects.V1.changedObjects.filter(([_id, change]) => change.inputState.Exist).map(([id, change]) => [id, change.inputState.Exist[0][0]]);
317
+ const created = effects.V1.changedObjects.filter(
318
+ ([_id, change]) => change.inputState.NotExist && (change.outputState.ObjectWrite || change.outputState.PackageWrite) && change.idOperation.Created
319
+ ).map(
320
+ ([objectId, change]) => change.outputState.PackageWrite ? [
321
+ {
322
+ objectId,
323
+ version: Number(change.outputState.PackageWrite[0]),
324
+ digest: change.outputState.PackageWrite[1]
325
+ },
326
+ { $kind: "Immutable", Immutable: true }
327
+ ] : [
328
+ {
329
+ objectId,
330
+ version: Number(effects.V1.lamportVersion),
331
+ digest: change.outputState.ObjectWrite[0]
332
+ },
333
+ change.outputState.ObjectWrite[1]
334
+ ]
335
+ );
336
+ const mutated = effects.V1.changedObjects.filter(
337
+ ([_id, change]) => change.inputState.Exist && (change.outputState.ObjectWrite || change.outputState.PackageWrite)
338
+ ).map(([objectId, change]) => [
339
+ change.outputState.PackageWrite ? {
340
+ objectId,
341
+ version: Number(change.outputState.PackageWrite[0]),
342
+ digest: change.outputState.PackageWrite[1]
343
+ } : {
344
+ objectId,
345
+ version: Number(effects.V1.lamportVersion),
346
+ digest: change.outputState.ObjectWrite[0]
347
+ },
348
+ change.outputState.ObjectWrite ? change.outputState.ObjectWrite[1] : { $kind: "Immutable", Immutable: true }
349
+ ]);
350
+ const unwrapped = effects.V1.changedObjects.filter(
351
+ ([_id, change]) => change.inputState.NotExist && change.outputState.ObjectWrite && change.idOperation.None
352
+ ).map(([objectId, change]) => [
353
+ {
354
+ objectId,
355
+ version: Number(effects.V1.lamportVersion),
356
+ digest: change.outputState.ObjectWrite[0]
357
+ },
358
+ change.outputState.ObjectWrite[1]
359
+ ]);
360
+ const deleted = effects.V1.changedObjects.filter(
361
+ ([_id, change]) => change.inputState.Exist && change.outputState.NotExist && change.idOperation.Deleted
362
+ ).map(([objectId, _change]) => ({
363
+ objectId,
364
+ version: Number(effects.V1.lamportVersion),
365
+ digest: OBJECT_DIGEST_DELETED
366
+ }));
367
+ const unwrappedThenDeleted = effects.V1.changedObjects.filter(
368
+ ([_id, change]) => change.inputState.NotExist && change.outputState.NotExist && change.idOperation.Deleted
369
+ ).map(([objectId, _change]) => ({
370
+ objectId,
371
+ version: Number(effects.V1.lamportVersion),
372
+ digest: OBJECT_DIGEST_DELETED
373
+ }));
374
+ const wrapped = effects.V1.changedObjects.filter(
375
+ ([_id, change]) => change.inputState.Exist && change.outputState.NotExist && change.idOperation.None
376
+ ).map(([objectId, _change]) => ({
377
+ objectId,
378
+ version: Number(effects.V1.lamportVersion),
379
+ digest: OBJECT_DIGEST_WRAPPED
380
+ }));
381
+ const gasObjectFromV1 = effects.V1.gasObjectIndex != null ? effects.V1.changedObjects[effects.V1.gasObjectIndex] : null;
382
+ const gasObject = gasObjectFromV1 ? [
383
+ {
384
+ objectId: gasObjectFromV1[0],
385
+ digest: gasObjectFromV1[1].outputState.ObjectWrite[0],
386
+ version: Number(effects.V1.lamportVersion)
387
+ },
388
+ gasObjectFromV1[1].outputState.ObjectWrite[1]
389
+ ] : [
390
+ {
391
+ objectId: ADDRESS_ZERO,
392
+ version: "0",
393
+ digest: OBJECT_DIGEST_ZERO
394
+ },
395
+ {
396
+ $kind: "AddressOwner",
397
+ AddressOwner: ADDRESS_ZERO
398
+ }
399
+ ];
400
+ return {
401
+ messageVersion: "v1",
402
+ status: effects.V1.status.Success ? {
403
+ status: "success"
404
+ } : {
405
+ status: "failure",
406
+ // TODO: we don't have the error message from bcs effects
407
+ error: effects.V1.status.$kind
408
+ },
409
+ executedEpoch: effects.V1.executedEpoch,
410
+ gasUsed: effects.V1.gasUsed,
411
+ modifiedAtVersions: modifiedAtVersions.map(([objectId, sequenceNumber]) => ({
412
+ objectId,
413
+ sequenceNumber
414
+ })),
415
+ ...sharedObjects.length === 0 ? {} : { sharedObjects },
416
+ transactionDigest: effects.V1.transactionDigest,
417
+ ...created.length === 0 ? {} : {
418
+ created: created.map(([reference, owner]) => ({
419
+ reference,
420
+ owner: mapEffectsOwner(owner)
421
+ }))
422
+ },
423
+ ...mutated.length === 0 ? {} : {
424
+ mutated: mutated.map(([reference, owner]) => ({
425
+ reference,
426
+ owner: mapEffectsOwner(owner)
427
+ }))
428
+ },
429
+ ...unwrapped.length === 0 ? {} : {
430
+ unwrapped: unwrapped.length === 0 ? void 0 : unwrapped.map(([reference, owner]) => ({
431
+ reference,
432
+ owner: mapEffectsOwner(owner)
433
+ }))
434
+ },
435
+ ...deleted.length === 0 ? {} : { deleted },
436
+ ...unwrappedThenDeleted.length === 0 ? {} : { unwrappedThenDeleted },
437
+ ...wrapped.length === 0 ? {} : { wrapped },
438
+ gasObject: {
439
+ reference: gasObject[0],
440
+ owner: mapEffectsOwner(gasObject[1])
441
+ },
442
+ ...effects.V1.eventsDigest ? { eventsDigest: effects.V1.eventsDigest } : {},
443
+ dependencies: effects.V1.dependencies
444
+ };
445
+ function mapEffectsOwner(owner) {
446
+ if (owner.Immutable) {
447
+ return "Immutable";
448
+ } else if (owner.Shared) {
449
+ return { Shared: { initial_shared_version: owner.Shared.initialSharedVersion } };
450
+ } else if (owner.AddressOwner) {
451
+ return { AddressOwner: owner.AddressOwner };
452
+ } else if (owner.ObjectOwner) {
453
+ return { ObjectOwner: owner.ObjectOwner };
454
+ }
455
+ throw new Error(`Unknown owner type: ${owner}`);
456
+ }
457
+ }
289
458
  export {
459
+ mapEffects,
290
460
  mapGraphQLTransactionBlockToRpcTransactionBlock,
291
461
  mapProgramableTransaction,
292
462
  mapTransactionBlockToInput