@codama/renderers-js 2.0.0 → 2.0.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/index.browser.cjs +32 -28
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.mjs +32 -28
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.node.cjs +32 -28
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.mjs +32 -28
- package/dist/index.node.mjs.map +1 -1
- package/dist/index.react-native.mjs +32 -28
- package/dist/index.react-native.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.node.cjs
CHANGED
|
@@ -2319,10 +2319,14 @@ function getProgramPluginInstructionsTypeFragment(scope) {
|
|
|
2319
2319
|
programNode.instructions.map((instruction) => {
|
|
2320
2320
|
const name = nameApi.programPluginInstructionKey(instruction.name);
|
|
2321
2321
|
const isAsync = asyncInstructions.includes(instruction.name);
|
|
2322
|
-
|
|
2323
|
-
const
|
|
2324
|
-
const
|
|
2325
|
-
|
|
2322
|
+
let instructionInputType = isAsync ? use("type " + nameApi.instructionAsyncInputType(instruction.name), "generatedInstructions") : use("type " + nameApi.instructionSyncInputType(instruction.name), "generatedInstructions");
|
|
2323
|
+
const instructionFunction = isAsync ? use("type " + nameApi.instructionAsyncFunction(instruction.name), "generatedInstructions") : use("type " + nameApi.instructionSyncFunction(instruction.name), "generatedInstructions");
|
|
2324
|
+
const payerDefaultValues = getPayerDefaultValues(instruction);
|
|
2325
|
+
if (payerDefaultValues.length > 0) {
|
|
2326
|
+
const fieldStringUnion = payerDefaultValues.map(({ name: name2 }) => `"${name2}"`).join(" | ");
|
|
2327
|
+
instructionInputType = fragment`MakeOptional<${instructionInputType}, ${fieldStringUnion}>`;
|
|
2328
|
+
}
|
|
2329
|
+
return fragment`${name}: (input: ${instructionInputType}) => ReturnType<typeof ${instructionFunction}> & ${selfPlanAndSendFunctions};`;
|
|
2326
2330
|
}),
|
|
2327
2331
|
(c) => c.join(" ")
|
|
2328
2332
|
);
|
|
@@ -2340,7 +2344,7 @@ function getProgramPluginRequirementsTypeFragment(scope) {
|
|
|
2340
2344
|
const requirements = mergeFragments(
|
|
2341
2345
|
[
|
|
2342
2346
|
hasAccounts ? clientWithRpc : void 0,
|
|
2343
|
-
|
|
2347
|
+
hasPayerDefaultValues(programNode) ? clientWithPayer : void 0,
|
|
2344
2348
|
hasInstructions ? clientWithTransactionPlanning : void 0,
|
|
2345
2349
|
hasInstructions ? clientWithTransactionSending : void 0
|
|
2346
2350
|
],
|
|
@@ -2360,7 +2364,7 @@ function getProgramPluginFunctionFragment(scope) {
|
|
|
2360
2364
|
);
|
|
2361
2365
|
return fragment`export function ${programPluginFunction}() {
|
|
2362
2366
|
return <T extends ${programPluginRequirementsType}>(client: T) => {
|
|
2363
|
-
return { ...client, ${programPluginKey}: { ${fields}
|
|
2367
|
+
return { ...client, ${programPluginKey}: <${programPluginType}>{ ${fields} } };
|
|
2364
2368
|
};
|
|
2365
2369
|
}`;
|
|
2366
2370
|
}
|
|
@@ -2385,40 +2389,40 @@ function getProgramPluginInstructionsObjectFragment(scope) {
|
|
|
2385
2389
|
programNode.instructions.map((instruction) => {
|
|
2386
2390
|
const name = nameApi.programPluginInstructionKey(instruction.name);
|
|
2387
2391
|
const isAsync = asyncInstructions.includes(instruction.name);
|
|
2388
|
-
const instructionInputType = isAsync ? use("type " + nameApi.instructionAsyncInputType(instruction.name), "generatedInstructions") : use("type " + nameApi.instructionSyncInputType(instruction.name), "generatedInstructions");
|
|
2389
2392
|
const instructionFunction = isAsync ? use(nameApi.instructionAsyncFunction(instruction.name), "generatedInstructions") : use(nameApi.instructionSyncFunction(instruction.name), "generatedInstructions");
|
|
2390
2393
|
const addSelfPlanAndSendFunctions = use("addSelfPlanAndSendFunctions", "solanaProgramClientCore");
|
|
2391
|
-
const
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
+
const payerDefaultValues = getPayerDefaultValues(instruction);
|
|
2395
|
+
let input = fragment`input`;
|
|
2396
|
+
if (payerDefaultValues.length > 0) {
|
|
2397
|
+
const fieldOverrides = mergeFragments(
|
|
2398
|
+
payerDefaultValues.map(({ name: name2, signer }) => {
|
|
2399
|
+
const signerDefault = signer ? "client.payer" : "client.payer.address";
|
|
2400
|
+
return fragment`${name2}: input.${name2} ?? ${signerDefault}`;
|
|
2401
|
+
}),
|
|
2402
|
+
(c) => c.join(", ")
|
|
2403
|
+
);
|
|
2404
|
+
input = fragment`{ ...input, ${fieldOverrides} }`;
|
|
2394
2405
|
}
|
|
2395
|
-
|
|
2396
|
-
const processedInputWithDefaultPayerValues = inputWithDefaultPayerValues.map((inputNode) => {
|
|
2397
|
-
return nodes.isNode(inputNode, "instructionAccountNode") ? { name: inputNode.name, signer: inputNode.isSigner !== false } : { name: renamedArgs.get(inputNode.name) ?? inputNode.name, signer: false };
|
|
2398
|
-
});
|
|
2399
|
-
const fieldStringUnion = processedInputWithDefaultPayerValues.map(({ name: name2 }) => `"${name2}"`).join(" | ");
|
|
2400
|
-
const instructionInputTypeWithPayer = fragment`MakeOptional<${instructionInputType}, ${fieldStringUnion}>`;
|
|
2401
|
-
const fieldOverrides = mergeFragments(
|
|
2402
|
-
processedInputWithDefaultPayerValues.map(
|
|
2403
|
-
({ name: name2, signer }) => fragment`${name2}: input.${name2} ?? ${signer ? "client.payer" : "client.payer.address"}`
|
|
2404
|
-
),
|
|
2405
|
-
(c) => c.join(", ")
|
|
2406
|
-
);
|
|
2407
|
-
const inputWithPayer = fragment`{ ...input, ${fieldOverrides} }`;
|
|
2408
|
-
return fragment`${name}: (input: ${instructionInputTypeWithPayer}) => ${addSelfPlanAndSendFunctions}(client, ${instructionFunction}(${inputWithPayer}))`;
|
|
2406
|
+
return fragment`${name}: input => ${addSelfPlanAndSendFunctions}(client, ${instructionFunction}(${input}))`;
|
|
2409
2407
|
}),
|
|
2410
2408
|
(c) => c.join(", ")
|
|
2411
2409
|
);
|
|
2412
2410
|
return fragment`instructions: { ${fields} }`;
|
|
2413
2411
|
}
|
|
2414
2412
|
function getMakeOptionalHelperTypeFragment(scope) {
|
|
2415
|
-
if (!
|
|
2413
|
+
if (!hasPayerDefaultValues(scope.programNode)) return;
|
|
2416
2414
|
return fragment`type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;`;
|
|
2417
2415
|
}
|
|
2418
|
-
function
|
|
2419
|
-
return programNode.instructions.some((instruction) =>
|
|
2416
|
+
function hasPayerDefaultValues(programNode) {
|
|
2417
|
+
return programNode.instructions.some((instruction) => getPayerDefaultValueNodes(instruction).length > 0);
|
|
2418
|
+
}
|
|
2419
|
+
function getPayerDefaultValues(instructionNode) {
|
|
2420
|
+
const renamedArgs = getRenamedArgsMap(instructionNode);
|
|
2421
|
+
return getPayerDefaultValueNodes(instructionNode).map((inputNode) => {
|
|
2422
|
+
return nodes.isNode(inputNode, "instructionAccountNode") ? { name: inputNode.name, signer: inputNode.isSigner !== false } : { name: renamedArgs.get(inputNode.name) ?? inputNode.name, signer: false };
|
|
2423
|
+
});
|
|
2420
2424
|
}
|
|
2421
|
-
function
|
|
2425
|
+
function getPayerDefaultValueNodes(instructionNode) {
|
|
2422
2426
|
return [
|
|
2423
2427
|
...instructionNode.accounts.filter((a) => !a.isOptional && nodes.isNode(a.defaultValue, "payerValueNode")),
|
|
2424
2428
|
...instructionNode.arguments.filter((a) => nodes.isNode(a.defaultValue, "payerValueNode"))
|