UNPKG

@jackdbd/permissions-policy

Version:

Define your `Permissions-Policy` in JavaScript and let this library generate the header for you.

70 lines 2.7 kB
import { z } from 'zod'; /** * Browser features that can be controlled with the Permissions-Policy header. * * @see [developer.mozilla.org - Permissions-Policy](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Feature-Policy#directives) * @see [techdocs.akamai.com - Permissions-Policy](https://techdocs.akamai.com/property-mgr/docs/permissions-policy) * @see [w3c.github.io - Interacting with Permissions for Powerful Features](https://w3c.github.io/permissions/#dfn-powerful-feature) */ export const feature = z .union([ z.literal('accelerometer'), z.literal('ambient-light-sensor'), z.literal('attribution-reporting'), z.literal('autoplay'), z.literal('battery'), z.literal('bluetooth'), z.literal('browsing-topics'), z.literal('camera'), // I have seen Instagram using client hints in the Permissions-Policy header // https://mpulp.mobi/2020/05/20/client-hints-and-feature-policies/ z.literal('ch-device-memory'), z.literal('ch-downlink'), z.literal('ch-ect'), z.literal('ch-rtt'), z.literal('ch-save-data'), z.literal('ch-ua-arch'), z.literal('ch-ua-bitness'), z.literal('clipboard-read'), z.literal('clipboard-write'), z.literal('conversion-measurement'), z.literal('cross-origin-isolated'), z.literal('display-capture'), z.literal('document-domain'), z.literal('encrypted-media'), z.literal('execution-while-not-rendered'), z.literal('execution-while-out-of-viewport'), z.literal('focus-without-user-activation'), z.literal('fullscreen'), z.literal('gamepad'), z.literal('geolocation'), z.literal('gyroscope'), z.literal('hid'), z.literal('idle-detection'), z.literal('layout-animations'), z.literal('legacy-image-formats'), z.literal('magnetometer'), z.literal('microphone'), z.literal('midi'), z.literal('navigation-override'), z.literal('oversized-images'), z.literal('payment'), z.literal('picture-in-picture'), z.literal('publickey-credentials-get'), z.literal('screen-wake-lock'), z.literal('serial'), z.literal('speaker-selection'), z.literal('sync-script'), z.literal('sync-xhr'), z.literal('trust-token-redemption'), z.literal('unload'), z.literal('unoptimized-images'), z.literal('unsized-media'), z.literal('usb'), z.literal('vertical-scroll'), z.literal('web-share'), z.literal('window-placement'), z.literal('xr-spatial-tracking') ]) .describe('A policy-controlled feature is an API or behaviour which can be enabled or disabled in a document by referring to it in a permissions policy.'); //# sourceMappingURL=feature.js.map