Extract anyclip
This commit is contained in:
37
client/trusted-types.ts
Normal file
37
client/trusted-types.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
/**
|
||||
* Stores the Trusted Types Policy. Starts as undefined and can be set to null
|
||||
* if Trusted Types is not supported in the browser.
|
||||
*/
|
||||
let policy: TrustedTypePolicy | null | undefined
|
||||
|
||||
/**
|
||||
* Getter for the Trusted Types Policy. If it is undefined, it is instantiated
|
||||
* here or set to null if Trusted Types is not supported in the browser.
|
||||
*/
|
||||
function getPolicy() {
|
||||
if (typeof policy === 'undefined' && typeof window !== 'undefined') {
|
||||
policy =
|
||||
window.trustedTypes?.createPolicy('nextjs', {
|
||||
createHTML: (input) => input,
|
||||
createScript: (input) => input,
|
||||
createScriptURL: (input) => input,
|
||||
}) || null
|
||||
}
|
||||
|
||||
return policy
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsafely promote a string to a TrustedScriptURL, falling back to strings
|
||||
* when Trusted Types are not available.
|
||||
* This is a security-sensitive function; any use of this function
|
||||
* must go through security review. In particular, it must be assured that the
|
||||
* provided string will never cause an XSS vulnerability if used in a context
|
||||
* that will cause a browser to load and execute a resource, e.g. when
|
||||
* assigning to script.src.
|
||||
*/
|
||||
export function __unsafeCreateTrustedScriptURL(
|
||||
url: string
|
||||
): TrustedScriptURL | string {
|
||||
return getPolicy()?.createScriptURL(url) || url
|
||||
}
|
||||
Reference in New Issue
Block a user