static {
NODE: this.#parentPort = parentPort
const listener = async (message: MessageEvent<any>): Promise<void> => {
- const {
- action,
- type,
- key,
- keySalt,
- iv,
- seed,
- mnemonicPhrase,
- mnemonicSalt,
- index,
- encrypted,
- data
- } = await this.#extractData(message.data)
try {
+ const {
+ action,
+ type,
+ key,
+ keySalt,
+ iv,
+ seed,
+ mnemonicPhrase,
+ mnemonicSalt,
+ index,
+ encrypted,
+ data
+ } = await this.#extractData(message.data)
let result: NamedData
switch (action) {
case 'STOP': {
NODE: parentPort?.postMessage(result, transfer)
} catch (err) {
console.error(err)
+ for (const key of Object.keys(message.data)) {
+ if (message.data[key] instanceof ArrayBuffer && !message.data[key].detached) {
+ new Uint8Array(message.data[key]).fill(0).buffer.transfer?.()
+ }
+ message.data[key] = undefined
+ }
BROWSER: postMessage({ error: 'Failed to process Safe request', cause: err })
NODE: parentPort?.postMessage({ error: 'Failed to process Safe request', cause: err })
}