Skip to content
Snippets Groups Projects
main.go 7.72 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"
Jono Wenger's avatar
Jono Wenger committed
	jww "github.com/spf13/jwalterweatherman"
	"gitlab.com/elixxir/xxdk-wasm/storage"
Jono Wenger's avatar
Jono Wenger committed
	"gitlab.com/elixxir/xxdk-wasm/utils"
Jono Wenger's avatar
Jono Wenger committed
	"gitlab.com/elixxir/xxdk-wasm/wasm"
Jono Wenger's avatar
Jono Wenger committed
)

Jono Wenger's avatar
Jono Wenger committed
func init() {
	// Overwrites setting the log level to INFO done in bindings so that the
	// Javascript console can be used
	ll := wasm.NewJsConsoleLogListener(jww.LevelInfo)
	jww.SetLogListeners(ll.Listen)
	jww.SetStdoutThreshold(jww.LevelFatal + 1)
Jono Wenger's avatar
Jono Wenger committed

	// Check that the WASM binary version is correct
	err := storage.CheckAndStoreVersions()
Jono Wenger's avatar
Jono Wenger committed
	if err != nil {
		jww.FATAL.Panicf("WASM binary version error: %+v", err)
	}
Jono Wenger's avatar
Jono Wenger committed
func main() {
	fmt.Println("Starting xxDK WebAssembly bindings.")
	fmt.Printf("Client version %s\n", bindings.GetVersion())
Jono Wenger's avatar
Jono Wenger committed

	// storage/password.go
	js.Global().Set("GetOrInitPassword", js.FuncOf(storage.GetOrInitPassword))
	js.Global().Set("ChangeExternalPassword",
		js.FuncOf(storage.ChangeExternalPassword))
	js.Global().Set("VerifyPassword", js.FuncOf(storage.VerifyPassword))
Jono Wenger's avatar
Jono Wenger committed
	// storage/purge.go
	js.Global().Set("Purge", js.FuncOf(storage.Purge))

Jono Wenger's avatar
Jono Wenger committed
	// utils/array.go
	js.Global().Set("Uint8ArrayToBase64", js.FuncOf(utils.Uint8ArrayToBase64))
	js.Global().Set("Base64ToUint8Array", js.FuncOf(utils.Base64ToUint8Array))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("Uint8ArrayEquals", js.FuncOf(utils.Uint8ArrayEquals))
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))

Jono Wenger's avatar
Jono Wenger committed
	// wasm/channels.go
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GenerateChannelIdentity",
		js.FuncOf(wasm.GenerateChannelIdentity))
	js.Global().Set("ConstructIdentity", js.FuncOf(wasm.ConstructIdentity))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("ImportPrivateIdentity",
		js.FuncOf(wasm.ImportPrivateIdentity))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetPublicChannelIdentity",
		js.FuncOf(wasm.GetPublicChannelIdentity))
	js.Global().Set("GetPublicChannelIdentityFromPrivate",
		js.FuncOf(wasm.GetPublicChannelIdentityFromPrivate))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("NewChannelsManager", js.FuncOf(wasm.NewChannelsManager))
	js.Global().Set("LoadChannelsManager", js.FuncOf(wasm.LoadChannelsManager))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("NewChannelsManagerWithIndexedDb",
		js.FuncOf(wasm.NewChannelsManagerWithIndexedDb))
	js.Global().Set("LoadChannelsManagerWithIndexedDb",
		js.FuncOf(wasm.LoadChannelsManagerWithIndexedDb))
	js.Global().Set("LoadChannelsManagerWithIndexedDbUnsafe",
		js.FuncOf(wasm.LoadChannelsManagerWithIndexedDbUnsafe))
	js.Global().Set("NewChannelsManagerWithIndexedDbUnsafe",
		js.FuncOf(wasm.NewChannelsManagerWithIndexedDbUnsafe))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GenerateChannel", js.FuncOf(wasm.GenerateChannel))
	js.Global().Set("GetSavedChannelPrivateKeyUNSAFE",
		js.FuncOf(wasm.GetSavedChannelPrivateKeyUNSAFE))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("DecodePublicURL", js.FuncOf(wasm.DecodePublicURL))
	js.Global().Set("DecodePrivateURL", js.FuncOf(wasm.DecodePrivateURL))
	js.Global().Set("GetChannelJSON", js.FuncOf(wasm.GetChannelJSON))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetChannelInfo", js.FuncOf(wasm.GetChannelInfo))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("GetShareUrlType", js.FuncOf(wasm.GetShareUrlType))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("IsNicknameValid", js.FuncOf(wasm.IsNicknameValid))
	js.Global().Set("NewChannelsDatabaseCipher",
		js.FuncOf(wasm.NewChannelsDatabaseCipher))
	// wasm/dm.go
	js.Global().Set("NewDMClient", js.FuncOf(wasm.NewDMClient))
	js.Global().Set("NewDMClientWithIndexedDb",
		js.FuncOf(wasm.NewDMClientWithIndexedDb))
	js.Global().Set("NewDMClientWithIndexedDbUnsafe",
		js.FuncOf(wasm.NewDMClientWithIndexedDbUnsafe))
	js.Global().Set("NewDMsDatabaseCipher",
		js.FuncOf(wasm.NewDMsDatabaseCipher))

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))
Jono Wenger's avatar
Jono Wenger committed

	// wasm/delivery.go
	js.Global().Set("SetDashboardURL", js.FuncOf(wasm.SetDashboardURL))

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))
	js.Global().Set("DeserializeGroup", js.FuncOf(wasm.DeserializeGroup))
Jono Wenger's avatar
Jono Wenger committed

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))
Jono Wenger's avatar
Jono Wenger committed
	js.Global().Set("LogToFile", js.FuncOf(wasm.LogToFile))
Jono Wenger's avatar
Jono Wenger committed
	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/timeNow.go
	js.Global().Set("SetTimeSource", js.FuncOf(wasm.SetTimeSource))
	js.Global().Set("SetOffset", js.FuncOf(wasm.SetOffset))

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("GetClientVersion", js.FuncOf(wasm.GetClientVersion))
	js.Global().Set("GetClientGitVersion", js.FuncOf(wasm.GetClientGitVersion))
	js.Global().Set("GetClientDependencies", js.FuncOf(wasm.GetClientDependencies))
Jono Wenger's avatar
Jono Wenger committed

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