🤖 Merge PR #56849 dom-navigation-preload: Add types for service worker navigation preload by @frigus02

* Add types for service worker navigation preload

TypeScript 4.4 removed types for navigation preload. This makes sense
because it's currently only supported by Chromium based browsers. It
seems to make sense to add those types to DefinitelyTyped until more
browser engines support it.

* Add mprobst as owner for dom-navigation-preload
This commit is contained in:
Jan Kühle
2021-10-28 14:17:12 +02:00
committed by GitHub
parent 731e11980f
commit 4845ab48e3
4 changed files with 68 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
// This throws a TypeError at runtime, but TypeScript should probably allow it.
new NavigationPreloadManager();
navigator.serviceWorker.ready.then(async registration => {
await registration.navigationPreload.enable();
await registration.navigationPreload.disable();
await registration.navigationPreload.setHeaderValue('test');
const state = await registration.navigationPreload.getState();
console.log(state.enabled);
console.log(state.headerValue);
});

30
types/dom-navigation-preload/index.d.ts vendored Normal file
View File

@@ -0,0 +1,30 @@
// Type definitions for non-npm package dom-navigation-preload-browser 0.0
// Project: https://w3c.github.io/ServiceWorker/#service-worker-registration-navigationpreload
// Definitions by: Jan Kuehle <https://github.com/frigus02>
// Martin Probst <https://github.com/mprobst>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// Minimum TypeScript Version: 4.4
interface ServiceWorkerRegistration {
/*~ https://w3c.github.io/ServiceWorker/#ref-for-dom-serviceworkerregistration-navigationpreload */
readonly navigationPreload: NavigationPreloadManager;
}
/*~ https://w3c.github.io/ServiceWorker/#navigationpreloadmanager */
interface NavigationPreloadManager {
disable(): Promise<void>;
enable(): Promise<void>;
getState(): Promise<NavigationPreloadState>;
setHeaderValue(value: string): Promise<void>;
}
declare var NavigationPreloadManager: {
prototype: NavigationPreloadManager;
new (): NavigationPreloadManager;
};
/*~ https://w3c.github.io/ServiceWorker/#dictdef-navigationpreloadstate */
interface NavigationPreloadState {
enabled: boolean;
headerValue: string;
}

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",
"dom-navigation-preload-tests.ts"
]
}

View File

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