codama-renderers-dart 0.2.1 → 0.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codama-renderers-dart",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "description": "Codama renderer for generating Dart code targeting the solana_kit SDK",
5
5
  "exports": {
6
6
  "node": {
@@ -50,24 +50,26 @@ export function getPdaPageFragment(
50
50
  })
51
51
  .join("\n");
52
52
 
53
- // Build the seed bytes list
54
- const seedBytesList: string[] = [];
53
+ // Build the PDA seeds list.
54
+ const seedValues: string[] = [];
55
55
  for (const seed of seeds) {
56
56
  if (seed.kind === "constantPdaSeedNode") {
57
57
  if (seed.value.kind === "bytesValueNode") {
58
- seedBytesList.push(` ...${bytesValueToDart(seed.value.data)},`);
58
+ seedValues.push(` Uint8List.fromList(${bytesValueToDart(seed.value.data)}),`);
59
59
  } else if (seed.value.kind === "stringValueNode") {
60
- seedBytesList.push(` ...utf8.encode('${seed.value.string}'),`);
60
+ seedValues.push(` '${seed.value.string}',`);
61
61
  } else if (seed.value.kind === "publicKeyValueNode") {
62
- seedBytesList.push(` ...getAddressEncoder().encode(Address('${seed.value.publicKey}')),`);
62
+ seedValues.push(
63
+ ` getAddressEncoder().encode(Address('${seed.value.publicKey}')),`,
64
+ );
63
65
  } else if (seed.value.kind === "numberValueNode") {
64
66
  const manifest = visit(seed.type, scope.typeManifestVisitor);
65
- seedBytesList.push(` ...${manifest.encoder.content}.encode(${seed.value.number}),`);
67
+ seedValues.push(` ${manifest.encoder.content}.encode(${seed.value.number}),`);
66
68
  }
67
69
  } else if (seed.kind === "variablePdaSeedNode") {
68
70
  const manifest = visit(seed.type, scope.typeManifestVisitor);
69
- seedBytesList.push(
70
- ` ...${manifest.encoder.content}.encode(seeds.${camelCase(seed.name as string)}),`,
71
+ seedValues.push(
72
+ ` ${manifest.encoder.content}.encode(seeds.${camelCase(seed.name as string)}),`,
71
73
  );
72
74
  }
73
75
  }
@@ -84,7 +86,8 @@ export function getPdaPageFragment(
84
86
  ${use("Uint8List", "dartTypedData")}
85
87
  ${use("immutable", "meta")}
86
88
  ${use("Address", "solanaAddresses")}
87
- ${use("getAddressEncoder", "solanaAddresses")}`,
89
+ ${use("getAddressEncoder", "solanaAddresses")}
90
+ ${use("getProgramDerivedAddress", "solanaAddresses")}`,
88
91
  ];
89
92
 
90
93
  if (hasSeedsClass) {
@@ -107,12 +110,14 @@ Future<(Address, int)> ${fragmentFromString(findFnName)}({
107
110
  ${fragmentFromString(seedsParam)}
108
111
  ${fragmentFromString(programIdParam)},
109
112
  }) async {
110
- final seedBytes = <int>[
111
- ${fragmentFromString(seedBytesList.join("\n"))}
113
+ final seeds = <Object>[
114
+ ${fragmentFromString(seedValues.join("\n"))}
112
115
  ];
113
116
 
114
- // TODO: Call getProgramDerivedAddress with seedBytes and programAddress
115
- throw UnimplementedError('PDA derivation not yet implemented');
117
+ return getProgramDerivedAddress(
118
+ programAddress: programAddress,
119
+ seeds: seeds,
120
+ );
116
121
  }`);
117
122
 
118
123
  return mergeFragments(parts, (cs) => cs.join("\n"));