@iota/graphql-transport 0.0.0-dev-20251015065834

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 (92) hide show
  1. package/CHANGELOG.md +248 -0
  2. package/LICENSE +201 -0
  3. package/README.md +104 -0
  4. package/dist/cjs/generated/queries.d.ts +9099 -0
  5. package/dist/cjs/generated/queries.js +3021 -0
  6. package/dist/cjs/generated/queries.js.map +7 -0
  7. package/dist/cjs/index.d.ts +1 -0
  8. package/dist/cjs/index.js +19 -0
  9. package/dist/cjs/index.js.map +7 -0
  10. package/dist/cjs/mappers/bcs.d.ts +4 -0
  11. package/dist/cjs/mappers/bcs.js +71 -0
  12. package/dist/cjs/mappers/bcs.js.map +7 -0
  13. package/dist/cjs/mappers/checkpoint.d.ts +3 -0
  14. package/dist/cjs/mappers/checkpoint.js +64 -0
  15. package/dist/cjs/mappers/checkpoint.js.map +7 -0
  16. package/dist/cjs/mappers/display.d.ts +8 -0
  17. package/dist/cjs/mappers/display.js +43 -0
  18. package/dist/cjs/mappers/display.js.map +7 -0
  19. package/dist/cjs/mappers/move.d.ts +57 -0
  20. package/dist/cjs/mappers/move.js +231 -0
  21. package/dist/cjs/mappers/move.js.map +7 -0
  22. package/dist/cjs/mappers/object.d.ts +10 -0
  23. package/dist/cjs/mappers/object.js +79 -0
  24. package/dist/cjs/mappers/object.js.map +7 -0
  25. package/dist/cjs/mappers/owner.d.ts +3 -0
  26. package/dist/cjs/mappers/owner.js +48 -0
  27. package/dist/cjs/mappers/owner.js.map +7 -0
  28. package/dist/cjs/mappers/stakes.d.ts +3 -0
  29. package/dist/cjs/mappers/stakes.js +48 -0
  30. package/dist/cjs/mappers/stakes.js.map +7 -0
  31. package/dist/cjs/mappers/transaction-block.d.ts +7 -0
  32. package/dist/cjs/mappers/transaction-block.js +487 -0
  33. package/dist/cjs/mappers/transaction-block.js.map +7 -0
  34. package/dist/cjs/mappers/util.d.ts +2 -0
  35. package/dist/cjs/mappers/util.js +31 -0
  36. package/dist/cjs/mappers/util.js.map +7 -0
  37. package/dist/cjs/mappers/validator.d.ts +3 -0
  38. package/dist/cjs/mappers/validator.js +64 -0
  39. package/dist/cjs/mappers/validator.js.map +7 -0
  40. package/dist/cjs/methods.d.ts +19 -0
  41. package/dist/cjs/methods.js +1377 -0
  42. package/dist/cjs/methods.js.map +7 -0
  43. package/dist/cjs/package.json +5 -0
  44. package/dist/cjs/transport.d.ts +44 -0
  45. package/dist/cjs/transport.js +155 -0
  46. package/dist/cjs/transport.js.map +7 -0
  47. package/dist/esm/generated/queries.d.ts +9099 -0
  48. package/dist/esm/generated/queries.js +3001 -0
  49. package/dist/esm/generated/queries.js.map +7 -0
  50. package/dist/esm/index.d.ts +1 -0
  51. package/dist/esm/index.js +2 -0
  52. package/dist/esm/index.js.map +7 -0
  53. package/dist/esm/mappers/bcs.d.ts +4 -0
  54. package/dist/esm/mappers/bcs.js +51 -0
  55. package/dist/esm/mappers/bcs.js.map +7 -0
  56. package/dist/esm/mappers/checkpoint.d.ts +3 -0
  57. package/dist/esm/mappers/checkpoint.js +44 -0
  58. package/dist/esm/mappers/checkpoint.js.map +7 -0
  59. package/dist/esm/mappers/display.d.ts +8 -0
  60. package/dist/esm/mappers/display.js +23 -0
  61. package/dist/esm/mappers/display.js.map +7 -0
  62. package/dist/esm/mappers/move.d.ts +57 -0
  63. package/dist/esm/mappers/move.js +211 -0
  64. package/dist/esm/mappers/move.js.map +7 -0
  65. package/dist/esm/mappers/object.d.ts +10 -0
  66. package/dist/esm/mappers/object.js +59 -0
  67. package/dist/esm/mappers/object.js.map +7 -0
  68. package/dist/esm/mappers/owner.d.ts +3 -0
  69. package/dist/esm/mappers/owner.js +28 -0
  70. package/dist/esm/mappers/owner.js.map +7 -0
  71. package/dist/esm/mappers/stakes.d.ts +3 -0
  72. package/dist/esm/mappers/stakes.js +28 -0
  73. package/dist/esm/mappers/stakes.js.map +7 -0
  74. package/dist/esm/mappers/transaction-block.d.ts +7 -0
  75. package/dist/esm/mappers/transaction-block.js +467 -0
  76. package/dist/esm/mappers/transaction-block.js.map +7 -0
  77. package/dist/esm/mappers/util.d.ts +2 -0
  78. package/dist/esm/mappers/util.js +11 -0
  79. package/dist/esm/mappers/util.js.map +7 -0
  80. package/dist/esm/mappers/validator.d.ts +3 -0
  81. package/dist/esm/mappers/validator.js +44 -0
  82. package/dist/esm/mappers/validator.js.map +7 -0
  83. package/dist/esm/methods.d.ts +19 -0
  84. package/dist/esm/methods.js +1406 -0
  85. package/dist/esm/methods.js.map +7 -0
  86. package/dist/esm/package.json +5 -0
  87. package/dist/esm/transport.d.ts +44 -0
  88. package/dist/esm/transport.js +135 -0
  89. package/dist/esm/transport.js.map +7 -0
  90. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  91. package/dist/tsconfig.tsbuildinfo +1 -0
  92. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ export * from './transport.js';
