| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- "use strict";
- /**
- * @license
- * SPDX-License-Identifier: Apache-2.0
- */
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.setSrc = exports.setTextContent = void 0;
- var resource_url_impl_1 = require("../../internals/resource_url_impl");
- var script_impl_1 = require("../../internals/script_impl");
- /** Returns CSP nonce, if set for any script tag. */
- function getScriptNonceFromWindow(win) {
- var _a;
- var doc = win.document;
- // document.querySelector can be undefined in non-browser environments.
- var script = (_a = doc.querySelector) === null || _a === void 0 ? void 0 : _a.call(doc, 'script[nonce]');
- if (script) {
- // Try to get the nonce from the IDL property first, because browsers that
- // implement additional nonce protection features (currently only Chrome) to
- // prevent nonce stealing via CSS do not expose the nonce via attributes.
- // See https://github.com/whatwg/html/issues/2369
- return script['nonce'] || script.getAttribute('nonce') || '';
- }
- return '';
- }
- /** Propagates CSP nonce to dynamically created scripts. */
- function setNonceForScriptElement(script) {
- var win = script.ownerDocument && script.ownerDocument.defaultView;
- var nonce = getScriptNonceFromWindow(win || window);
- if (nonce) {
- script.setAttribute('nonce', nonce);
- }
- }
- /** Sets textContent from the given SafeScript. */
- function setTextContent(script, v) {
- script.textContent = (0, script_impl_1.unwrapScript)(v);
- setNonceForScriptElement(script);
- }
- exports.setTextContent = setTextContent;
- /** Sets the Src attribute using a TrustedResourceUrl */
- function setSrc(script, v) {
- script.src = (0, resource_url_impl_1.unwrapResourceUrl)(v);
- setNonceForScriptElement(script);
- }
- exports.setSrc = setSrc;
|