Skip to content
Snippets Groups Projects
main.go 4.58 KiB
Newer Older
////////////////////////////////////////////////////////////////////////////////
// Copyright © 2022 xx foundation                                             //
//                                                                            //
// Use of this source code is governed by a license that can be found in the  //
// LICENSE file.                                                              //
////////////////////////////////////////////////////////////////////////////////
Jono Wenger's avatar
Jono Wenger committed

//go:build js && wasm

package main

import (
	"fmt"
	"github.com/pkg/errors"
	jww "github.com/spf13/jwalterweatherman"
	"gitlab.com/elixxir/client/bindings"
Jono Wenger's avatar
Jono Wenger committed
	"gitlab.com/elixxir/xxdk-wasm/wasm"
Jono Wenger's avatar
Jono Wenger committed
	"os"
	"syscall/js"
)

func main() {
	fmt.Println("Starting xxDK WebAssembly bindings.")
	fmt.Printf("Client version %s\n", bindings.GetVersion())
Jono Wenger's avatar
Jono Wenger committed

Jono Wenger's avatar
Jono Wenger committed
	// wasm/backup.go
	js.Global().Set("NewCmixFromBackup", js.FuncOf(wasm.NewCmixFromBackup))
	js.Global().Set("InitializeBackup", js.FuncOf(wasm.InitializeBackup))
	js.Global().Set("ResumeBackup", js.FuncOf(wasm.ResumeBackup))

	// wasm/broadcast.go
	js.Global().Set("NewBroadcastChannel", js.FuncOf(wasm.NewBroadcastChannel))

Jono Wenger's avatar
Jono Wenger committed
	// wasm/cmix.go
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("NewCmix", js.FuncOf(wasm.NewCmix))
	js.Global().Set("LoadCmix", js.FuncOf(wasm.LoadCmix))
	js.Global().Set("GetLoadCmix", js.FuncOf(wasm.GetLoadCmix))
Jono Wenger's avatar
Jono Wenger committed

Jono Wenger's avatar
Jono Wenger committed
	// wasm/dummy.go
	js.Global().Set("NewDummyTrafficManager",
		js.FuncOf(wasm.NewDummyTrafficManager))

Jono Wenger's avatar
Jono Wenger committed
	// wasm/e2e.go
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("Login", js.FuncOf(wasm.Login))
	js.Global().Set("LoginEphemeral", js.FuncOf(wasm.LoginEphemeral))
Jono Wenger's avatar
Jono Wenger committed

Jono Wenger's avatar
Jono Wenger committed
	// wasm/errors.go
	js.Global().Set("CreateUserFriendlyErrorMessage",
		js.FuncOf(wasm.CreateUserFriendlyErrorMessage))
	js.Global().Set("UpdateCommonErrors",
		js.FuncOf(wasm.UpdateCommonErrors))

	// wasm/fileTransfer.go
	js.Global().Set("InitFileTransfer", js.FuncOf(wasm.InitFileTransfer))

	// wasm/group.go
	js.Global().Set("NewGroupChat", js.FuncOf(wasm.NewGroupChat))

Jono Wenger's avatar
Jono Wenger committed
	// wasm/identity.go
	js.Global().Set("StoreReceptionIdentity",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.StoreReceptionIdentity))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("LoadReceptionIdentity",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.LoadReceptionIdentity))
	js.Global().Set("GetContactFromReceptionIdentity",
		js.FuncOf(wasm.GetContactFromReceptionIdentity))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetIDFromContact",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.GetIDFromContact))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetPubkeyFromContact",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.GetPubkeyFromContact))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("SetFactsOnContact",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.SetFactsOnContact))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetFactsFromContact",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.GetFactsFromContact))
Jono Wenger's avatar
Jono Wenger committed

Jono Wenger's avatar
Jono Wenger committed
	// wasm/logging.go
	js.Global().Set("LogLevel", js.FuncOf(wasm.LogLevel))
	js.Global().Set("RegisterLogWriter", js.FuncOf(wasm.RegisterLogWriter))
	js.Global().Set("EnableGrpcLogs", js.FuncOf(wasm.EnableGrpcLogs))

	// wasm/ndf.go
	js.Global().Set("DownloadAndVerifySignedNdfWithUrl",
		js.FuncOf(wasm.DownloadAndVerifySignedNdfWithUrl))

Jono Wenger's avatar
Jono Wenger committed
	// wasm/params.go
	js.Global().Set("GetDefaultCMixParams",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.GetDefaultCMixParams))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetDefaultE2EParams",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.GetDefaultE2EParams))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetDefaultFileTransferParams",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.GetDefaultFileTransferParams))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetDefaultSingleUseParams",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.GetDefaultSingleUseParams))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetDefaultE2eFileTransferParams",
Jono Wenger's avatar
Jono Wenger committed
		js.FuncOf(wasm.GetDefaultE2eFileTransferParams))
Jono Wenger's avatar
Jono Wenger committed

Jono Wenger's avatar
Jono Wenger committed
	// wasm/restlike.go
	js.Global().Set("RestlikeRequest", js.FuncOf(wasm.RestlikeRequest))
	js.Global().Set("RestlikeRequestAuth", js.FuncOf(wasm.RestlikeRequestAuth))

Jono Wenger's avatar
Jono Wenger committed
	// wasm/restlikeSingle.go
	js.Global().Set("RequestRestLike",
		js.FuncOf(wasm.RequestRestLike))
	js.Global().Set("AsyncRequestRestLike",
		js.FuncOf(wasm.AsyncRequestRestLike))

Jono Wenger's avatar
Jono Wenger committed
	// wasm/secrets.go
	js.Global().Set("GenerateSecret", js.FuncOf(wasm.GenerateSecret))

	// wasm/single.go
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("TransmitSingleUse", js.FuncOf(wasm.TransmitSingleUse))
	js.Global().Set("Listen", js.FuncOf(wasm.Listen))

Jono Wenger's avatar
Jono Wenger committed
	// wasm/ud.go
	js.Global().Set("NewOrLoadUd", js.FuncOf(wasm.NewOrLoadUd))
	js.Global().Set("NewUdManagerFromBackup",
		js.FuncOf(wasm.NewUdManagerFromBackup))
	js.Global().Set("LookupUD", js.FuncOf(wasm.LookupUD))
	js.Global().Set("SearchUD", js.FuncOf(wasm.SearchUD))

	// wasm/version.go
	js.Global().Set("GetVersion", js.FuncOf(wasm.GetVersion))
	js.Global().Set("GetGitVersion", js.FuncOf(wasm.GetGitVersion))
	js.Global().Set("GetDependencies", js.FuncOf(wasm.GetDependencies))

	defer func() {
		jww.CRITICAL.Printf("Before recover\n")
		if rec := recover(); rec != nil {
			wasm.Throw(wasm.TypeError, errors.Errorf(fmt.Sprintf("%+v", rec)))
		}
		jww.CRITICAL.Printf("After recover\n")
	}()

Jono Wenger's avatar
Jono Wenger committed
	<-make(chan bool)
Jono Wenger's avatar
Jono Wenger committed
	os.Exit(0)
}