fix: catchup to upstream loader changes
This commit is contained in:
parent
00fd0fc435
commit
757cf3ec16
|
@ -69,6 +69,7 @@ declare module '@solana/web3.js' {
|
||||||
): Transaction;
|
): Transaction;
|
||||||
static move(from: PublicKey, to: PublicKey, amount: number): Transaction;
|
static move(from: PublicKey, to: PublicKey, amount: number): Transaction;
|
||||||
static assign(from: PublicKey, programId: PublicKey): Transaction;
|
static assign(from: PublicKey, programId: PublicKey): Transaction;
|
||||||
|
static spawn(programId: PublicKey): Transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
// === src/transaction.js ===
|
// === src/transaction.js ===
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
import * as BufferLayout from 'buffer-layout';
|
import * as BufferLayout from 'buffer-layout';
|
||||||
|
|
||||||
import {PublicKey, Transaction} from '.';
|
import {PublicKey, SystemProgram, Transaction} from '.';
|
||||||
import {sendAndConfirmTransaction} from './util/send-and-confirm-transaction';
|
import {sendAndConfirmTransaction} from './util/send-and-confirm-transaction';
|
||||||
import type {Account, Connection} from '.';
|
import type {Account, Connection} from '.';
|
||||||
|
|
||||||
|
@ -85,12 +85,15 @@ export class Loader {
|
||||||
userdata,
|
userdata,
|
||||||
);
|
);
|
||||||
|
|
||||||
const transaction = new Transaction({
|
let transaction = new Transaction({
|
||||||
fee: 0,
|
fee: 0,
|
||||||
keys: [program.publicKey],
|
keys: [program.publicKey],
|
||||||
programId: this.programId,
|
programId: this.programId,
|
||||||
userdata,
|
userdata,
|
||||||
});
|
});
|
||||||
await sendAndConfirmTransaction(this.connection, program, transaction);
|
await sendAndConfirmTransaction(this.connection, program, transaction);
|
||||||
|
|
||||||
|
transaction = SystemProgram.spawn(program.publicKey);
|
||||||
|
await sendAndConfirmTransaction(this.connection, program, transaction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,4 +105,28 @@ export class SystemProgram {
|
||||||
userdata,
|
userdata,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Spawn a new program from an account
|
||||||
|
*/
|
||||||
|
static spawn(programId: PublicKey): Transaction {
|
||||||
|
const userdataLayout = BufferLayout.struct([
|
||||||
|
BufferLayout.u32('instruction'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
const userdata = Buffer.alloc(userdataLayout.span);
|
||||||
|
userdataLayout.encode(
|
||||||
|
{
|
||||||
|
instruction: 3, // Spawn instruction
|
||||||
|
},
|
||||||
|
userdata,
|
||||||
|
);
|
||||||
|
|
||||||
|
return new Transaction({
|
||||||
|
fee: 0,
|
||||||
|
keys: [programId],
|
||||||
|
programId: SystemProgram.programId,
|
||||||
|
userdata,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import {mockRpcEnabled} from './__mocks__/node-fetch';
|
||||||
import {url} from './url';
|
import {url} from './url';
|
||||||
import {newAccountWithTokens} from './new-account-with-tokens';
|
import {newAccountWithTokens} from './new-account-with-tokens';
|
||||||
|
|
||||||
test('unstable - load', async () => {
|
test('load noop program', async () => {
|
||||||
if (mockRpcEnabled) {
|
if (mockRpcEnabled) {
|
||||||
console.log('non-live test skipped');
|
console.log('non-live test skipped');
|
||||||
return;
|
return;
|
||||||
|
@ -25,6 +25,6 @@ test('unstable - load', async () => {
|
||||||
programId: noopProgramId,
|
programId: noopProgramId,
|
||||||
});
|
});
|
||||||
const signature = await connection.sendTransaction(from, noopTransaction);
|
const signature = await connection.sendTransaction(from, noopTransaction);
|
||||||
expect(connection.confirmTransaction(signature)).resolves.toBe(true);
|
await expect(connection.confirmTransaction(signature)).resolves.toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue