Skip to content

Installation

Requirements

Vue is a required peer dependency — this package has no framework-agnostic core (unlike some other VueCraft packages), every entry point is a Vue composable or a Vue-consumable worker-side helper.

EnvironmentMinimum version
Node.js^20.19.0 || ^22.13.0 || >=24.0.0
Vue^3.4.0 (required)

Installation

bash
npm install vue-worker-kit

No peer dependencies beyond vue itself.

Quick start

ts
// heavy-sort.worker.ts
import { defineWorkerHandler } from 'vue-worker-kit/worker'

export default defineWorkerHandler(async (data: number[], ctx) => {
  for (let i = 0; i < data.length; i++) {
    if (ctx.signal.aborted) throw ctx.signal.reason
    if (i % 10_000 === 0) ctx.reportProgress(i / data.length)
  }
  return data.sort((a, b) => a - b)
})
ts
// component setup()
import { useWorker } from 'vue-worker-kit'

const { run, isRunning, progress, error, cancel } = useWorker<typeof import('./heavy-sort.worker')>(
  () => new Worker(new URL('./heavy-sort.worker.ts', import.meta.url), { type: 'module' }),
)

const sorted = await run(hugeArray, { transfer: [hugeArray.buffer] })
// sorted: number[] — inferred from heavy-sort.worker.ts, no generic annotation needed