Use xo-cash/utils sse. Add vending machine template. Greatly improve startup times.

This commit is contained in:
2026-05-24 19:35:50 +02:00
parent def261b568
commit 85746c3306
11 changed files with 367 additions and 31 deletions
+12 -11
View File
@@ -1,10 +1,9 @@
import type {
AcceptInvitationParameters,
AppendInvitationParameters,
InvitationParameters,
Engine,
GetSpendableResourcesParameters,
} from "@xo-cash/engine";
import { generateTemplateIdentifier, hasInvitationExpired, mergeInvitationCommits } from "@xo-cash/engine";
import { generateTemplateIdentifier, hasInvitationExpired, mergeInvitationCommits, serializeInvitation } from "@xo-cash/engine";
import type {
XOInvitation,
XOInvitationCommit,
@@ -15,10 +14,6 @@ import type {
} from "@xo-cash/types";
import type { UnspentOutputData } from "@xo-cash/state";
import {
bigIntToBinUint64LE,
bigIntToBinUintBE,
bigIntToBinUintLE,
bigIntToVmNumber,
binToHex,
encodeTransaction,
generateTransaction,
@@ -90,13 +85,13 @@ export class Invitation extends EventEmitter<InvitationEventMap> {
}
// engine invitation (I have no idea if this is required)
const engineInvitation = await dependencies.engine.acceptInvitation(invitation);
const engineInvitation = await dependencies.engine.importInvitation(serializeInvitation(invitation));
// Create the invitation
const invitationInstance = new Invitation(engineInvitation, dependencies);
// Start the invitation and its tracking
await invitationInstance.start();
invitationInstance.start();
return invitationInstance;
}
@@ -387,7 +382,7 @@ export class Invitation extends EventEmitter<InvitationEventMap> {
/**
* Accept the invitation
*/
async accept(acceptParams?: AcceptInvitationParameters): Promise<void> {
async accept(acceptParams?: InvitationParameters): Promise<void> {
// Accept the invitation
this.data = await this.engine.acceptInvitation(this.data, acceptParams);
@@ -438,7 +433,13 @@ export class Invitation extends EventEmitter<InvitationEventMap> {
/**
* Append a commit to the invitation
*/
async append(data: AppendInvitationParameters): Promise<void> {
async append(data: InvitationParameters): Promise<void> {
try {
await this.engine.acceptInvitation(this.data);
} catch (err) {
// Literally do nothing here. We are just trying to accept the invitation in case we haven't already
}
// Append the commit to the invitation
this.data = await this.engine.appendInvitation(this.data.invitationIdentifier, data);