@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.mjs
CHANGED
|
@@ -2293,10 +2293,14 @@ function getProgramPluginInstructionsTypeFragment(scope) {
|
|
|
2293
2293
|
programNode.instructions.map((instruction) => {
|
|
2294
2294
|
const name = nameApi.programPluginInstructionKey(instruction.name);
|
|
2295
2295
|
const isAsync = asyncInstructions.includes(instruction.name);
|
|
2296
|
-
|
|
2297
|
-
const
|
|
2298
|
-
const
|
|
2299
|
-
|
|
2296
|
+
let instructionInputType = isAsync ? use("type " + nameApi.instructionAsyncInputType(instruction.name), "generatedInstructions") : use("type " + nameApi.instructionSyncInputType(instruction.name), "generatedInstructions");
|
|
2297
|
+
const instructionFunction = isAsync ? use("type " + nameApi.instructionAsyncFunction(instruction.name), "generatedInstructions") : use("type " + nameApi.instructionSyncFunction(instruction.name), "generatedInstructions");
|
|
2298
|
+
const payerDefaultValues = getPayerDefaultValues(instruction);
|
|
2299
|
+
if (payerDefaultValues.length > 0) {
|
|
2300
|
+
const fieldStringUnion = payerDefaultValues.map(({ name: name2 }) => `"${name2}"`).join(" | ");
|
|
2301
|
+
instructionInputType = fragment`MakeOptional<${instructionInputType}, ${fieldStringUnion}>`;
|
|
2302
|
+
}
|
|
2303
|
+
return fragment`${name}: (input: ${instructionInputType}) => ReturnType<typeof ${instructionFunction}> & ${selfPlanAndSendFunctions};`;
|
|
2300
2304
|
}),
|
|
2301
2305
|
(c) => c.join(" ")
|
|
2302
2306
|
);
|
|
@@ -2314,7 +2318,7 @@ function getProgramPluginRequirementsTypeFragment(scope) {
|
|
|
2314
2318
|
const requirements = mergeFragments(
|
|
2315
2319
|
[
|
|
2316
2320
|
hasAccounts ? clientWithRpc : void 0,
|
|
2317
|
-
|
|
2321
|
+
hasPayerDefaultValues(programNode) ? clientWithPayer : void 0,
|
|
2318
2322
|
hasInstructions ? clientWithTransactionPlanning : void 0,
|
|
2319
2323
|
hasInstructions ? clientWithTransactionSending : void 0
|
|
2320
2324
|
],
|
|
@@ -2334,7 +2338,7 @@ function getProgramPluginFunctionFragment(scope) {
|
|
|
2334
2338
|
);
|
|
2335
2339
|
return fragment`export function ${programPluginFunction}() {
|
|
2336
2340
|
return <T extends ${programPluginRequirementsType}>(client: T) => {
|
|
2337
|
-
return { ...client, ${programPluginKey}: { ${fields}
|
|
2341
|
+
return { ...client, ${programPluginKey}: <${programPluginType}>{ ${fields} } };
|
|
2338
2342
|
};
|
|
2339
2343
|
}`;
|
|
2340
2344
|
}
|
|
@@ -2359,40 +2363,40 @@ function getProgramPluginInstructionsObjectFragment(scope) {
|
|
|
2359
2363
|
programNode.instructions.map((instruction) => {
|
|
2360
2364
|
const name = nameApi.programPluginInstructionKey(instruction.name);
|
|
2361
2365
|
const isAsync = asyncInstructions.includes(instruction.name);
|
|
2362
|
-
const instructionInputType = isAsync ? use("type " + nameApi.instructionAsyncInputType(instruction.name), "generatedInstructions") : use("type " + nameApi.instructionSyncInputType(instruction.name), "generatedInstructions");
|
|
2363
2366
|
const instructionFunction = isAsync ? use(nameApi.instructionAsyncFunction(instruction.name), "generatedInstructions") : use(nameApi.instructionSyncFunction(instruction.name), "generatedInstructions");
|
|
2364
2367
|
const addSelfPlanAndSendFunctions = use("addSelfPlanAndSendFunctions", "solanaProgramClientCore");
|
|
2365
|
-
const
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
+
const payerDefaultValues = getPayerDefaultValues(instruction);
|
|
2369
|
+
let input = fragment`input`;
|
|
2370
|
+
if (payerDefaultValues.length > 0) {
|
|
2371
|
+
const fieldOverrides = mergeFragments(
|
|
2372
|
+
payerDefaultValues.map(({ name: name2, signer }) => {
|
|
2373
|
+
const signerDefault = signer ? "client.payer" : "client.payer.address";
|
|
2374
|
+
return fragment`${name2}: input.${name2} ?? ${signerDefault}`;
|
|
2375
|
+
}),
|
|
2376
|
+
(c) => c.join(", ")
|
|
2377
|
+
);
|
|
2378
|
+
input = fragment`{ ...input, ${fieldOverrides} }`;
|
|
2368
2379
|
}
|
|
2369
|
-
|
|
2370
|
-
const processedInputWithDefaultPayerValues = inputWithDefaultPayerValues.map((inputNode) => {
|
|
2371
|
-
return isNode(inputNode, "instructionAccountNode") ? { name: inputNode.name, signer: inputNode.isSigner !== false } : { name: renamedArgs.get(inputNode.name) ?? inputNode.name, signer: false };
|
|
2372
|
-
});
|
|
2373
|
-
const fieldStringUnion = processedInputWithDefaultPayerValues.map(({ name: name2 }) => `"${name2}"`).join(" | ");
|
|
2374
|
-
const instructionInputTypeWithPayer = fragment`MakeOptional<${instructionInputType}, ${fieldStringUnion}>`;
|
|
2375
|
-
const fieldOverrides = mergeFragments(
|
|
2376
|
-
processedInputWithDefaultPayerValues.map(
|
|
2377
|
-
({ name: name2, signer }) => fragment`${name2}: input.${name2} ?? ${signer ? "client.payer" : "client.payer.address"}`
|
|
2378
|
-
),
|
|
2379
|
-
(c) => c.join(", ")
|
|
2380
|
-
);
|
|
2381
|
-
const inputWithPayer = fragment`{ ...input, ${fieldOverrides} }`;
|
|
2382
|
-
return fragment`${name}: (input: ${instructionInputTypeWithPayer}) => ${addSelfPlanAndSendFunctions}(client, ${instructionFunction}(${inputWithPayer}))`;
|
|
2380
|
+
return fragment`${name}: input => ${addSelfPlanAndSendFunctions}(client, ${instructionFunction}(${input}))`;
|
|
2383
2381
|
}),
|
|
2384
2382
|
(c) => c.join(", ")
|
|
2385
2383
|
);
|
|
2386
2384
|
return fragment`instructions: { ${fields} }`;
|
|
2387
2385
|
}
|
|
2388
2386
|
function getMakeOptionalHelperTypeFragment(scope) {
|
|
2389
|
-
if (!
|
|
2387
|
+
if (!hasPayerDefaultValues(scope.programNode)) return;
|
|
2390
2388
|
return fragment`type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;`;
|
|
2391
2389
|
}
|
|
2392
|
-
function
|
|
2393
|
-
return programNode.instructions.some((instruction) =>
|
|
2390
|
+
function hasPayerDefaultValues(programNode) {
|
|
2391
|
+
return programNode.instructions.some((instruction) => getPayerDefaultValueNodes(instruction).length > 0);
|
|
2392
|
+
}
|
|
2393
|
+
function getPayerDefaultValues(instructionNode) {
|
|
2394
|
+
const renamedArgs = getRenamedArgsMap(instructionNode);
|
|
2395
|
+
return getPayerDefaultValueNodes(instructionNode).map((inputNode) => {
|
|
2396
|
+
return isNode(inputNode, "instructionAccountNode") ? { name: inputNode.name, signer: inputNode.isSigner !== false } : { name: renamedArgs.get(inputNode.name) ?? inputNode.name, signer: false };
|
|
2397
|
+
});
|
|
2394
2398
|
}
|
|
2395
|
-
function
|
|
2399
|
+
function getPayerDefaultValueNodes(instructionNode) {
|
|
2396
2400
|
return [
|
|
2397
2401
|
...instructionNode.accounts.filter((a) => !a.isOptional && isNode(a.defaultValue, "payerValueNode")),
|
|
2398
2402
|
...instructionNode.arguments.filter((a) => isNode(a.defaultValue, "payerValueNode"))
|