Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .changeset/lazy-baths-rule.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
---
'@solana/instruction-plans': major
---

Reshape the successful `SingleTransactionPlanResult` factory functions. The `successfulSingleTransactionPlanResult` helper now accepts a context object (which must include a `signature` property) instead of a separate `signature` argument. A new `successfulSingleTransactionPlanResultFromTransaction` helper is introduced for the common case of creating a successful result from a full `Transaction` object.

**BREAKING CHANGES**

**`successfulSingleTransactionPlanResult` renamed to `successfulSingleTransactionPlanResultFromTransaction`.** If you were creating a successful result from a `Transaction`, update the function name.

```diff
- successfulSingleTransactionPlanResult(message, transaction)
+ successfulSingleTransactionPlanResultFromTransaction(message, transaction)
```

**`successfulSingleTransactionPlanResultFromSignature` renamed to `successfulSingleTransactionPlanResult` with a new signature.** The `signature` is no longer a separate argument — it must be included in the `context` object.

```diff
- successfulSingleTransactionPlanResultFromSignature(message, signature)
+ successfulSingleTransactionPlanResult(message, { signature })
```

```diff
- successfulSingleTransactionPlanResultFromSignature(message, signature, context)
+ successfulSingleTransactionPlanResult(message, { ...context, signature })
```
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
sequentialTransactionPlan,
sequentialTransactionPlanResult,
singleTransactionPlan,
successfulSingleTransactionPlanResult,
successfulSingleTransactionPlanResultFromTransaction,
TransactionPlanResult,
} from '../index';
import { createMessage, createTransaction, FOREVER_PROMISE } from './__setup__';
Expand Down Expand Up @@ -60,7 +60,9 @@ describe('createTransactionPlanExecutor', () => {
const executor = createTransactionPlanExecutor({ executeTransactionMessage });

const promise = executor(singleTransactionPlan(messageA));
await expect(promise).resolves.toStrictEqual(successfulSingleTransactionPlanResult(messageA, transactionA));
await expect(promise).resolves.toStrictEqual(
successfulSingleTransactionPlanResultFromTransaction(messageA, transactionA),
);
expect(executeTransactionMessage).toHaveBeenNthCalledWith(1, messageA, { abortSignal: undefined });
});

Expand Down Expand Up @@ -88,7 +90,7 @@ describe('createTransactionPlanExecutor', () => {

const promise = executor(singleTransactionPlan(messageA));
await expect(promise).resolves.toStrictEqual(
successfulSingleTransactionPlanResult(messageA, transactionA, { custom: 'context' }),
successfulSingleTransactionPlanResultFromTransaction(messageA, transactionA, { custom: 'context' }),
);
});

Expand Down Expand Up @@ -192,8 +194,8 @@ describe('createTransactionPlanExecutor', () => {
const promise = executor(sequentialTransactionPlan([messageA, messageB]));
await expect(promise).resolves.toStrictEqual(
sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResult(messageB, createTransaction('B')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageB, createTransaction('B')),
]),
);

