From b437e4d88bf0a38bb3884cbb41760b6b47ea165a Mon Sep 17 00:00:00 2001 From: gnoff Date: Thu, 15 Jun 2023 20:46:42 +0000 Subject: [PATCH] [Float] Nonce preload support (#26939) Some browsers, with some CSP configuration, will not preload a script if the prelaod link tag does not provide a valid nonce attribute. This change adds the ability to specify a nonce for `ReactDOM.preload(..., { as: "script" })` DiffTrain build for [86acc10f2596e1a6fe2fd57a5b325de85175800b](https://github.com/facebook/react/commit/86acc10f2596e1a6fe2fd57a5b325de85175800b) --- compiled/facebook-www/REVISION | 2 +- compiled/facebook-www/React-dev.modern.js | 2 +- compiled/facebook-www/ReactART-dev.modern.js | 2 +- compiled/facebook-www/ReactART-prod.modern.js | 4 ++-- compiled/facebook-www/ReactDOM-dev.classic.js | 3 ++- compiled/facebook-www/ReactDOM-dev.modern.js | 3 ++- compiled/facebook-www/ReactDOM-prod.classic.js | 7 ++++--- compiled/facebook-www/ReactDOM-prod.modern.js | 7 ++++--- compiled/facebook-www/ReactDOM-profiling.classic.js | 7 ++++--- compiled/facebook-www/ReactDOM-profiling.modern.js | 7 ++++--- compiled/facebook-www/ReactDOMServer-dev.classic.js | 3 ++- compiled/facebook-www/ReactDOMServer-dev.modern.js | 3 ++- compiled/facebook-www/ReactDOMServer-prod.classic.js | 3 ++- compiled/facebook-www/ReactDOMServer-prod.modern.js | 3 ++- .../facebook-www/ReactDOMServerStreaming-dev.modern.js | 1 + .../facebook-www/ReactDOMServerStreaming-prod.modern.js | 1 + compiled/facebook-www/ReactDOMTesting-dev.classic.js | 3 ++- compiled/facebook-www/ReactDOMTesting-dev.modern.js | 3 ++- compiled/facebook-www/ReactDOMTesting-prod.classic.js | 7 ++++--- compiled/facebook-www/ReactDOMTesting-prod.modern.js | 7 ++++--- compiled/facebook-www/ReactTestRenderer-dev.classic.js | 2 +- 21 files changed, 48 insertions(+), 32 deletions(-) diff --git a/compiled/facebook-www/REVISION b/compiled/facebook-www/REVISION index 2d1e75a116..c55bd963ee 100644 --- a/compiled/facebook-www/REVISION +++ b/compiled/facebook-www/REVISION @@ -1 +1 @@ -a7bf5ba614c6ddbd1eb3057c71f72efd1b6c21a9 +86acc10f2596e1a6fe2fd57a5b325de85175800b diff --git a/compiled/facebook-www/React-dev.modern.js b/compiled/facebook-www/React-dev.modern.js index 9f07945452..f0e9c088cb 100644 --- a/compiled/facebook-www/React-dev.modern.js +++ b/compiled/facebook-www/React-dev.modern.js @@ -27,7 +27,7 @@ if ( } "use strict"; -var ReactVersion = "18.3.0-www-modern-180bd813"; +var ReactVersion = "18.3.0-www-modern-5fb44b73"; // ATTENTION // When adding new symbols to this file, diff --git a/compiled/facebook-www/ReactART-dev.modern.js b/compiled/facebook-www/ReactART-dev.modern.js index 8c972bb4bb..7aad9b2206 100644 --- a/compiled/facebook-www/ReactART-dev.modern.js +++ b/compiled/facebook-www/ReactART-dev.modern.js @@ -69,7 +69,7 @@ function _assertThisInitialized(self) { return self; } -var ReactVersion = "18.3.0-www-modern-0a8a0f8c"; +var ReactVersion = "18.3.0-www-modern-520e6c62"; var LegacyRoot = 0; var ConcurrentRoot = 1; diff --git a/compiled/facebook-www/ReactART-prod.modern.js b/compiled/facebook-www/ReactART-prod.modern.js index f4f429d171..9b445d4d8e 100644 --- a/compiled/facebook-www/ReactART-prod.modern.js +++ b/compiled/facebook-www/ReactART-prod.modern.js @@ -9858,7 +9858,7 @@ var slice = Array.prototype.slice, return null; }, bundleType: 0, - version: "18.3.0-www-modern-27da91db", + version: "18.3.0-www-modern-e8821afc", rendererPackageName: "react-art" }; var internals$jscomp$inline_1298 = { @@ -9889,7 +9889,7 @@ var internals$jscomp$inline_1298 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-www-modern-27da91db" + reconcilerVersion: "18.3.0-www-modern-e8821afc" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_1299 = __REACT_DEVTOOLS_GLOBAL_HOOK__; diff --git a/compiled/facebook-www/ReactDOM-dev.classic.js b/compiled/facebook-www/ReactDOM-dev.classic.js index 360650401a..c59f788a8a 100644 --- a/compiled/facebook-www/ReactDOM-dev.classic.js +++ b/compiled/facebook-www/ReactDOM-dev.classic.js @@ -34178,7 +34178,7 @@ function createFiberRoot( return root; } -var ReactVersion = "18.3.0-www-classic-202be78c"; +var ReactVersion = "18.3.0-www-classic-3dccae4a"; function createPortal$1( children, @@ -43823,6 +43823,7 @@ function preloadPropsFromPreloadOptions(href, as, options) { crossOrigin: as === "font" ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }; } diff --git a/compiled/facebook-www/ReactDOM-dev.modern.js b/compiled/facebook-www/ReactDOM-dev.modern.js index 91d083462c..318dd4b092 100644 --- a/compiled/facebook-www/ReactDOM-dev.modern.js +++ b/compiled/facebook-www/ReactDOM-dev.modern.js @@ -34023,7 +34023,7 @@ function createFiberRoot( return root; } -var ReactVersion = "18.3.0-www-modern-0a8a0f8c"; +var ReactVersion = "18.3.0-www-modern-520e6c62"; function createPortal$1( children, @@ -44333,6 +44333,7 @@ function preloadPropsFromPreloadOptions(href, as, options) { crossOrigin: as === "font" ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }; } diff --git a/compiled/facebook-www/ReactDOM-prod.classic.js b/compiled/facebook-www/ReactDOM-prod.classic.js index 31ce1d54ee..b0d4984969 100644 --- a/compiled/facebook-www/ReactDOM-prod.classic.js +++ b/compiled/facebook-www/ReactDOM-prod.classic.js @@ -15303,6 +15303,7 @@ function preload$1(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }), preloadPropsMap.set(key, href), @@ -16643,7 +16644,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1815 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "18.3.0-www-classic-a78c92e7", + version: "18.3.0-www-classic-c1034a44", rendererPackageName: "react-dom" }; var internals$jscomp$inline_2184 = { @@ -16673,7 +16674,7 @@ var internals$jscomp$inline_2184 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-www-classic-a78c92e7" + reconcilerVersion: "18.3.0-www-classic-c1034a44" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2185 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -16916,4 +16917,4 @@ exports.unstable_renderSubtreeIntoContainer = function ( ); }; exports.unstable_runWithPriority = runWithPriority; -exports.version = "18.3.0-www-classic-a78c92e7"; +exports.version = "18.3.0-www-classic-c1034a44"; diff --git a/compiled/facebook-www/ReactDOM-prod.modern.js b/compiled/facebook-www/ReactDOM-prod.modern.js index 495ac5e752..5dea352fd7 100644 --- a/compiled/facebook-www/ReactDOM-prod.modern.js +++ b/compiled/facebook-www/ReactDOM-prod.modern.js @@ -15533,6 +15533,7 @@ function preload$1(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }), preloadPropsMap.set(key, href), @@ -16172,7 +16173,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1774 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "18.3.0-www-modern-27da91db", + version: "18.3.0-www-modern-e8821afc", rendererPackageName: "react-dom" }; var internals$jscomp$inline_2148 = { @@ -16203,7 +16204,7 @@ var internals$jscomp$inline_2148 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-www-modern-27da91db" + reconcilerVersion: "18.3.0-www-modern-e8821afc" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2149 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -16374,4 +16375,4 @@ exports.unstable_createEventHandle = function (type, options) { return eventHandle; }; exports.unstable_runWithPriority = runWithPriority; -exports.version = "18.3.0-www-modern-27da91db"; +exports.version = "18.3.0-www-modern-e8821afc"; diff --git a/compiled/facebook-www/ReactDOM-profiling.classic.js b/compiled/facebook-www/ReactDOM-profiling.classic.js index 7ab109d0c4..fc3239558a 100644 --- a/compiled/facebook-www/ReactDOM-profiling.classic.js +++ b/compiled/facebook-www/ReactDOM-profiling.classic.js @@ -16078,6 +16078,7 @@ function preload$1(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }), preloadPropsMap.set(key, href), @@ -17418,7 +17419,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1900 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "18.3.0-www-classic-6cc31d50", + version: "18.3.0-www-classic-1233fa25", rendererPackageName: "react-dom" }; (function (internals) { @@ -17462,7 +17463,7 @@ var devToolsConfig$jscomp$inline_1900 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-www-classic-6cc31d50" + reconcilerVersion: "18.3.0-www-classic-1233fa25" }); assign(Internals, { ReactBrowserEventEmitter: { @@ -17692,7 +17693,7 @@ exports.unstable_renderSubtreeIntoContainer = function ( ); }; exports.unstable_runWithPriority = runWithPriority; -exports.version = "18.3.0-www-classic-6cc31d50"; +exports.version = "18.3.0-www-classic-1233fa25"; /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ if ( diff --git a/compiled/facebook-www/ReactDOM-profiling.modern.js b/compiled/facebook-www/ReactDOM-profiling.modern.js index 4182fd669c..84bc0f0cde 100644 --- a/compiled/facebook-www/ReactDOM-profiling.modern.js +++ b/compiled/facebook-www/ReactDOM-profiling.modern.js @@ -16302,6 +16302,7 @@ function preload$1(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }), preloadPropsMap.set(key, href), @@ -16941,7 +16942,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1859 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "18.3.0-www-modern-2704a18e", + version: "18.3.0-www-modern-d08e2742", rendererPackageName: "react-dom" }; (function (internals) { @@ -16986,7 +16987,7 @@ var devToolsConfig$jscomp$inline_1859 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-www-modern-2704a18e" + reconcilerVersion: "18.3.0-www-modern-d08e2742" }); exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals; exports.createPortal = function (children, container) { @@ -17144,7 +17145,7 @@ exports.unstable_createEventHandle = function (type, options) { return eventHandle; }; exports.unstable_runWithPriority = runWithPriority; -exports.version = "18.3.0-www-modern-2704a18e"; +exports.version = "18.3.0-www-modern-d08e2742"; /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ if ( diff --git a/compiled/facebook-www/ReactDOMServer-dev.classic.js b/compiled/facebook-www/ReactDOMServer-dev.classic.js index ecc0f5afd3..c4927c227d 100644 --- a/compiled/facebook-www/ReactDOMServer-dev.classic.js +++ b/compiled/facebook-www/ReactDOMServer-dev.classic.js @@ -19,7 +19,7 @@ if (__DEV__) { var React = require("react"); var ReactDOM = require("react-dom"); -var ReactVersion = "18.3.0-www-classic-22ab72ab"; +var ReactVersion = "18.3.0-www-classic-4d7a4acb"; // This refers to a WWW module. var warningWWW = require("warning"); @@ -7521,6 +7521,7 @@ function preloadPropsFromPreloadOptions(href, as, options) { crossOrigin: as === "font" ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }; } diff --git a/compiled/facebook-www/ReactDOMServer-dev.modern.js b/compiled/facebook-www/ReactDOMServer-dev.modern.js index 284f0f54b5..9989c19a6a 100644 --- a/compiled/facebook-www/ReactDOMServer-dev.modern.js +++ b/compiled/facebook-www/ReactDOMServer-dev.modern.js @@ -19,7 +19,7 @@ if (__DEV__) { var React = require("react"); var ReactDOM = require("react-dom"); -var ReactVersion = "18.3.0-www-modern-27b3679a"; +var ReactVersion = "18.3.0-www-modern-18f0b486"; // This refers to a WWW module. var warningWWW = require("warning"); @@ -7521,6 +7521,7 @@ function preloadPropsFromPreloadOptions(href, as, options) { crossOrigin: as === "font" ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }; } diff --git a/compiled/facebook-www/ReactDOMServer-prod.classic.js b/compiled/facebook-www/ReactDOMServer-prod.classic.js index 674f94b815..ee6de96f64 100644 --- a/compiled/facebook-www/ReactDOMServer-prod.classic.js +++ b/compiled/facebook-www/ReactDOMServer-prod.classic.js @@ -1855,6 +1855,7 @@ function preload(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority } }), @@ -4001,4 +4002,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; -exports.version = "18.3.0-www-classic-43b0ed5e"; +exports.version = "18.3.0-www-classic-99c1dfc7"; diff --git a/compiled/facebook-www/ReactDOMServer-prod.modern.js b/compiled/facebook-www/ReactDOMServer-prod.modern.js index d24b49e464..998f96e9f5 100644 --- a/compiled/facebook-www/ReactDOMServer-prod.modern.js +++ b/compiled/facebook-www/ReactDOMServer-prod.modern.js @@ -1854,6 +1854,7 @@ function preload(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority } }), @@ -3899,4 +3900,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; -exports.version = "18.3.0-www-modern-0fa0d6a8"; +exports.version = "18.3.0-www-modern-7d85fe51"; diff --git a/compiled/facebook-www/ReactDOMServerStreaming-dev.modern.js b/compiled/facebook-www/ReactDOMServerStreaming-dev.modern.js index 8ec06eab06..49dadb5b4a 100644 --- a/compiled/facebook-www/ReactDOMServerStreaming-dev.modern.js +++ b/compiled/facebook-www/ReactDOMServerStreaming-dev.modern.js @@ -7528,6 +7528,7 @@ function preloadPropsFromPreloadOptions(href, as, options) { crossOrigin: as === "font" ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }; } diff --git a/compiled/facebook-www/ReactDOMServerStreaming-prod.modern.js b/compiled/facebook-www/ReactDOMServerStreaming-prod.modern.js index bc1ac8cbb2..de02a50564 100644 --- a/compiled/facebook-www/ReactDOMServerStreaming-prod.modern.js +++ b/compiled/facebook-www/ReactDOMServerStreaming-prod.modern.js @@ -1904,6 +1904,7 @@ function preload(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority } }), diff --git a/compiled/facebook-www/ReactDOMTesting-dev.classic.js b/compiled/facebook-www/ReactDOMTesting-dev.classic.js index cf5f378ca4..baccbf3c3d 100644 --- a/compiled/facebook-www/ReactDOMTesting-dev.classic.js +++ b/compiled/facebook-www/ReactDOMTesting-dev.classic.js @@ -34795,7 +34795,7 @@ function createFiberRoot( return root; } -var ReactVersion = "18.3.0-www-classic-a43be0aa"; +var ReactVersion = "18.3.0-www-classic-4a9fda08"; function createPortal$1( children, @@ -44572,6 +44572,7 @@ function preloadPropsFromPreloadOptions(href, as, options) { crossOrigin: as === "font" ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }; } diff --git a/compiled/facebook-www/ReactDOMTesting-dev.modern.js b/compiled/facebook-www/ReactDOMTesting-dev.modern.js index 7bb1b05f6a..581a73c817 100644 --- a/compiled/facebook-www/ReactDOMTesting-dev.modern.js +++ b/compiled/facebook-www/ReactDOMTesting-dev.modern.js @@ -34640,7 +34640,7 @@ function createFiberRoot( return root; } -var ReactVersion = "18.3.0-www-modern-dd1ac991"; +var ReactVersion = "18.3.0-www-modern-6dec7344"; function createPortal$1( children, @@ -45082,6 +45082,7 @@ function preloadPropsFromPreloadOptions(href, as, options) { crossOrigin: as === "font" ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }; } diff --git a/compiled/facebook-www/ReactDOMTesting-prod.classic.js b/compiled/facebook-www/ReactDOMTesting-prod.classic.js index 14da9c43a3..9cbb7e2f6c 100644 --- a/compiled/facebook-www/ReactDOMTesting-prod.classic.js +++ b/compiled/facebook-www/ReactDOMTesting-prod.classic.js @@ -15632,6 +15632,7 @@ function preload$1(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }), preloadPropsMap.set(key, href), @@ -16972,7 +16973,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1844 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "18.3.0-www-classic-2d5fcb75", + version: "18.3.0-www-classic-1f937379", rendererPackageName: "react-dom" }; var internals$jscomp$inline_2218 = { @@ -17002,7 +17003,7 @@ var internals$jscomp$inline_2218 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-www-classic-2d5fcb75" + reconcilerVersion: "18.3.0-www-classic-1f937379" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2219 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -17396,4 +17397,4 @@ exports.unstable_renderSubtreeIntoContainer = function ( ); }; exports.unstable_runWithPriority = runWithPriority; -exports.version = "18.3.0-www-classic-2d5fcb75"; +exports.version = "18.3.0-www-classic-1f937379"; diff --git a/compiled/facebook-www/ReactDOMTesting-prod.modern.js b/compiled/facebook-www/ReactDOMTesting-prod.modern.js index adcd27fbae..9c803ef612 100644 --- a/compiled/facebook-www/ReactDOMTesting-prod.modern.js +++ b/compiled/facebook-www/ReactDOMTesting-prod.modern.js @@ -15917,6 +15917,7 @@ function preload$1(href, options) { crossOrigin: "font" === as ? "" : options.crossOrigin, integrity: options.integrity, type: options.type, + nonce: options.nonce, fetchPriority: options.fetchPriority }), preloadPropsMap.set(key, href), @@ -16556,7 +16557,7 @@ Internals.Events = [ var devToolsConfig$jscomp$inline_1803 = { findFiberByHostInstance: getClosestInstanceFromNode, bundleType: 0, - version: "18.3.0-www-modern-180bd813", + version: "18.3.0-www-modern-5fb44b73", rendererPackageName: "react-dom" }; var internals$jscomp$inline_2182 = { @@ -16587,7 +16588,7 @@ var internals$jscomp$inline_2182 = { scheduleRoot: null, setRefreshHandler: null, getCurrentFiber: null, - reconcilerVersion: "18.3.0-www-modern-180bd813" + reconcilerVersion: "18.3.0-www-modern-5fb44b73" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2183 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -16909,4 +16910,4 @@ exports.unstable_createEventHandle = function (type, options) { return eventHandle; }; exports.unstable_runWithPriority = runWithPriority; -exports.version = "18.3.0-www-modern-180bd813"; +exports.version = "18.3.0-www-modern-5fb44b73"; diff --git a/compiled/facebook-www/ReactTestRenderer-dev.classic.js b/compiled/facebook-www/ReactTestRenderer-dev.classic.js index 45f71c359f..84972ef47f 100644 --- a/compiled/facebook-www/ReactTestRenderer-dev.classic.js +++ b/compiled/facebook-www/ReactTestRenderer-dev.classic.js @@ -24553,7 +24553,7 @@ function createFiberRoot( return root; } -var ReactVersion = "18.3.0-www-classic-a43be0aa"; +var ReactVersion = "18.3.0-www-classic-4a9fda08"; // Might add PROFILE later.