From 63c76e10606164b1cc289f2ec1fede01f37c7deb Mon Sep 17 00:00:00 2001 From: Mohamed Boughaba Date: Wed, 6 Nov 2019 18:03:39 +0100 Subject: [PATCH] (feat): add sharedworker options (#40069) package: sharedworker in addition to the url string, sharedworker constructor takes as an argument a name string or an options object. reference: https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker/SharedWorker --- types/sharedworker/index.d.ts | 19 ++++++++++++++----- types/sharedworker/sharedworker-tests.ts | 17 +++++++++++------ 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/types/sharedworker/index.d.ts b/types/sharedworker/index.d.ts index 9614fa98ef..a56ed54578 100644 --- a/types/sharedworker/index.d.ts +++ b/types/sharedworker/index.d.ts @@ -1,8 +1,9 @@ // Type definitions for SharedWorker // Project: http://www.w3.org/TR/workers/ // Definitions by: Toshiya Nakakura +// M. Boughaba // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped -// TypeScript Version: 2.8 +// TypeScript Version: 3.0 declare namespace SharedWorker { interface AbstractWorker extends EventTarget { @@ -23,12 +24,20 @@ declare namespace SharedWorker { } } +interface SharedWorkerOptions { + credentials?: RequestCredentials; + name?: string; + type?: WorkerType; +} + declare var SharedWorker: { prototype: SharedWorker.SharedWorker; - /*** + + /** * - * @param {string} stringUrl Pathname to JavaScript file - * @param {string} name Name of the worker to execute + * @param {string} stringUrl Pathname to JavaScript file + * @param {string|SharedWorkerOptions} [options] Name of the worker to execute + * or an object containing option properties */ - new(stringUrl: string, name?: string): SharedWorker.SharedWorker; + new(stringUrl: string, options?: string | SharedWorkerOptions): SharedWorker.SharedWorker; }; diff --git a/types/sharedworker/sharedworker-tests.ts b/types/sharedworker/sharedworker-tests.ts index 1fe55e8e06..11215e1d1f 100644 --- a/types/sharedworker/sharedworker-tests.ts +++ b/types/sharedworker/sharedworker-tests.ts @@ -1,25 +1,30 @@ -var worker_with_name = new SharedWorker('worker.js', "worker"); +var worker_with_name = new SharedWorker('worker.js', 'worker'); +var worker_with_opts = new SharedWorker('worker.js', { + name: 'worker', + type: 'module', + credentials: 'same-origin' +}); /* Caller */ let worker = new SharedWorker('worker.js'); worker.port.start(); -worker.port.onmessage = function (e) { +worker.port.onmessage = function(e) { console.log('Caller Received:', e.data); -} +}; worker.port.postMessage('Message'); /* Worker */ const _self: SharedWorker.SharedWorkerGlobalScope = self as any; -_self.onconnect = function (e) { +_self.onconnect = function(e) { var port = e.ports[0]; - port.addEventListener('message', function (e) { + port.addEventListener('message', function(e) { console.log('Worker Received', e.data); port.postMessage('Result'); }); port.start(); -} +};