Expand Down Expand Up @@ -258,8 +260,12 @@ describe('createTransactionPlanExecutor', () => {
const promise = executor(sequentialTransactionPlan([messageA, messageB]));
await expect(promise).resolves.toStrictEqual(
sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A'), { custom: 'context' }),
successfulSingleTransactionPlanResult(messageB, createTransaction('B'), { custom: 'context' }),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A'), {
custom: 'context',
}),
successfulSingleTransactionPlanResultFromTransaction(messageB, createTransaction('B'), {
custom: 'context',
}),
]),
);
});
Expand All @@ -278,7 +284,7 @@ describe('createTransactionPlanExecutor', () => {
new SolanaError(SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN, {
cause,
transactionPlanResult: sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
failedSingleTransactionPlanResult(messageB, cause),
]),
}),
Expand Down Expand Up @@ -343,7 +349,7 @@ describe('createTransactionPlanExecutor', () => {
new SolanaError(SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN, {
cause,
transactionPlanResult: sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
failedSingleTransactionPlanResult(messageB, cause),
canceledSingleTransactionPlanResult(messageC),
]),
Expand Down Expand Up @@ -404,8 +410,8 @@ describe('createTransactionPlanExecutor', () => {
const promise = executor(parallelTransactionPlan([messageA, messageB]));
await expect(promise).resolves.toStrictEqual(
parallelTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResult(messageB, createTransaction('B')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageB, createTransaction('B')),
]),
);

Expand Down Expand Up @@ -443,8 +449,12 @@ describe('createTransactionPlanExecutor', () => {
const promise = executor(parallelTransactionPlan([messageA, messageB]));
await expect(promise).resolves.toStrictEqual(
parallelTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A'), { custom: 'context' }),
successfulSingleTransactionPlanResult(messageB, createTransaction('B'), { custom: 'context' }),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A'), {
custom: 'context',
}),
successfulSingleTransactionPlanResultFromTransaction(messageB, createTransaction('B'), {
custom: 'context',
}),
]),
);
});
Expand All @@ -467,9 +477,9 @@ describe('createTransactionPlanExecutor', () => {
new SolanaError(SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN, {
cause,
transactionPlanResult: parallelTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
failedSingleTransactionPlanResult(messageB, cause),
successfulSingleTransactionPlanResult(messageC, createTransaction('C')),
successfulSingleTransactionPlanResultFromTransaction(messageC, createTransaction('C')),
]),
}),
);
Expand Down Expand Up @@ -500,9 +510,9 @@ describe('createTransactionPlanExecutor', () => {
new SolanaError(SOLANA_ERROR__INSTRUCTION_PLANS__FAILED_TO_EXECUTE_TRANSACTION_PLAN, {
cause,
transactionPlanResult: parallelTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
failedSingleTransactionPlanResult(messageB, cause),
successfulSingleTransactionPlanResult(messageC, createTransaction('C')),
successfulSingleTransactionPlanResultFromTransaction(messageC, createTransaction('C')),
]),
}),
);
Expand Down Expand Up @@ -569,17 +579,17 @@ describe('createTransactionPlanExecutor', () => {
await expect(promise).resolves.toStrictEqual(
parallelTransactionPlanResult([
sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
parallelTransactionPlanResult([
successfulSingleTransactionPlanResult(messageB, createTransaction('B')),
successfulSingleTransactionPlanResult(messageC, createTransaction('C')),
successfulSingleTransactionPlanResultFromTransaction(messageB, createTransaction('B')),
successfulSingleTransactionPlanResultFromTransaction(messageC, createTransaction('C')),
]),
successfulSingleTransactionPlanResult(messageD, createTransaction('D')),
successfulSingleTransactionPlanResultFromTransaction(messageD, createTransaction('D')),
]),
successfulSingleTransactionPlanResult(messageE, createTransaction('E')),
successfulSingleTransactionPlanResultFromTransaction(messageE, createTransaction('E')),
sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageF, createTransaction('F')),
successfulSingleTransactionPlanResult(messageG, createTransaction('G')),
successfulSingleTransactionPlanResultFromTransaction(messageF, createTransaction('F')),
successfulSingleTransactionPlanResultFromTransaction(messageG, createTransaction('G')),
]),
]),
);
Expand Down Expand Up @@ -617,17 +627,17 @@ describe('createTransactionPlanExecutor', () => {
cause,
transactionPlanResult: parallelTransactionPlanResult([
sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
parallelTransactionPlanResult([
successfulSingleTransactionPlanResult(messageB, createTransaction('B')),
successfulSingleTransactionPlanResultFromTransaction(messageB, createTransaction('B')),
failedSingleTransactionPlanResult(messageC, cause),
]),
canceledSingleTransactionPlanResult(messageD),
]),
successfulSingleTransactionPlanResult(messageE, createTransaction('E')),
successfulSingleTransactionPlanResultFromTransaction(messageE, createTransaction('E')),
sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageF, createTransaction('F')),
successfulSingleTransactionPlanResult(messageG, createTransaction('G')),
successfulSingleTransactionPlanResultFromTransaction(messageF, createTransaction('F')),
successfulSingleTransactionPlanResultFromTransaction(messageG, createTransaction('G')),
]),
]),
}),
Expand Down Expand Up @@ -672,17 +682,17 @@ describe('createTransactionPlanExecutor', () => {
cause,
transactionPlanResult: parallelTransactionPlanResult([
sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageA, createTransaction('A')),
successfulSingleTransactionPlanResultFromTransaction(messageA, createTransaction('A')),
parallelTransactionPlanResult([
successfulSingleTransactionPlanResult(messageB, createTransaction('B')),
successfulSingleTransactionPlanResultFromTransaction(messageB, createTransaction('B')),
failedSingleTransactionPlanResult(messageC, cause),
]),
canceledSingleTransactionPlanResult(messageD),
]),
successfulSingleTransactionPlanResult(messageE, createTransaction('E')),
successfulSingleTransactionPlanResultFromTransaction(messageE, createTransaction('E')),
sequentialTransactionPlanResult([
successfulSingleTransactionPlanResult(messageF, createTransaction('F')),
successfulSingleTransactionPlanResult(messageG, createTransaction('G')),
successfulSingleTransactionPlanResultFromTransaction(messageF, createTransaction('F')),
successfulSingleTransactionPlanResultFromTransaction(messageG, createTransaction('G')),
]),
]),
}),
Expand Down Expand Up @@ -742,7 +752,7 @@ describe('createTransactionPlanExecutor', () => {
describe('passthroughFailedTransactionPlanExecution', () => {
it('returns the resolved result as-is', async () => {
expect.assertions(1);
const result = successfulSingleTransactionPlanResult(createMessage('A'), createTransaction('A'));
const result = successfulSingleTransactionPlanResultFromTransaction(createMessage('A'), createTransaction('A'));
const promise = Promise.resolve(result);
await expect(passthroughFailedTransactionPlanExecution(promise)).resolves.toBe(result);
});
Expand Down
Loading
Loading