next 15.4.0-canary.26 → 15.4.0-canary.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/next +1 -1
- package/dist/build/index.js +2 -2
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/script.js +9 -3
- package/dist/client/script.js.map +1 -1
- package/dist/compiled/next-server/pages-turbo.runtime.dev.js +4 -3
- package/dist/compiled/next-server/pages-turbo.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/pages-turbo.runtime.prod.js +7 -6
- package/dist/compiled/next-server/pages-turbo.runtime.prod.js.map +1 -1
- package/dist/compiled/next-server/pages.runtime.dev.js +4 -3
- package/dist/compiled/next-server/pages.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/pages.runtime.prod.js +9 -8
- package/dist/compiled/next-server/pages.runtime.prod.js.map +1 -1
- package/dist/esm/build/index.js +2 -2
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack-config.js +2 -2
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/client/script.js +9 -3
- package/dist/esm/client/script.js.map +1 -1
- package/dist/esm/pages/_document.js +7 -3
- package/dist/esm/pages/_document.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/esm/server/lib/app-info-log.js +1 -1
- package/dist/esm/server/lib/start-server.js +1 -1
- package/dist/esm/server/render.js +7 -2
- package/dist/esm/server/render.js.map +1 -1
- package/dist/esm/shared/lib/canary-only.js +1 -1
- package/dist/esm/shared/lib/html-context.shared-runtime.js.map +1 -1
- package/dist/pages/_document.js +7 -3
- package/dist/pages/_document.js.map +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/server/render.js +7 -2
- package/dist/server/render.js.map +1 -1
- package/dist/shared/lib/canary-only.js +1 -1
- package/dist/shared/lib/html-context.shared-runtime.d.ts +1 -0
- package/dist/shared/lib/html-context.shared-runtime.js.map +1 -1
- package/dist/telemetry/anonymous-meta.js +1 -1
- package/dist/telemetry/events/session-stopped.js +2 -2
- package/dist/telemetry/events/version.js +2 -2
- package/package.json +15 -15
package/dist/bin/next
CHANGED
@@ -79,7 +79,7 @@ const program = new NextRootCommand();
|
|
79
79
|
program.name('next').description('The Next.js CLI allows you to develop, build, start your application, and more.').configureHelp({
|
80
80
|
formatHelp: (cmd, helper)=>(0, _formatclihelpoutput.formatCliHelpOutput)(cmd, helper),
|
81
81
|
subcommandTerm: (cmd)=>`${cmd.name()} ${cmd.usage()}`
|
82
|
-
}).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"15.4.0-canary.
|
82
|
+
}).helpCommand(false).helpOption('-h, --help', 'Displays this message.').version(`Next.js v${"15.4.0-canary.27"}`, '-v, --version', 'Outputs the Next.js version.');
|
83
83
|
program.command('build').description('Creates an optimized production build of your application. The output displays information about each route.').argument('[directory]', `A directory on which to build the application. ${(0, _picocolors.italic)('If no directory is provided, the current directory will be used.')}`).option('-d, --debug', 'Enables a more verbose build output.').option('--no-lint', 'Disables linting.').option('--no-mangling', 'Disables mangling.').option('--profile', 'Enables production profiling for React.').option('--experimental-app-only', 'Builds only App Router routes.').option('--turbo', 'Starts development mode using Turbopack.').option('--turbopack', 'Starts development mode using Turbopack.').addOption(new _commander.Option('--experimental-build-mode [mode]', 'Uses an experimental build mode.').choices([
|
84
84
|
'compile',
|
85
85
|
'generate',
|
package/dist/build/index.js
CHANGED
@@ -375,7 +375,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
375
375
|
const nextBuildSpan = (0, _trace.trace)('next-build', undefined, {
|
376
376
|
buildMode: experimentalBuildMode,
|
377
377
|
isTurboBuild: String(isTurbopack),
|
378
|
-
version: "15.4.0-canary.
|
378
|
+
version: "15.4.0-canary.27"
|
379
379
|
});
|
380
380
|
_buildcontext.NextBuildContext.nextBuildSpan = nextBuildSpan;
|
381
381
|
_buildcontext.NextBuildContext.dir = dir;
|
@@ -757,7 +757,7 @@ async function build(dir, reactProductionProfiling = false, debugOutput = false,
|
|
757
757
|
// Files outside of the distDir can be "type": "module"
|
758
758
|
await writeFileUtf8(_path.default.join(distDir, 'package.json'), '{"type": "commonjs"}');
|
759
759
|
// These are written to distDir, so they need to come after creating and cleaning distDr.
|
760
|
-
await (0, _builddiagnostics.recordFrameworkVersion)("15.4.0-canary.
|
760
|
+
await (0, _builddiagnostics.recordFrameworkVersion)("15.4.0-canary.27");
|
761
761
|
await (0, _builddiagnostics.updateBuildDiagnostics)({
|
762
762
|
buildStage: 'start'
|
763
763
|
});
|
package/dist/build/swc/index.js
CHANGED
@@ -123,7 +123,7 @@ function _interop_require_wildcard(obj, nodeInterop) {
|
|
123
123
|
}
|
124
124
|
return newObj;
|
125
125
|
}
|
126
|
-
const nextVersion = "15.4.0-canary.
|
126
|
+
const nextVersion = "15.4.0-canary.27";
|
127
127
|
const ArchName = (0, _os.arch)();
|
128
128
|
const PlatformName = (0, _os.platform)();
|
129
129
|
function infoLog(...args) {
|
@@ -1653,7 +1653,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
1653
1653
|
isClient && new _copyfileplugin.CopyFilePlugin({
|
1654
1654
|
// file path to build output of `@next/polyfill-nomodule`
|
1655
1655
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
1656
|
-
cacheKey: "15.4.0-canary.
|
1656
|
+
cacheKey: "15.4.0-canary.27",
|
1657
1657
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
1658
1658
|
minimize: false,
|
1659
1659
|
info: {
|
@@ -1830,7 +1830,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
1830
1830
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
1831
1831
|
// - Next.js version
|
1832
1832
|
// - next.config.js keys that affect compilation
|
1833
|
-
version: `${__dirname}|${"15.4.0-canary.
|
1833
|
+
version: `${__dirname}|${"15.4.0-canary.27"}|${configVars}`,
|
1834
1834
|
cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
|
1835
1835
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
1836
1836
|
// So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
|
package/dist/client/index.js
CHANGED
@@ -61,7 +61,7 @@ const _hooksclientcontextsharedruntime = require("../shared/lib/hooks-client-con
|
|
61
61
|
const _onrecoverableerror = require("./react-client-callbacks/on-recoverable-error");
|
62
62
|
const _tracer = /*#__PURE__*/ _interop_require_default._(require("./tracing/tracer"));
|
63
63
|
const _isnextroutererror = require("./components/is-next-router-error");
|
64
|
-
const version = "15.4.0-canary.
|
64
|
+
const version = "15.4.0-canary.27";
|
65
65
|
let router;
|
66
66
|
const emitter = (0, _mitt.default)();
|
67
67
|
const looseToArray = (input)=>[].slice.call(input);
|
package/dist/client/script.js
CHANGED
@@ -169,7 +169,9 @@ function initScriptLoader(scriptLoaderItems) {
|
|
169
169
|
*/ function Script(props) {
|
170
170
|
const { id, src = '', onLoad = ()=>{}, onReady = null, strategy = 'afterInteractive', onError, stylesheets, ...restProps } = props;
|
171
171
|
// Context is available only during SSR
|
172
|
-
|
172
|
+
let { updateScripts, scripts, getIsSsr, appDir, nonce } = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext);
|
173
|
+
// if a nonce is explicitly passed to the script tag, favor that over the automatic handling
|
174
|
+
nonce = restProps.nonce || nonce;
|
173
175
|
/**
|
174
176
|
* - First mount:
|
175
177
|
* 1. The useEffect for onReady executes
|
@@ -233,7 +235,8 @@ function initScriptLoader(scriptLoaderItems) {
|
|
233
235
|
onLoad,
|
234
236
|
onReady,
|
235
237
|
onError,
|
236
|
-
...restProps
|
238
|
+
...restProps,
|
239
|
+
nonce
|
237
240
|
}
|
238
241
|
]);
|
239
242
|
updateScripts(scripts);
|
@@ -241,7 +244,10 @@ function initScriptLoader(scriptLoaderItems) {
|
|
241
244
|
// Script has already loaded during SSR
|
242
245
|
LoadCache.add(id || src);
|
243
246
|
} else if (getIsSsr && !getIsSsr()) {
|
244
|
-
loadScript(
|
247
|
+
loadScript({
|
248
|
+
...props,
|
249
|
+
nonce
|
250
|
+
});
|
245
251
|
}
|
246
252
|
}
|
247
253
|
// For the app directory, we need React Float to preload these scripts.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/client/script.tsx"],"sourcesContent":["'use client'\n\nimport ReactDOM from 'react-dom'\nimport React, { useEffect, useContext, useRef, type JSX } from 'react'\nimport type { ScriptHTMLAttributes } from 'react'\nimport { HeadManagerContext } from '../shared/lib/head-manager-context.shared-runtime'\nimport { setAttributesFromProps } from './set-attributes-from-props'\nimport { requestIdleCallback } from './request-idle-callback'\n\nconst ScriptCache = new Map()\nconst LoadCache = new Set()\n\nexport interface ScriptProps extends ScriptHTMLAttributes<HTMLScriptElement> {\n strategy?: 'afterInteractive' | 'lazyOnload' | 'beforeInteractive' | 'worker'\n id?: string\n onLoad?: (e: any) => void\n onReady?: () => void | null\n onError?: (e: any) => void\n children?: React.ReactNode\n stylesheets?: string[]\n}\n\n/**\n * @deprecated Use `ScriptProps` instead.\n */\nexport type Props = ScriptProps\n\nconst insertStylesheets = (stylesheets: string[]) => {\n // Case 1: Styles for afterInteractive/lazyOnload with appDir injected via handleClientScriptLoad\n //\n // Using ReactDOM.preinit to feature detect appDir and inject styles\n // Stylesheets might have already been loaded if initialized with Script component\n // Re-inject styles here to handle scripts loaded via handleClientScriptLoad\n // ReactDOM.preinit handles dedup and ensures the styles are loaded only once\n if (ReactDOM.preinit) {\n stylesheets.forEach((stylesheet: string) => {\n ReactDOM.preinit(stylesheet, { as: 'style' })\n })\n\n return\n }\n\n // Case 2: Styles for afterInteractive/lazyOnload with pages injected via handleClientScriptLoad\n //\n // We use this function to load styles when appdir is not detected\n // TODO: Use React float APIs to load styles once available for pages dir\n if (typeof window !== 'undefined') {\n let head = document.head\n stylesheets.forEach((stylesheet: string) => {\n let link = document.createElement('link')\n\n link.type = 'text/css'\n link.rel = 'stylesheet'\n link.href = stylesheet\n\n head.appendChild(link)\n })\n }\n}\n\nconst loadScript = (props: ScriptProps): void => {\n const {\n src,\n id,\n onLoad = () => {},\n onReady = null,\n dangerouslySetInnerHTML,\n children = '',\n strategy = 'afterInteractive',\n onError,\n stylesheets,\n } = props\n\n const cacheKey = id || src\n\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return\n }\n\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey)\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError)\n return\n }\n\n /** Execute after the script first loaded */\n const afterLoad = () => {\n // Run onReady for the first time after load event\n if (onReady) {\n onReady()\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey)\n }\n\n const el = document.createElement('script')\n\n const loadPromise = new Promise<void>((resolve, reject) => {\n el.addEventListener('load', function (e) {\n resolve()\n if (onLoad) {\n onLoad.call(this, e)\n }\n afterLoad()\n })\n el.addEventListener('error', function (e) {\n reject(e)\n })\n }).catch(function (e) {\n if (onError) {\n onError(e)\n }\n })\n\n if (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = (dangerouslySetInnerHTML.__html as string) || ''\n\n afterLoad()\n } else if (children) {\n el.textContent =\n typeof children === 'string'\n ? children\n : Array.isArray(children)\n ? children.join('')\n : ''\n\n afterLoad()\n } else if (src) {\n el.src = src\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n\n ScriptCache.set(src, loadPromise)\n }\n\n setAttributesFromProps(el, props)\n\n if (strategy === 'worker') {\n el.setAttribute('type', 'text/partytown')\n }\n\n el.setAttribute('data-nscript', strategy)\n\n // Load styles associated with this script\n if (stylesheets) {\n insertStylesheets(stylesheets)\n }\n\n document.body.appendChild(el)\n}\n\nexport function handleClientScriptLoad(props: ScriptProps) {\n const { strategy = 'afterInteractive' } = props\n if (strategy === 'lazyOnload') {\n window.addEventListener('load', () => {\n requestIdleCallback(() => loadScript(props))\n })\n } else {\n loadScript(props)\n }\n}\n\nfunction loadLazyScript(props: ScriptProps) {\n if (document.readyState === 'complete') {\n requestIdleCallback(() => loadScript(props))\n } else {\n window.addEventListener('load', () => {\n requestIdleCallback(() => loadScript(props))\n })\n }\n}\n\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]'),\n ]\n scripts.forEach((script) => {\n const cacheKey = script.id || script.getAttribute('src')\n LoadCache.add(cacheKey)\n })\n}\n\nexport function initScriptLoader(scriptLoaderItems: ScriptProps[]) {\n scriptLoaderItems.forEach(handleClientScriptLoad)\n addBeforeInteractiveToCache()\n}\n\n/**\n * Load a third-party scripts in an optimized way.\n *\n * Read more: [Next.js Docs: `next/script`](https://nextjs.org/docs/app/api-reference/components/script)\n */\nfunction Script(props: ScriptProps): JSX.Element | null {\n const {\n id,\n src = '',\n onLoad = () => {},\n onReady = null,\n strategy = 'afterInteractive',\n onError,\n stylesheets,\n ...restProps\n } = props\n\n // Context is available only during SSR\n const { updateScripts, scripts, getIsSsr, appDir, nonce } =\n useContext(HeadManagerContext)\n\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in <OffScreen /> component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in <OffScreen /> component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */\n const hasOnReadyEffectCalled = useRef(false)\n\n useEffect(() => {\n const cacheKey = id || src\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady()\n }\n\n hasOnReadyEffectCalled.current = true\n }\n }, [onReady, id, src])\n\n const hasLoadScriptEffectCalled = useRef(false)\n\n useEffect(() => {\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === 'afterInteractive') {\n loadScript(props)\n } else if (strategy === 'lazyOnload') {\n loadLazyScript(props)\n }\n\n hasLoadScriptEffectCalled.current = true\n }\n }, [props, strategy])\n\n if (strategy === 'beforeInteractive' || strategy === 'worker') {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps,\n },\n ])\n updateScripts(scripts)\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src)\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props)\n }\n }\n\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Injecting stylesheets here handles beforeInteractive and worker scripts correctly\n // For other strategies injecting here ensures correct stylesheet order\n // ReactDOM.preinit handles loading the styles in the correct order,\n // also ensures the stylesheet is loaded only once and in a consistent manner\n //\n // Case 1: Styles for beforeInteractive/worker with appDir - handled here\n // Case 2: Styles for beforeInteractive/worker with pages dir - Not handled yet\n // Case 3: Styles for afterInteractive/lazyOnload with appDir - handled here\n // Case 4: Styles for afterInteractive/lazyOnload with pages dir - handled in insertStylesheets function\n if (stylesheets) {\n stylesheets.forEach((styleSrc) => {\n ReactDOM.preinit(styleSrc, { as: 'style' })\n })\n }\n\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native <script> tags, because they no longer have `defer`.\n if (strategy === 'beforeInteractive') {\n if (!src) {\n // For inlined scripts, we put the content in `children`.\n if (restProps.dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n restProps.children = restProps.dangerouslySetInnerHTML\n .__html as string\n delete restProps.dangerouslySetInnerHTML\n }\n\n return (\n <script\n nonce={nonce}\n dangerouslySetInnerHTML={{\n __html: `(self.__next_s=self.__next_s||[]).push(${JSON.stringify([\n 0,\n { ...restProps, id },\n ])})`,\n }}\n />\n )\n } else {\n // @ts-ignore\n ReactDOM.preload(\n src,\n restProps.integrity\n ? {\n as: 'script',\n integrity: restProps.integrity,\n nonce,\n crossOrigin: restProps.crossOrigin,\n }\n : { as: 'script', nonce, crossOrigin: restProps.crossOrigin }\n )\n return (\n <script\n nonce={nonce}\n dangerouslySetInnerHTML={{\n __html: `(self.__next_s=self.__next_s||[]).push(${JSON.stringify([\n src,\n { ...restProps, id },\n ])})`,\n }}\n />\n )\n }\n } else if (strategy === 'afterInteractive') {\n if (src) {\n // @ts-ignore\n ReactDOM.preload(\n src,\n restProps.integrity\n ? {\n as: 'script',\n integrity: restProps.integrity,\n nonce,\n crossOrigin: restProps.crossOrigin,\n }\n : { as: 'script', nonce, crossOrigin: restProps.crossOrigin }\n )\n }\n }\n }\n\n return null\n}\n\nObject.defineProperty(Script, '__nextScript', { value: true })\n\nexport default Script\n"],"names":["handleClientScriptLoad","initScriptLoader","ScriptCache","Map","LoadCache","Set","insertStylesheets","stylesheets","ReactDOM","preinit","forEach","stylesheet","as","window","head","document","link","createElement","type","rel","href","appendChild","loadScript","props","src","id","onLoad","onReady","dangerouslySetInnerHTML","children","strategy","onError","cacheKey","has","add","get","then","afterLoad","el","loadPromise","Promise","resolve","reject","addEventListener","e","call","catch","innerHTML","__html","textContent","Array","isArray","join","set","setAttributesFromProps","setAttribute","body","requestIdleCallback","loadLazyScript","readyState","addBeforeInteractiveToCache","scripts","querySelectorAll","script","getAttribute","scriptLoaderItems","Script","restProps","updateScripts","getIsSsr","appDir","nonce","useContext","HeadManagerContext","hasOnReadyEffectCalled","useRef","useEffect","current","hasLoadScriptEffectCalled","concat","styleSrc","JSON","stringify","preload","integrity","crossOrigin","Object","defineProperty","value"],"mappings":"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","ignoreList":[0]}
|
1
|
+
{"version":3,"sources":["../../src/client/script.tsx"],"sourcesContent":["'use client'\n\nimport ReactDOM from 'react-dom'\nimport React, { useEffect, useContext, useRef, type JSX } from 'react'\nimport type { ScriptHTMLAttributes } from 'react'\nimport { HeadManagerContext } from '../shared/lib/head-manager-context.shared-runtime'\nimport { setAttributesFromProps } from './set-attributes-from-props'\nimport { requestIdleCallback } from './request-idle-callback'\n\nconst ScriptCache = new Map()\nconst LoadCache = new Set()\n\nexport interface ScriptProps extends ScriptHTMLAttributes<HTMLScriptElement> {\n strategy?: 'afterInteractive' | 'lazyOnload' | 'beforeInteractive' | 'worker'\n id?: string\n onLoad?: (e: any) => void\n onReady?: () => void | null\n onError?: (e: any) => void\n children?: React.ReactNode\n stylesheets?: string[]\n}\n\n/**\n * @deprecated Use `ScriptProps` instead.\n */\nexport type Props = ScriptProps\n\nconst insertStylesheets = (stylesheets: string[]) => {\n // Case 1: Styles for afterInteractive/lazyOnload with appDir injected via handleClientScriptLoad\n //\n // Using ReactDOM.preinit to feature detect appDir and inject styles\n // Stylesheets might have already been loaded if initialized with Script component\n // Re-inject styles here to handle scripts loaded via handleClientScriptLoad\n // ReactDOM.preinit handles dedup and ensures the styles are loaded only once\n if (ReactDOM.preinit) {\n stylesheets.forEach((stylesheet: string) => {\n ReactDOM.preinit(stylesheet, { as: 'style' })\n })\n\n return\n }\n\n // Case 2: Styles for afterInteractive/lazyOnload with pages injected via handleClientScriptLoad\n //\n // We use this function to load styles when appdir is not detected\n // TODO: Use React float APIs to load styles once available for pages dir\n if (typeof window !== 'undefined') {\n let head = document.head\n stylesheets.forEach((stylesheet: string) => {\n let link = document.createElement('link')\n\n link.type = 'text/css'\n link.rel = 'stylesheet'\n link.href = stylesheet\n\n head.appendChild(link)\n })\n }\n}\n\nconst loadScript = (props: ScriptProps): void => {\n const {\n src,\n id,\n onLoad = () => {},\n onReady = null,\n dangerouslySetInnerHTML,\n children = '',\n strategy = 'afterInteractive',\n onError,\n stylesheets,\n } = props\n\n const cacheKey = id || src\n\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return\n }\n\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey)\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError)\n return\n }\n\n /** Execute after the script first loaded */\n const afterLoad = () => {\n // Run onReady for the first time after load event\n if (onReady) {\n onReady()\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey)\n }\n\n const el = document.createElement('script')\n\n const loadPromise = new Promise<void>((resolve, reject) => {\n el.addEventListener('load', function (e) {\n resolve()\n if (onLoad) {\n onLoad.call(this, e)\n }\n afterLoad()\n })\n el.addEventListener('error', function (e) {\n reject(e)\n })\n }).catch(function (e) {\n if (onError) {\n onError(e)\n }\n })\n\n if (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = (dangerouslySetInnerHTML.__html as string) || ''\n\n afterLoad()\n } else if (children) {\n el.textContent =\n typeof children === 'string'\n ? children\n : Array.isArray(children)\n ? children.join('')\n : ''\n\n afterLoad()\n } else if (src) {\n el.src = src\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n\n ScriptCache.set(src, loadPromise)\n }\n\n setAttributesFromProps(el, props)\n\n if (strategy === 'worker') {\n el.setAttribute('type', 'text/partytown')\n }\n\n el.setAttribute('data-nscript', strategy)\n\n // Load styles associated with this script\n if (stylesheets) {\n insertStylesheets(stylesheets)\n }\n\n document.body.appendChild(el)\n}\n\nexport function handleClientScriptLoad(props: ScriptProps) {\n const { strategy = 'afterInteractive' } = props\n if (strategy === 'lazyOnload') {\n window.addEventListener('load', () => {\n requestIdleCallback(() => loadScript(props))\n })\n } else {\n loadScript(props)\n }\n}\n\nfunction loadLazyScript(props: ScriptProps) {\n if (document.readyState === 'complete') {\n requestIdleCallback(() => loadScript(props))\n } else {\n window.addEventListener('load', () => {\n requestIdleCallback(() => loadScript(props))\n })\n }\n}\n\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]'),\n ]\n scripts.forEach((script) => {\n const cacheKey = script.id || script.getAttribute('src')\n LoadCache.add(cacheKey)\n })\n}\n\nexport function initScriptLoader(scriptLoaderItems: ScriptProps[]) {\n scriptLoaderItems.forEach(handleClientScriptLoad)\n addBeforeInteractiveToCache()\n}\n\n/**\n * Load a third-party scripts in an optimized way.\n *\n * Read more: [Next.js Docs: `next/script`](https://nextjs.org/docs/app/api-reference/components/script)\n */\nfunction Script(props: ScriptProps): JSX.Element | null {\n const {\n id,\n src = '',\n onLoad = () => {},\n onReady = null,\n strategy = 'afterInteractive',\n onError,\n stylesheets,\n ...restProps\n } = props\n\n // Context is available only during SSR\n let { updateScripts, scripts, getIsSsr, appDir, nonce } =\n useContext(HeadManagerContext)\n\n // if a nonce is explicitly passed to the script tag, favor that over the automatic handling\n nonce = restProps.nonce || nonce\n\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in <OffScreen /> component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in <OffScreen /> component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */\n const hasOnReadyEffectCalled = useRef(false)\n\n useEffect(() => {\n const cacheKey = id || src\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady()\n }\n\n hasOnReadyEffectCalled.current = true\n }\n }, [onReady, id, src])\n\n const hasLoadScriptEffectCalled = useRef(false)\n\n useEffect(() => {\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === 'afterInteractive') {\n loadScript(props)\n } else if (strategy === 'lazyOnload') {\n loadLazyScript(props)\n }\n\n hasLoadScriptEffectCalled.current = true\n }\n }, [props, strategy])\n\n if (strategy === 'beforeInteractive' || strategy === 'worker') {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps,\n nonce,\n },\n ])\n updateScripts(scripts)\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src)\n } else if (getIsSsr && !getIsSsr()) {\n loadScript({\n ...props,\n nonce,\n })\n }\n }\n\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Injecting stylesheets here handles beforeInteractive and worker scripts correctly\n // For other strategies injecting here ensures correct stylesheet order\n // ReactDOM.preinit handles loading the styles in the correct order,\n // also ensures the stylesheet is loaded only once and in a consistent manner\n //\n // Case 1: Styles for beforeInteractive/worker with appDir - handled here\n // Case 2: Styles for beforeInteractive/worker with pages dir - Not handled yet\n // Case 3: Styles for afterInteractive/lazyOnload with appDir - handled here\n // Case 4: Styles for afterInteractive/lazyOnload with pages dir - handled in insertStylesheets function\n if (stylesheets) {\n stylesheets.forEach((styleSrc) => {\n ReactDOM.preinit(styleSrc, { as: 'style' })\n })\n }\n\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native <script> tags, because they no longer have `defer`.\n if (strategy === 'beforeInteractive') {\n if (!src) {\n // For inlined scripts, we put the content in `children`.\n if (restProps.dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n restProps.children = restProps.dangerouslySetInnerHTML\n .__html as string\n delete restProps.dangerouslySetInnerHTML\n }\n\n return (\n <script\n nonce={nonce}\n dangerouslySetInnerHTML={{\n __html: `(self.__next_s=self.__next_s||[]).push(${JSON.stringify([\n 0,\n { ...restProps, id },\n ])})`,\n }}\n />\n )\n } else {\n // @ts-ignore\n ReactDOM.preload(\n src,\n restProps.integrity\n ? {\n as: 'script',\n integrity: restProps.integrity,\n nonce,\n crossOrigin: restProps.crossOrigin,\n }\n : { as: 'script', nonce, crossOrigin: restProps.crossOrigin }\n )\n return (\n <script\n nonce={nonce}\n dangerouslySetInnerHTML={{\n __html: `(self.__next_s=self.__next_s||[]).push(${JSON.stringify([\n src,\n { ...restProps, id },\n ])})`,\n }}\n />\n )\n }\n } else if (strategy === 'afterInteractive') {\n if (src) {\n // @ts-ignore\n ReactDOM.preload(\n src,\n restProps.integrity\n ? {\n as: 'script',\n integrity: restProps.integrity,\n nonce,\n crossOrigin: restProps.crossOrigin,\n }\n : { as: 'script', nonce, crossOrigin: restProps.crossOrigin }\n )\n }\n }\n }\n\n return null\n}\n\nObject.defineProperty(Script, '__nextScript', { value: true })\n\nexport default Script\n"],"names":["handleClientScriptLoad","initScriptLoader","ScriptCache","Map","LoadCache","Set","insertStylesheets","stylesheets","ReactDOM","preinit","forEach","stylesheet","as","window","head","document","link","createElement","type","rel","href","appendChild","loadScript","props","src","id","onLoad","onReady","dangerouslySetInnerHTML","children","strategy","onError","cacheKey","has","add","get","then","afterLoad","el","loadPromise","Promise","resolve","reject","addEventListener","e","call","catch","innerHTML","__html","textContent","Array","isArray","join","set","setAttributesFromProps","setAttribute","body","requestIdleCallback","loadLazyScript","readyState","addBeforeInteractiveToCache","scripts","querySelectorAll","script","getAttribute","scriptLoaderItems","Script","restProps","updateScripts","getIsSsr","appDir","nonce","useContext","HeadManagerContext","hasOnReadyEffectCalled","useRef","useEffect","current","hasLoadScriptEffectCalled","concat","styleSrc","JSON","stringify","preload","integrity","crossOrigin","Object","defineProperty","value"],"mappings":"AAAA;;;;;;;;;;;;;;;;;IAgYA,OAAqB;eAArB;;IApOgBA,sBAAsB;eAAtBA;;IAgCAC,gBAAgB;eAAhBA;;;;;;mEA1LK;iEAC0C;iDAE5B;wCACI;qCACH;AAEpC,MAAMC,cAAc,IAAIC;AACxB,MAAMC,YAAY,IAAIC;AAiBtB,MAAMC,oBAAoB,CAACC;IACzB,iGAAiG;IACjG,EAAE;IACF,oEAAoE;IACpE,kFAAkF;IAClF,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAIC,iBAAQ,CAACC,OAAO,EAAE;QACpBF,YAAYG,OAAO,CAAC,CAACC;YACnBH,iBAAQ,CAACC,OAAO,CAACE,YAAY;gBAAEC,IAAI;YAAQ;QAC7C;QAEA;IACF;IAEA,gGAAgG;IAChG,EAAE;IACF,kEAAkE;IAClE,yEAAyE;IACzE,IAAI,OAAOC,WAAW,aAAa;QACjC,IAAIC,OAAOC,SAASD,IAAI;QACxBP,YAAYG,OAAO,CAAC,CAACC;YACnB,IAAIK,OAAOD,SAASE,aAAa,CAAC;YAElCD,KAAKE,IAAI,GAAG;YACZF,KAAKG,GAAG,GAAG;YACXH,KAAKI,IAAI,GAAGT;YAEZG,KAAKO,WAAW,CAACL;QACnB;IACF;AACF;AAEA,MAAMM,aAAa,CAACC;IAClB,MAAM,EACJC,GAAG,EACHC,EAAE,EACFC,SAAS,KAAO,CAAC,EACjBC,UAAU,IAAI,EACdC,uBAAuB,EACvBC,WAAW,EAAE,EACbC,WAAW,kBAAkB,EAC7BC,OAAO,EACPxB,WAAW,EACZ,GAAGgB;IAEJ,MAAMS,WAAWP,MAAMD;IAEvB,4BAA4B;IAC5B,IAAIQ,YAAY5B,UAAU6B,GAAG,CAACD,WAAW;QACvC;IACF;IAEA,qDAAqD;IACrD,IAAI9B,YAAY+B,GAAG,CAACT,MAAM;QACxBpB,UAAU8B,GAAG,CAACF;QACd,wGAAwG;QACxG,sGAAsG;QACtG9B,YAAYiC,GAAG,CAACX,KAAKY,IAAI,CAACV,QAAQK;QAClC;IACF;IAEA,0CAA0C,GAC1C,MAAMM,YAAY;QAChB,kDAAkD;QAClD,IAAIV,SAAS;YACXA;QACF;QACA,mDAAmD;QACnDvB,UAAU8B,GAAG,CAACF;IAChB;IAEA,MAAMM,KAAKvB,SAASE,aAAa,CAAC;IAElC,MAAMsB,cAAc,IAAIC,QAAc,CAACC,SAASC;QAC9CJ,GAAGK,gBAAgB,CAAC,QAAQ,SAAUC,CAAC;YACrCH;YACA,IAAIf,QAAQ;gBACVA,OAAOmB,IAAI,CAAC,IAAI,EAAED;YACpB;YACAP;QACF;QACAC,GAAGK,gBAAgB,CAAC,SAAS,SAAUC,CAAC;YACtCF,OAAOE;QACT;IACF,GAAGE,KAAK,CAAC,SAAUF,CAAC;QAClB,IAAIb,SAAS;YACXA,QAAQa;QACV;IACF;IAEA,IAAIhB,yBAAyB;QAC3B,2DAA2D;QAC3DU,GAAGS,SAAS,GAAG,AAACnB,wBAAwBoB,MAAM,IAAe;QAE7DX;IACF,OAAO,IAAIR,UAAU;QACnBS,GAAGW,WAAW,GACZ,OAAOpB,aAAa,WAChBA,WACAqB,MAAMC,OAAO,CAACtB,YACZA,SAASuB,IAAI,CAAC,MACd;QAERf;IACF,OAAO,IAAIb,KAAK;QACdc,GAAGd,GAAG,GAAGA;QACT,4DAA4D;QAC5D,yFAAyF;QAEzFtB,YAAYmD,GAAG,CAAC7B,KAAKe;IACvB;IAEAe,IAAAA,8CAAsB,EAAChB,IAAIf;IAE3B,IAAIO,aAAa,UAAU;QACzBQ,GAAGiB,YAAY,CAAC,QAAQ;IAC1B;IAEAjB,GAAGiB,YAAY,CAAC,gBAAgBzB;IAEhC,0CAA0C;IAC1C,IAAIvB,aAAa;QACfD,kBAAkBC;IACpB;IAEAQ,SAASyC,IAAI,CAACnC,WAAW,CAACiB;AAC5B;AAEO,SAAStC,uBAAuBuB,KAAkB;IACvD,MAAM,EAAEO,WAAW,kBAAkB,EAAE,GAAGP;IAC1C,IAAIO,aAAa,cAAc;QAC7BjB,OAAO8B,gBAAgB,CAAC,QAAQ;YAC9Bc,IAAAA,wCAAmB,EAAC,IAAMnC,WAAWC;QACvC;IACF,OAAO;QACLD,WAAWC;IACb;AACF;AAEA,SAASmC,eAAenC,KAAkB;IACxC,IAAIR,SAAS4C,UAAU,KAAK,YAAY;QACtCF,IAAAA,wCAAmB,EAAC,IAAMnC,WAAWC;IACvC,OAAO;QACLV,OAAO8B,gBAAgB,CAAC,QAAQ;YAC9Bc,IAAAA,wCAAmB,EAAC,IAAMnC,WAAWC;QACvC;IACF;AACF;AAEA,SAASqC;IACP,MAAMC,UAAU;WACX9C,SAAS+C,gBAAgB,CAAC;WAC1B/C,SAAS+C,gBAAgB,CAAC;KAC9B;IACDD,QAAQnD,OAAO,CAAC,CAACqD;QACf,MAAM/B,WAAW+B,OAAOtC,EAAE,IAAIsC,OAAOC,YAAY,CAAC;QAClD5D,UAAU8B,GAAG,CAACF;IAChB;AACF;AAEO,SAAS/B,iBAAiBgE,iBAAgC;IAC/DA,kBAAkBvD,OAAO,CAACV;IAC1B4D;AACF;AAEA;;;;CAIC,GACD,SAASM,OAAO3C,KAAkB;IAChC,MAAM,EACJE,EAAE,EACFD,MAAM,EAAE,EACRE,SAAS,KAAO,CAAC,EACjBC,UAAU,IAAI,EACdG,WAAW,kBAAkB,EAC7BC,OAAO,EACPxB,WAAW,EACX,GAAG4D,WACJ,GAAG5C;IAEJ,uCAAuC;IACvC,IAAI,EAAE6C,aAAa,EAAEP,OAAO,EAAEQ,QAAQ,EAAEC,MAAM,EAAEC,KAAK,EAAE,GACrDC,IAAAA,iBAAU,EAACC,mDAAkB;IAE/B,4FAA4F;IAC5FF,QAAQJ,UAAUI,KAAK,IAAIA;IAE3B;;;;;;;;;;;;;;;;;;;;;;;;;GAyBC,GACD,MAAMG,yBAAyBC,IAAAA,aAAM,EAAC;IAEtCC,IAAAA,gBAAS,EAAC;QACR,MAAM5C,WAAWP,MAAMD;QACvB,IAAI,CAACkD,uBAAuBG,OAAO,EAAE;YACnC,sEAAsE;YACtE,IAAIlD,WAAWK,YAAY5B,UAAU6B,GAAG,CAACD,WAAW;gBAClDL;YACF;YAEA+C,uBAAuBG,OAAO,GAAG;QACnC;IACF,GAAG;QAAClD;QAASF;QAAID;KAAI;IAErB,MAAMsD,4BAA4BH,IAAAA,aAAM,EAAC;IAEzCC,IAAAA,gBAAS,EAAC;QACR,IAAI,CAACE,0BAA0BD,OAAO,EAAE;YACtC,IAAI/C,aAAa,oBAAoB;gBACnCR,WAAWC;YACb,OAAO,IAAIO,aAAa,cAAc;gBACpC4B,eAAenC;YACjB;YAEAuD,0BAA0BD,OAAO,GAAG;QACtC;IACF,GAAG;QAACtD;QAAOO;KAAS;IAEpB,IAAIA,aAAa,uBAAuBA,aAAa,UAAU;QAC7D,IAAIsC,eAAe;YACjBP,OAAO,CAAC/B,SAAS,GAAG,AAAC+B,CAAAA,OAAO,CAAC/B,SAAS,IAAI,EAAE,AAAD,EAAGiD,MAAM,CAAC;gBACnD;oBACEtD;oBACAD;oBACAE;oBACAC;oBACAI;oBACA,GAAGoC,SAAS;oBACZI;gBACF;aACD;YACDH,cAAcP;QAChB,OAAO,IAAIQ,YAAYA,YAAY;YACjC,uCAAuC;YACvCjE,UAAU8B,GAAG,CAACT,MAAMD;QACtB,OAAO,IAAI6C,YAAY,CAACA,YAAY;YAClC/C,WAAW;gBACT,GAAGC,KAAK;gBACRgD;YACF;QACF;IACF;IAEA,uEAAuE;IACvE,IAAID,QAAQ;QACV,oFAAoF;QACpF,uEAAuE;QACvE,oEAAoE;QACpE,6EAA6E;QAC7E,EAAE;QACF,yEAAyE;QACzE,+EAA+E;QAC/E,4EAA4E;QAC5E,wGAAwG;QACxG,IAAI/D,aAAa;YACfA,YAAYG,OAAO,CAAC,CAACsE;gBACnBxE,iBAAQ,CAACC,OAAO,CAACuE,UAAU;oBAAEpE,IAAI;gBAAQ;YAC3C;QACF;QAEA,2EAA2E;QAC3E,gEAAgE;QAChE,IAAIkB,aAAa,qBAAqB;YACpC,IAAI,CAACN,KAAK;gBACR,yDAAyD;gBACzD,IAAI2C,UAAUvC,uBAAuB,EAAE;oBACrC,2DAA2D;oBAC3DuC,UAAUtC,QAAQ,GAAGsC,UAAUvC,uBAAuB,CACnDoB,MAAM;oBACT,OAAOmB,UAAUvC,uBAAuB;gBAC1C;gBAEA,qBACE,qBAACmC;oBACCQ,OAAOA;oBACP3C,yBAAyB;wBACvBoB,QAAQ,AAAC,4CAAyCiC,KAAKC,SAAS,CAAC;4BAC/D;4BACA;gCAAE,GAAGf,SAAS;gCAAE1C;4BAAG;yBACpB,IAAE;oBACL;;YAGN,OAAO;gBACL,aAAa;gBACbjB,iBAAQ,CAAC2E,OAAO,CACd3D,KACA2C,UAAUiB,SAAS,GACf;oBACExE,IAAI;oBACJwE,WAAWjB,UAAUiB,SAAS;oBAC9Bb;oBACAc,aAAalB,UAAUkB,WAAW;gBACpC,IACA;oBAAEzE,IAAI;oBAAU2D;oBAAOc,aAAalB,UAAUkB,WAAW;gBAAC;gBAEhE,qBACE,qBAACtB;oBACCQ,OAAOA;oBACP3C,yBAAyB;wBACvBoB,QAAQ,AAAC,4CAAyCiC,KAAKC,SAAS,CAAC;4BAC/D1D;4BACA;gCAAE,GAAG2C,SAAS;gCAAE1C;4BAAG;yBACpB,IAAE;oBACL;;YAGN;QACF,OAAO,IAAIK,aAAa,oBAAoB;YAC1C,IAAIN,KAAK;gBACP,aAAa;gBACbhB,iBAAQ,CAAC2E,OAAO,CACd3D,KACA2C,UAAUiB,SAAS,GACf;oBACExE,IAAI;oBACJwE,WAAWjB,UAAUiB,SAAS;oBAC9Bb;oBACAc,aAAalB,UAAUkB,WAAW;gBACpC,IACA;oBAAEzE,IAAI;oBAAU2D;oBAAOc,aAAalB,UAAUkB,WAAW;gBAAC;YAElE;QACF;IACF;IAEA,OAAO;AACT;AAEAC,OAAOC,cAAc,CAACrB,QAAQ,gBAAgB;IAAEsB,OAAO;AAAK;MAE5D,WAAetB","ignoreList":[0]}
|