@@ -0,0 +1,2 @@
1
+ export * from "./transport.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nexport * from './transport.js';\n"],
5
+ "mappings": "AAIA,cAAc;",
6
+ "names": []
7
+ }
@@ -0,0 +1,4 @@
1
+ import type { BcsType } from '@iota/bcs';
2
+ import type { MoveTypeLayout } from './move.js';
3
+ export declare function layoutToBcs(layout: MoveTypeLayout): BcsType<any>;
4
+ export declare function mapJsonToBcs(json: unknown, layout: MoveTypeLayout): string;
@@ -0,0 +1,51 @@
1
+ import { toBase64 } from "@iota/bcs";
2
+ import { bcs } from "@iota/iota-sdk/bcs";
3
+ import { toShortTypeString } from "./util.js";
4
+ function layoutToBcs(layout) {
5
+ switch (layout) {
6
+ case "address":
7
+ return bcs.Address;
8
+ case "bool":
9
+ return bcs.Bool;
10
+ case "u8":
11
+ return bcs.U8;
12
+ case "u16":
13
+ return bcs.U16;
14
+ case "u32":
15
+ return bcs.U32;
16
+ case "u64":
17
+ return bcs.U64;
18
+ case "u128":
19
+ return bcs.U128;
20
+ case "u256":
21
+ return bcs.U256;
22
+ }
23
+ if ("vector" in layout) {
24
+ return bcs.vector(layoutToBcs(layout.vector));
25
+ }
26
+ if ("struct" in layout) {
27
+ const fields = {};
28
+ for (const { name, layout: field } of layout.struct.fields) {
29
+ fields[name] = layoutToBcs(field);
30
+ }
31
+ let struct = bcs.struct(layout.struct.type, fields);
32
+ const structName = toShortTypeString(layout.struct.type);
33
+ if (structName === "0x2::object::ID") {
34
+ struct = struct.transform({
35
+ input: (id) => typeof id === "string" ? { bytes: id } : id,
36
+ output: (id) => id.id
37
+ });
38
+ return struct;
39
+ }
40
+ }
41
+ throw new Error(`Unknown layout: ${layout}`);
42
+ }
43
+ function mapJsonToBcs(json, layout) {
44
+ const schema = layoutToBcs(layout);
45
+ return toBase64(schema.serialize(json).toBytes());
46
+ }
47
+ export {
48
+ layoutToBcs,
49
+ mapJsonToBcs
50
+ };
51
+ //# sourceMappingURL=bcs.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mappers/bcs.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toBase64 } from '@iota/bcs';\nimport type { BcsType } from '@iota/bcs';\nimport { bcs } from '@iota/iota-sdk/bcs';\n\nimport type { MoveTypeLayout } from './move.js';\nimport { toShortTypeString } from './util.js';\n\nexport function layoutToBcs(layout: MoveTypeLayout): BcsType<any> {\n switch (layout) {\n case 'address':\n return bcs.Address;\n case 'bool':\n return bcs.Bool;\n case 'u8':\n return bcs.U8;\n case 'u16':\n return bcs.U16;\n case 'u32':\n return bcs.U32;\n case 'u64':\n return bcs.U64;\n case 'u128':\n return bcs.U128;\n case 'u256':\n return bcs.U256;\n }\n\n if ('vector' in layout) {\n return bcs.vector(layoutToBcs(layout.vector));\n }\n\n if ('struct' in layout) {\n const fields: Record<string, BcsType<any>> = {};\n\n for (const { name, layout: field } of layout.struct.fields) {\n fields[name] = layoutToBcs(field);\n }\n\n let struct = bcs.struct(layout.struct.type, fields);\n const structName = toShortTypeString(layout.struct.type);\n\n if (structName === '0x2::object::ID') {\n struct = struct.transform({\n input: (id: any) => (typeof id === 'string' ? { bytes: id } : id) as never,\n output: (id) => id.id,\n });\n\n return struct;\n }\n }\n\n throw new Error(`Unknown layout: ${layout}`);\n}\n\nexport function mapJsonToBcs(json: unknown, layout: MoveTypeLayout) {\n const schema = layoutToBcs(layout);\n return toBase64(schema.serialize(json).toBytes());\n}\n"],
5
+ "mappings": "AAIA,SAAS,gBAAgB;AAEzB,SAAS,WAAW;AAGpB,SAAS,yBAAyB;AAE3B,SAAS,YAAY,QAAsC;AAC9D,UAAQ,QAAQ;AAAA,IACZ,KAAK;AACD,aAAO,IAAI;AAAA,IACf,KAAK;AACD,aAAO,IAAI;AAAA,IACf,KAAK;AACD,aAAO,IAAI;AAAA,IACf,KAAK;AACD,aAAO,IAAI;AAAA,IACf,KAAK;AACD,aAAO,IAAI;AAAA,IACf,KAAK;AACD,aAAO,IAAI;AAAA,IACf,KAAK;AACD,aAAO,IAAI;AAAA,IACf,KAAK;AACD,aAAO,IAAI;AAAA,EACnB;AAEA,MAAI,YAAY,QAAQ;AACpB,WAAO,IAAI,OAAO,YAAY,OAAO,MAAM,CAAC;AAAA,EAChD;AAEA,MAAI,YAAY,QAAQ;AACpB,UAAM,SAAuC,CAAC;AAE9C,eAAW,EAAE,MAAM,QAAQ,MAAM,KAAK,OAAO,OAAO,QAAQ;AACxD,aAAO,IAAI,IAAI,YAAY,KAAK;AAAA,IACpC;AAEA,QAAI,SAAS,IAAI,OAAO,OAAO,OAAO,MAAM,MAAM;AAClD,UAAM,aAAa,kBAAkB,OAAO,OAAO,IAAI;AAEvD,QAAI,eAAe,mBAAmB;AAClC,eAAS,OAAO,UAAU;AAAA,QACtB,OAAO,CAAC,OAAa,OAAO,OAAO,WAAW,EAAE,OAAO,GAAG,IAAI;AAAA,QAC9D,QAAQ,CAAC,OAAO,GAAG;AAAA,MACvB,CAAC;AAED,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,IAAI,MAAM,mBAAmB,MAAM,EAAE;AAC/C;AAEO,SAAS,aAAa,MAAe,QAAwB;AAChE,QAAM,SAAS,YAAY,MAAM;AACjC,SAAO,SAAS,OAAO,UAAU,IAAI,EAAE,QAAQ,CAAC;AACpD;",
6
+ "names": []
7
+ }
@@ -0,0 +1,3 @@
1
+ import type { Checkpoint } from '@iota/iota-sdk/client';
2
+ import type { Rpc_Checkpoint_FieldsFragment } from '../generated/queries.js';
3
+ export declare function mapGraphQLCheckpointToRpcCheckpoint(checkpoint: Rpc_Checkpoint_FieldsFragment): Checkpoint;
@@ -0,0 +1,44 @@
1
+ function mapGraphQLCheckpointToRpcCheckpoint(checkpoint) {
2
+ const endOfEpochTx = checkpoint.endOfEpoch.nodes[0];
3
+ let endOfEpochData;
4
+ if (endOfEpochTx?.kind?.__typename === "EndOfEpochTransaction" && endOfEpochTx.kind?.transactions.nodes[0].__typename === "ChangeEpochTransactionV2") {
5
+ endOfEpochData = {
6
+ epochCommitments: [],
7
+ // TODO
8
+ nextEpochCommittee: endOfEpochTx.kind.transactions.nodes[0].epoch?.validatorSet?.committeeMembers?.nodes.map(
9
+ (val) => [val.credentials?.authorityPubKey, val.votingPower?.toString()]
10
+ ) ?? [],
11
+ nextEpochProtocolVersion: String(
12
+ endOfEpochTx.kind.transactions.nodes[0].epoch?.protocolConfigs.protocolVersion
13
+ ),
14
+ epochSupplyChange: 0
15
+ // TODO: https://github.com/iotaledger/iota/issues/1738
16
+ };
17
+ }
18
+ return {
19
+ checkpointCommitments: [],
20
+ // TODO
21
+ digest: checkpoint.digest,
22
+ endOfEpochData,
23
+ epoch: String(checkpoint.epoch?.epochId),
24
+ epochRollingGasCostSummary: {
25
+ computationCost: checkpoint.rollingGasSummary?.computationCost,
26
+ computationCostBurned: checkpoint.rollingGasSummary?.computationCostBurned,
27
+ nonRefundableStorageFee: checkpoint.rollingGasSummary?.nonRefundableStorageFee,
28
+ storageCost: checkpoint.rollingGasSummary?.storageCost,
29
+ storageRebate: checkpoint.rollingGasSummary?.storageRebate
30
+ },
31
+ networkTotalTransactions: String(checkpoint.networkTotalTransactions),
32
+ ...checkpoint.previousCheckpointDigest ? { previousDigest: checkpoint.previousCheckpointDigest } : {},
33
+ sequenceNumber: String(checkpoint.sequenceNumber),
34
+ timestampMs: new Date(checkpoint.timestamp).getTime().toString(),
35
+ transactions: checkpoint.transactionBlocks?.nodes.map(
36
+ (transactionBlock) => transactionBlock.digest
37
+ ) ?? [],
38
+ validatorSignature: checkpoint.validatorSignatures
39
+ };
40
+ }
41
+ export {
42
+ mapGraphQLCheckpointToRpcCheckpoint
43
+ };
44
+ //# sourceMappingURL=checkpoint.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mappers/checkpoint.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Checkpoint, EndOfEpochData } from '@iota/iota-sdk/client';\n\nimport type { Rpc_Checkpoint_FieldsFragment } from '../generated/queries.js';\n\nexport function mapGraphQLCheckpointToRpcCheckpoint(\n checkpoint: Rpc_Checkpoint_FieldsFragment,\n): Checkpoint {\n const endOfEpochTx = checkpoint.endOfEpoch.nodes[0];\n let endOfEpochData: EndOfEpochData | undefined;\n\n if (\n endOfEpochTx?.kind?.__typename === 'EndOfEpochTransaction' &&\n endOfEpochTx.kind?.transactions.nodes[0].__typename === 'ChangeEpochTransactionV2'\n ) {\n endOfEpochData = {\n epochCommitments: [], // TODO\n nextEpochCommittee:\n endOfEpochTx.kind.transactions.nodes[0].epoch?.validatorSet?.committeeMembers?.nodes.map(\n (val) => [val.credentials?.authorityPubKey, val.votingPower?.toString()!],\n ) ?? [],\n nextEpochProtocolVersion: String(\n endOfEpochTx.kind.transactions.nodes[0].epoch?.protocolConfigs.protocolVersion,\n ),\n epochSupplyChange: 0, // TODO: https://github.com/iotaledger/iota/issues/1738\n };\n }\n\n return {\n checkpointCommitments: [], // TODO\n digest: checkpoint.digest,\n endOfEpochData,\n epoch: String(checkpoint.epoch?.epochId),\n epochRollingGasCostSummary: {\n computationCost: checkpoint.rollingGasSummary?.computationCost,\n computationCostBurned: checkpoint.rollingGasSummary?.computationCostBurned,\n nonRefundableStorageFee: checkpoint.rollingGasSummary?.nonRefundableStorageFee,\n storageCost: checkpoint.rollingGasSummary?.storageCost,\n storageRebate: checkpoint.rollingGasSummary?.storageRebate,\n },\n networkTotalTransactions: String(checkpoint.networkTotalTransactions),\n ...(checkpoint.previousCheckpointDigest\n ? { previousDigest: checkpoint.previousCheckpointDigest }\n : {}),\n sequenceNumber: String(checkpoint.sequenceNumber),\n timestampMs: new Date(checkpoint.timestamp).getTime().toString(),\n transactions:\n checkpoint.transactionBlocks?.nodes.map(\n (transactionBlock) => transactionBlock.digest!,\n ) ?? [],\n validatorSignature: checkpoint.validatorSignatures,\n };\n}\n"],
5
+ "mappings": "AAQO,SAAS,oCACZ,YACU;AACV,QAAM,eAAe,WAAW,WAAW,MAAM,CAAC;AAClD,MAAI;AAEJ,MACI,cAAc,MAAM,eAAe,2BACnC,aAAa,MAAM,aAAa,MAAM,CAAC,EAAE,eAAe,4BAC1D;AACE,qBAAiB;AAAA,MACb,kBAAkB,CAAC;AAAA;AAAA,MACnB,oBACI,aAAa,KAAK,aAAa,MAAM,CAAC,EAAE,OAAO,cAAc,kBAAkB,MAAM;AAAA,QACjF,CAAC,QAAQ,CAAC,IAAI,aAAa,iBAAiB,IAAI,aAAa,SAAS,CAAE;AAAA,MAC5E,KAAK,CAAC;AAAA,MACV,0BAA0B;AAAA,QACtB,aAAa,KAAK,aAAa,MAAM,CAAC,EAAE,OAAO,gBAAgB;AAAA,MACnE;AAAA,MACA,mBAAmB;AAAA;AAAA,IACvB;AAAA,EACJ;AAEA,SAAO;AAAA,IACH,uBAAuB,CAAC;AAAA;AAAA,IACxB,QAAQ,WAAW;AAAA,IACnB;AAAA,IACA,OAAO,OAAO,WAAW,OAAO,OAAO;AAAA,IACvC,4BAA4B;AAAA,MACxB,iBAAiB,WAAW,mBAAmB;AAAA,MAC/C,uBAAuB,WAAW,mBAAmB;AAAA,MACrD,yBAAyB,WAAW,mBAAmB;AAAA,MACvD,aAAa,WAAW,mBAAmB;AAAA,MAC3C,eAAe,WAAW,mBAAmB;AAAA,IACjD;AAAA,IACA,0BAA0B,OAAO,WAAW,wBAAwB;AAAA,IACpE,GAAI,WAAW,2BACT,EAAE,gBAAgB,WAAW,yBAAyB,IACtD,CAAC;AAAA,IACP,gBAAgB,OAAO,WAAW,cAAc;AAAA,IAChD,aAAa,IAAI,KAAK,WAAW,SAAS,EAAE,QAAQ,EAAE,SAAS;AAAA,IAC/D,cACI,WAAW,mBAAmB,MAAM;AAAA,MAChC,CAAC,qBAAqB,iBAAiB;AAAA,IAC3C,KAAK,CAAC;AAAA,IACV,oBAAoB,WAAW;AAAA,EACnC;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,8 @@
1
+ import type { DisplayFieldsResponse } from '@iota/iota-sdk/client';
2
+ export declare function formatDisplay(object: {
3
+ display?: {
4
+ key: string;
5
+ value?: string | null | undefined;
6
+ error?: string | null | undefined;
7
+ }[] | null;
8
+ }): DisplayFieldsResponse;
@@ -0,0 +1,23 @@
1
+ function formatDisplay(object) {
2
+ const display = {
3
+ data: null,
4
+ error: null
5
+ };
6
+ if (object.display) {
7
+ object.display.forEach((displayItem) => {
8
+ if (displayItem.error) {
9
+ display.error = displayItem.error;
10
+ } else if (displayItem.value != null) {
11
+ if (!display.data) {
12
+ display.data = {};
13
+ }
14
+ display.data[displayItem.key] = displayItem.value;
15
+ }
16
+ });
17
+ }
18
+ return display;
19
+ }
20
+ export {
21
+ formatDisplay
22
+ };
23
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mappers/display.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { DisplayFieldsResponse } from '@iota/iota-sdk/client';\n\nexport function formatDisplay(object: {\n display?:\n | {\n key: string;\n value?: string | null | undefined;\n error?: string | null | undefined;\n }[]\n | null;\n}) {\n const display: DisplayFieldsResponse = {\n data: null,\n error: null,\n };\n\n if (object.display) {\n object.display.forEach((displayItem) => {\n if (displayItem.error) {\n display!.error = displayItem.error as never;\n } else if (displayItem.value != null) {\n if (!display!.data) {\n display!.data = {};\n }\n display!.data[displayItem.key] = displayItem.value;\n }\n });\n }\n\n return display;\n}\n"],
5
+ "mappings": "AAMO,SAAS,cAAc,QAQ3B;AACC,QAAM,UAAiC;AAAA,IACnC,MAAM;AAAA,IACN,OAAO;AAAA,EACX;AAEA,MAAI,OAAO,SAAS;AAChB,WAAO,QAAQ,QAAQ,CAAC,gBAAgB;AACpC,UAAI,YAAY,OAAO;AACnB,gBAAS,QAAQ,YAAY;AAAA,MACjC,WAAW,YAAY,SAAS,MAAM;AAClC,YAAI,CAAC,QAAS,MAAM;AAChB,kBAAS,OAAO,CAAC;AAAA,QACrB;AACA,gBAAS,KAAK,YAAY,GAAG,IAAI,YAAY;AAAA,MACjD;AAAA,IACJ,CAAC;AAAA,EACL;AAEA,SAAO;AACX;",
6
+ "names": []
7
+ }
@@ -0,0 +1,57 @@
1
+ import type { MoveValue, IotaMoveNormalizedFunction, IotaMoveNormalizedModule, IotaMoveNormalizedStruct, IotaMoveNormalizedType } from '@iota/iota-sdk/client';
2
+ import type { Rpc_Move_Function_FieldsFragment, Rpc_Move_Module_FieldsFragment, Rpc_Move_Struct_FieldsFragment } from '../generated/queries.js';
3
+ export type OpenMoveTypeSignatureBody = 'address' | 'bool' | 'u8' | 'u16' | 'u32' | 'u64' | 'u128' | 'u256' | {
4
+ vector: OpenMoveTypeSignatureBody;
5
+ } | {
6
+ datatype: {
7
+ package: string;
8
+ module: string;
9
+ type: string;
10
+ typeParameters?: [OpenMoveTypeSignatureBody];
11
+ };
12
+ } | {
13
+ typeParameter: number;
14
+ };
15
+ export declare function mapOpenMoveType(type: {
16
+ ref?: '&' | '&mut';
17
+ body: OpenMoveTypeSignatureBody;
18
+ }): IotaMoveNormalizedType;
19
+ export declare function mapNormalizedType(type: OpenMoveTypeSignatureBody): IotaMoveNormalizedType;
20
+ export declare function mapNormalizedMoveFunction(fn: Rpc_Move_Function_FieldsFragment): IotaMoveNormalizedFunction;
21
+ export declare function mapNormalizedMoveStruct(struct: Rpc_Move_Struct_FieldsFragment): IotaMoveNormalizedStruct;
22
+ export declare function mapNormalizedMoveModule(module: Rpc_Move_Module_FieldsFragment, address: string): IotaMoveNormalizedModule;
23
+ type MoveData = {
24
+ Address: number[];
25
+ } | {
26
+ UID: number[];
27
+ } | {
28
+ ID: number[];
29
+ } | {
30
+ Bool: boolean;
31
+ } | {
32
+ Number: string;
33
+ } | {
34
+ String: string;
35
+ } | {
36
+ Vector: MoveData[];
37
+ } | {
38
+ Option: MoveData | null;
39
+ } | {
40
+ Struct: [{
41
+ name: string;
42
+ value: MoveData;
43
+ }];
44
+ };
45
+ export type MoveTypeLayout = 'address' | 'bool' | 'u8' | 'u16' | 'u32' | 'u64' | 'u128' | 'u256' | {
46
+ vector: MoveTypeLayout;
47
+ } | {
48
+ struct: {
49
+ type: string;
50
+ fields: {
51
+ name: string;
52
+ layout: MoveTypeLayout;
53
+ }[];
54
+ };
55
+ };
56
+ export declare function moveDataToRpcContent(data: MoveData, layout: MoveTypeLayout): MoveValue;
57
+ export {};
@@ -0,0 +1,211 @@
1
+ import { normalizeIotaAddress, parseStructTag } from "@iota/iota-sdk/utils";
2
+ import { toShortTypeString } from "./util.js";
3
+ function mapOpenMoveType(type) {
4
+ const body = mapNormalizedType(type.body);
5
+ if (type.ref === "&") {
6
+ return {
7
+ Reference: body
8
+ };
9
+ }
10
+ if (type.ref === "&mut") {
11
+ return {
12
+ MutableReference: body
13
+ };
14
+ }
15
+ return body;
16
+ }
17
+ function mapNormalizedType(type) {
18
+ switch (type) {
19
+ case "address":
20
+ return "Address";
21
+ case "bool":
22
+ return "Bool";
23
+ case "u8":
24
+ return "U8";
25
+ case "u16":
26
+ return "U16";
27
+ case "u32":
28
+ return "U32";
29
+ case "u64":
30
+ return "U64";
31
+ case "u128":
32
+ return "U128";
33
+ case "u256":
34
+ return "U256";
35
+ }
36
+ if ("vector" in type) {
37
+ return {
38
+ Vector: mapNormalizedType(type.vector)
39
+ };
40
+ }
41
+ if ("typeParameter" in type) {
42
+ return {
43
+ TypeParameter: type.typeParameter
44
+ };
45
+ }
46
+ if ("datatype" in type) {
47
+ return {
48
+ Struct: {
49
+ address: toShortTypeString(type.datatype.package),
50
+ module: type.datatype.module,
51
+ name: type.datatype.type,
52
+ typeArguments: type.datatype.typeParameters?.map(mapNormalizedType) ?? []
53
+ }
54
+ };
55
+ }
56
+ throw new Error("Invalid type");
57
+ }
58
+ function mapNormalizedMoveFunction(fn) {
59
+ return {
60
+ visibility: `${fn.visibility?.[0]}${fn.visibility?.slice(1).toLowerCase()}`,
61
+ isEntry: fn.isEntry,
62
+ typeParameters: fn.typeParameters?.map((param) => ({
63
+ abilities: param.constraints?.map(
64
+ (constraint) => `${constraint[0]}${constraint.slice(1).toLowerCase()}`
65
+ ) ?? []
66
+ })) ?? [],
67
+ return: fn.return?.map((param) => mapOpenMoveType(param.signature)) ?? [],
68
+ parameters: fn.parameters?.map((param) => mapOpenMoveType(param.signature)) ?? []
69
+ };
70
+ }
71
+ function mapNormalizedMoveStruct(struct) {
72
+ return {
73
+ abilities: {
74
+ abilities: struct.abilities?.map(
75
+ (ability) => `${ability[0]}${ability.slice(1).toLowerCase()}`
76
+ ) ?? []
77
+ },
78
+ fields: struct.fields?.map((field) => ({
79
+ name: field.name,
80
+ type: mapOpenMoveType(field.type?.signature)
81
+ })) ?? [],
82
+ typeParameters: struct.typeParameters?.map((param) => ({
83
+ isPhantom: param.isPhantom,
84
+ constraints: {
85
+ abilities: param.constraints?.map(
86
+ (constraint) => `${constraint[0]}${constraint.slice(1).toLowerCase()}`
87
+ )
88
+ }
89
+ })) ?? []
90
+ };
91
+ }
92
+ function mapNormalizedMoveModule(module, address) {
93
+ const exposedFunctions = {};
94
+ const structs = {};
95
+ module.functions?.nodes.filter(
96
+ (func) => func.visibility === "PUBLIC" || func.isEntry || func.visibility === "FRIEND"
97
+ ).forEach((func) => {
98
+ exposedFunctions[func.name] = mapNormalizedMoveFunction(func);
99
+ });
100
+ module.structs?.nodes.forEach((struct) => {
101
+ structs[struct.name] = mapNormalizedMoveStruct(struct);
102
+ });
103
+ return {
104
+ address: toShortTypeString(address),
105
+ name: module.name,
106
+ fileFormatVersion: module.fileFormatVersion,
107
+ friends: module.friends.nodes?.map((friend) => ({
108
+ address: toShortTypeString(friend.package.address),
109
+ name: friend.name
110
+ })) ?? [],
111
+ structs,
112
+ exposedFunctions
113
+ };
114
+ }
115
+ function moveDataToRpcContent(data, layout) {
116
+ if ("Address" in data) {
117
+ return normalizeIotaAddress(
118
+ data.Address.map((byte) => byte.toString(16).padStart(2, "0")).join("")
119
+ );
120
+ }
121
+ if ("UID" in data) {
122
+ return {
123
+ id: normalizeIotaAddress(
124
+ data.UID.map((byte) => byte.toString(16).padStart(2, "0")).join("")
125
+ )
126
+ };
127
+ }
128
+ if ("ID" in data) {
129
+ return normalizeIotaAddress(
130
+ data.ID.map((byte) => byte.toString(16).padStart(2, "0")).join("")
131
+ );
132
+ }
133
+ if ("Bool" in data) {
134
+ return data.Bool;
135
+ }
136
+ if ("Number" in data) {
137
+ return layout === "u64" || layout === "u128" || layout === "u256" ? String(data.Number) : Number.parseInt(data.Number, 10);
138
+ }
139
+ if ("String" in data) {
140
+ return data.String;
141
+ }
142
+ if ("Vector" in data) {
143
+ if (typeof layout !== "object" || !("vector" in layout)) {
144
+ throw new Error(`Invalid layout for data: ${JSON.stringify(data)}`);
145
+ }
146
+ const itemLayout = layout.vector;
147
+ return data.Vector.map((item) => moveDataToRpcContent(item, itemLayout));
148
+ }
149
+ if ("Option" in data) {
150
+ if (data.Option === null) {
151
+ return null;
152
+ }
153
+ if (typeof layout !== "object" || !("struct" in layout)) {
154
+ throw new Error(`Invalid layout for Option data: ${JSON.stringify(layout)}`);
155
+ }
156
+ const vecField = layout.struct.fields.find((field) => field.name === "vec");
157
+ if (!vecField) {
158
+ throw new Error(`Could not find the expected 'vec' field in the Option layout.`);
159
+ }
160
+ const innerLayout = vecField.layout;
161
+ const innerData = data.Option;
162
+ if (typeof innerLayout === "object" && "vector" in innerLayout && innerData && !("Vector" in innerData)) {
163
+ const itemLayout = innerLayout.vector;
164
+ return moveDataToRpcContent(innerData, itemLayout);
165
+ }
166
+ return moveDataToRpcContent(innerData, innerLayout);
167
+ }
168
+ if ("Struct" in data) {
169
+ const result = {};
170
+ if (typeof layout !== "object" || !("struct" in layout)) {
171
+ throw new Error(`Invalid layout for data: ${JSON.stringify(data)}}`);
172
+ }
173
+ data.Struct.forEach((item, index) => {
174
+ const { name, layout: itemLayout } = layout.struct.fields[index];
175
+ result[name] = moveDataToRpcContent(item.value, itemLayout);
176
+ });
177
+ const tag = parseStructTag(layout.struct.type);
178
+ const structName = `${toShortTypeString(tag.address)}::${tag.module}::${tag.name}`;
179
+ switch (structName) {
180
+ case "0x1::string::String":
181
+ case "0x1::ascii::String":
182
+ return result["bytes"];
183
+ case "0x2::url::Url":
184
+ return result["url"];
185
+ case "0x2::object::ID":
186
+ return result["bytes"];
187
+ case "0x2::object::UID":
188
+ return {
189
+ id: result["id"]
190
+ };
191
+ case "0x2::balance::Balance":
192
+ return result["value"];
193
+ case "0x1::option::Option":
194
+ return result["vec"][0] ?? null;
195
+ }
196
+ return {
197
+ type: toShortTypeString(layout.struct.type),
198
+ fields: result
199
+ };
200
+ }
201
+ throw new Error("Invalid move data: " + JSON.stringify(data));
202
+ }
203
+ export {
204
+ mapNormalizedMoveFunction,
205
+ mapNormalizedMoveModule,
206
+ mapNormalizedMoveStruct,
207
+ mapNormalizedType,
208
+ mapOpenMoveType,
209
+ moveDataToRpcContent
210
+ };
211
+ //# sourceMappingURL=move.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mappers/move.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type {\n MoveStruct,\n MoveValue,\n IotaMoveAbility,\n IotaMoveNormalizedFunction,\n IotaMoveNormalizedModule,\n IotaMoveNormalizedStruct,\n IotaMoveNormalizedType,\n} from '@iota/iota-sdk/client';\nimport { normalizeIotaAddress, parseStructTag } from '@iota/iota-sdk/utils';\n\nimport type {\n Rpc_Move_Function_FieldsFragment,\n Rpc_Move_Module_FieldsFragment,\n Rpc_Move_Struct_FieldsFragment,\n} from '../generated/queries.js';\nimport { toShortTypeString } from './util.js';\n\nexport type OpenMoveTypeSignatureBody =\n | 'address'\n | 'bool'\n | 'u8'\n | 'u16'\n | 'u32'\n | 'u64'\n | 'u128'\n | 'u256'\n | { vector: OpenMoveTypeSignatureBody }\n | {\n datatype: {\n package: string;\n module: string;\n type: string;\n typeParameters?: [OpenMoveTypeSignatureBody];\n };\n }\n | { typeParameter: number };\n\nexport function mapOpenMoveType(type: { ref?: '&' | '&mut'; body: OpenMoveTypeSignatureBody }) {\n const body = mapNormalizedType(type.body);\n\n if (type.ref === '&') {\n return {\n Reference: body,\n };\n }\n\n if (type.ref === '&mut') {\n return {\n MutableReference: body,\n };\n }\n\n return body;\n}\n\nexport function mapNormalizedType(type: OpenMoveTypeSignatureBody): IotaMoveNormalizedType {\n switch (type) {\n case 'address':\n return 'Address';\n case 'bool':\n return 'Bool';\n case 'u8':\n return 'U8';\n case 'u16':\n return 'U16';\n case 'u32':\n return 'U32';\n case 'u64':\n return 'U64';\n case 'u128':\n return 'U128';\n case 'u256':\n return 'U256';\n }\n\n if ('vector' in type) {\n return {\n Vector: mapNormalizedType(type.vector),\n };\n }\n\n if ('typeParameter' in type) {\n return {\n TypeParameter: type.typeParameter,\n };\n }\n\n if ('datatype' in type) {\n return {\n Struct: {\n address: toShortTypeString(type.datatype.package),\n module: type.datatype.module,\n name: type.datatype.type,\n typeArguments: type.datatype.typeParameters?.map(mapNormalizedType) ?? [],\n },\n };\n }\n\n throw new Error('Invalid type');\n}\n\nexport function mapNormalizedMoveFunction(\n fn: Rpc_Move_Function_FieldsFragment,\n): IotaMoveNormalizedFunction {\n return {\n visibility: `${fn.visibility?.[0]}${fn.visibility?.slice(1).toLowerCase()}` as never,\n isEntry: fn.isEntry!,\n typeParameters:\n fn.typeParameters?.map((param) => ({\n abilities:\n param.constraints?.map(\n (constraint) =>\n `${constraint[0]}${constraint.slice(1).toLowerCase()}` as IotaMoveAbility,\n ) ?? [],\n })) ?? [],\n return: fn.return?.map((param) => mapOpenMoveType(param.signature)) ?? [],\n parameters: fn.parameters?.map((param) => mapOpenMoveType(param.signature)) ?? [],\n };\n}\n\nexport function mapNormalizedMoveStruct(\n struct: Rpc_Move_Struct_FieldsFragment,\n): IotaMoveNormalizedStruct {\n return {\n abilities: {\n abilities:\n struct.abilities?.map(\n (ability) =>\n `${ability[0]}${ability.slice(1).toLowerCase()}` as IotaMoveAbility,\n ) ?? [],\n },\n fields:\n struct.fields?.map((field) => ({\n name: field.name,\n type: mapOpenMoveType(field.type?.signature),\n })) ?? [],\n typeParameters:\n struct.typeParameters?.map((param) => ({\n isPhantom: param.isPhantom!,\n constraints: {\n abilities: param.constraints?.map(\n (constraint) =>\n `${constraint[0]}${constraint.slice(1).toLowerCase()}` as IotaMoveAbility,\n ),\n },\n })) ?? [],\n };\n}\n\nexport function mapNormalizedMoveModule(\n module: Rpc_Move_Module_FieldsFragment,\n address: string,\n): IotaMoveNormalizedModule {\n const exposedFunctions: Record<string, IotaMoveNormalizedFunction> = {};\n const structs: Record<string, IotaMoveNormalizedStruct> = {};\n\n module.functions?.nodes\n .filter(\n (func) => func.visibility === 'PUBLIC' || func.isEntry || func.visibility === 'FRIEND',\n )\n .forEach((func) => {\n exposedFunctions[func.name] = mapNormalizedMoveFunction(func);\n });\n\n module.structs?.nodes.forEach((struct) => {\n structs[struct.name] = mapNormalizedMoveStruct(struct);\n });\n\n return {\n address: toShortTypeString(address),\n name: module.name,\n fileFormatVersion: module.fileFormatVersion,\n friends:\n module.friends.nodes?.map((friend) => ({\n address: toShortTypeString(friend.package.address),\n name: friend.name,\n })) ?? [],\n structs,\n exposedFunctions,\n };\n}\n\ntype MoveData =\n | { Address: number[] }\n | { UID: number[] }\n | { ID: number[] }\n | { Bool: boolean }\n | { Number: string }\n | { String: string }\n | { Vector: MoveData[] }\n | { Option: MoveData | null }\n | { Struct: [{ name: string; value: MoveData }] };\n\nexport type MoveTypeLayout =\n | 'address'\n | 'bool'\n | 'u8'\n | 'u16'\n | 'u32'\n | 'u64'\n | 'u128'\n | 'u256'\n | { vector: MoveTypeLayout }\n | {\n struct: {\n type: string;\n fields: { name: string; layout: MoveTypeLayout }[];\n };\n };\n\nexport function moveDataToRpcContent(data: MoveData, layout: MoveTypeLayout): MoveValue {\n if ('Address' in data) {\n return normalizeIotaAddress(\n data.Address.map((byte) => byte.toString(16).padStart(2, '0')).join(''),\n );\n }\n\n if ('UID' in data) {\n return {\n id: normalizeIotaAddress(\n data.UID.map((byte) => byte.toString(16).padStart(2, '0')).join(''),\n ),\n };\n }\n\n if ('ID' in data) {\n return normalizeIotaAddress(\n data.ID.map((byte) => byte.toString(16).padStart(2, '0')).join(''),\n );\n }\n\n if ('Bool' in data) {\n return data.Bool;\n }\n\n if ('Number' in data) {\n return layout === 'u64' || layout === 'u128' || layout === 'u256'\n ? String(data.Number)\n : Number.parseInt(data.Number, 10);\n }\n\n if ('String' in data) {\n return data.String;\n }\n\n if ('Vector' in data) {\n if (typeof layout !== 'object' || !('vector' in layout)) {\n throw new Error(`Invalid layout for data: ${JSON.stringify(data)}`);\n }\n const itemLayout = layout.vector;\n return data.Vector.map((item) => moveDataToRpcContent(item, itemLayout));\n }\n\n if ('Option' in data) {\n if (data.Option === null) {\n return null;\n }\n\n if (typeof layout !== 'object' || !('struct' in layout)) {\n throw new Error(`Invalid layout for Option data: ${JSON.stringify(layout)}`);\n }\n\n const vecField = layout.struct.fields.find((field) => field.name === 'vec');\n if (!vecField) {\n throw new Error(`Could not find the expected 'vec' field in the Option layout.`);\n }\n\n const innerLayout = vecField.layout;\n const innerData = data.Option;\n\n if (\n typeof innerLayout === 'object' &&\n 'vector' in innerLayout &&\n innerData &&\n !('Vector' in innerData)\n ) {\n const itemLayout = innerLayout.vector;\n return moveDataToRpcContent(innerData, itemLayout);\n }\n\n return moveDataToRpcContent(innerData, innerLayout);\n }\n\n if ('Struct' in data) {\n const result: MoveStruct = {};\n\n if (typeof layout !== 'object' || !('struct' in layout)) {\n throw new Error(`Invalid layout for data: ${JSON.stringify(data)}}`);\n }\n\n data.Struct.forEach((item, index) => {\n const { name, layout: itemLayout } = layout.struct.fields[index];\n\n result[name] = moveDataToRpcContent(item.value, itemLayout);\n });\n\n // https://github.com/iotaledger/iota/blob/5849f6845a3ab9fdb4c17523994adad461478a4c/crates/iota-json-rpc-types/src/iota_move.rs#L481\n const tag = parseStructTag(layout.struct.type);\n const structName = `${toShortTypeString(tag.address)}::${tag.module}::${tag.name}`;\n\n switch (structName) {\n case '0x1::string::String':\n case '0x1::ascii::String':\n return result['bytes'];\n case '0x2::url::Url':\n return result['url'];\n case '0x2::object::ID':\n return result['bytes'];\n case '0x2::object::UID':\n return {\n id: result['id'] as string,\n };\n case '0x2::balance::Balance':\n return result['value'];\n case '0x1::option::Option':\n return (result['vec'] as MoveValue[])[0] ?? null;\n }\n\n return {\n type: toShortTypeString(layout.struct.type),\n fields: result,\n };\n }\n\n throw new Error('Invalid move data: ' + JSON.stringify(data));\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { IotaObjectResponse } from '@iota/iota-sdk/client';
2
+ import type { Rpc_Move_Object_FieldsFragment, Rpc_Object_FieldsFragment } from '../generated/queries.js';
3
+ export declare function mapGraphQLObjectToRpcObject(object: Rpc_Object_FieldsFragment, options?: {
4
+ showBcs?: boolean | null;
5
+ showContent?: boolean;
6
+ }): NonNullable<IotaObjectResponse['data']>;
7
+ export declare function mapGraphQLMoveObjectToRpcObject(object: Rpc_Move_Object_FieldsFragment, options?: {
8
+ showBcs?: boolean | null;
9
+ showContent?: boolean;
10
+ }): NonNullable<IotaObjectResponse['data']>;
@@ -0,0 +1,59 @@
1
+ import { formatDisplay } from "./display.js";
2
+ import { moveDataToRpcContent } from "./move.js";
3
+ import { mapGraphQLOwnerToRpcOwner } from "./owner.js";
4
+ import { toShortTypeString } from "./util.js";
5
+ function mapGraphQLObjectToRpcObject(object, options = {}) {
6
+ return {
7
+ bcs: options?.showBcs ? {
8
+ dataType: "moveObject",
9
+ bcsBytes: object.asMoveObject?.contents?.bcs,
10
+ version: object.version,
11
+ type: toShortTypeString(object.asMoveObject?.contents?.type.repr)
12
+ } : void 0,
13
+ content: options.showContent ? {
14
+ dataType: "moveObject",
15
+ ...moveDataToRpcContent(
16
+ object.asMoveObject?.contents?.data,
17
+ object.asMoveObject?.contents?.type.layout
18
+ )
19
+ } : void 0,
20
+ digest: object.digest,
21
+ display: formatDisplay(object),
22
+ objectId: object.objectId,
23
+ owner: mapGraphQLOwnerToRpcOwner(object.owner),
24
+ previousTransaction: object.previousTransactionBlock?.digest,
25
+ storageRebate: object.storageRebate,
26
+ type: toShortTypeString(object.asMoveObject?.contents?.type.repr),
27
+ version: String(object.version)
28
+ };
29
+ }
30
+ function mapGraphQLMoveObjectToRpcObject(object, options = {}) {
31
+ return {
32
+ bcs: options?.showBcs ? {
33
+ dataType: "moveObject",
34
+ bcsBytes: object?.contents?.bcs,
35
+ version: object.version,
36
+ type: toShortTypeString(object?.contents?.type.repr)
37
+ } : void 0,
38
+ content: options.showContent ? {
39
+ dataType: "moveObject",
40
+ ...moveDataToRpcContent(
41
+ object?.contents?.data,
42
+ object?.contents?.type.layout
43
+ )
44
+ } : void 0,
45
+ digest: object.digest,
46
+ display: formatDisplay(object),
47
+ objectId: object.objectId,
48
+ owner: mapGraphQLOwnerToRpcOwner(object.owner),
49
+ previousTransaction: object.previousTransactionBlock?.digest,
50
+ storageRebate: object.storageRebate,
51
+ type: toShortTypeString(object?.contents?.type.repr),
52
+ version: String(object.version)
53
+ };
54
+ }
55
+ export {
56
+ mapGraphQLMoveObjectToRpcObject,
57
+ mapGraphQLObjectToRpcObject
58
+ };
59
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mappers/object.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaObjectResponse } from '@iota/iota-sdk/client';\n\nimport type {\n MoveValue,\n Rpc_Move_Object_FieldsFragment,\n Rpc_Object_FieldsFragment,\n} from '../generated/queries.js';\nimport { formatDisplay } from './display.js';\nimport { moveDataToRpcContent } from './move.js';\nimport { mapGraphQLOwnerToRpcOwner } from './owner.js';\nimport { toShortTypeString } from './util.js';\n\nexport function mapGraphQLObjectToRpcObject(\n object: Rpc_Object_FieldsFragment,\n options: { showBcs?: boolean | null; showContent?: boolean } = {},\n): NonNullable<IotaObjectResponse['data']> {\n return {\n bcs: options?.showBcs\n ? {\n dataType: 'moveObject' as const,\n bcsBytes: object.asMoveObject?.contents?.bcs,\n version: object.version as unknown as string,\n type: toShortTypeString(object.asMoveObject?.contents?.type.repr!),\n }\n : undefined,\n content: options.showContent\n ? {\n dataType: 'moveObject' as const,\n ...(moveDataToRpcContent(\n object.asMoveObject?.contents?.data!,\n object.asMoveObject?.contents?.type.layout!,\n ) as {\n fields: {\n [key: string]: MoveValue;\n };\n type: string;\n }),\n }\n : undefined,\n digest: object.digest!,\n display: formatDisplay(object),\n objectId: object.objectId,\n owner: mapGraphQLOwnerToRpcOwner(object.owner),\n previousTransaction: object.previousTransactionBlock?.digest,\n storageRebate: object.storageRebate,\n type: toShortTypeString(object.asMoveObject?.contents?.type.repr!),\n version: String(object.version),\n };\n}\n\nexport function mapGraphQLMoveObjectToRpcObject(\n object: Rpc_Move_Object_FieldsFragment,\n options: { showBcs?: boolean | null; showContent?: boolean } = {},\n): NonNullable<IotaObjectResponse['data']> {\n return {\n bcs: options?.showBcs\n ? {\n dataType: 'moveObject' as const,\n bcsBytes: object?.contents?.bcs,\n version: object.version as unknown as string,\n type: toShortTypeString(object?.contents?.type.repr!),\n }\n : undefined,\n content: options.showContent\n ? {\n dataType: 'moveObject' as const,\n ...(moveDataToRpcContent(\n object?.contents?.data!,\n object?.contents?.type.layout!,\n ) as {\n fields: {\n [key: string]: MoveValue;\n };\n type: string;\n }),\n }\n : undefined,\n digest: object.digest!,\n display: formatDisplay(object),\n objectId: object.objectId,\n owner: mapGraphQLOwnerToRpcOwner(object.owner),\n previousTransaction: object.previousTransactionBlock?.digest,\n storageRebate: object.storageRebate,\n type: toShortTypeString(object?.contents?.type.repr!),\n version: String(object.version),\n };\n}\n"],
5
+ "mappings": "AAWA,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AACrC,SAAS,iCAAiC;AAC1C,SAAS,yBAAyB;AAE3B,SAAS,4BACZ,QACA,UAA+D,CAAC,GACzB;AACvC,SAAO;AAAA,IACH,KAAK,SAAS,UACR;AAAA,MACI,UAAU;AAAA,MACV,UAAU,OAAO,cAAc,UAAU;AAAA,MACzC,SAAS,OAAO;AAAA,MAChB,MAAM,kBAAkB,OAAO,cAAc,UAAU,KAAK,IAAK;AAAA,IACrE,IACA;AAAA,IACN,SAAS,QAAQ,cACX;AAAA,MACI,UAAU;AAAA,MACV,GAAI;AAAA,QACA,OAAO,cAAc,UAAU;AAAA,QAC/B,OAAO,cAAc,UAAU,KAAK;AAAA,MACxC;AAAA,IAMJ,IACA;AAAA,IACN,QAAQ,OAAO;AAAA,IACf,SAAS,cAAc,MAAM;AAAA,IAC7B,UAAU,OAAO;AAAA,IACjB,OAAO,0BAA0B,OAAO,KAAK;AAAA,IAC7C,qBAAqB,OAAO,0BAA0B;AAAA,IACtD,eAAe,OAAO;AAAA,IACtB,MAAM,kBAAkB,OAAO,cAAc,UAAU,KAAK,IAAK;AAAA,IACjE,SAAS,OAAO,OAAO,OAAO;AAAA,EAClC;AACJ;AAEO,SAAS,gCACZ,QACA,UAA+D,CAAC,GACzB;AACvC,SAAO;AAAA,IACH,KAAK,SAAS,UACR;AAAA,MACI,UAAU;AAAA,MACV,UAAU,QAAQ,UAAU;AAAA,MAC5B,SAAS,OAAO;AAAA,MAChB,MAAM,kBAAkB,QAAQ,UAAU,KAAK,IAAK;AAAA,IACxD,IACA;AAAA,IACN,SAAS,QAAQ,cACX;AAAA,MACI,UAAU;AAAA,MACV,GAAI;AAAA,QACA,QAAQ,UAAU;AAAA,QAClB,QAAQ,UAAU,KAAK;AAAA,MAC3B;AAAA,IAMJ,IACA;AAAA,IACN,QAAQ,OAAO;AAAA,IACf,SAAS,cAAc,MAAM;AAAA,IAC7B,UAAU,OAAO;AAAA,IACjB,OAAO,0BAA0B,OAAO,KAAK;AAAA,IAC7C,qBAAqB,OAAO,0BAA0B;AAAA,IACtD,eAAe,OAAO;AAAA,IACtB,MAAM,kBAAkB,QAAQ,UAAU,KAAK,IAAK;AAAA,IACpD,SAAS,OAAO,OAAO,OAAO;AAAA,EAClC;AACJ;",
6
+ "names": []
7
+ }
@@ -0,0 +1,3 @@
1
+ import type { ObjectOwner } from '@iota/iota-sdk/client';
2
+ import type { Rpc_Object_FieldsFragment } from '../generated/queries.js';
3
+ export declare function mapGraphQLOwnerToRpcOwner(owner: Rpc_Object_FieldsFragment['owner']): ObjectOwner | null;
@@ -0,0 +1,28 @@
1
+ function mapGraphQLOwnerToRpcOwner(owner) {
2
+ switch (owner?.__typename) {
3
+ case "AddressOwner":
4
+ return owner.owner?.asObject ? {
5
+ ObjectOwner: owner.owner?.asObject.address
6
+ } : {
7
+ AddressOwner: owner.owner?.asAddress?.address
8
+ };
9
+ case "Parent":
10
+ return {
11
+ ObjectOwner: owner.parent?.address
12
+ };
13
+ case "Shared": {
14
+ return {
15
+ Shared: {
16
+ initial_shared_version: String(owner.initialSharedVersion)
17
+ }
18
+ };
19
+ }
20
+ case "Immutable":
21
+ return "Immutable";
22
+ }
23
+ return null;
24
+ }
25
+ export {
26
+ mapGraphQLOwnerToRpcOwner
27
+ };
28
+ //# sourceMappingURL=owner.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/mappers/owner.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { ObjectOwner } from '@iota/iota-sdk/client';\n\nimport type { Rpc_Object_FieldsFragment } from '../generated/queries.js';\n\nexport function mapGraphQLOwnerToRpcOwner(\n owner: Rpc_Object_FieldsFragment['owner'],\n): ObjectOwner | null {\n switch (owner?.__typename) {\n case 'AddressOwner':\n return owner.owner?.asObject\n ? {\n ObjectOwner: owner.owner?.asObject.address!,\n }\n : {\n AddressOwner: owner.owner?.asAddress?.address!,\n };\n case 'Parent':\n return {\n ObjectOwner: owner.parent?.address,\n };\n case 'Shared': {\n return {\n Shared: {\n initial_shared_version: String(owner.initialSharedVersion),\n },\n };\n }\n case 'Immutable':\n return 'Immutable';\n }\n\n return null;\n}\n"],
5
+ "mappings": "AAQO,SAAS,0BACZ,OACkB;AAClB,UAAQ,OAAO,YAAY;AAAA,IACvB,KAAK;AACD,aAAO,MAAM,OAAO,WACd;AAAA,QACI,aAAa,MAAM,OAAO,SAAS;AAAA,MACvC,IACA;AAAA,QACI,cAAc,MAAM,OAAO,WAAW;AAAA,MAC1C;AAAA,IACV,KAAK;AACD,aAAO;AAAA,QACH,aAAa,MAAM,QAAQ;AAAA,MAC/B;AAAA,IACJ,KAAK,UAAU;AACX,aAAO;AAAA,QACH,QAAQ;AAAA,UACJ,wBAAwB,OAAO,MAAM,oBAAoB;AAAA,QAC7D;AAAA,MACJ;AAAA,IACJ;AAAA,IACA,KAAK;AACD,aAAO;AAAA,EACf;AAEA,SAAO;AACX;",
6
+ "names": []
7
+ }
@@ -0,0 +1,3 @@
1
+ import type { DelegatedStake } from '@iota/iota-sdk/client';
2
+ import type { Rpc_Stake_FieldsFragment } from '../generated/queries.js';
3
+ export declare function mapGraphQLStakeToRpcStake(stakes: Rpc_Stake_FieldsFragment[]): DelegatedStake[];