next 15.2.0-canary.43 → 15.2.0-canary.45
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.
Potentially problematic release.
This version of next might be problematic. Click here for more details.
- package/dist/bin/next +1 -1
- package/dist/build/index.js +14 -5
- package/dist/build/index.js.map +1 -1
- package/dist/build/swc/index.js +1 -1
- package/dist/build/utils.d.ts +1 -1
- package/dist/build/utils.js +6 -1
- package/dist/build/utils.js.map +1 -1
- package/dist/build/webpack/plugins/define-env-plugin.js +1 -3
- package/dist/build/webpack/plugins/define-env-plugin.js.map +1 -1
- package/dist/build/webpack-config.js +2 -2
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/copy-button/index.js +2 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/copy-button/index.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dialog/header.js +2 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dialog/header.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-footer/error-feedback/error-feedback.js +4 -3
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-footer/error-feedback/error-feedback.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.js +2 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/version-staleness-info/version-staleness-info.js +3 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/version-staleness-info/version-staleness-info.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/helpers/cx.d.ts +7 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/helpers/cx.js +29 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/helpers/cx.js.map +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/helpers/cx.test.d.ts +1 -0
- package/dist/client/components/react-dev-overlay/internal/helpers/stack-frame.js +10 -0
- package/dist/client/components/react-dev-overlay/internal/helpers/stack-frame.js.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/compiled/next-server/app-page-experimental.runtime.dev.js +3 -3
- package/dist/compiled/next-server/app-page-experimental.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/app-page.runtime.dev.js +3 -3
- package/dist/compiled/next-server/app-page.runtime.dev.js.map +1 -1
- package/dist/compiled/next-server/server.runtime.prod.js +1 -1
- package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
- package/dist/esm/build/index.js +14 -5
- package/dist/esm/build/index.js.map +1 -1
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/utils.js +6 -1
- package/dist/esm/build/utils.js.map +1 -1
- package/dist/esm/build/webpack/plugins/define-env-plugin.js +1 -3
- package/dist/esm/build/webpack/plugins/define-env-plugin.js.map +1 -1
- package/dist/esm/build/webpack-config.js +2 -2
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/copy-button/index.js +2 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/copy-button/index.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dialog/header.js +2 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dialog/header.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-footer/error-feedback/error-feedback.js +4 -3
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-footer/error-feedback/error-feedback.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.js +2 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/version-staleness-info/version-staleness-info.js +3 -2
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/version-staleness-info/version-staleness-info.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/helpers/cx.js +13 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/helpers/cx.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/internal/helpers/stack-frame.js +10 -0
- package/dist/esm/client/components/react-dev-overlay/internal/helpers/stack-frame.js.map +1 -1
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/lib/verify-typescript-setup.js +1 -1
- package/dist/esm/lib/verify-typescript-setup.js.map +1 -1
- package/dist/esm/lib/worker.js +3 -2
- package/dist/esm/lib/worker.js.map +1 -1
- package/dist/esm/server/config.js +23 -20
- package/dist/esm/server/config.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/next-server.js +4 -0
- package/dist/esm/server/next-server.js.map +1 -1
- package/dist/esm/server/web/sandbox/resource-managers.js +28 -2
- package/dist/esm/server/web/sandbox/resource-managers.js.map +1 -1
- package/dist/lib/verify-typescript-setup.js +1 -1
- package/dist/lib/verify-typescript-setup.js.map +1 -1
- package/dist/lib/worker.js +3 -2
- package/dist/lib/worker.js.map +1 -1
- package/dist/server/config.js +23 -20
- package/dist/server/config.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/next-server.js +4 -0
- package/dist/server/next-server.js.map +1 -1
- package/dist/server/web/sandbox/resource-managers.d.ts +3 -3
- package/dist/server/web/sandbox/resource-managers.js +28 -2
- package/dist/server/web/sandbox/resource-managers.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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/build/webpack/plugins/define-env-plugin.ts"],"sourcesContent":["import type {\n I18NDomains,\n NextConfigComplete,\n} from '../../../server/config-shared'\nimport type { MiddlewareMatcher } from '../../analysis/get-page-static-info'\nimport { webpack } from 'next/dist/compiled/webpack/webpack'\nimport { needsExperimentalReact } from '../../../lib/needs-experimental-react'\nimport { checkIsAppPPREnabled } from '../../../server/lib/experimental/ppr'\n\nfunction errorIfEnvConflicted(config: NextConfigComplete, key: string) {\n const isPrivateKey = /^(?:NODE_.+)|^(?:__.+)$/i.test(key)\n const hasNextRuntimeKey = key === 'NEXT_RUNTIME'\n\n if (isPrivateKey || hasNextRuntimeKey) {\n throw new Error(\n `The key \"${key}\" under \"env\" in ${config.configFileName} is not allowed. https://nextjs.org/docs/messages/env-key-not-allowed`\n )\n }\n}\n\ntype BloomFilter = ReturnType<\n import('../../../shared/lib/bloom-filter').BloomFilter['export']\n>\n\nexport interface DefineEnvPluginOptions {\n isTurbopack: boolean\n clientRouterFilters?: {\n staticFilter: BloomFilter\n dynamicFilter: BloomFilter\n }\n config: NextConfigComplete\n dev: boolean\n distDir: string\n fetchCacheKeyPrefix: string | undefined\n hasRewrites: boolean\n isClient: boolean\n isEdgeServer: boolean\n isNodeOrEdgeCompilation: boolean\n isNodeServer: boolean\n middlewareMatchers: MiddlewareMatcher[] | undefined\n}\n\ninterface DefineEnv {\n [key: string]:\n | string\n | string[]\n | boolean\n | MiddlewareMatcher[]\n | BloomFilter\n | Partial<NextConfigComplete['images']>\n | I18NDomains\n}\n\ninterface SerializedDefineEnv {\n [key: string]: string\n}\n\n/**\n * Collects all environment variables that are using the `NEXT_PUBLIC_` prefix.\n */\nexport function getNextPublicEnvironmentVariables(): DefineEnv {\n const defineEnv: DefineEnv = {}\n for (const key in process.env) {\n if (key.startsWith('NEXT_PUBLIC_')) {\n const value = process.env[key]\n if (value != null) {\n defineEnv[`process.env.${key}`] = value\n }\n }\n }\n return defineEnv\n}\n\n/**\n * Collects the `env` config value from the Next.js config.\n */\nexport function getNextConfigEnv(config: NextConfigComplete): DefineEnv {\n // Refactored code below to use for-of\n const defineEnv: DefineEnv = {}\n const env = config.env\n for (const key in env) {\n const value = env[key]\n if (value != null) {\n errorIfEnvConflicted(config, key)\n defineEnv[`process.env.${key}`] = value\n }\n }\n return defineEnv\n}\n\n/**\n * Serializes the DefineEnv config so that it can be inserted into the code by Webpack/Turbopack, JSON stringifies each value.\n */\nfunction serializeDefineEnv(defineEnv: DefineEnv): SerializedDefineEnv {\n const defineEnvStringified: SerializedDefineEnv = {}\n for (const key in defineEnv) {\n const value = defineEnv[key]\n defineEnvStringified[key] = JSON.stringify(value)\n }\n\n return defineEnvStringified\n}\n\nfunction getImageConfig(\n config: NextConfigComplete,\n dev: boolean\n): { 'process.env.__NEXT_IMAGE_OPTS': Partial<NextConfigComplete['images']> } {\n return {\n 'process.env.__NEXT_IMAGE_OPTS': {\n deviceSizes: config.images.deviceSizes,\n imageSizes: config.images.imageSizes,\n qualities: config.images.qualities,\n path: config.images.path,\n loader: config.images.loader,\n dangerouslyAllowSVG: config.images.dangerouslyAllowSVG,\n unoptimized: config?.images?.unoptimized,\n ...(dev\n ? {\n // additional config in dev to allow validating on the client\n domains: config.images.domains,\n remotePatterns: config.images?.remotePatterns,\n localPatterns: config.images?.localPatterns,\n output: config.output,\n }\n : {}),\n },\n }\n}\n\nexport function getDefineEnv({\n isTurbopack,\n clientRouterFilters,\n config,\n dev,\n distDir,\n fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeOrEdgeCompilation,\n isNodeServer,\n middlewareMatchers,\n}: DefineEnvPluginOptions): SerializedDefineEnv {\n const nextPublicEnv = getNextPublicEnvironmentVariables()\n const nextConfigEnv = getNextConfigEnv(config)\n\n const isPPREnabled = checkIsAppPPREnabled(config.experimental.ppr)\n const isDynamicIOEnabled = !!config.experimental.dynamicIO\n const isUseCacheEnabled = !!config.experimental.useCache\n\n const defineEnv: DefineEnv = {\n // internal field to identify the plugin config\n __NEXT_DEFINE_ENV: true,\n\n ...nextPublicEnv,\n ...nextConfigEnv,\n ...(!isEdgeServer\n ? {}\n : {\n EdgeRuntime:\n /**\n * Cloud providers can set this environment variable to allow users\n * and library authors to have different implementations based on\n * the runtime they are running with, if it's not using `edge-runtime`\n */\n process.env.NEXT_EDGE_RUNTIME_PROVIDER ?? 'edge-runtime',\n\n // process should be only { env: {...} } for edge runtime.\n // For ignore avoid warn on `process.emit` usage but directly omit it.\n 'process.emit': false,\n }),\n 'process.turbopack': isTurbopack,\n 'process.env.TURBOPACK': isTurbopack,\n // TODO: enforce `NODE_ENV` on `process.env`, and add a test:\n 'process.env.NODE_ENV':\n dev || config.experimental.allowDevelopmentBuild\n ? 'development'\n : 'production',\n 'process.env.NEXT_RUNTIME': isEdgeServer\n ? 'edge'\n : isNodeServer\n ? 'nodejs'\n : '',\n 'process.env.NEXT_MINIMAL': '',\n 'process.env.__NEXT_APP_NAV_FAIL_HANDLING': Boolean(\n config.experimental.appNavFailHandling\n ),\n 'process.env.__NEXT_APP_ISR_INDICATOR': Boolean(\n config.devIndicators.appIsrStatus\n ),\n 'process.env.__NEXT_PPR': isPPREnabled,\n 'process.env.__NEXT_DYNAMIC_IO': isDynamicIOEnabled,\n 'process.env.__NEXT_USE_CACHE': isUseCacheEnabled,\n 'process.env.NEXT_DEPLOYMENT_ID': config.deploymentId || false,\n 'process.env.__NEXT_FETCH_CACHE_KEY_PREFIX': fetchCacheKeyPrefix ?? '',\n ...(isTurbopack\n ? {}\n : {\n 'process.env.__NEXT_MIDDLEWARE_MATCHERS': middlewareMatchers ?? [],\n }),\n 'process.env.__NEXT_MANUAL_CLIENT_BASE_PATH':\n config.experimental.manualClientBasePath ?? false,\n 'process.env.__NEXT_CLIENT_ROUTER_DYNAMIC_STALETIME': JSON.stringify(\n isNaN(Number(config.experimental.staleTimes?.dynamic))\n ? 0\n : config.experimental.staleTimes?.dynamic\n ),\n 'process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME': JSON.stringify(\n isNaN(Number(config.experimental.staleTimes?.static))\n ? 5 * 60 // 5 minutes\n : config.experimental.staleTimes?.static\n ),\n 'process.env.__NEXT_CLIENT_ROUTER_FILTER_ENABLED':\n config.experimental.clientRouterFilter ?? true,\n 'process.env.__NEXT_CLIENT_ROUTER_S_FILTER':\n clientRouterFilters?.staticFilter ?? false,\n 'process.env.__NEXT_CLIENT_ROUTER_D_FILTER':\n clientRouterFilters?.dynamicFilter ?? false,\n 'process.env.__NEXT_CLIENT_SEGMENT_CACHE': Boolean(\n config.experimental.clientSegmentCache\n ),\n 'process.env.__NEXT_OPTIMISTIC_CLIENT_CACHE':\n config.experimental.optimisticClientCache ?? true,\n 'process.env.__NEXT_MIDDLEWARE_PREFETCH':\n config.experimental.middlewarePrefetch ?? 'flexible',\n 'process.env.__NEXT_CROSS_ORIGIN': config.crossOrigin,\n 'process.browser': isClient,\n 'process.env.__NEXT_TEST_MODE': process.env.__NEXT_TEST_MODE ?? false,\n // This is used in client/dev-error-overlay/hot-dev-client.js to replace the dist directory\n ...(dev && (isClient ?? isEdgeServer)\n ? {\n 'process.env.__NEXT_DIST_DIR': distDir,\n }\n : {}),\n 'process.env.__NEXT_TRAILING_SLASH': config.trailingSlash,\n 'process.env.__NEXT_BUILD_INDICATOR':\n config.devIndicators.buildActivity ?? true,\n 'process.env.__NEXT_BUILD_INDICATOR_POSITION':\n config.devIndicators.buildActivityPosition ?? 'bottom-right',\n 'process.env.__NEXT_STRICT_MODE':\n config.reactStrictMode === null ? false : config.reactStrictMode,\n 'process.env.__NEXT_STRICT_MODE_APP':\n // When next.config.js does not have reactStrictMode it's enabled by default.\n config.reactStrictMode === null ? true : config.reactStrictMode,\n 'process.env.__NEXT_OPTIMIZE_CSS':\n (config.experimental.optimizeCss && !dev) ?? false,\n 'process.env.__NEXT_SCRIPT_WORKERS':\n (config.experimental.nextScriptWorkers && !dev) ?? false,\n 'process.env.__NEXT_SCROLL_RESTORATION':\n config.experimental.scrollRestoration ?? false,\n ...getImageConfig(config, dev),\n 'process.env.__NEXT_ROUTER_BASEPATH': config.basePath,\n 'process.env.__NEXT_STRICT_NEXT_HEAD':\n config.experimental.strictNextHead ?? true,\n 'process.env.__NEXT_HAS_REWRITES': hasRewrites,\n 'process.env.__NEXT_CONFIG_OUTPUT': config.output,\n 'process.env.__NEXT_I18N_SUPPORT': !!config.i18n,\n 'process.env.__NEXT_I18N_DOMAINS': config.i18n?.domains ?? false,\n 'process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE':\n config.skipMiddlewareUrlNormalize,\n 'process.env.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE':\n config.experimental.externalMiddlewareRewritesResolve ?? false,\n 'process.env.__NEXT_MANUAL_TRAILING_SLASH':\n config.skipTrailingSlashRedirect,\n 'process.env.__NEXT_HAS_WEB_VITALS_ATTRIBUTION':\n (config.experimental.webVitalsAttribution &&\n config.experimental.webVitalsAttribution.length > 0) ??\n false,\n 'process.env.__NEXT_WEB_VITALS_ATTRIBUTION':\n config.experimental.webVitalsAttribution ?? false,\n 'process.env.__NEXT_LINK_NO_TOUCH_START':\n config.experimental.linkNoTouchStart ?? false,\n 'process.env.__NEXT_ASSET_PREFIX': config.assetPrefix,\n 'process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS':\n !!config.experimental.authInterrupts,\n ...(isNodeOrEdgeCompilation\n ? {\n // Fix bad-actors in the npm ecosystem (e.g. `node-formidable`)\n // This is typically found in unmaintained modules from the\n // pre-webpack era (common in server-side code)\n 'global.GENTLY': false,\n }\n : undefined),\n ...(isNodeOrEdgeCompilation\n ? {\n 'process.env.__NEXT_EXPERIMENTAL_REACT':\n needsExperimentalReact(config),\n }\n : undefined),\n 'process.env.__NEXT_EXPERIMENTAL_NEW_DEV_OVERLAY':\n // When `__NEXT_EXPERIMENTAL_NEW_DEV_OVERLAY` is set on CI,\n // we need to pass it here so it can be enabled.\n process.env.__NEXT_EXPERIMENTAL_NEW_DEV_OVERLAY === 'true' ||\n config.experimental.newDevOverlay ||\n false,\n 'process.env.__NEXT_REACT_OWNER_STACK':\n config.experimental.reactOwnerStack ?? false,\n }\n\n const userDefines = config.compiler?.define ?? {}\n for (const key in userDefines) {\n if (defineEnv.hasOwnProperty(key)) {\n throw new Error(\n `The \\`compiler.define\\` option is configured to replace the \\`${key}\\` variable. This variable is either part of a Next.js built-in or is already configured via the \\`env\\` option.`\n )\n }\n defineEnv[key] = userDefines[key]\n }\n\n return serializeDefineEnv(defineEnv)\n}\n\nexport function getDefineEnvPlugin(options: DefineEnvPluginOptions) {\n return new webpack.DefinePlugin(getDefineEnv(options))\n}\n"],"names":["getDefineEnv","getDefineEnvPlugin","getNextConfigEnv","getNextPublicEnvironmentVariables","errorIfEnvConflicted","config","key","isPrivateKey","test","hasNextRuntimeKey","Error","configFileName","defineEnv","process","env","startsWith","value","serializeDefineEnv","defineEnvStringified","JSON","stringify","getImageConfig","dev","deviceSizes","images","imageSizes","qualities","path","loader","dangerouslyAllowSVG","unoptimized","domains","remotePatterns","localPatterns","output","isTurbopack","clientRouterFilters","distDir","fetchCacheKeyPrefix","hasRewrites","isClient","isEdgeServer","isNodeOrEdgeCompilation","isNodeServer","middlewareMatchers","nextPublicEnv","nextConfigEnv","isPPREnabled","checkIsAppPPREnabled","experimental","ppr","isDynamicIOEnabled","dynamicIO","isUseCacheEnabled","useCache","__NEXT_DEFINE_ENV","EdgeRuntime","NEXT_EDGE_RUNTIME_PROVIDER","allowDevelopmentBuild","Boolean","appNavFailHandling","devIndicators","appIsrStatus","deploymentId","manualClientBasePath","isNaN","Number","staleTimes","dynamic","static","clientRouterFilter","staticFilter","dynamicFilter","clientSegmentCache","optimisticClientCache","middlewarePrefetch","crossOrigin","__NEXT_TEST_MODE","trailingSlash","buildActivity","buildActivityPosition","reactStrictMode","optimizeCss","nextScriptWorkers","scrollRestoration","basePath","strictNextHead","i18n","skipMiddlewareUrlNormalize","externalMiddlewareRewritesResolve","skipTrailingSlashRedirect","webVitalsAttribution","length","linkNoTouchStart","assetPrefix","authInterrupts","undefined","needsExperimentalReact","__NEXT_EXPERIMENTAL_NEW_DEV_OVERLAY","newDevOverlay","reactOwnerStack","userDefines","compiler","define","hasOwnProperty","options","webpack","DefinePlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/build/webpack/plugins/define-env-plugin.ts"],"sourcesContent":["import type {\n I18NDomains,\n NextConfigComplete,\n} from '../../../server/config-shared'\nimport type { MiddlewareMatcher } from '../../analysis/get-page-static-info'\nimport { webpack } from 'next/dist/compiled/webpack/webpack'\nimport { needsExperimentalReact } from '../../../lib/needs-experimental-react'\nimport { checkIsAppPPREnabled } from '../../../server/lib/experimental/ppr'\n\nfunction errorIfEnvConflicted(config: NextConfigComplete, key: string) {\n const isPrivateKey = /^(?:NODE_.+)|^(?:__.+)$/i.test(key)\n const hasNextRuntimeKey = key === 'NEXT_RUNTIME'\n\n if (isPrivateKey || hasNextRuntimeKey) {\n throw new Error(\n `The key \"${key}\" under \"env\" in ${config.configFileName} is not allowed. https://nextjs.org/docs/messages/env-key-not-allowed`\n )\n }\n}\n\ntype BloomFilter = ReturnType<\n import('../../../shared/lib/bloom-filter').BloomFilter['export']\n>\n\nexport interface DefineEnvPluginOptions {\n isTurbopack: boolean\n clientRouterFilters?: {\n staticFilter: BloomFilter\n dynamicFilter: BloomFilter\n }\n config: NextConfigComplete\n dev: boolean\n distDir: string\n fetchCacheKeyPrefix: string | undefined\n hasRewrites: boolean\n isClient: boolean\n isEdgeServer: boolean\n isNodeOrEdgeCompilation: boolean\n isNodeServer: boolean\n middlewareMatchers: MiddlewareMatcher[] | undefined\n}\n\ninterface DefineEnv {\n [key: string]:\n | string\n | string[]\n | boolean\n | MiddlewareMatcher[]\n | BloomFilter\n | Partial<NextConfigComplete['images']>\n | I18NDomains\n}\n\ninterface SerializedDefineEnv {\n [key: string]: string\n}\n\n/**\n * Collects all environment variables that are using the `NEXT_PUBLIC_` prefix.\n */\nexport function getNextPublicEnvironmentVariables(): DefineEnv {\n const defineEnv: DefineEnv = {}\n for (const key in process.env) {\n if (key.startsWith('NEXT_PUBLIC_')) {\n const value = process.env[key]\n if (value != null) {\n defineEnv[`process.env.${key}`] = value\n }\n }\n }\n return defineEnv\n}\n\n/**\n * Collects the `env` config value from the Next.js config.\n */\nexport function getNextConfigEnv(config: NextConfigComplete): DefineEnv {\n // Refactored code below to use for-of\n const defineEnv: DefineEnv = {}\n const env = config.env\n for (const key in env) {\n const value = env[key]\n if (value != null) {\n errorIfEnvConflicted(config, key)\n defineEnv[`process.env.${key}`] = value\n }\n }\n return defineEnv\n}\n\n/**\n * Serializes the DefineEnv config so that it can be inserted into the code by Webpack/Turbopack, JSON stringifies each value.\n */\nfunction serializeDefineEnv(defineEnv: DefineEnv): SerializedDefineEnv {\n const defineEnvStringified: SerializedDefineEnv = {}\n for (const key in defineEnv) {\n const value = defineEnv[key]\n defineEnvStringified[key] = JSON.stringify(value)\n }\n\n return defineEnvStringified\n}\n\nfunction getImageConfig(\n config: NextConfigComplete,\n dev: boolean\n): { 'process.env.__NEXT_IMAGE_OPTS': Partial<NextConfigComplete['images']> } {\n return {\n 'process.env.__NEXT_IMAGE_OPTS': {\n deviceSizes: config.images.deviceSizes,\n imageSizes: config.images.imageSizes,\n qualities: config.images.qualities,\n path: config.images.path,\n loader: config.images.loader,\n dangerouslyAllowSVG: config.images.dangerouslyAllowSVG,\n unoptimized: config?.images?.unoptimized,\n ...(dev\n ? {\n // additional config in dev to allow validating on the client\n domains: config.images.domains,\n remotePatterns: config.images?.remotePatterns,\n localPatterns: config.images?.localPatterns,\n output: config.output,\n }\n : {}),\n },\n }\n}\n\nexport function getDefineEnv({\n isTurbopack,\n clientRouterFilters,\n config,\n dev,\n distDir,\n fetchCacheKeyPrefix,\n hasRewrites,\n isClient,\n isEdgeServer,\n isNodeOrEdgeCompilation,\n isNodeServer,\n middlewareMatchers,\n}: DefineEnvPluginOptions): SerializedDefineEnv {\n const nextPublicEnv = getNextPublicEnvironmentVariables()\n const nextConfigEnv = getNextConfigEnv(config)\n\n const isPPREnabled = checkIsAppPPREnabled(config.experimental.ppr)\n const isDynamicIOEnabled = !!config.experimental.dynamicIO\n const isUseCacheEnabled = !!config.experimental.useCache\n\n const defineEnv: DefineEnv = {\n // internal field to identify the plugin config\n __NEXT_DEFINE_ENV: true,\n\n ...nextPublicEnv,\n ...nextConfigEnv,\n ...(!isEdgeServer\n ? {}\n : {\n EdgeRuntime:\n /**\n * Cloud providers can set this environment variable to allow users\n * and library authors to have different implementations based on\n * the runtime they are running with, if it's not using `edge-runtime`\n */\n process.env.NEXT_EDGE_RUNTIME_PROVIDER ?? 'edge-runtime',\n\n // process should be only { env: {...} } for edge runtime.\n // For ignore avoid warn on `process.emit` usage but directly omit it.\n 'process.emit': false,\n }),\n 'process.turbopack': isTurbopack,\n 'process.env.TURBOPACK': isTurbopack,\n // TODO: enforce `NODE_ENV` on `process.env`, and add a test:\n 'process.env.NODE_ENV':\n dev || config.experimental.allowDevelopmentBuild\n ? 'development'\n : 'production',\n 'process.env.NEXT_RUNTIME': isEdgeServer\n ? 'edge'\n : isNodeServer\n ? 'nodejs'\n : '',\n 'process.env.NEXT_MINIMAL': '',\n 'process.env.__NEXT_APP_NAV_FAIL_HANDLING': Boolean(\n config.experimental.appNavFailHandling\n ),\n 'process.env.__NEXT_APP_ISR_INDICATOR': Boolean(\n config.devIndicators.appIsrStatus\n ),\n 'process.env.__NEXT_PPR': isPPREnabled,\n 'process.env.__NEXT_DYNAMIC_IO': isDynamicIOEnabled,\n 'process.env.__NEXT_USE_CACHE': isUseCacheEnabled,\n 'process.env.NEXT_DEPLOYMENT_ID': config.deploymentId || false,\n 'process.env.__NEXT_FETCH_CACHE_KEY_PREFIX': fetchCacheKeyPrefix ?? '',\n ...(isTurbopack\n ? {}\n : {\n 'process.env.__NEXT_MIDDLEWARE_MATCHERS': middlewareMatchers ?? [],\n }),\n 'process.env.__NEXT_MANUAL_CLIENT_BASE_PATH':\n config.experimental.manualClientBasePath ?? false,\n 'process.env.__NEXT_CLIENT_ROUTER_DYNAMIC_STALETIME': JSON.stringify(\n isNaN(Number(config.experimental.staleTimes?.dynamic))\n ? 0\n : config.experimental.staleTimes?.dynamic\n ),\n 'process.env.__NEXT_CLIENT_ROUTER_STATIC_STALETIME': JSON.stringify(\n isNaN(Number(config.experimental.staleTimes?.static))\n ? 5 * 60 // 5 minutes\n : config.experimental.staleTimes?.static\n ),\n 'process.env.__NEXT_CLIENT_ROUTER_FILTER_ENABLED':\n config.experimental.clientRouterFilter ?? true,\n 'process.env.__NEXT_CLIENT_ROUTER_S_FILTER':\n clientRouterFilters?.staticFilter ?? false,\n 'process.env.__NEXT_CLIENT_ROUTER_D_FILTER':\n clientRouterFilters?.dynamicFilter ?? false,\n 'process.env.__NEXT_CLIENT_SEGMENT_CACHE': Boolean(\n config.experimental.clientSegmentCache\n ),\n 'process.env.__NEXT_OPTIMISTIC_CLIENT_CACHE':\n config.experimental.optimisticClientCache ?? true,\n 'process.env.__NEXT_MIDDLEWARE_PREFETCH':\n config.experimental.middlewarePrefetch ?? 'flexible',\n 'process.env.__NEXT_CROSS_ORIGIN': config.crossOrigin,\n 'process.browser': isClient,\n 'process.env.__NEXT_TEST_MODE': process.env.__NEXT_TEST_MODE ?? false,\n // This is used in client/dev-error-overlay/hot-dev-client.js to replace the dist directory\n ...(dev && (isClient ?? isEdgeServer)\n ? {\n 'process.env.__NEXT_DIST_DIR': distDir,\n }\n : {}),\n 'process.env.__NEXT_TRAILING_SLASH': config.trailingSlash,\n 'process.env.__NEXT_BUILD_INDICATOR':\n config.devIndicators.buildActivity ?? true,\n 'process.env.__NEXT_BUILD_INDICATOR_POSITION':\n config.devIndicators.buildActivityPosition ?? 'bottom-right',\n 'process.env.__NEXT_STRICT_MODE':\n config.reactStrictMode === null ? false : config.reactStrictMode,\n 'process.env.__NEXT_STRICT_MODE_APP':\n // When next.config.js does not have reactStrictMode it's enabled by default.\n config.reactStrictMode === null ? true : config.reactStrictMode,\n 'process.env.__NEXT_OPTIMIZE_CSS':\n (config.experimental.optimizeCss && !dev) ?? false,\n 'process.env.__NEXT_SCRIPT_WORKERS':\n (config.experimental.nextScriptWorkers && !dev) ?? false,\n 'process.env.__NEXT_SCROLL_RESTORATION':\n config.experimental.scrollRestoration ?? false,\n ...getImageConfig(config, dev),\n 'process.env.__NEXT_ROUTER_BASEPATH': config.basePath,\n 'process.env.__NEXT_STRICT_NEXT_HEAD':\n config.experimental.strictNextHead ?? true,\n 'process.env.__NEXT_HAS_REWRITES': hasRewrites,\n 'process.env.__NEXT_CONFIG_OUTPUT': config.output,\n 'process.env.__NEXT_I18N_SUPPORT': !!config.i18n,\n 'process.env.__NEXT_I18N_DOMAINS': config.i18n?.domains ?? false,\n 'process.env.__NEXT_NO_MIDDLEWARE_URL_NORMALIZE':\n config.skipMiddlewareUrlNormalize,\n 'process.env.__NEXT_EXTERNAL_MIDDLEWARE_REWRITE_RESOLVE':\n config.experimental.externalMiddlewareRewritesResolve ?? false,\n 'process.env.__NEXT_MANUAL_TRAILING_SLASH':\n config.skipTrailingSlashRedirect,\n 'process.env.__NEXT_HAS_WEB_VITALS_ATTRIBUTION':\n (config.experimental.webVitalsAttribution &&\n config.experimental.webVitalsAttribution.length > 0) ??\n false,\n 'process.env.__NEXT_WEB_VITALS_ATTRIBUTION':\n config.experimental.webVitalsAttribution ?? false,\n 'process.env.__NEXT_LINK_NO_TOUCH_START':\n config.experimental.linkNoTouchStart ?? false,\n 'process.env.__NEXT_ASSET_PREFIX': config.assetPrefix,\n 'process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS':\n !!config.experimental.authInterrupts,\n ...(isNodeOrEdgeCompilation\n ? {\n // Fix bad-actors in the npm ecosystem (e.g. `node-formidable`)\n // This is typically found in unmaintained modules from the\n // pre-webpack era (common in server-side code)\n 'global.GENTLY': false,\n }\n : undefined),\n ...(isNodeOrEdgeCompilation\n ? {\n 'process.env.__NEXT_EXPERIMENTAL_REACT':\n needsExperimentalReact(config),\n }\n : undefined),\n 'process.env.__NEXT_EXPERIMENTAL_NEW_DEV_OVERLAY':\n config.experimental.newDevOverlay || false,\n 'process.env.__NEXT_REACT_OWNER_STACK':\n config.experimental.reactOwnerStack ?? false,\n }\n\n const userDefines = config.compiler?.define ?? {}\n for (const key in userDefines) {\n if (defineEnv.hasOwnProperty(key)) {\n throw new Error(\n `The \\`compiler.define\\` option is configured to replace the \\`${key}\\` variable. This variable is either part of a Next.js built-in or is already configured via the \\`env\\` option.`\n )\n }\n defineEnv[key] = userDefines[key]\n }\n\n return serializeDefineEnv(defineEnv)\n}\n\nexport function getDefineEnvPlugin(options: DefineEnvPluginOptions) {\n return new webpack.DefinePlugin(getDefineEnv(options))\n}\n"],"names":["getDefineEnv","getDefineEnvPlugin","getNextConfigEnv","getNextPublicEnvironmentVariables","errorIfEnvConflicted","config","key","isPrivateKey","test","hasNextRuntimeKey","Error","configFileName","defineEnv","process","env","startsWith","value","serializeDefineEnv","defineEnvStringified","JSON","stringify","getImageConfig","dev","deviceSizes","images","imageSizes","qualities","path","loader","dangerouslyAllowSVG","unoptimized","domains","remotePatterns","localPatterns","output","isTurbopack","clientRouterFilters","distDir","fetchCacheKeyPrefix","hasRewrites","isClient","isEdgeServer","isNodeOrEdgeCompilation","isNodeServer","middlewareMatchers","nextPublicEnv","nextConfigEnv","isPPREnabled","checkIsAppPPREnabled","experimental","ppr","isDynamicIOEnabled","dynamicIO","isUseCacheEnabled","useCache","__NEXT_DEFINE_ENV","EdgeRuntime","NEXT_EDGE_RUNTIME_PROVIDER","allowDevelopmentBuild","Boolean","appNavFailHandling","devIndicators","appIsrStatus","deploymentId","manualClientBasePath","isNaN","Number","staleTimes","dynamic","static","clientRouterFilter","staticFilter","dynamicFilter","clientSegmentCache","optimisticClientCache","middlewarePrefetch","crossOrigin","__NEXT_TEST_MODE","trailingSlash","buildActivity","buildActivityPosition","reactStrictMode","optimizeCss","nextScriptWorkers","scrollRestoration","basePath","strictNextHead","i18n","skipMiddlewareUrlNormalize","externalMiddlewareRewritesResolve","skipTrailingSlashRedirect","webVitalsAttribution","length","linkNoTouchStart","assetPrefix","authInterrupts","undefined","needsExperimentalReact","newDevOverlay","reactOwnerStack","userDefines","compiler","define","hasOwnProperty","options","webpack","DefinePlugin"],"mappings":"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"}
|
|
@@ -1510,7 +1510,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
|
1510
1510
|
isClient && new _copyfileplugin.CopyFilePlugin({
|
|
1511
1511
|
// file path to build output of `@next/polyfill-nomodule`
|
|
1512
1512
|
filePath: require.resolve('./polyfills/polyfill-nomodule'),
|
|
1513
|
-
cacheKey: "15.2.0-canary.
|
|
1513
|
+
cacheKey: "15.2.0-canary.45",
|
|
1514
1514
|
name: `static/chunks/polyfills${dev ? '' : '-[hash]'}.js`,
|
|
1515
1515
|
minimize: false,
|
|
1516
1516
|
info: {
|
|
@@ -1743,7 +1743,7 @@ async function getBaseWebpackConfig(dir, { buildId, encryptionKey, config, compi
|
|
|
1743
1743
|
// - Next.js location on disk (some loaders use absolute paths and some resolve options depend on absolute paths)
|
|
1744
1744
|
// - Next.js version
|
|
1745
1745
|
// - next.config.js keys that affect compilation
|
|
1746
|
-
version: `${__dirname}|${"15.2.0-canary.
|
|
1746
|
+
version: `${__dirname}|${"15.2.0-canary.45"}|${configVars}`,
|
|
1747
1747
|
cacheDirectory: _path.default.join(distDir, 'cache', 'webpack'),
|
|
1748
1748
|
// For production builds, it's more efficient to compress all cache files together instead of compression each one individually.
|
|
1749
1749
|
// So we disable compression here and allow the build runner to take care of compressing the cache as a whole.
|
|
@@ -25,6 +25,7 @@ const _tagged_template_literal_loose = require("@swc/helpers/_/_tagged_template_
|
|
|
25
25
|
const _jsxruntime = require("react/jsx-runtime");
|
|
26
26
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
27
27
|
const _nooptemplate = require("../../helpers/noop-template");
|
|
28
|
+
const _cx = require("../../helpers/cx");
|
|
28
29
|
function _templateObject() {
|
|
29
30
|
const data = _tagged_template_literal_loose._([
|
|
30
31
|
"\n [data-nextjs-data-runtime-error-copy-button],\n [data-nextjs-data-runtime-error-copy-button]:focus:not(:focus-visible) {\n position: relative;\n margin-left: var(--size-gap);\n padding: 0;\n border: none;\n background: none;\n outline: none;\n }\n [data-nextjs-data-runtime-error-copy-button] > svg {\n vertical-align: middle;\n }\n .nextjs-data-runtime-error-copy-button {\n color: inherit;\n }\n .nextjs-data-runtime-error-copy-button--initial:hover {\n cursor: pointer;\n }\n .nextjs-data-runtime-error-copy-button--error,\n .nextjs-data-runtime-error-copy-button--error:hover {\n color: var(--color-ansi-red);\n }\n .nextjs-data-runtime-error-copy-button--success {\n color: var(--color-ansi-green);\n }\n"
|
|
@@ -194,7 +195,7 @@ function CopyButton(param) {
|
|
|
194
195
|
"aria-disabled": isDisabled,
|
|
195
196
|
disabled: isDisabled,
|
|
196
197
|
"data-nextjs-data-runtime-error-copy-button": true,
|
|
197
|
-
className: (props.className
|
|
198
|
+
className: (0, _cx.cx)(props.className, 'nextjs-data-runtime-error-copy-button', "nextjs-data-runtime-error-copy-button--" + copyState.state),
|
|
198
199
|
onClick: ()=>{
|
|
199
200
|
if (!isDisabled) {
|
|
200
201
|
copy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/copy-button/index.tsx"],"sourcesContent":["import * as React from 'react'\nimport { noop as css } from '../../helpers/noop-template'\n\nfunction useCopyLegacy(content: string) {\n type CopyState =\n | {\n state: 'initial'\n }\n | {\n state: 'error'\n error: unknown\n }\n | { state: 'success' }\n | { state: 'pending' }\n\n // This would be simpler with useActionState but we need to support React 18 here.\n // React 18 also doesn't have async transitions.\n const [copyState, dispatch] = React.useReducer(\n (\n state: CopyState,\n action:\n | { type: 'reset' | 'copied' | 'copying' }\n | { type: 'error'; error: unknown }\n ): CopyState => {\n if (action.type === 'reset') {\n return { state: 'initial' }\n }\n if (action.type === 'copied') {\n return { state: 'success' }\n }\n if (action.type === 'copying') {\n return { state: 'pending' }\n }\n if (action.type === 'error') {\n return { state: 'error', error: action.error }\n }\n return state\n },\n {\n state: 'initial',\n }\n )\n function copy() {\n if (isPending) {\n return\n }\n\n if (!navigator.clipboard) {\n dispatch({\n type: 'error',\n error: new Error('Copy to clipboard is not supported in this browser'),\n })\n } else {\n dispatch({ type: 'copying' })\n navigator.clipboard.writeText(content).then(\n () => {\n dispatch({ type: 'copied' })\n },\n (error) => {\n dispatch({ type: 'error', error })\n }\n )\n }\n }\n const reset = React.useCallback(() => {\n dispatch({ type: 'reset' })\n }, [])\n\n const isPending = copyState.state === 'pending'\n\n return [copyState, copy, reset, isPending] as const\n}\n\nfunction useCopyModern(content: string) {\n type CopyState =\n | {\n state: 'initial'\n }\n | {\n state: 'error'\n error: unknown\n }\n | { state: 'success' }\n\n const [copyState, dispatch, isPending] = React.useActionState(\n (\n state: CopyState,\n action: 'reset' | 'copy'\n ): CopyState | Promise<CopyState> => {\n if (action === 'reset') {\n return { state: 'initial' }\n }\n if (action === 'copy') {\n if (!navigator.clipboard) {\n return {\n state: 'error',\n error: new Error(\n 'Copy to clipboard is not supported in this browser'\n ),\n }\n }\n return navigator.clipboard.writeText(content).then(\n () => {\n return { state: 'success' }\n },\n (error) => {\n return { state: 'error', error }\n }\n )\n }\n return state\n },\n {\n state: 'initial',\n }\n )\n\n function copy() {\n React.startTransition(() => {\n dispatch('copy')\n })\n }\n\n const reset = React.useCallback(() => {\n dispatch('reset')\n }, [\n // TODO: `dispatch` from `useActionState` is not reactive.\n // Remove from dependencies once https://github.com/facebook/react/pull/29665 is released.\n dispatch,\n ])\n\n return [copyState, copy, reset, isPending] as const\n}\n\nconst useCopy =\n typeof React.useActionState === 'function' ? useCopyModern : useCopyLegacy\n\nexport function CopyButton({\n actionLabel,\n successLabel,\n content,\n icon,\n disabled,\n ...props\n}: React.HTMLProps<HTMLButtonElement> & {\n actionLabel: string\n successLabel: string\n content: string\n icon?: React.ReactNode\n}) {\n const [copyState, copy, reset, isPending] = useCopy(content)\n\n const error = copyState.state === 'error' ? copyState.error : null\n React.useEffect(() => {\n if (error !== null) {\n // Additional console.error to get the stack.\n console.error(error)\n }\n }, [error])\n React.useEffect(() => {\n if (copyState.state === 'success') {\n const timeoutId = setTimeout(() => {\n reset()\n }, 2000)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }\n }, [isPending, copyState.state, reset])\n const isDisabled = isPending || disabled\n const label = copyState.state === 'success' ? successLabel : actionLabel\n\n // Assign default icon\n const renderedIcon =\n copyState.state === 'success' ? <CopySuccessIcon /> : icon || <CopyIcon />\n\n return (\n <button\n {...props}\n type=\"button\"\n title={label}\n aria-label={label}\n aria-disabled={isDisabled}\n disabled={isDisabled}\n data-nextjs-data-runtime-error-copy-button\n className={`${props.className || ''} nextjs-data-runtime-error-copy-button nextjs-data-runtime-error-copy-button--${copyState.state}`}\n onClick={() => {\n if (!isDisabled) {\n copy()\n }\n }}\n >\n {renderedIcon}\n {copyState.state === 'error' ? ` ${copyState.error}` : null}\n </button>\n )\n}\n\nfunction CopyIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"error-overlay-toolbar-button-icon\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nfunction CopySuccessIcon() {\n return (\n <svg\n height=\"16\"\n xlinkTitle=\"copied\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n stroke=\"currentColor\"\n fill=\"currentColor\"\n >\n <path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\" />\n </svg>\n )\n}\n\n// TODO(jiwon): Is not used anymore, should we decouple the styles?\nexport const COPY_BUTTON_STYLES = css`\n [data-nextjs-data-runtime-error-copy-button],\n [data-nextjs-data-runtime-error-copy-button]:focus:not(:focus-visible) {\n position: relative;\n margin-left: var(--size-gap);\n padding: 0;\n border: none;\n background: none;\n outline: none;\n }\n [data-nextjs-data-runtime-error-copy-button] > svg {\n vertical-align: middle;\n }\n .nextjs-data-runtime-error-copy-button {\n color: inherit;\n }\n .nextjs-data-runtime-error-copy-button--initial:hover {\n cursor: pointer;\n }\n .nextjs-data-runtime-error-copy-button--error,\n .nextjs-data-runtime-error-copy-button--error:hover {\n color: var(--color-ansi-red);\n }\n .nextjs-data-runtime-error-copy-button--success {\n color: var(--color-ansi-green);\n }\n`\n"],"names":["COPY_BUTTON_STYLES","CopyButton","useCopyLegacy","content","copyState","dispatch","React","useReducer","state","action","type","error","copy","isPending","navigator","clipboard","Error","writeText","then","reset","useCallback","useCopyModern","useActionState","startTransition","useCopy","actionLabel","successLabel","icon","disabled","props","useEffect","console","timeoutId","setTimeout","clearTimeout","isDisabled","label","renderedIcon","CopySuccessIcon","CopyIcon","button","title","aria-label","aria-disabled","data-nextjs-data-runtime-error-copy-button","className","onClick","svg","width","height","viewBox","fill","xmlns","path","fillRule","clipRule","d","xlinkTitle","stroke","css"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/copy-button/index.tsx"],"sourcesContent":["import * as React from 'react'\nimport { noop as css } from '../../helpers/noop-template'\nimport { cx } from '../../helpers/cx'\n\nfunction useCopyLegacy(content: string) {\n type CopyState =\n | {\n state: 'initial'\n }\n | {\n state: 'error'\n error: unknown\n }\n | { state: 'success' }\n | { state: 'pending' }\n\n // This would be simpler with useActionState but we need to support React 18 here.\n // React 18 also doesn't have async transitions.\n const [copyState, dispatch] = React.useReducer(\n (\n state: CopyState,\n action:\n | { type: 'reset' | 'copied' | 'copying' }\n | { type: 'error'; error: unknown }\n ): CopyState => {\n if (action.type === 'reset') {\n return { state: 'initial' }\n }\n if (action.type === 'copied') {\n return { state: 'success' }\n }\n if (action.type === 'copying') {\n return { state: 'pending' }\n }\n if (action.type === 'error') {\n return { state: 'error', error: action.error }\n }\n return state\n },\n {\n state: 'initial',\n }\n )\n function copy() {\n if (isPending) {\n return\n }\n\n if (!navigator.clipboard) {\n dispatch({\n type: 'error',\n error: new Error('Copy to clipboard is not supported in this browser'),\n })\n } else {\n dispatch({ type: 'copying' })\n navigator.clipboard.writeText(content).then(\n () => {\n dispatch({ type: 'copied' })\n },\n (error) => {\n dispatch({ type: 'error', error })\n }\n )\n }\n }\n const reset = React.useCallback(() => {\n dispatch({ type: 'reset' })\n }, [])\n\n const isPending = copyState.state === 'pending'\n\n return [copyState, copy, reset, isPending] as const\n}\n\nfunction useCopyModern(content: string) {\n type CopyState =\n | {\n state: 'initial'\n }\n | {\n state: 'error'\n error: unknown\n }\n | { state: 'success' }\n\n const [copyState, dispatch, isPending] = React.useActionState(\n (\n state: CopyState,\n action: 'reset' | 'copy'\n ): CopyState | Promise<CopyState> => {\n if (action === 'reset') {\n return { state: 'initial' }\n }\n if (action === 'copy') {\n if (!navigator.clipboard) {\n return {\n state: 'error',\n error: new Error(\n 'Copy to clipboard is not supported in this browser'\n ),\n }\n }\n return navigator.clipboard.writeText(content).then(\n () => {\n return { state: 'success' }\n },\n (error) => {\n return { state: 'error', error }\n }\n )\n }\n return state\n },\n {\n state: 'initial',\n }\n )\n\n function copy() {\n React.startTransition(() => {\n dispatch('copy')\n })\n }\n\n const reset = React.useCallback(() => {\n dispatch('reset')\n }, [\n // TODO: `dispatch` from `useActionState` is not reactive.\n // Remove from dependencies once https://github.com/facebook/react/pull/29665 is released.\n dispatch,\n ])\n\n return [copyState, copy, reset, isPending] as const\n}\n\nconst useCopy =\n typeof React.useActionState === 'function' ? useCopyModern : useCopyLegacy\n\nexport function CopyButton({\n actionLabel,\n successLabel,\n content,\n icon,\n disabled,\n ...props\n}: React.HTMLProps<HTMLButtonElement> & {\n actionLabel: string\n successLabel: string\n content: string\n icon?: React.ReactNode\n}) {\n const [copyState, copy, reset, isPending] = useCopy(content)\n\n const error = copyState.state === 'error' ? copyState.error : null\n React.useEffect(() => {\n if (error !== null) {\n // Additional console.error to get the stack.\n console.error(error)\n }\n }, [error])\n React.useEffect(() => {\n if (copyState.state === 'success') {\n const timeoutId = setTimeout(() => {\n reset()\n }, 2000)\n\n return () => {\n clearTimeout(timeoutId)\n }\n }\n }, [isPending, copyState.state, reset])\n const isDisabled = isPending || disabled\n const label = copyState.state === 'success' ? successLabel : actionLabel\n\n // Assign default icon\n const renderedIcon =\n copyState.state === 'success' ? <CopySuccessIcon /> : icon || <CopyIcon />\n\n return (\n <button\n {...props}\n type=\"button\"\n title={label}\n aria-label={label}\n aria-disabled={isDisabled}\n disabled={isDisabled}\n data-nextjs-data-runtime-error-copy-button\n className={cx(\n props.className,\n 'nextjs-data-runtime-error-copy-button',\n `nextjs-data-runtime-error-copy-button--${copyState.state}`\n )}\n onClick={() => {\n if (!isDisabled) {\n copy()\n }\n }}\n >\n {renderedIcon}\n {copyState.state === 'error' ? ` ${copyState.error}` : null}\n </button>\n )\n}\n\nfunction CopyIcon() {\n return (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"error-overlay-toolbar-button-icon\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nfunction CopySuccessIcon() {\n return (\n <svg\n height=\"16\"\n xlinkTitle=\"copied\"\n viewBox=\"0 0 16 16\"\n width=\"16\"\n stroke=\"currentColor\"\n fill=\"currentColor\"\n >\n <path d=\"M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z\" />\n </svg>\n )\n}\n\n// TODO(jiwon): Is not used anymore, should we decouple the styles?\nexport const COPY_BUTTON_STYLES = css`\n [data-nextjs-data-runtime-error-copy-button],\n [data-nextjs-data-runtime-error-copy-button]:focus:not(:focus-visible) {\n position: relative;\n margin-left: var(--size-gap);\n padding: 0;\n border: none;\n background: none;\n outline: none;\n }\n [data-nextjs-data-runtime-error-copy-button] > svg {\n vertical-align: middle;\n }\n .nextjs-data-runtime-error-copy-button {\n color: inherit;\n }\n .nextjs-data-runtime-error-copy-button--initial:hover {\n cursor: pointer;\n }\n .nextjs-data-runtime-error-copy-button--error,\n .nextjs-data-runtime-error-copy-button--error:hover {\n color: var(--color-ansi-red);\n }\n .nextjs-data-runtime-error-copy-button--success {\n color: var(--color-ansi-green);\n }\n`\n"],"names":["COPY_BUTTON_STYLES","CopyButton","useCopyLegacy","content","copyState","dispatch","React","useReducer","state","action","type","error","copy","isPending","navigator","clipboard","Error","writeText","then","reset","useCallback","useCopyModern","useActionState","startTransition","useCopy","actionLabel","successLabel","icon","disabled","props","useEffect","console","timeoutId","setTimeout","clearTimeout","isDisabled","label","renderedIcon","CopySuccessIcon","CopyIcon","button","title","aria-label","aria-disabled","data-nextjs-data-runtime-error-copy-button","className","cx","onClick","svg","width","height","viewBox","fill","xmlns","path","fillRule","clipRule","d","xlinkTitle","stroke","css"],"mappings":"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"}
|
package/dist/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.js
CHANGED
|
@@ -12,7 +12,7 @@ const _tagged_template_literal_loose = require("@swc/helpers/_/_tagged_template_
|
|
|
12
12
|
const _nooptemplate = require("../../helpers/noop-template");
|
|
13
13
|
function _templateObject() {
|
|
14
14
|
const data = _tagged_template_literal_loose._([
|
|
15
|
-
"\n [data-nextjs-dialog-root] {\n --next-dialog-radius: var(--rounded-xl);\n --next-dialog-footer-height: 48px;\n --next-dialog-max-width: 960px;\n\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100% - 56px);\n max-width: var(--next-dialog-max-width);\n margin-right: auto;\n margin-left: auto;\n scale: 0.98;\n opacity: 0;\n transition-property: scale, opacity;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--timing-overlay);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n }\n\n [data-nextjs-dialog] {\n outline: none;\n }\n\n /* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n [data-nextjs-dialog-sizer] {\n overflow: hidden;\n border-radius: inherit;\n }\n\n [data-nextjs-dialog-backdrop] {\n opacity: 0;\n transition: opacity var(--transition-duration) var(--timing-overlay);\n }\n\n [data-nextjs-dialog-overlay][data-rendered='true']\n [data-nextjs-dialog-backdrop] {\n opacity: 1;\n }\n\n [data-nextjs-dialog-content] {\n border: none;\n margin: 0;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n /* Account for the footer height, when present */\n [data-nextjs-dialog-body]:has(~ [data-nextjs-dialog-footer]) {\n margin-bottom: calc(var(--next-dialog-footer-height) + 2px);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n padding: var(--size-4);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n\n [data-nextjs-dialog-footer] {\n width: 100%;\n /* We make this element absolute to fix it to the bottom during the height transition */\n position: absolute;\n bottom: 0;\n min-height: var(--next-dialog-footer-height);\n border-radius: 0 0 var(--next-dialog-radius) var(--next-dialog-radius);\n overflow: hidden;\n\n > * {\n height: 100%;\n }\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 540px;\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 960px;\n }\n }\n"
|
|
15
|
+
"\n [data-nextjs-dialog-root] {\n --next-dialog-radius: var(--rounded-xl);\n --next-dialog-footer-height: 48px;\n --next-dialog-max-width: 960px;\n\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100% - 56px);\n max-width: var(--next-dialog-max-width);\n margin-right: auto;\n margin-left: auto;\n scale: 0.98;\n opacity: 0;\n transition-property: scale, opacity;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--timing-overlay);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n }\n\n [data-nextjs-dialog] {\n outline: none;\n }\n\n /* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n [data-nextjs-dialog-sizer] {\n overflow: hidden;\n border-radius: inherit;\n }\n\n [data-nextjs-dialog-backdrop] {\n opacity: 0;\n transition: opacity var(--transition-duration) var(--timing-overlay);\n }\n\n [data-nextjs-dialog-overlay][data-rendered='true']\n [data-nextjs-dialog-backdrop] {\n opacity: 1;\n }\n\n [data-nextjs-dialog-content] {\n border: none;\n margin: 0;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n }\n\n /* Account for the footer height, when present */\n [data-nextjs-dialog-body]:has(~ [data-nextjs-dialog-footer]) {\n margin-bottom: calc(var(--next-dialog-footer-height) + 2px);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n padding: var(--size-4);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n\n [data-nextjs-dialog-footer] {\n width: 100%;\n /* We make this element absolute to fix it to the bottom during the height transition */\n position: absolute;\n bottom: 0;\n min-height: var(--next-dialog-footer-height);\n border-radius: 0 0 var(--next-dialog-radius) var(--next-dialog-radius);\n overflow: hidden;\n\n > * {\n height: 100%;\n }\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 540px;\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 960px;\n }\n }\n"
|
|
16
16
|
]);
|
|
17
17
|
_templateObject = function() {
|
|
18
18
|
return data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.ts"],"sourcesContent":["import { noop as css } from '../../helpers/noop-template'\n\nconst styles = css`\n [data-nextjs-dialog-root] {\n --next-dialog-radius: var(--rounded-xl);\n --next-dialog-footer-height: 48px;\n --next-dialog-max-width: 960px;\n\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100% - 56px);\n max-width: var(--next-dialog-max-width);\n margin-right: auto;\n margin-left: auto;\n scale: 0.98;\n opacity: 0;\n transition-property: scale, opacity;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--timing-overlay);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n }\n\n [data-nextjs-dialog] {\n outline: none;\n }\n\n /* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n [data-nextjs-dialog-sizer] {\n overflow: hidden;\n border-radius: inherit;\n }\n\n [data-nextjs-dialog-backdrop] {\n opacity: 0;\n transition: opacity var(--transition-duration) var(--timing-overlay);\n }\n\n [data-nextjs-dialog-overlay][data-rendered='true']\n [data-nextjs-dialog-backdrop] {\n opacity: 1;\n }\n\n [data-nextjs-dialog-content] {\n border: none;\n margin: 0;\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n /* Account for the footer height, when present */\n [data-nextjs-dialog-body]:has(~ [data-nextjs-dialog-footer]) {\n margin-bottom: calc(var(--next-dialog-footer-height) + 2px);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n padding: var(--size-4);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n\n [data-nextjs-dialog-footer] {\n width: 100%;\n /* We make this element absolute to fix it to the bottom during the height transition */\n position: absolute;\n bottom: 0;\n min-height: var(--next-dialog-footer-height);\n border-radius: 0 0 var(--next-dialog-radius) var(--next-dialog-radius);\n overflow: hidden;\n\n > * {\n height: 100%;\n }\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 540px;\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 960px;\n }\n }\n`\n\nexport { styles }\n"],"names":["styles","css"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/dialog/styles.ts"],"sourcesContent":["import { noop as css } from '../../helpers/noop-template'\n\nconst styles = css`\n [data-nextjs-dialog-root] {\n --next-dialog-radius: var(--rounded-xl);\n --next-dialog-footer-height: 48px;\n --next-dialog-max-width: 960px;\n\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: calc(100% - 56px);\n max-width: var(--next-dialog-max-width);\n margin-right: auto;\n margin-left: auto;\n scale: 0.98;\n opacity: 0;\n transition-property: scale, opacity;\n transition-duration: var(--transition-duration);\n transition-timing-function: var(--timing-overlay);\n\n &[data-rendered='true'] {\n opacity: 1;\n scale: 1;\n }\n }\n\n [data-nextjs-dialog] {\n outline: none;\n }\n\n /* Place overflow: hidden on this so we can break out from [data-nextjs-dialog] */\n [data-nextjs-dialog-sizer] {\n overflow: hidden;\n border-radius: inherit;\n }\n\n [data-nextjs-dialog-backdrop] {\n opacity: 0;\n transition: opacity var(--transition-duration) var(--timing-overlay);\n }\n\n [data-nextjs-dialog-overlay][data-rendered='true']\n [data-nextjs-dialog-backdrop] {\n opacity: 1;\n }\n\n [data-nextjs-dialog-content] {\n border: none;\n margin: 0;\n height: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n }\n\n /* Account for the footer height, when present */\n [data-nextjs-dialog-body]:has(~ [data-nextjs-dialog-footer]) {\n margin-bottom: calc(var(--next-dialog-footer-height) + 2px);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-header] {\n flex-shrink: 0;\n padding: var(--size-4);\n }\n\n [data-nextjs-dialog-content] > [data-nextjs-dialog-body] {\n position: relative;\n flex: 1 1 auto;\n }\n\n [data-nextjs-dialog-footer] {\n width: 100%;\n /* We make this element absolute to fix it to the bottom during the height transition */\n position: absolute;\n bottom: 0;\n min-height: var(--next-dialog-footer-height);\n border-radius: 0 0 var(--next-dialog-radius) var(--next-dialog-radius);\n overflow: hidden;\n\n > * {\n height: 100%;\n }\n }\n\n @media (max-height: 812px) {\n [data-nextjs-dialog-overlay] {\n max-height: calc(100% - 15px);\n }\n }\n\n @media (min-width: 576px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 540px;\n }\n }\n\n @media (min-width: 768px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 720px;\n }\n }\n\n @media (min-width: 992px) {\n [data-nextjs-dialog-root] {\n --next-dialog-max-width: 960px;\n }\n }\n`\n\nexport { styles }\n"],"names":["styles","css"],"mappings":";;;;+BA8GSA;;;eAAAA;;;;8BA9GmB;;;;;;;;;;AAE5B,MAAMA,aAASC,kBAAG"}
|
|
@@ -24,6 +24,7 @@ const _tagged_template_literal_loose = require("@swc/helpers/_/_tagged_template_
|
|
|
24
24
|
const _jsxruntime = require("react/jsx-runtime");
|
|
25
25
|
const _dialogheader = require("../../dialog/dialog-header");
|
|
26
26
|
const _nooptemplate = require("../../../helpers/noop-template");
|
|
27
|
+
const _cx = require("../../../helpers/cx");
|
|
27
28
|
function _templateObject() {
|
|
28
29
|
const data = _tagged_template_literal_loose._([
|
|
29
30
|
"\n .nextjs-container-errors-header {\n position: relative;\n }\n .nextjs-container-errors-header > h1 {\n font-size: var(--size-font-big);\n line-height: var(--size-font-bigger);\n font-weight: bold;\n margin: calc(var(--size-gap-double) * 1.5) 0;\n color: var(--color-title-h1);\n }\n .nextjs-container-errors-header small {\n font-size: var(--size-font-small);\n color: var(--color-accents-1);\n margin-left: var(--size-gap-double);\n }\n .nextjs-container-errors-header small > span {\n font-family: var(--font-stack-monospace);\n }\n .nextjs-container-errors-header > div > small {\n margin: 0;\n margin-top: var(--size-gap-half);\n }\n .nextjs-container-errors-header > p > a {\n color: inherit;\n font-weight: bold;\n }\n .nextjs-container-errors-header\n > .nextjs-container-build-error-version-status {\n position: absolute;\n top: var(--size-4);\n right: var(--size-4);\n }\n\n .nextjs-error-overlay-dialog-header-turbopack-background {\n background-image: linear-gradient(\n 10deg,\n var(--color-background-100) 60%,\n var(--color-turbopack-background-red) 75%,\n var(--color-turbopack-background-blue) 100%\n );\n }\n"
|
|
@@ -36,7 +37,7 @@ function _templateObject() {
|
|
|
36
37
|
function ErrorOverlayDialogHeader(param) {
|
|
37
38
|
let { children, isTurbopack } = param;
|
|
38
39
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_dialogheader.DialogHeader, {
|
|
39
|
-
className:
|
|
40
|
+
className: (0, _cx.cx)('nextjs-container-errors-header', isTurbopack && 'nextjs-error-overlay-dialog-header-turbopack-background'),
|
|
40
41
|
children: children
|
|
41
42
|
});
|
|
42
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/errors/dialog/header.tsx"],"sourcesContent":["import { DialogHeader } from '../../dialog/dialog-header'\nimport { noop as css } from '../../../helpers/noop-template'\n\ntype ErrorOverlayDialogHeaderProps = {\n children?: React.ReactNode\n isTurbopack?: boolean\n}\n\nexport function ErrorOverlayDialogHeader({\n children,\n isTurbopack,\n}: ErrorOverlayDialogHeaderProps) {\n return (\n <DialogHeader\n className={
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/errors/dialog/header.tsx"],"sourcesContent":["import { DialogHeader } from '../../dialog/dialog-header'\nimport { noop as css } from '../../../helpers/noop-template'\nimport { cx } from '../../../helpers/cx'\n\ntype ErrorOverlayDialogHeaderProps = {\n children?: React.ReactNode\n isTurbopack?: boolean\n}\n\nexport function ErrorOverlayDialogHeader({\n children,\n isTurbopack,\n}: ErrorOverlayDialogHeaderProps) {\n return (\n <DialogHeader\n className={cx(\n 'nextjs-container-errors-header',\n isTurbopack && 'nextjs-error-overlay-dialog-header-turbopack-background'\n )}\n >\n {children}\n </DialogHeader>\n )\n}\n\nexport const DIALOG_HEADER_STYLES = css`\n .nextjs-container-errors-header {\n position: relative;\n }\n .nextjs-container-errors-header > h1 {\n font-size: var(--size-font-big);\n line-height: var(--size-font-bigger);\n font-weight: bold;\n margin: calc(var(--size-gap-double) * 1.5) 0;\n color: var(--color-title-h1);\n }\n .nextjs-container-errors-header small {\n font-size: var(--size-font-small);\n color: var(--color-accents-1);\n margin-left: var(--size-gap-double);\n }\n .nextjs-container-errors-header small > span {\n font-family: var(--font-stack-monospace);\n }\n .nextjs-container-errors-header > div > small {\n margin: 0;\n margin-top: var(--size-gap-half);\n }\n .nextjs-container-errors-header > p > a {\n color: inherit;\n font-weight: bold;\n }\n .nextjs-container-errors-header\n > .nextjs-container-build-error-version-status {\n position: absolute;\n top: var(--size-4);\n right: var(--size-4);\n }\n\n .nextjs-error-overlay-dialog-header-turbopack-background {\n background-image: linear-gradient(\n 10deg,\n var(--color-background-100) 60%,\n var(--color-turbopack-background-red) 75%,\n var(--color-turbopack-background-blue) 100%\n );\n }\n`\n"],"names":["DIALOG_HEADER_STYLES","ErrorOverlayDialogHeader","children","isTurbopack","DialogHeader","className","cx","css"],"mappings":";;;;;;;;;;;;;;;IAyBaA,oBAAoB;eAApBA;;IAhBGC,wBAAwB;eAAxBA;;;;;8BATa;8BACD;oBACT;;;;;;;;;;AAOZ,SAASA,yBAAyB,KAGT;IAHS,IAAA,EACvCC,QAAQ,EACRC,WAAW,EACmB,GAHS;IAIvC,qBACE,qBAACC,0BAAY;QACXC,WAAWC,IAAAA,MAAE,EACX,kCACAH,eAAe;kBAGhBD;;AAGP;AAEO,MAAMF,2BAAuBO,kBAAG"}
|
|
@@ -26,6 +26,7 @@ const _react = require("react");
|
|
|
26
26
|
const _thumbsup = require("../../../../icons/thumbs/thumbs-up");
|
|
27
27
|
const _thumbsdown = require("../../../../icons/thumbs/thumbs-down");
|
|
28
28
|
const _nooptemplate = require("../../../../helpers/noop-template");
|
|
29
|
+
const _cx = require("../../../../helpers/cx");
|
|
29
30
|
function _templateObject() {
|
|
30
31
|
const data = _tagged_template_literal_loose._([
|
|
31
32
|
"\n .error-feedback {\n display: flex;\n align-items: center;\n gap: var(--size-gap);\n white-space: nowrap;\n color: var(--color-gray-900);\n }\n\n .error-feedback-thanks {\n height: 24px;\n display: flex;\n align-items: center;\n padding-right: 4px; /* To match the 4px inner padding of the thumbs up and down icons */\n }\n\n .feedback-button {\n background: none;\n border: none;\n border-radius: var(--rounded-md);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n &:focus {\n outline: var(--focus-ring);\n }\n\n &:hover {\n background: var(--color-gray-alpha-100);\n }\n\n &:active {\n background: var(--color-gray-alpha-200);\n }\n }\n\n .feedback-button:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n }\n\n .feedback-button.voted {\n background: var(--color-gray-alpha-200);\n }\n\n .thumbs-up-icon,\n .thumbs-down-icon {\n color: var(--color-gray-900);\n }\n"
|
|
@@ -62,7 +63,7 @@ function ErrorFeedback(param) {
|
|
|
62
63
|
errorCode
|
|
63
64
|
]);
|
|
64
65
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
65
|
-
className:
|
|
66
|
+
className: (0, _cx.cx)('error-feedback', className),
|
|
66
67
|
role: "region",
|
|
67
68
|
"aria-label": "Error feedback",
|
|
68
69
|
children: hasVoted ? /*#__PURE__*/ (0, _jsxruntime.jsx)("p", {
|
|
@@ -78,7 +79,7 @@ function ErrorFeedback(param) {
|
|
|
78
79
|
/*#__PURE__*/ (0, _jsxruntime.jsx)("button", {
|
|
79
80
|
"aria-label": "Mark as helpful",
|
|
80
81
|
onClick: ()=>handleFeedback(true),
|
|
81
|
-
className:
|
|
82
|
+
className: (0, _cx.cx)('feedback-button', voted === true && 'voted'),
|
|
82
83
|
type: "button",
|
|
83
84
|
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_thumbsup.ThumbsUp, {
|
|
84
85
|
"aria-hidden": "true"
|
|
@@ -87,7 +88,7 @@ function ErrorFeedback(param) {
|
|
|
87
88
|
/*#__PURE__*/ (0, _jsxruntime.jsx)("button", {
|
|
88
89
|
"aria-label": "Mark as not helpful",
|
|
89
90
|
onClick: ()=>handleFeedback(false),
|
|
90
|
-
className:
|
|
91
|
+
className: (0, _cx.cx)('feedback-button', voted === false && 'voted'),
|
|
91
92
|
type: "button",
|
|
92
93
|
children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_thumbsdown.ThumbsDown, {
|
|
93
94
|
"aria-hidden": "true",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-footer/error-feedback/error-feedback.tsx"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport { ThumbsUp } from '../../../../icons/thumbs/thumbs-up'\nimport { ThumbsDown } from '../../../../icons/thumbs/thumbs-down'\nimport { noop as css } from '../../../../helpers/noop-template'\n\ninterface ErrorFeedbackProps {\n errorCode: string\n className?: string\n}\nexport function ErrorFeedback({ errorCode, className }: ErrorFeedbackProps) {\n const [votedMap, setVotedMap] = useState<Record<string, boolean>>({})\n const voted = votedMap[errorCode]\n const hasVoted = voted !== undefined\n\n const handleFeedback = useCallback(\n async (wasHelpful: boolean) => {\n // Optimistically set feedback state without loading/error states to keep implementation simple\n setVotedMap((prev) => ({\n ...prev,\n [errorCode]: wasHelpful,\n }))\n\n try {\n const response = await fetch(\n `${process.env.__NEXT_ROUTER_BASEPATH || ''}/__nextjs_error_feedback?${new URLSearchParams(\n {\n errorCode,\n wasHelpful: wasHelpful.toString(),\n }\n )}`\n )\n\n if (!response.ok) {\n // Handle non-2xx HTTP responses here if needed\n console.error('Failed to record feedback on the server.')\n }\n } catch (error) {\n console.error('Failed to record feedback:', error)\n }\n },\n [errorCode]\n )\n\n return (\n <div\n className={
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-footer/error-feedback/error-feedback.tsx"],"sourcesContent":["import { useState, useCallback } from 'react'\nimport { ThumbsUp } from '../../../../icons/thumbs/thumbs-up'\nimport { ThumbsDown } from '../../../../icons/thumbs/thumbs-down'\nimport { noop as css } from '../../../../helpers/noop-template'\nimport { cx } from '../../../../helpers/cx'\n\ninterface ErrorFeedbackProps {\n errorCode: string\n className?: string\n}\nexport function ErrorFeedback({ errorCode, className }: ErrorFeedbackProps) {\n const [votedMap, setVotedMap] = useState<Record<string, boolean>>({})\n const voted = votedMap[errorCode]\n const hasVoted = voted !== undefined\n\n const handleFeedback = useCallback(\n async (wasHelpful: boolean) => {\n // Optimistically set feedback state without loading/error states to keep implementation simple\n setVotedMap((prev) => ({\n ...prev,\n [errorCode]: wasHelpful,\n }))\n\n try {\n const response = await fetch(\n `${process.env.__NEXT_ROUTER_BASEPATH || ''}/__nextjs_error_feedback?${new URLSearchParams(\n {\n errorCode,\n wasHelpful: wasHelpful.toString(),\n }\n )}`\n )\n\n if (!response.ok) {\n // Handle non-2xx HTTP responses here if needed\n console.error('Failed to record feedback on the server.')\n }\n } catch (error) {\n console.error('Failed to record feedback:', error)\n }\n },\n [errorCode]\n )\n\n return (\n <div\n className={cx('error-feedback', className)}\n role=\"region\"\n aria-label=\"Error feedback\"\n >\n {hasVoted ? (\n <p className=\"error-feedback-thanks\" role=\"status\" aria-live=\"polite\">\n Thanks for your feedback!\n </p>\n ) : (\n <>\n <p>Was this helpful?</p>\n <button\n aria-label=\"Mark as helpful\"\n onClick={() => handleFeedback(true)}\n className={cx('feedback-button', voted === true && 'voted')}\n type=\"button\"\n >\n <ThumbsUp aria-hidden=\"true\" />\n </button>\n <button\n aria-label=\"Mark as not helpful\"\n onClick={() => handleFeedback(false)}\n className={cx('feedback-button', voted === false && 'voted')}\n type=\"button\"\n >\n <ThumbsDown\n aria-hidden=\"true\"\n // Optical alignment\n style={{\n translate: '1px 1px',\n }}\n />\n </button>\n </>\n )}\n </div>\n )\n}\n\nexport const styles = css`\n .error-feedback {\n display: flex;\n align-items: center;\n gap: var(--size-gap);\n white-space: nowrap;\n color: var(--color-gray-900);\n }\n\n .error-feedback-thanks {\n height: 24px;\n display: flex;\n align-items: center;\n padding-right: 4px; /* To match the 4px inner padding of the thumbs up and down icons */\n }\n\n .feedback-button {\n background: none;\n border: none;\n border-radius: var(--rounded-md);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n\n &:focus {\n outline: var(--focus-ring);\n }\n\n &:hover {\n background: var(--color-gray-alpha-100);\n }\n\n &:active {\n background: var(--color-gray-alpha-200);\n }\n }\n\n .feedback-button:disabled {\n opacity: 0.7;\n cursor: not-allowed;\n }\n\n .feedback-button.voted {\n background: var(--color-gray-alpha-200);\n }\n\n .thumbs-up-icon,\n .thumbs-down-icon {\n color: var(--color-gray-900);\n }\n`\n"],"names":["ErrorFeedback","styles","errorCode","className","votedMap","setVotedMap","useState","voted","hasVoted","undefined","handleFeedback","useCallback","wasHelpful","prev","response","fetch","process","env","__NEXT_ROUTER_BASEPATH","URLSearchParams","toString","ok","console","error","div","cx","role","aria-label","p","aria-live","button","onClick","type","ThumbsUp","aria-hidden","ThumbsDown","style","translate","css"],"mappings":";;;;;;;;;;;;;;;IAUgBA,aAAa;eAAbA;;IA2EHC,MAAM;eAANA;;;;;uBArFyB;0BACb;4BACE;8BACC;oBACT;;;;;;;;;;AAMZ,SAASD,cAAc,KAA4C;IAA5C,IAAA,EAAEE,SAAS,EAAEC,SAAS,EAAsB,GAA5C;IAC5B,MAAM,CAACC,UAAUC,YAAY,GAAGC,IAAAA,eAAQ,EAA0B,CAAC;IACnE,MAAMC,QAAQH,QAAQ,CAACF,UAAU;IACjC,MAAMM,WAAWD,UAAUE;IAE3B,MAAMC,iBAAiBC,IAAAA,kBAAW,EAChC,OAAOC;QACL,+FAA+F;QAC/FP,YAAY,CAACQ,OAAU,CAAA;gBACrB,GAAGA,IAAI;gBACP,CAACX,UAAU,EAAEU;YACf,CAAA;QAEA,IAAI;YACF,MAAME,WAAW,MAAMC,MACrB,AAAGC,CAAAA,QAAQC,GAAG,CAACC,sBAAsB,IAAI,EAAC,IAAE,8BAA2B,IAAIC,gBACzE;gBACEjB;gBACAU,YAAYA,WAAWQ,QAAQ;YACjC;YAIJ,IAAI,CAACN,SAASO,EAAE,EAAE;gBAChB,+CAA+C;gBAC/CC,QAAQC,KAAK,CAAC;YAChB;QACF,EAAE,OAAOA,OAAO;YACdD,QAAQC,KAAK,CAAC,8BAA8BA;QAC9C;IACF,GACA;QAACrB;KAAU;IAGb,qBACE,qBAACsB;QACCrB,WAAWsB,IAAAA,MAAE,EAAC,kBAAkBtB;QAChCuB,MAAK;QACLC,cAAW;kBAEVnB,yBACC,qBAACoB;YAAEzB,WAAU;YAAwBuB,MAAK;YAASG,aAAU;sBAAS;2BAItE;;8BACE,qBAACD;8BAAE;;8BACH,qBAACE;oBACCH,cAAW;oBACXI,SAAS,IAAMrB,eAAe;oBAC9BP,WAAWsB,IAAAA,MAAE,EAAC,mBAAmBlB,UAAU,QAAQ;oBACnDyB,MAAK;8BAEL,cAAA,qBAACC,kBAAQ;wBAACC,eAAY;;;8BAExB,qBAACJ;oBACCH,cAAW;oBACXI,SAAS,IAAMrB,eAAe;oBAC9BP,WAAWsB,IAAAA,MAAE,EAAC,mBAAmBlB,UAAU,SAAS;oBACpDyB,MAAK;8BAEL,cAAA,qBAACG,sBAAU;wBACTD,eAAY;wBACZ,oBAAoB;wBACpBE,OAAO;4BACLC,WAAW;wBACb;;;;;;AAOd;AAEO,MAAMpC,aAASqC,kBAAG"}
|
package/dist/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.js
CHANGED
|
@@ -11,6 +11,7 @@ Object.defineProperty(exports, "Toast", {
|
|
|
11
11
|
const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
|
|
12
12
|
const _jsxruntime = require("react/jsx-runtime");
|
|
13
13
|
const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
14
|
+
const _cx = require("../../helpers/cx");
|
|
14
15
|
const Toast = function Toast(param) {
|
|
15
16
|
let { onClick, children, className, ...props } = param;
|
|
16
17
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
@@ -19,7 +20,7 @@ const Toast = function Toast(param) {
|
|
|
19
20
|
e.preventDefault();
|
|
20
21
|
return onClick == null ? void 0 : onClick();
|
|
21
22
|
},
|
|
22
|
-
className:
|
|
23
|
+
className: (0, _cx.cx)('nextjs-toast', className),
|
|
23
24
|
children: /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
24
25
|
"data-nextjs-toast-wrapper": true,
|
|
25
26
|
children: children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.tsx"],"sourcesContent":["import * as React from 'react'\
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.tsx"],"sourcesContent":["import * as React from 'react'\nimport { cx } from '../../helpers/cx'\nexport type ToastProps = React.HTMLProps<HTMLDivElement> & {\n children?: React.ReactNode\n onClick?: () => void\n className?: string\n}\n\nexport const Toast: React.FC<ToastProps> = function Toast({\n onClick,\n children,\n className,\n ...props\n}) {\n return (\n <div\n {...props}\n onClick={(e) => {\n e.preventDefault()\n return onClick?.()\n }}\n className={cx('nextjs-toast', className)}\n >\n <div data-nextjs-toast-wrapper>{children}</div>\n </div>\n )\n}\n"],"names":["Toast","onClick","children","className","props","div","e","preventDefault","cx","data-nextjs-toast-wrapper"],"mappings":";;;;+BAQaA;;;eAAAA;;;;;iEARU;oBACJ;AAOZ,MAAMA,QAA8B,SAASA,MAAM,KAKzD;IALyD,IAAA,EACxDC,OAAO,EACPC,QAAQ,EACRC,SAAS,EACT,GAAGC,OACJ,GALyD;IAMxD,qBACE,qBAACC;QACE,GAAGD,KAAK;QACTH,SAAS,CAACK;YACRA,EAAEC,cAAc;YAChB,OAAON,2BAAAA;QACT;QACAE,WAAWK,IAAAA,MAAE,EAAC,gBAAgBL;kBAE9B,cAAA,qBAACE;YAAII,2BAAyB;sBAAEP;;;AAGtC"}
|
|
@@ -26,6 +26,7 @@ _export(exports, {
|
|
|
26
26
|
});
|
|
27
27
|
const _tagged_template_literal_loose = require("@swc/helpers/_/_tagged_template_literal_loose");
|
|
28
28
|
const _jsxruntime = require("react/jsx-runtime");
|
|
29
|
+
const _cx = require("../../helpers/cx");
|
|
29
30
|
const _nooptemplate = require("../../helpers/noop-template");
|
|
30
31
|
function _templateObject() {
|
|
31
32
|
const data = _tagged_template_literal_loose._([
|
|
@@ -43,10 +44,10 @@ function VersionStalenessInfo(param) {
|
|
|
43
44
|
let { text, indicatorClass, title } = getStaleness(versionInfo);
|
|
44
45
|
if (!text) return null;
|
|
45
46
|
return /*#__PURE__*/ (0, _jsxruntime.jsxs)("span", {
|
|
46
|
-
className:
|
|
47
|
+
className: (0, _cx.cx)('nextjs-container-build-error-version-status', 'dialog-exclude-closing-from-outside-click', isTurbopack && 'turbopack-border'),
|
|
47
48
|
children: [
|
|
48
49
|
/*#__PURE__*/ (0, _jsxruntime.jsx)(Eclipse, {
|
|
49
|
-
className:
|
|
50
|
+
className: (0, _cx.cx)('version-staleness-indicator', indicatorClass)
|
|
50
51
|
}),
|
|
51
52
|
/*#__PURE__*/ (0, _jsxruntime.jsx)("span", {
|
|
52
53
|
"data-nextjs-version-checker": true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/version-staleness-info/version-staleness-info.tsx"],"sourcesContent":["import type { VersionInfo } from '../../../../../../../server/dev/parse-version-info'\nimport { noop as css } from '../../helpers/noop-template'\n\nexport function VersionStalenessInfo({\n versionInfo,\n isTurbopack,\n}: {\n versionInfo: VersionInfo | undefined\n isTurbopack?: boolean\n}) {\n if (!versionInfo) return null\n const { staleness } = versionInfo\n let { text, indicatorClass, title } = getStaleness(versionInfo)\n\n if (!text) return null\n\n return (\n <span\n className={
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/components/version-staleness-info/version-staleness-info.tsx"],"sourcesContent":["import type { VersionInfo } from '../../../../../../../server/dev/parse-version-info'\nimport { cx } from '../../helpers/cx'\nimport { noop as css } from '../../helpers/noop-template'\n\nexport function VersionStalenessInfo({\n versionInfo,\n isTurbopack,\n}: {\n versionInfo: VersionInfo | undefined\n isTurbopack?: boolean\n}) {\n if (!versionInfo) return null\n const { staleness } = versionInfo\n let { text, indicatorClass, title } = getStaleness(versionInfo)\n\n if (!text) return null\n\n return (\n <span\n className={cx(\n 'nextjs-container-build-error-version-status',\n 'dialog-exclude-closing-from-outside-click',\n isTurbopack && 'turbopack-border'\n )}\n >\n <Eclipse className={cx('version-staleness-indicator', indicatorClass)} />\n <span data-nextjs-version-checker title={title}>\n {text}\n </span>{' '}\n {staleness === 'fresh' ||\n staleness === 'newer-than-npm' ||\n staleness === 'unknown' ? null : (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href=\"https://nextjs.org/docs/messages/version-staleness\"\n >\n (learn more)\n </a>\n )}\n {isTurbopack && <span className=\"turbopack-text\">Turbopack</span>}\n </span>\n )\n}\n\nexport function getStaleness({ installed, staleness, expected }: VersionInfo) {\n let text = ''\n let title = ''\n let indicatorClass = ''\n const versionLabel = `Next.js ${installed}`\n switch (staleness) {\n case 'newer-than-npm':\n case 'fresh':\n text = versionLabel\n title = `Latest available version is detected (${installed}).`\n indicatorClass = 'fresh'\n break\n case 'stale-patch':\n case 'stale-minor':\n text = `${versionLabel} (stale)`\n title = `There is a newer version (${expected}) available, upgrade recommended! `\n indicatorClass = 'stale'\n break\n case 'stale-major': {\n text = `${versionLabel} (outdated)`\n title = `An outdated version detected (latest is ${expected}), upgrade is highly recommended!`\n indicatorClass = 'outdated'\n break\n }\n case 'stale-prerelease': {\n text = `${versionLabel} (stale)`\n title = `There is a newer canary version (${expected}) available, please upgrade! `\n indicatorClass = 'stale'\n break\n }\n case 'unknown':\n break\n default:\n break\n }\n return { text, indicatorClass, title }\n}\n\nexport const styles = css`\n .nextjs-container-build-error-version-status {\n -webkit-font-smoothing: antialiased;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: var(--size-1);\n\n height: 28px;\n padding: 6px 8px 6px 6px;\n background: var(--color-background-100);\n background-clip: padding-box;\n box-shadow: var(--shadow-small);\n border: 1px solid var(--color-gray-alpha-400);\n border-radius: var(--rounded-full);\n\n color: var(--color-gray-900);\n font-size: 12px;\n font-weight: 500;\n line-height: var(--size-4);\n }\n\n .version-staleness-indicator.fresh {\n fill: var(--color-green-800);\n stroke: var(--color-green-300);\n }\n .version-staleness-indicator.stale {\n fill: var(--color-amber-800);\n stroke: var(--color-amber-300);\n }\n .version-staleness-indicator.outdated {\n fill: var(--color-red-800);\n stroke: var(--color-red-300);\n }\n\n .nextjs-container-build-error-version-status.turbopack-border {\n border: 1px solid transparent;\n background:\n linear-gradient(var(--color-background-100), var(--color-background-100))\n padding-box,\n linear-gradient(\n to right,\n var(--color-turbopack-border-red) 0%,\n var(--color-turbopack-border-blue) 100%\n )\n border-box;\n border-radius: var(--rounded-full);\n }\n\n .nextjs-container-build-error-version-status > .turbopack-text {\n background: linear-gradient(\n to right,\n var(--color-turbopack-text-red) 0%,\n var(--color-turbopack-text-blue) 100%\n );\n background-clip: text;\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n }\n`\n\nfunction Eclipse({ className }: { className: string }) {\n return (\n <svg\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle className={className} cx=\"7\" cy=\"7\" r=\"5.5\" strokeWidth=\"3\" />\n </svg>\n )\n}\n"],"names":["VersionStalenessInfo","getStaleness","styles","versionInfo","isTurbopack","staleness","text","indicatorClass","title","span","className","cx","Eclipse","data-nextjs-version-checker","a","target","rel","href","installed","expected","versionLabel","css","svg","width","height","viewBox","fill","xmlns","circle","cy","r","strokeWidth"],"mappings":";;;;;;;;;;;;;;;;IAIgBA,oBAAoB;eAApBA;;IAyCAC,YAAY;eAAZA;;IAsCHC,MAAM;eAANA;;;;;oBAlFM;8BACS;;;;;;;;;;AAErB,SAASF,qBAAqB,KAMpC;IANoC,IAAA,EACnCG,WAAW,EACXC,WAAW,EAIZ,GANoC;IAOnC,IAAI,CAACD,aAAa,OAAO;IACzB,MAAM,EAAEE,SAAS,EAAE,GAAGF;IACtB,IAAI,EAAEG,IAAI,EAAEC,cAAc,EAAEC,KAAK,EAAE,GAAGP,aAAaE;IAEnD,IAAI,CAACG,MAAM,OAAO;IAElB,qBACE,sBAACG;QACCC,WAAWC,IAAAA,MAAE,EACX,+CACA,6CACAP,eAAe;;0BAGjB,qBAACQ;gBAAQF,WAAWC,IAAAA,MAAE,EAAC,+BAA+BJ;;0BACtD,qBAACE;gBAAKI,6BAA2B;gBAACL,OAAOA;0BACtCF;;YACK;YACPD,cAAc,WACfA,cAAc,oBACdA,cAAc,YAAY,qBACxB,qBAACS;gBACCC,QAAO;gBACPC,KAAI;gBACJC,MAAK;0BACN;;YAIFb,6BAAe,qBAACK;gBAAKC,WAAU;0BAAiB;;;;AAGvD;AAEO,SAAST,aAAa,KAA+C;IAA/C,IAAA,EAAEiB,SAAS,EAAEb,SAAS,EAAEc,QAAQ,EAAe,GAA/C;IAC3B,IAAIb,OAAO;IACX,IAAIE,QAAQ;IACZ,IAAID,iBAAiB;IACrB,MAAMa,eAAe,AAAC,aAAUF;IAChC,OAAQb;QACN,KAAK;QACL,KAAK;YACHC,OAAOc;YACPZ,QAAQ,AAAC,2CAAwCU,YAAU;YAC3DX,iBAAiB;YACjB;QACF,KAAK;QACL,KAAK;YACHD,OAAO,AAAC,KAAEc,eAAa;YACvBZ,QAAQ,AAAC,+BAA4BW,WAAS;YAC9CZ,iBAAiB;YACjB;QACF,KAAK;YAAe;gBAClBD,OAAO,AAAC,KAAEc,eAAa;gBACvBZ,QAAQ,AAAC,6CAA0CW,WAAS;gBAC5DZ,iBAAiB;gBACjB;YACF;QACA,KAAK;YAAoB;gBACvBD,OAAO,AAAC,KAAEc,eAAa;gBACvBZ,QAAQ,AAAC,sCAAmCW,WAAS;gBACrDZ,iBAAiB;gBACjB;YACF;QACA,KAAK;YACH;QACF;YACE;IACJ;IACA,OAAO;QAAED;QAAMC;QAAgBC;IAAM;AACvC;AAEO,MAAMN,aAASmB,kBAAG;AA6DzB,SAAST,QAAQ,KAAoC;IAApC,IAAA,EAAEF,SAAS,EAAyB,GAApC;IACf,qBACE,qBAACY;QACCC,OAAM;QACNC,QAAO;QACPC,SAAQ;QACRC,MAAK;QACLC,OAAM;kBAEN,cAAA,qBAACC;YAAOlB,WAAWA;YAAWC,IAAG;YAAIkB,IAAG;YAAIC,GAAE;YAAMC,aAAY;;;AAGtE"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge multiple args to a single string with spaces. Useful for merging class names.
|
|
3
|
+
* @example
|
|
4
|
+
* cx('foo', 'bar') // 'foo bar'
|
|
5
|
+
* cx('foo', null, 'bar', undefined, 'baz', false) // 'foo bar baz'
|
|
6
|
+
*/
|
|
7
|
+
export declare function cx(...args: (string | undefined | null | false)[]): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge multiple args to a single string with spaces. Useful for merging class names.
|
|
3
|
+
* @example
|
|
4
|
+
* cx('foo', 'bar') // 'foo bar'
|
|
5
|
+
* cx('foo', null, 'bar', undefined, 'baz', false) // 'foo bar baz'
|
|
6
|
+
*/ "use strict";
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
Object.defineProperty(exports, "cx", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function() {
|
|
13
|
+
return cx;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
function cx() {
|
|
17
|
+
for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
|
|
18
|
+
args[_key] = arguments[_key];
|
|
19
|
+
}
|
|
20
|
+
return args.filter(Boolean).join(' ');
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') {
|
|
24
|
+
Object.defineProperty(exports.default, '__esModule', { value: true });
|
|
25
|
+
Object.assign(exports.default, exports);
|
|
26
|
+
module.exports = exports.default;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=cx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../src/client/components/react-dev-overlay/_experimental/internal/helpers/cx.ts"],"sourcesContent":["/**\n * Merge multiple args to a single string with spaces. Useful for merging class names.\n * @example\n * cx('foo', 'bar') // 'foo bar'\n * cx('foo', null, 'bar', undefined, 'baz', false) // 'foo bar baz'\n */\nexport function cx(...args: (string | undefined | null | false)[]): string {\n return args.filter(Boolean).join(' ')\n}\n"],"names":["cx","args","filter","Boolean","join"],"mappings":"AAAA;;;;;CAKC;;;;+BACeA;;;eAAAA;;;AAAT,SAASA;IAAG,IAAA,IAAA,OAAA,UAAA,QAAA,AAAGC,OAAH,UAAA,OAAA,OAAA,GAAA,OAAA,MAAA;QAAGA,KAAH,QAAA,SAAA,CAAA,KAA8C;;IAC/D,OAAOA,KAAKC,MAAM,CAACC,SAASC,IAAI,CAAC;AACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -81,6 +81,16 @@ async function getOriginalStackFrames(frames, type, isAppDir) {
|
|
|
81
81
|
method: 'POST',
|
|
82
82
|
body: JSON.stringify(req)
|
|
83
83
|
});
|
|
84
|
+
// When fails to fetch the original stack frames, we reject here to be
|
|
85
|
+
// caught at `_getOriginalStackFrame()` and return the stack frames so
|
|
86
|
+
// that the error overlay can render.
|
|
87
|
+
if (!res.ok || res.status === 204) {
|
|
88
|
+
const reason = await res.text();
|
|
89
|
+
return Promise.all(frames.map((frame)=>getOriginalStackFrame(frame, {
|
|
90
|
+
status: 'rejected',
|
|
91
|
+
reason: "Failed to fetch the original stack frames: " + reason
|
|
92
|
+
})));
|
|
93
|
+
}
|
|
84
94
|
const data = await res.json();
|
|
85
95
|
return Promise.all(frames.map((frame, index)=>getOriginalStackFrame(frame, data[index])));
|
|
86
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/client/components/react-dev-overlay/internal/helpers/stack-frame.ts"],"sourcesContent":["import type { StackFrame } from 'next/dist/compiled/stacktrace-parser'\nimport type {\n OriginalStackFrameResponse,\n OriginalStackFrameResponseResult,\n OriginalStackFramesRequest,\n} from '../../server/shared'\nimport {\n isWebpackInternalResource,\n formatFrameSourceFile,\n} from './webpack-module-path'\nexport interface OriginalStackFrame extends OriginalStackFrameResponse {\n error: boolean\n reason: string | null\n external: boolean\n ignored: boolean\n sourceStackFrame: StackFrame\n}\n\nfunction getOriginalStackFrame(\n source: StackFrame,\n response: OriginalStackFrameResponseResult\n): Promise<OriginalStackFrame> {\n async function _getOriginalStackFrame(): Promise<OriginalStackFrame> {\n if (response.status === 'rejected') {\n return Promise.reject(new Error(response.reason))\n }\n\n const body: OriginalStackFrameResponse = response.value\n\n return {\n error: false,\n reason: null,\n external: false,\n sourceStackFrame: source,\n originalStackFrame: body.originalStackFrame,\n originalCodeFrame: body.originalCodeFrame || null,\n sourcePackage: body.sourcePackage,\n ignored: body.originalStackFrame?.ignored || false,\n }\n }\n\n // TODO: merge this section into ignoredList handling\n if (source.file === 'file://' || source.file?.match(/https?:\\/\\//)) {\n return Promise.resolve({\n error: false,\n reason: null,\n external: true,\n sourceStackFrame: source,\n originalStackFrame: null,\n originalCodeFrame: null,\n sourcePackage: null,\n ignored: true,\n })\n }\n\n return _getOriginalStackFrame().catch((err: Error) => ({\n error: true,\n reason: err?.message ?? err?.toString() ?? 'Unknown Error',\n external: false,\n sourceStackFrame: source,\n originalStackFrame: null,\n originalCodeFrame: null,\n sourcePackage: null,\n ignored: false,\n }))\n}\n\nexport async function getOriginalStackFrames(\n frames: StackFrame[],\n type: 'server' | 'edge-server' | null,\n isAppDir: boolean\n): Promise<OriginalStackFrame[]> {\n const req: OriginalStackFramesRequest = {\n frames,\n isServer: type === 'server',\n isEdgeServer: type === 'edge-server',\n isAppDirectory: isAppDir,\n }\n const res = await fetch('/__nextjs_original-stack-frames', {\n method: 'POST',\n body: JSON.stringify(req),\n })\n const data = await res.json()\n return Promise.all(\n frames.map((frame, index) => getOriginalStackFrame(frame, data[index]))\n )\n}\n\nexport function getFrameSource(frame: StackFrame): string {\n if (!frame.file) return ''\n\n const isWebpackFrame = isWebpackInternalResource(frame.file)\n\n let str = ''\n // Skip URL parsing for webpack internal file paths.\n if (isWebpackFrame) {\n str = formatFrameSourceFile(frame.file)\n } else {\n try {\n const u = new URL(frame.file)\n\n let parsedPath = ''\n // Strip the origin for same-origin scripts.\n if (globalThis.location?.origin !== u.origin) {\n // URLs can be valid without an `origin`, so long as they have a\n // `protocol`. However, `origin` is preferred.\n if (u.origin === 'null') {\n parsedPath += u.protocol\n } else {\n parsedPath += u.origin\n }\n }\n\n // Strip query string information as it's typically too verbose to be\n // meaningful.\n parsedPath += u.pathname\n str = formatFrameSourceFile(parsedPath)\n } catch {\n str = formatFrameSourceFile(frame.file)\n }\n }\n\n if (!isWebpackInternalResource(frame.file) && frame.lineNumber != null) {\n if (str) {\n if (frame.column != null) {\n str += ` (${frame.lineNumber}:${frame.column})`\n } else {\n str += ` (${frame.lineNumber})`\n }\n }\n }\n return str\n}\n"],"names":["getFrameSource","getOriginalStackFrames","getOriginalStackFrame","source","response","_getOriginalStackFrame","body","status","Promise","reject","Error","reason","value","error","external","sourceStackFrame","originalStackFrame","originalCodeFrame","sourcePackage","ignored","file","match","resolve","catch","err","message","toString","frames","type","isAppDir","req","isServer","isEdgeServer","isAppDirectory","res","fetch","method","JSON","stringify","
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/client/components/react-dev-overlay/internal/helpers/stack-frame.ts"],"sourcesContent":["import type { StackFrame } from 'next/dist/compiled/stacktrace-parser'\nimport type {\n OriginalStackFrameResponse,\n OriginalStackFrameResponseResult,\n OriginalStackFramesRequest,\n} from '../../server/shared'\nimport {\n isWebpackInternalResource,\n formatFrameSourceFile,\n} from './webpack-module-path'\nexport interface OriginalStackFrame extends OriginalStackFrameResponse {\n error: boolean\n reason: string | null\n external: boolean\n ignored: boolean\n sourceStackFrame: StackFrame\n}\n\nfunction getOriginalStackFrame(\n source: StackFrame,\n response: OriginalStackFrameResponseResult\n): Promise<OriginalStackFrame> {\n async function _getOriginalStackFrame(): Promise<OriginalStackFrame> {\n if (response.status === 'rejected') {\n return Promise.reject(new Error(response.reason))\n }\n\n const body: OriginalStackFrameResponse = response.value\n\n return {\n error: false,\n reason: null,\n external: false,\n sourceStackFrame: source,\n originalStackFrame: body.originalStackFrame,\n originalCodeFrame: body.originalCodeFrame || null,\n sourcePackage: body.sourcePackage,\n ignored: body.originalStackFrame?.ignored || false,\n }\n }\n\n // TODO: merge this section into ignoredList handling\n if (source.file === 'file://' || source.file?.match(/https?:\\/\\//)) {\n return Promise.resolve({\n error: false,\n reason: null,\n external: true,\n sourceStackFrame: source,\n originalStackFrame: null,\n originalCodeFrame: null,\n sourcePackage: null,\n ignored: true,\n })\n }\n\n return _getOriginalStackFrame().catch((err: Error) => ({\n error: true,\n reason: err?.message ?? err?.toString() ?? 'Unknown Error',\n external: false,\n sourceStackFrame: source,\n originalStackFrame: null,\n originalCodeFrame: null,\n sourcePackage: null,\n ignored: false,\n }))\n}\n\nexport async function getOriginalStackFrames(\n frames: StackFrame[],\n type: 'server' | 'edge-server' | null,\n isAppDir: boolean\n): Promise<OriginalStackFrame[]> {\n const req: OriginalStackFramesRequest = {\n frames,\n isServer: type === 'server',\n isEdgeServer: type === 'edge-server',\n isAppDirectory: isAppDir,\n }\n\n const res = await fetch('/__nextjs_original-stack-frames', {\n method: 'POST',\n body: JSON.stringify(req),\n })\n\n // When fails to fetch the original stack frames, we reject here to be\n // caught at `_getOriginalStackFrame()` and return the stack frames so\n // that the error overlay can render.\n if (!res.ok || res.status === 204) {\n const reason = await res.text()\n return Promise.all(\n frames.map((frame) =>\n getOriginalStackFrame(frame, {\n status: 'rejected',\n reason: `Failed to fetch the original stack frames: ${reason}`,\n })\n )\n )\n }\n\n const data = await res.json()\n return Promise.all(\n frames.map((frame, index) => getOriginalStackFrame(frame, data[index]))\n )\n}\n\nexport function getFrameSource(frame: StackFrame): string {\n if (!frame.file) return ''\n\n const isWebpackFrame = isWebpackInternalResource(frame.file)\n\n let str = ''\n // Skip URL parsing for webpack internal file paths.\n if (isWebpackFrame) {\n str = formatFrameSourceFile(frame.file)\n } else {\n try {\n const u = new URL(frame.file)\n\n let parsedPath = ''\n // Strip the origin for same-origin scripts.\n if (globalThis.location?.origin !== u.origin) {\n // URLs can be valid without an `origin`, so long as they have a\n // `protocol`. However, `origin` is preferred.\n if (u.origin === 'null') {\n parsedPath += u.protocol\n } else {\n parsedPath += u.origin\n }\n }\n\n // Strip query string information as it's typically too verbose to be\n // meaningful.\n parsedPath += u.pathname\n str = formatFrameSourceFile(parsedPath)\n } catch {\n str = formatFrameSourceFile(frame.file)\n }\n }\n\n if (!isWebpackInternalResource(frame.file) && frame.lineNumber != null) {\n if (str) {\n if (frame.column != null) {\n str += ` (${frame.lineNumber}:${frame.column})`\n } else {\n str += ` (${frame.lineNumber})`\n }\n }\n }\n return str\n}\n"],"names":["getFrameSource","getOriginalStackFrames","getOriginalStackFrame","source","response","_getOriginalStackFrame","body","status","Promise","reject","Error","reason","value","error","external","sourceStackFrame","originalStackFrame","originalCodeFrame","sourcePackage","ignored","file","match","resolve","catch","err","message","toString","frames","type","isAppDir","req","isServer","isEdgeServer","isAppDirectory","res","fetch","method","JSON","stringify","ok","text","all","map","frame","data","json","index","isWebpackFrame","isWebpackInternalResource","str","formatFrameSourceFile","globalThis","u","URL","parsedPath","location","origin","protocol","pathname","lineNumber","column"],"mappings":"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"}
|
package/dist/client/index.js
CHANGED
|
@@ -62,7 +62,7 @@ const _onrecoverableerror = require("./react-client-callbacks/on-recoverable-err
|
|
|
62
62
|
const _tracer = /*#__PURE__*/ _interop_require_default._(require("./tracing/tracer"));
|
|
63
63
|
const _reporttosocket = /*#__PURE__*/ _interop_require_default._(require("./tracing/report-to-socket"));
|
|
64
64
|
const _isnextroutererror = require("./components/is-next-router-error");
|
|
65
|
-
const version = "15.2.0-canary.
|
|
65
|
+
const version = "15.2.0-canary.45";
|
|
66
66
|
let router;
|
|
67
67
|
const emitter = (0, _mitt.default)();
|
|
68
68
|
const looseToArray = (input)=>[].slice.call(input);
|