Latica

by Peter Johnson

JavaScript

const url = URL.createObjectURL(new Blob([ 'importScripts("https://kaat.missinglink.co.nz/latica/worker.js")' ], { type: "text/javascript" }))

const worker = new Worker(url)
const channel = new MessageChannel()

worker.addEventListener('error', console.error.bind(console))

worker.postMessage(
  { port: channel.port2 },
  [ channel.port2 ]
)

channel.port1.onmessage = (ev) => { console.log(ev.data.prop, JSON.stringify(ev.data.data)) }

import { Encryption } from 'https://kaat.missinglink.co.nz/latica/encryption.js'

const data = {
  peerId: await Encryption.createId(),
  signingKeys: await Encryption.createKeyPair(),
  clusterId: await Encryption.createClusterId('kaat')
}

channel.port1.postMessage({
  prop: 'create',
  data,
  seq: 1
})

channel.port1.postMessage({
  prop: 'init',
  data: null,
  seq: 2
})