summaryrefslogtreecommitdiff
path: root/node_modules/webworker-threads/src/worker.ls
blob: 4570bbbd4adebe9bd763a29957da0c62ae6ea3fc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function Worker () => Threads = this; class
    (code) ->
        @thread = t = Threads.create!
        t.on \message (args) ~> @onmessage? data: args
        t.on \error (args) ~> @onerror? args
        t.on \close -> t.destroy!
        @terminate = -> t.destroy!
        @add-event-listener = (event, cb) ~>
            if event is \message
                @onmessage = cb
            else
                t.on event, cb
        @dispatch-event = (event) -> t.emitSerialized event.type, event
        @post-message = (data) -> t.emitSerialized \message {data}
        if typeof code is \function
            t.eval "(#code)()"
        else if code?
            t.load code