-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
45 changed files
with
2,528 additions
and
1,752 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
--- | ||
'@quilted/threads': major | ||
'@quilted/preact-workers': minor | ||
'@quilted/workers': minor | ||
'@quilted/quilt': minor | ||
--- | ||
|
||
Refactored the API for creating threads. The new APIs are class based, and now use module-style language to define the functions shared between threads: `exports` when creating a thread indicates the methods that can be called, and `imports` allows you to call those methods in the paired thread. | ||
|
||
For example, you previously used `createThreadFromWebWorker()` to create a thread from a web worker. Now, you use the `ThreadWebWorker` class: | ||
|
||
```js | ||
// Old API: | ||
import {createThreadFromWebWorker} from '@quilted/threads'; | ||
|
||
// Parent page | ||
const worker = new Worker('worker.js'); | ||
const thread = createThreadFromWebWorker(worker); | ||
const result = await thread.doWork(); | ||
|
||
// Worker | ||
createThreadFromWebWorker(self, { | ||
expose: { | ||
async doWork() { | ||
/* ... */ | ||
}, | ||
}, | ||
}); | ||
|
||
// --- | ||
// New API: | ||
import {ThreadWebWorker} from '@quilted/threads'; | ||
|
||
// Parent | ||
const worker = new Worker('worker.js'); | ||
const thread = new ThreadWebWorker(worker); | ||
const result = await thread.imports.doWork(); | ||
|
||
// Worker | ||
new ThreadWebWorker(worker, { | ||
exports: { | ||
async doWork() { | ||
/* ... */ | ||
}, | ||
}, | ||
}); | ||
``` | ||
|
||
Additionally, the threads library now exports two additional helpers for turning web objects into threads: `ThreadWindow` and `ThreadNestedWindow`, which can be used to create a communication channel between a parent page and popup windows or tabs. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,55 +1,4 @@ | ||
export { | ||
retain, | ||
release, | ||
markAsTransferable, | ||
isMemoryManageable, | ||
createThread, | ||
ThreadAbortSignal, | ||
createBasicEncoder, | ||
createThreadFromIframe, | ||
createThreadFromInsideIframe, | ||
createThreadFromMessagePort, | ||
createThreadFromWebWorker, | ||
createThreadFromBrowserWebSocket, | ||
createThreadFromServiceWorker, | ||
createThreadsFromServiceWorkerClients, | ||
ENCODE_METHOD, | ||
} from '@quilted/threads'; | ||
export type { | ||
Thread, | ||
ThreadOptions, | ||
ThreadTarget, | ||
ThreadAbortSignalOptions, | ||
ThreadAbortSignalSerialization, | ||
ThreadEncoder, | ||
ThreadEncoderApi, | ||
ThreadEncodable, | ||
MemoryManageable, | ||
MemoryRetainer, | ||
ServiceWorkerClientThreads, | ||
} from '@quilted/threads'; | ||
export { | ||
threadSignal, | ||
ThreadSignal, | ||
type ThreadSignalOptions, | ||
type ThreadSignalSerialization, | ||
} from '@quilted/threads/signals'; | ||
export { | ||
on, | ||
once, | ||
addEventHandler, | ||
createEventEmitter, | ||
EventEmitter, | ||
AbortError, | ||
NestedAbortController, | ||
TimedAbortController, | ||
} from '@quilted/events'; | ||
export type { | ||
AbortBehavior, | ||
EventHandler, | ||
EventTarget, | ||
EventTargetAddEventListener, | ||
EventTargetFunction, | ||
EventTargetOn, | ||
} from '@quilted/events'; | ||
export * from '@quilted/threads'; | ||
export * from '@quilted/threads/signals'; | ||
export * from '@quilted/events'; | ||
export * from '@quilted/preact-workers'; |
Oops, something went wrong.