feat(offscreen-canvas): new type definitiion (#43246)

- definition files
- tests

https://github.com/ai/offscreen-canvas

Thanks!
This commit is contained in:
Piotr Błażejewicz (Peter Blazejewicz) 2020-03-20 16:52:06 +01:00 committed by GitHub
parent 3c7ab7eb39
commit fdea88dc12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 77 additions and 0 deletions

View File

@ -0,0 +1,11 @@
declare function createWorker(
canvas: HTMLCanvasElement,
workerUrl: string,
listener: (ev: MessageEvent) => any,
): WorkerInterface;
interface WorkerInterface {
post(message: any, transfer: Transferable[]): void;
post(message: any, options?: PostMessageOptions): void;
}
export = createWorker;

10
types/offscreen-canvas/index.d.ts vendored Normal file
View File

@ -0,0 +1,10 @@
// Type definitions for offscreen-canvas 0.1
// Project: https://github.com/ai/offscreen-canvas#readme
// Definitions by: Peter Błażejewicz <https://github.com/peterblazejewicz>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// Minimum TypeScript Version: 3.5
import createWorker = require('./create-worker');
import insideWorker = require('./inside-worker');
export { createWorker, insideWorker };

View File

@ -0,0 +1,8 @@
declare function insideWorker(listener: (ev: MessageEvent) => any): WorkerInterface;
interface WorkerInterface {
post(message: any, transfer: Transferable[]): void;
post(message: any, options?: PostMessageOptions): void;
isWorker: boolean;
}
export = insideWorker;

View File

@ -0,0 +1,23 @@
// index.js
import createWorker = require('offscreen-canvas/create-worker');
import insideWorker = require('offscreen-canvas/inside-worker');
const workerUrl = document.querySelector<HTMLLinkElement>('[rel=preload][as=script]')!.href;
const canvas: HTMLCanvasElement = document.querySelector<HTMLCanvasElement>('#canvas')!;
const button: HTMLButtonElement = document.querySelector<HTMLButtonElement>('#button')!;
const workerOne = createWorker(canvas, workerUrl, e => {
// Messages from the worker
});
button.addEventListener('click', () => {
workerOne.post({ message: 'update' });
});
const workerTwo = insideWorker(e => {
if (e.data.canvas) {
// Draw on the canvas
} else if (e.data.message === 'move') {
// Messages from main thread
}
});

View File

@ -0,0 +1,24 @@
{
"compilerOptions": {
"module": "commonjs",
"lib": [
"es6",
"DOM"
],
"noImplicitAny": true,
"noImplicitThis": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"offscreen-canvas-tests.ts"
]
}

View File

@ -0,0 +1 @@
{ "extends": "dtslint/dt.json" }