next 15.2.0-canary.65 → 15.2.0-canary.66
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 +5 -1
- package/dist/bin/next.map +1 -1
- package/dist/build/entries.d.ts +1 -0
- package/dist/build/entries.js +12 -1
- package/dist/build/entries.js.map +1 -1
- package/dist/build/index.js +3 -3
- package/dist/build/index.js.map +1 -1
- package/dist/build/swc/index.js +1 -1
- package/dist/build/webpack/config/blocks/base.js +3 -1
- package/dist/build/webpack/config/blocks/base.js.map +1 -1
- package/dist/build/webpack/config/blocks/css/index.js +3 -1
- package/dist/build/webpack/config/blocks/css/index.js.map +1 -1
- package/dist/build/webpack/config/blocks/css/loaders/client.js +3 -1
- package/dist/build/webpack/config/blocks/css/loaders/client.js.map +1 -1
- package/dist/build/webpack/loaders/next-flight-client-entry-loader.js +4 -0
- package/dist/build/webpack/loaders/next-flight-client-entry-loader.js.map +1 -1
- package/dist/build/webpack/loaders/next-flight-client-module-loader.js +7 -1
- package/dist/build/webpack/loaders/next-flight-client-module-loader.js.map +1 -1
- package/dist/build/webpack/loaders/next-flight-loader/index.js +8 -2
- package/dist/build/webpack/loaders/next-flight-loader/index.js.map +1 -1
- package/dist/build/webpack/loaders/utils.js +1 -1
- package/dist/build/webpack/loaders/utils.js.map +1 -1
- package/dist/build/webpack/plugins/build-manifest-plugin.d.ts +1 -1
- package/dist/build/webpack/plugins/build-manifest-plugin.js +13 -4
- package/dist/build/webpack/plugins/build-manifest-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/flight-client-entry-plugin.d.ts +1 -1
- package/dist/build/webpack/plugins/flight-client-entry-plugin.js +28 -18
- package/dist/build/webpack/plugins/flight-client-entry-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/flight-manifest-plugin.js +3 -3
- package/dist/build/webpack/plugins/flight-manifest-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/middleware-plugin.js +6 -3
- package/dist/build/webpack/plugins/middleware-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/next-trace-entrypoints-plugin.js +11 -1
- package/dist/build/webpack/plugins/next-trace-entrypoints-plugin.js.map +1 -1
- package/dist/build/webpack/plugins/nextjs-require-cache-hot-reloader.js +1 -1
- package/dist/build/webpack/plugins/nextjs-require-cache-hot-reloader.js.map +1 -1
- package/dist/build/webpack/plugins/rspack-flight-client-entry-plugin.d.ts +36 -0
- package/dist/build/webpack/plugins/rspack-flight-client-entry-plugin.js +97 -0
- package/dist/build/webpack/plugins/rspack-flight-client-entry-plugin.js.map +1 -0
- package/dist/build/webpack/plugins/rspack-profiling-plugin.d.ts +9 -0
- package/dist/build/webpack/plugins/rspack-profiling-plugin.js +62 -0
- package/dist/build/webpack/plugins/rspack-profiling-plugin.js.map +1 -0
- package/dist/build/webpack/plugins/wellknown-errors-plugin/parseNextAppLoaderError.js +2 -1
- package/dist/build/webpack/plugins/wellknown-errors-plugin/parseNextAppLoaderError.js.map +1 -1
- package/dist/build/webpack/utils.js +6 -2
- package/dist/build/webpack/utils.js.map +1 -1
- package/dist/build/webpack-config.js +37 -5
- package/dist/build/webpack-config.js.map +1 -1
- package/dist/client/app-bootstrap.js +1 -1
- package/dist/client/app-dir/link.js +2 -0
- package/dist/client/app-dir/link.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.js +34 -26
- package/dist/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.stories.js +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.stories.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/font/font-styles.d.ts +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/font-styles.js +41 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/font-styles.js.map +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/geist-latin-ext.woff2 +0 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/geist-latin.woff2 +0 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/geist-mono-latin-ext.woff2 +0 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/geist-mono-latin.woff2 +0 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/get-dev-overlay-font-middleware.d.ts +2 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/get-dev-overlay-font-middleware.js +72 -0
- package/dist/client/components/react-dev-overlay/_experimental/font/get-dev-overlay-font-middleware.js.map +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/code-frame/code-frame.js +16 -8
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/code-frame/code-frame.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/copy-button/index.js +3 -3
- 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/dialog.js +2 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/dialog/dialog.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/dev-tools-indicator/dev-tools-indicator.d.ts +2 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.js +82 -31
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.stories.d.ts +2 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.stories.js +20 -21
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.stories.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/dev-tools-info.d.ts +8 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/dev-tools-info.js +80 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/dev-tools-info.js.map +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/route-info.d.ts +9 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/route-info.js +158 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/route-info.js.map +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/turbopack-info.d.ts +8 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/turbopack-info.js +212 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/turbopack-info.js.map +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.d.ts +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.js +28 -6
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-message/error-message.js +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-message/error-message.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.d.ts +2 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.js +3 -3
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-layout/error-overlay-layout.d.ts +2 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-layout/error-overlay-layout.js +4 -4
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-layout/error-overlay-layout.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.d.ts +2 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.js +2 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.stories.js +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.stories.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.d.ts +2 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.js +9 -9
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.stories.js +4 -4
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.stories.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/terminal/terminal.js +15 -10
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/terminal/terminal.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.js +3 -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/container/errors.d.ts +2 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/errors.js +7 -7
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/errors.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/errors.stories.js +5 -5
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/errors.stories.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.js +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/render-error.d.ts +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/render-error.js +4 -12
- package/dist/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/render-error.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/icons/collapse-icon.js +3 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/icons/collapse-icon.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/icons/stop-icon.d.ts +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/icons/stop-icon.js +34 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/icons/stop-icon.js.map +1 -0
- package/dist/client/components/react-dev-overlay/_experimental/internal/styles/base.js +2 -2
- package/dist/client/components/react-dev-overlay/_experimental/internal/styles/base.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/styles/component-styles.js +7 -1
- package/dist/client/components/react-dev-overlay/_experimental/internal/styles/component-styles.js.map +1 -1
- package/dist/client/components/react-dev-overlay/_experimental/pages/react-dev-overlay.js +6 -2
- package/dist/client/components/react-dev-overlay/_experimental/pages/react-dev-overlay.js.map +1 -1
- package/dist/client/components/react-dev-overlay/hydration-diff/diff-view.js +2 -2
- package/dist/client/components/react-dev-overlay/hydration-diff/diff-view.js.map +1 -1
- package/dist/client/components/react-dev-overlay/server/get-next-error-feedback-middleware.js +4 -4
- package/dist/client/components/react-dev-overlay/server/get-next-error-feedback-middleware.js.map +1 -1
- package/dist/client/components/react-dev-overlay/server/middleware-response.d.ts +9 -0
- package/dist/client/components/react-dev-overlay/server/middleware-response.js +46 -0
- package/dist/client/components/react-dev-overlay/server/middleware-response.js.map +1 -0
- package/dist/client/components/react-dev-overlay/server/middleware-turbopack.js +13 -12
- package/dist/client/components/react-dev-overlay/server/middleware-turbopack.js.map +1 -1
- package/dist/client/components/react-dev-overlay/server/middleware-webpack.js +12 -11
- package/dist/client/components/react-dev-overlay/server/middleware-webpack.js.map +1 -1
- package/dist/client/components/react-dev-overlay/server/shared.d.ts +0 -7
- package/dist/client/components/react-dev-overlay/server/shared.js +1 -51
- package/dist/client/components/react-dev-overlay/server/shared.js.map +1 -1
- package/dist/client/components/react-dev-overlay/shared.d.ts +1 -0
- package/dist/client/components/react-dev-overlay/shared.js +2 -0
- package/dist/client/components/react-dev-overlay/shared.js.map +1 -1
- package/dist/client/index.js +2 -3
- package/dist/client/index.js.map +1 -1
- package/dist/client/link.js.map +1 -1
- package/dist/compiled/@next/font/dist/google/fetch-css-from-google-fonts.js +8 -44
- package/dist/compiled/@next/font/dist/google/fetch-font-file.d.ts +2 -1
- package/dist/compiled/@next/font/dist/google/fetch-font-file.js +6 -20
- package/dist/compiled/@next/font/dist/google/fetch-resource.d.ts +6 -0
- package/dist/compiled/@next/font/dist/google/fetch-resource.js +46 -0
- 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 +2 -2
- package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
- package/dist/compiled/node-fetch/index.js +1 -1
- package/dist/compiled/sass-loader/cjs.js +1 -1
- package/dist/compiled/webpack/webpack.js +23 -1
- package/dist/esm/build/entries.js +9 -2
- package/dist/esm/build/entries.js.map +1 -1
- package/dist/esm/build/index.js +3 -3
- package/dist/esm/build/index.js.map +1 -1
- package/dist/esm/build/swc/index.js +1 -1
- package/dist/esm/build/webpack/config/blocks/base.js +3 -1
- package/dist/esm/build/webpack/config/blocks/base.js.map +1 -1
- package/dist/esm/build/webpack/config/blocks/css/index.js +3 -1
- package/dist/esm/build/webpack/config/blocks/css/index.js.map +1 -1
- package/dist/esm/build/webpack/config/blocks/css/loaders/client.js +3 -1
- package/dist/esm/build/webpack/config/blocks/css/loaders/client.js.map +1 -1
- package/dist/esm/build/webpack/loaders/next-flight-client-entry-loader.js +4 -0
- package/dist/esm/build/webpack/loaders/next-flight-client-entry-loader.js.map +1 -1
- package/dist/esm/build/webpack/loaders/next-flight-client-module-loader.js +7 -1
- package/dist/esm/build/webpack/loaders/next-flight-client-module-loader.js.map +1 -1
- package/dist/esm/build/webpack/loaders/next-flight-loader/index.js +8 -2
- package/dist/esm/build/webpack/loaders/next-flight-loader/index.js.map +1 -1
- package/dist/esm/build/webpack/loaders/utils.js +1 -1
- package/dist/esm/build/webpack/loaders/utils.js.map +1 -1
- package/dist/esm/build/webpack/plugins/build-manifest-plugin.js +14 -5
- package/dist/esm/build/webpack/plugins/build-manifest-plugin.js.map +1 -1
- package/dist/esm/build/webpack/plugins/flight-client-entry-plugin.js +28 -18
- package/dist/esm/build/webpack/plugins/flight-client-entry-plugin.js.map +1 -1
- package/dist/esm/build/webpack/plugins/flight-manifest-plugin.js +3 -3
- package/dist/esm/build/webpack/plugins/flight-manifest-plugin.js.map +1 -1
- package/dist/esm/build/webpack/plugins/middleware-plugin.js +6 -3
- package/dist/esm/build/webpack/plugins/middleware-plugin.js.map +1 -1
- package/dist/esm/build/webpack/plugins/next-trace-entrypoints-plugin.js +11 -1
- package/dist/esm/build/webpack/plugins/next-trace-entrypoints-plugin.js.map +1 -1
- package/dist/esm/build/webpack/plugins/nextjs-require-cache-hot-reloader.js +1 -1
- package/dist/esm/build/webpack/plugins/nextjs-require-cache-hot-reloader.js.map +1 -1
- package/dist/esm/build/webpack/plugins/rspack-flight-client-entry-plugin.js +87 -0
- package/dist/esm/build/webpack/plugins/rspack-flight-client-entry-plugin.js.map +1 -0
- package/dist/esm/build/webpack/plugins/rspack-profiling-plugin.js +40 -0
- package/dist/esm/build/webpack/plugins/rspack-profiling-plugin.js.map +1 -0
- package/dist/esm/build/webpack/plugins/wellknown-errors-plugin/parseNextAppLoaderError.js +2 -1
- package/dist/esm/build/webpack/plugins/wellknown-errors-plugin/parseNextAppLoaderError.js.map +1 -1
- package/dist/esm/build/webpack/utils.js +6 -2
- package/dist/esm/build/webpack/utils.js.map +1 -1
- package/dist/esm/build/webpack-config.js +37 -5
- package/dist/esm/build/webpack-config.js.map +1 -1
- package/dist/esm/client/app-bootstrap.js +1 -1
- package/dist/esm/client/app-dir/link.js +2 -0
- package/dist/esm/client/app-dir/link.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.js +34 -26
- package/dist/esm/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.stories.js +1 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/app/react-dev-overlay.stories.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/font/font-styles.js +25 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/font/font-styles.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/font/geist-latin-ext.woff2 +0 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/font/geist-latin.woff2 +0 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/font/geist-mono-latin-ext.woff2 +0 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/font/geist-mono-latin.woff2 +0 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/font/get-dev-overlay-font-middleware.js +54 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/font/get-dev-overlay-font-middleware.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/code-frame/code-frame.js +16 -8
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/code-frame/code-frame.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/copy-button/index.js +3 -3
- 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/dialog.js +2 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/dialog/dialog.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/dev-tools-indicator/dev-tools-indicator.js +83 -31
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.stories.js +13 -14
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-indicator.stories.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/dev-tools-info.js +52 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/dev-tools-info.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/route-info.js +130 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/route-info.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/turbopack-info.js +184 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/dev-tools-info/turbopack-info.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.js +28 -6
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/dev-tools-indicator/internal/next-logo.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-message/error-message.js +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-message/error-message.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.js +3 -3
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay/error-overlay.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-layout/error-overlay-layout.js +4 -4
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-layout/error-overlay-layout.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.js +2 -2
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.stories.js +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-nav/error-overlay-nav.stories.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.js +9 -9
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.stories.js +4 -4
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/errors/error-overlay-pagination/error-overlay-pagination.stories.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/terminal/terminal.js +15 -10
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/terminal/terminal.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/components/toast/toast.js +3 -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/container/errors.js +7 -7
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/errors.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/errors.stories.js +5 -5
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/errors.stories.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.js +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/component-stack-pseudo-html.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/render-error.js +4 -12
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/container/runtime-error/render-error.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/icons/collapse-icon.js +3 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/icons/collapse-icon.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/icons/stop-icon.js +18 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/icons/stop-icon.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/styles/base.js +2 -2
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/styles/base.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/styles/component-styles.js +7 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/internal/styles/component-styles.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/_experimental/pages/react-dev-overlay.js +6 -2
- package/dist/esm/client/components/react-dev-overlay/_experimental/pages/react-dev-overlay.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/hydration-diff/diff-view.js +1 -1
- package/dist/esm/client/components/react-dev-overlay/hydration-diff/diff-view.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/server/get-next-error-feedback-middleware.js +4 -4
- package/dist/esm/client/components/react-dev-overlay/server/get-next-error-feedback-middleware.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/server/middleware-response.js +30 -0
- package/dist/esm/client/components/react-dev-overlay/server/middleware-response.js.map +1 -0
- package/dist/esm/client/components/react-dev-overlay/server/middleware-turbopack.js +14 -13
- package/dist/esm/client/components/react-dev-overlay/server/middleware-turbopack.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js +13 -12
- package/dist/esm/client/components/react-dev-overlay/server/middleware-webpack.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/server/shared.js +0 -26
- package/dist/esm/client/components/react-dev-overlay/server/shared.js.map +1 -1
- package/dist/esm/client/components/react-dev-overlay/shared.js +2 -0
- package/dist/esm/client/components/react-dev-overlay/shared.js.map +1 -1
- package/dist/esm/client/index.js +2 -3
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/client/link.js.map +1 -1
- package/dist/esm/server/base-server.js +15 -15
- package/dist/esm/server/base-server.js.map +1 -1
- package/dist/esm/server/config-shared.js.map +1 -1
- package/dist/esm/server/config.js +1 -1
- package/dist/esm/server/dev/hot-reloader-turbopack.js +4 -2
- package/dist/esm/server/dev/hot-reloader-turbopack.js.map +1 -1
- package/dist/esm/server/dev/hot-reloader-webpack.js +4 -2
- package/dist/esm/server/dev/hot-reloader-webpack.js.map +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/shared/lib/get-rspack.js +32 -0
- package/dist/esm/shared/lib/get-rspack.js.map +1 -0
- package/dist/server/base-server.js +15 -15
- package/dist/server/base-server.js.map +1 -1
- package/dist/server/config-shared.d.ts +3 -3
- package/dist/server/config-shared.js.map +1 -1
- package/dist/server/config.js +1 -1
- package/dist/server/dev/hot-reloader-turbopack.js +4 -2
- package/dist/server/dev/hot-reloader-turbopack.js.map +1 -1
- package/dist/server/dev/hot-reloader-webpack.js +4 -2
- package/dist/server/dev/hot-reloader-webpack.js.map +1 -1
- package/dist/server/lib/app-info-log.js +1 -1
- package/dist/server/lib/start-server.js +1 -1
- package/dist/shared/lib/get-rspack.d.ts +2 -0
- package/dist/shared/lib/get-rspack.js +54 -0
- package/dist/shared/lib/get-rspack.js.map +1 -0
- 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/dist/trace/trace-uploader.js +1 -2
- package/dist/trace/trace-uploader.js.map +1 -1
- package/package.json +15 -15
- package/dist/client/components/react-dev-overlay/internal/icons/CollapseIcon.d.ts +0 -3
- package/dist/client/components/react-dev-overlay/internal/icons/CollapseIcon.js +0 -43
- package/dist/client/components/react-dev-overlay/internal/icons/CollapseIcon.js.map +0 -1
- package/dist/esm/client/components/react-dev-overlay/internal/icons/CollapseIcon.js +0 -27
- package/dist/esm/client/components/react-dev-overlay/internal/icons/CollapseIcon.js.map +0 -1
package/dist/esm/client/components/react-dev-overlay/_experimental/pages/react-dev-overlay.js
CHANGED
@@ -11,6 +11,7 @@ import { Colors } from '../internal/styles/colors';
|
|
11
11
|
import { ErrorOverlay } from '../internal/components/errors/error-overlay/error-overlay';
|
12
12
|
import { DevToolsIndicator } from '../internal/components/errors/dev-tools-indicator/dev-tools-indicator';
|
13
13
|
import { RenderError } from '../internal/container/runtime-error/render-error';
|
14
|
+
import { FontStyles } from '../font/font-styles';
|
14
15
|
export default function ReactDevOverlay(param) {
|
15
16
|
let { children } = param;
|
16
17
|
const { state, onComponentError, hasRuntimeErrors, hasBuildError } = usePagesReactDevOverlay();
|
@@ -21,6 +22,7 @@ export default function ReactDevOverlay(param) {
|
|
21
22
|
onError: onComponentError,
|
22
23
|
children: children != null ? children : null
|
23
24
|
}),
|
25
|
+
/*#__PURE__*/ _jsx(FontStyles, {}),
|
24
26
|
/*#__PURE__*/ _jsxs(ShadowPortal, {
|
25
27
|
children: [
|
26
28
|
/*#__PURE__*/ _jsx(CssReset, {}),
|
@@ -31,17 +33,19 @@ export default function ReactDevOverlay(param) {
|
|
31
33
|
state: state,
|
32
34
|
isAppDir: false,
|
33
35
|
children: (param)=>{
|
34
|
-
let {
|
36
|
+
let { runtimeErrors, totalErrorCount } = param;
|
37
|
+
const isBuildError = runtimeErrors.length === 0;
|
35
38
|
return /*#__PURE__*/ _jsxs(_Fragment, {
|
36
39
|
children: [
|
37
40
|
/*#__PURE__*/ _jsx(DevToolsIndicator, {
|
38
41
|
state: state,
|
39
42
|
errorCount: totalErrorCount,
|
43
|
+
isBuildError: isBuildError,
|
40
44
|
setIsErrorOverlayOpen: setIsErrorOverlayOpen
|
41
45
|
}),
|
42
46
|
(hasRuntimeErrors || hasBuildError) && /*#__PURE__*/ _jsx(ErrorOverlay, {
|
43
47
|
state: state,
|
44
|
-
|
48
|
+
runtimeErrors: runtimeErrors,
|
45
49
|
isErrorOverlayOpen: isErrorOverlayOpen,
|
46
50
|
setIsErrorOverlayOpen: setIsErrorOverlayOpen
|
47
51
|
})
|
package/dist/esm/client/components/react-dev-overlay/_experimental/pages/react-dev-overlay.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/client/components/react-dev-overlay/_experimental/pages/react-dev-overlay.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { useState } from 'react'\nimport { ShadowPortal } from '../internal/components/shadow-portal'\nimport { Base } from '../internal/styles/base'\nimport { ComponentStyles } from '../internal/styles/component-styles'\nimport { CssReset } from '../internal/styles/css-reset'\n\nimport { DevOverlayErrorBoundary } from './error-boundary'\nimport { usePagesReactDevOverlay } from '../../pages/hooks'\nimport { Colors } from '../internal/styles/colors'\nimport { ErrorOverlay } from '../internal/components/errors/error-overlay/error-overlay'\nimport { DevToolsIndicator } from '../internal/components/errors/dev-tools-indicator/dev-tools-indicator'\nimport { RenderError } from '../internal/container/runtime-error/render-error'\n\nexport type ErrorType = 'runtime' | 'build'\n\ninterface ReactDevOverlayProps {\n children?: React.ReactNode\n}\n\nexport default function ReactDevOverlay({ children }: ReactDevOverlayProps) {\n const { state, onComponentError, hasRuntimeErrors, hasBuildError } =\n usePagesReactDevOverlay()\n\n const [isErrorOverlayOpen, setIsErrorOverlayOpen] = useState(true)\n\n return (\n <>\n <DevOverlayErrorBoundary onError={onComponentError}>\n {children ?? null}\n </DevOverlayErrorBoundary>\n\n <ShadowPortal>\n <CssReset />\n <Base />\n <Colors />\n <ComponentStyles />\n\n <RenderError state={state} isAppDir={false}>\n {({
|
1
|
+
{"version":3,"sources":["../../../../../../src/client/components/react-dev-overlay/_experimental/pages/react-dev-overlay.tsx"],"sourcesContent":["import * as React from 'react'\n\nimport { useState } from 'react'\nimport { ShadowPortal } from '../internal/components/shadow-portal'\nimport { Base } from '../internal/styles/base'\nimport { ComponentStyles } from '../internal/styles/component-styles'\nimport { CssReset } from '../internal/styles/css-reset'\n\nimport { DevOverlayErrorBoundary } from './error-boundary'\nimport { usePagesReactDevOverlay } from '../../pages/hooks'\nimport { Colors } from '../internal/styles/colors'\nimport { ErrorOverlay } from '../internal/components/errors/error-overlay/error-overlay'\nimport { DevToolsIndicator } from '../internal/components/errors/dev-tools-indicator/dev-tools-indicator'\nimport { RenderError } from '../internal/container/runtime-error/render-error'\nimport { FontStyles } from '../font/font-styles'\n\nexport type ErrorType = 'runtime' | 'build'\n\ninterface ReactDevOverlayProps {\n children?: React.ReactNode\n}\n\nexport default function ReactDevOverlay({ children }: ReactDevOverlayProps) {\n const { state, onComponentError, hasRuntimeErrors, hasBuildError } =\n usePagesReactDevOverlay()\n\n const [isErrorOverlayOpen, setIsErrorOverlayOpen] = useState(true)\n\n return (\n <>\n <DevOverlayErrorBoundary onError={onComponentError}>\n {children ?? null}\n </DevOverlayErrorBoundary>\n\n {/* Fonts can only be loaded outside the Shadow DOM. */}\n <FontStyles />\n <ShadowPortal>\n <CssReset />\n <Base />\n <Colors />\n <ComponentStyles />\n\n <RenderError state={state} isAppDir={false}>\n {({ runtimeErrors, totalErrorCount }) => {\n const isBuildError = runtimeErrors.length === 0\n return (\n <>\n <DevToolsIndicator\n state={state}\n errorCount={totalErrorCount}\n isBuildError={isBuildError}\n setIsErrorOverlayOpen={setIsErrorOverlayOpen}\n />\n\n {(hasRuntimeErrors || hasBuildError) && (\n <ErrorOverlay\n state={state}\n runtimeErrors={runtimeErrors}\n isErrorOverlayOpen={isErrorOverlayOpen}\n setIsErrorOverlayOpen={setIsErrorOverlayOpen}\n />\n )}\n </>\n )\n }}\n </RenderError>\n </ShadowPortal>\n </>\n )\n}\n"],"names":["React","useState","ShadowPortal","Base","ComponentStyles","CssReset","DevOverlayErrorBoundary","usePagesReactDevOverlay","Colors","ErrorOverlay","DevToolsIndicator","RenderError","FontStyles","ReactDevOverlay","children","state","onComponentError","hasRuntimeErrors","hasBuildError","isErrorOverlayOpen","setIsErrorOverlayOpen","onError","isAppDir","runtimeErrors","totalErrorCount","isBuildError","length","errorCount"],"mappings":";AAAA,YAAYA,WAAW,QAAO;AAE9B,SAASC,QAAQ,QAAQ,QAAO;AAChC,SAASC,YAAY,QAAQ,uCAAsC;AACnE,SAASC,IAAI,QAAQ,0BAAyB;AAC9C,SAASC,eAAe,QAAQ,sCAAqC;AACrE,SAASC,QAAQ,QAAQ,+BAA8B;AAEvD,SAASC,uBAAuB,QAAQ,mBAAkB;AAC1D,SAASC,uBAAuB,QAAQ,oBAAmB;AAC3D,SAASC,MAAM,QAAQ,4BAA2B;AAClD,SAASC,YAAY,QAAQ,4DAA2D;AACxF,SAASC,iBAAiB,QAAQ,wEAAuE;AACzG,SAASC,WAAW,QAAQ,mDAAkD;AAC9E,SAASC,UAAU,QAAQ,sBAAqB;AAQhD,eAAe,SAASC,gBAAgB,KAAkC;IAAlC,IAAA,EAAEC,QAAQ,EAAwB,GAAlC;IACtC,MAAM,EAAEC,KAAK,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,aAAa,EAAE,GAChEX;IAEF,MAAM,CAACY,oBAAoBC,sBAAsB,GAAGnB,SAAS;IAE7D,qBACE;;0BACE,KAACK;gBAAwBe,SAASL;0BAC/BF,mBAAAA,WAAY;;0BAIf,KAACF;0BACD,MAACV;;kCACC,KAACG;kCACD,KAACF;kCACD,KAACK;kCACD,KAACJ;kCAED,KAACO;wBAAYI,OAAOA;wBAAOO,UAAU;kCAClC;gCAAC,EAAEC,aAAa,EAAEC,eAAe,EAAE;4BAClC,MAAMC,eAAeF,cAAcG,MAAM,KAAK;4BAC9C,qBACE;;kDACE,KAAChB;wCACCK,OAAOA;wCACPY,YAAYH;wCACZC,cAAcA;wCACdL,uBAAuBA;;oCAGvBH,CAAAA,oBAAoBC,aAAY,mBAChC,KAACT;wCACCM,OAAOA;wCACPQ,eAAeA;wCACfJ,oBAAoBA;wCACpBC,uBAAuBA;;;;wBAKjC;;;;;;AAKV"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
2
|
import { useMemo, useState } from 'react';
|
3
|
-
import { CollapseIcon } from '../internal/icons/
|
3
|
+
import { CollapseIcon } from '../_experimental/internal/icons/collapse-icon';
|
4
4
|
/**
|
5
5
|
*
|
6
6
|
* Format component stack into pseudo HTML
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/client/components/react-dev-overlay/hydration-diff/diff-view.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { CollapseIcon } from '../internal/icons/
|
1
|
+
{"version":3,"sources":["../../../../../src/client/components/react-dev-overlay/hydration-diff/diff-view.tsx"],"sourcesContent":["import { useMemo, useState } from 'react'\nimport { CollapseIcon } from '../_experimental/internal/icons/collapse-icon'\n/**\n *\n * Format component stack into pseudo HTML\n * component stack is an array of strings, e.g.: ['p', 'p', 'Page', ...]\n *\n * For html tags mismatch, it will render it for the code block\n *\n * ```\n * <pre>\n * <code>{`\n * <Page>\n * <p red>\n * <p red>\n * `}</code>\n * </pre>\n * ```\n *\n * For text mismatch, it will render it for the code block\n *\n * ```\n * <pre>\n * <code>{`\n * <Page>\n * <p>\n * \"Server Text\" (green)\n * \"Client Text\" (red)\n * </p>\n * </Page>\n * `}</code>\n * ```\n *\n * For bad text under a tag it will render it for the code block,\n * e.g. \"Mismatched Text\" under <p>\n *\n * ```\n * <pre>\n * <code>{`\n * <Page>\n * <div>\n * <p>\n * \"Mismatched Text\" (red)\n * </p>\n * </div>\n * </Page>\n * `}</code>\n * ```\n *\n */\nexport function PseudoHtmlDiff({\n firstContent,\n secondContent,\n hydrationMismatchType,\n reactOutputComponentDiff,\n ...props\n}: {\n firstContent: string\n secondContent: string\n reactOutputComponentDiff: string\n hydrationMismatchType: 'tag' | 'text' | 'text-in-tag'\n} & React.HTMLAttributes<HTMLPreElement>) {\n const [isDiffCollapsed, toggleCollapseHtml] = useState(true)\n\n const htmlComponents = useMemo(() => {\n const componentStacks: React.ReactNode[] = []\n const reactComponentDiffLines = reactOutputComponentDiff!.split('\\n')\n reactComponentDiffLines.forEach((line, index) => {\n const isDiffLine = line[0] === '+' || line[0] === '-'\n const isHighlightedLine = line[0] === '>'\n const hasSign = isDiffLine || isHighlightedLine\n const sign = hasSign ? line[0] : ''\n const signIndex = hasSign ? line.indexOf(sign) : -1\n const [prefix, suffix] = hasSign\n ? [line.slice(0, signIndex), line.slice(signIndex + 1)]\n : [line, '']\n\n if (isDiffLine) {\n componentStacks.push(\n <span\n key={'comp-diff' + index}\n data-nextjs-container-errors-pseudo-html-line\n data-nextjs-container-errors-pseudo-html--diff={\n sign === '+' ? 'add' : 'remove'\n }\n >\n <span>\n {/* Slice 2 spaces for the icon */}\n {prefix}\n <span data-nextjs-container-errors-pseudo-html-line-sign>\n {sign}\n </span>\n {suffix}\n {'\\n'}\n </span>\n </span>\n )\n } else {\n // In general, if it's not collapsed, show the whole diff\n componentStacks.push(\n <span\n data-nextjs-container-errors-pseudo-html-line\n key={'comp-diff' + index}\n {...(isHighlightedLine\n ? {\n 'data-nextjs-container-errors-pseudo-html--diff': 'error',\n }\n : undefined)}\n >\n {prefix}\n <span data-nextjs-container-errors-pseudo-html-line-sign>\n {sign}\n </span>\n {suffix}\n {'\\n'}\n </span>\n )\n }\n })\n return componentStacks\n }, [reactOutputComponentDiff])\n\n return (\n <div\n data-nextjs-container-errors-pseudo-html\n data-nextjs-container-errors-pseudo-html-collapse={isDiffCollapsed}\n >\n <button\n tabIndex={10} // match CallStackFrame\n data-nextjs-container-errors-pseudo-html-collapse-button\n onClick={() => toggleCollapseHtml(!isDiffCollapsed)}\n >\n <CollapseIcon collapsed={isDiffCollapsed} />\n </button>\n <pre {...props}>\n <code>{htmlComponents}</code>\n </pre>\n </div>\n )\n}\n"],"names":["useMemo","useState","CollapseIcon","PseudoHtmlDiff","firstContent","secondContent","hydrationMismatchType","reactOutputComponentDiff","props","isDiffCollapsed","toggleCollapseHtml","htmlComponents","componentStacks","reactComponentDiffLines","split","forEach","line","index","isDiffLine","isHighlightedLine","hasSign","sign","signIndex","indexOf","prefix","suffix","slice","push","span","data-nextjs-container-errors-pseudo-html-line","data-nextjs-container-errors-pseudo-html--diff","data-nextjs-container-errors-pseudo-html-line-sign","undefined","div","data-nextjs-container-errors-pseudo-html","data-nextjs-container-errors-pseudo-html-collapse","button","tabIndex","data-nextjs-container-errors-pseudo-html-collapse-button","onClick","collapsed","pre","code"],"mappings":";AAAA,SAASA,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AACzC,SAASC,YAAY,QAAQ,gDAA+C;AAC5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CC,GACD,OAAO,SAASC,eAAe,KAWS;IAXT,IAAA,EAC7BC,YAAY,EACZC,aAAa,EACbC,qBAAqB,EACrBC,wBAAwB,EACxB,GAAGC,OAMmC,GAXT;IAY7B,MAAM,CAACC,iBAAiBC,mBAAmB,GAAGT,SAAS;IAEvD,MAAMU,iBAAiBX,QAAQ;QAC7B,MAAMY,kBAAqC,EAAE;QAC7C,MAAMC,0BAA0BN,yBAA0BO,KAAK,CAAC;QAChED,wBAAwBE,OAAO,CAAC,CAACC,MAAMC;YACrC,MAAMC,aAAaF,IAAI,CAAC,EAAE,KAAK,OAAOA,IAAI,CAAC,EAAE,KAAK;YAClD,MAAMG,oBAAoBH,IAAI,CAAC,EAAE,KAAK;YACtC,MAAMI,UAAUF,cAAcC;YAC9B,MAAME,OAAOD,UAAUJ,IAAI,CAAC,EAAE,GAAG;YACjC,MAAMM,YAAYF,UAAUJ,KAAKO,OAAO,CAACF,QAAQ,CAAC;YAClD,MAAM,CAACG,QAAQC,OAAO,GAAGL,UACrB;gBAACJ,KAAKU,KAAK,CAAC,GAAGJ;gBAAYN,KAAKU,KAAK,CAACJ,YAAY;aAAG,GACrD;gBAACN;gBAAM;aAAG;YAEd,IAAIE,YAAY;gBACdN,gBAAgBe,IAAI,eAClB,KAACC;oBAECC,+CAA6C;oBAC7CC,kDACET,SAAS,MAAM,QAAQ;8BAGzB,cAAA,MAACO;;4BAEEJ;0CACD,KAACI;gCAAKG,oDAAkD;0CACrDV;;4BAEFI;4BACA;;;mBAbE,cAAcR;YAiBzB,OAAO;gBACL,yDAAyD;gBACzDL,gBAAgBe,IAAI,eAClB,MAACC;oBACCC,+CAA6C;oBAE5C,GAAIV,oBACD;wBACE,kDAAkD;oBACpD,IACAa,SAAS;;wBAEZR;sCACD,KAACI;4BAAKG,oDAAkD;sCACrDV;;wBAEFI;wBACA;;mBAZI,cAAcR;YAezB;QACF;QACA,OAAOL;IACT,GAAG;QAACL;KAAyB;IAE7B,qBACE,MAAC0B;QACCC,0CAAwC;QACxCC,qDAAmD1B;;0BAEnD,KAAC2B;gBACCC,UAAU;gBACVC,0DAAwD;gBACxDC,SAAS,IAAM7B,mBAAmB,CAACD;0BAEnC,cAAA,KAACP;oBAAasC,WAAW/B;;;0BAE3B,KAACgC;gBAAK,GAAGjC,KAAK;0BACZ,cAAA,KAACkC;8BAAM/B;;;;;AAIf"}
|
package/dist/esm/client/components/react-dev-overlay/server/get-next-error-feedback-middleware.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import { eventErrorFeedback } from '../../../../telemetry/events/error-feedback';
|
2
|
-
import {
|
2
|
+
import { middlewareResponse } from './middleware-response';
|
3
3
|
// Handles HTTP requests to /__nextjs_error_feedback endpoint for collecting user feedback on error messages
|
4
4
|
export function getNextErrorFeedbackMiddleware(telemetry) {
|
5
5
|
return async function(req, res, next) {
|
@@ -11,15 +11,15 @@ export function getNextErrorFeedbackMiddleware(telemetry) {
|
|
11
11
|
const errorCode = searchParams.get('errorCode');
|
12
12
|
const wasHelpful = searchParams.get('wasHelpful');
|
13
13
|
if (!errorCode || !wasHelpful) {
|
14
|
-
return badRequest(res);
|
14
|
+
return middlewareResponse.badRequest(res);
|
15
15
|
}
|
16
16
|
await telemetry.record(eventErrorFeedback({
|
17
17
|
errorCode,
|
18
18
|
wasHelpful: wasHelpful === 'true'
|
19
19
|
}));
|
20
|
-
return noContent(res);
|
20
|
+
return middlewareResponse.noContent(res);
|
21
21
|
} catch (error) {
|
22
|
-
return internalServerError(res);
|
22
|
+
return middlewareResponse.internalServerError(res);
|
23
23
|
}
|
24
24
|
};
|
25
25
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/client/components/react-dev-overlay/server/get-next-error-feedback-middleware.ts"],"sourcesContent":["import { eventErrorFeedback } from '../../../../telemetry/events/error-feedback'\nimport {
|
1
|
+
{"version":3,"sources":["../../../../../src/client/components/react-dev-overlay/server/get-next-error-feedback-middleware.ts"],"sourcesContent":["import { eventErrorFeedback } from '../../../../telemetry/events/error-feedback'\nimport { middlewareResponse } from './middleware-response'\nimport type { ServerResponse, IncomingMessage } from 'http'\nimport type { Telemetry } from '../../../../telemetry/storage'\n\n// Handles HTTP requests to /__nextjs_error_feedback endpoint for collecting user feedback on error messages\nexport function getNextErrorFeedbackMiddleware(telemetry: Telemetry) {\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(`http://n${req.url}`)\n\n if (pathname !== '/__nextjs_error_feedback') {\n return next()\n }\n\n try {\n const errorCode = searchParams.get('errorCode')\n const wasHelpful = searchParams.get('wasHelpful')\n\n if (!errorCode || !wasHelpful) {\n return middlewareResponse.badRequest(res)\n }\n\n await telemetry.record(\n eventErrorFeedback({\n errorCode,\n wasHelpful: wasHelpful === 'true',\n })\n )\n\n return middlewareResponse.noContent(res)\n } catch (error) {\n return middlewareResponse.internalServerError(res)\n }\n }\n}\n"],"names":["eventErrorFeedback","middlewareResponse","getNextErrorFeedbackMiddleware","telemetry","req","res","next","pathname","searchParams","URL","url","errorCode","get","wasHelpful","badRequest","record","noContent","error","internalServerError"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,8CAA6C;AAChF,SAASC,kBAAkB,QAAQ,wBAAuB;AAI1D,4GAA4G;AAC5G,OAAO,SAASC,+BAA+BC,SAAoB;IACjE,OAAO,eACLC,GAAoB,EACpBC,GAAmB,EACnBC,IAAgB;QAEhB,MAAM,EAAEC,QAAQ,EAAEC,YAAY,EAAE,GAAG,IAAIC,IAAI,AAAC,aAAUL,IAAIM,GAAG;QAE7D,IAAIH,aAAa,4BAA4B;YAC3C,OAAOD;QACT;QAEA,IAAI;YACF,MAAMK,YAAYH,aAAaI,GAAG,CAAC;YACnC,MAAMC,aAAaL,aAAaI,GAAG,CAAC;YAEpC,IAAI,CAACD,aAAa,CAACE,YAAY;gBAC7B,OAAOZ,mBAAmBa,UAAU,CAACT;YACvC;YAEA,MAAMF,UAAUY,MAAM,CACpBf,mBAAmB;gBACjBW;gBACAE,YAAYA,eAAe;YAC7B;YAGF,OAAOZ,mBAAmBe,SAAS,CAACX;QACtC,EAAE,OAAOY,OAAO;YACd,OAAOhB,mBAAmBiB,mBAAmB,CAACb;QAChD;IACF;AACF"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
import { inspect } from 'util';
|
2
|
+
export const middlewareResponse = {
|
3
|
+
noContent (res) {
|
4
|
+
res.statusCode = 204;
|
5
|
+
res.end('No Content');
|
6
|
+
},
|
7
|
+
notFound (res) {
|
8
|
+
res.statusCode = 404;
|
9
|
+
res.end('Not Found');
|
10
|
+
},
|
11
|
+
badRequest (res) {
|
12
|
+
res.statusCode = 400;
|
13
|
+
res.end('Bad Request');
|
14
|
+
},
|
15
|
+
internalServerError (res, error) {
|
16
|
+
res.statusCode = 500;
|
17
|
+
res.setHeader('Content-Type', 'text/plain');
|
18
|
+
res.end(error !== undefined ? inspect(error, {
|
19
|
+
colors: false
|
20
|
+
}) : 'Internal Server Error');
|
21
|
+
},
|
22
|
+
json (res, data) {
|
23
|
+
res.setHeader('Content-Type', 'application/json').end(Buffer.from(JSON.stringify(data)));
|
24
|
+
},
|
25
|
+
jsonString (res, data) {
|
26
|
+
res.setHeader('Content-Type', 'application/json').end(Buffer.from(data));
|
27
|
+
}
|
28
|
+
};
|
29
|
+
|
30
|
+
//# sourceMappingURL=middleware-response.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../../../src/client/components/react-dev-overlay/server/middleware-response.ts"],"sourcesContent":["import type { ServerResponse } from 'http'\nimport { inspect } from 'util'\n\nexport const middlewareResponse = {\n noContent(res: ServerResponse) {\n res.statusCode = 204\n res.end('No Content')\n },\n notFound(res: ServerResponse) {\n res.statusCode = 404\n res.end('Not Found')\n },\n badRequest(res: ServerResponse) {\n res.statusCode = 400\n res.end('Bad Request')\n },\n internalServerError(res: ServerResponse, error?: unknown) {\n res.statusCode = 500\n res.setHeader('Content-Type', 'text/plain')\n res.end(\n error !== undefined\n ? inspect(error, { colors: false })\n : 'Internal Server Error'\n )\n },\n json(res: ServerResponse, data: any) {\n res\n .setHeader('Content-Type', 'application/json')\n .end(Buffer.from(JSON.stringify(data)))\n },\n jsonString(res: ServerResponse, data: string) {\n res.setHeader('Content-Type', 'application/json').end(Buffer.from(data))\n },\n}\n"],"names":["inspect","middlewareResponse","noContent","res","statusCode","end","notFound","badRequest","internalServerError","error","setHeader","undefined","colors","json","data","Buffer","from","JSON","stringify","jsonString"],"mappings":"AACA,SAASA,OAAO,QAAQ,OAAM;AAE9B,OAAO,MAAMC,qBAAqB;IAChCC,WAAUC,GAAmB;QAC3BA,IAAIC,UAAU,GAAG;QACjBD,IAAIE,GAAG,CAAC;IACV;IACAC,UAASH,GAAmB;QAC1BA,IAAIC,UAAU,GAAG;QACjBD,IAAIE,GAAG,CAAC;IACV;IACAE,YAAWJ,GAAmB;QAC5BA,IAAIC,UAAU,GAAG;QACjBD,IAAIE,GAAG,CAAC;IACV;IACAG,qBAAoBL,GAAmB,EAAEM,KAAe;QACtDN,IAAIC,UAAU,GAAG;QACjBD,IAAIO,SAAS,CAAC,gBAAgB;QAC9BP,IAAIE,GAAG,CACLI,UAAUE,YACNX,QAAQS,OAAO;YAAEG,QAAQ;QAAM,KAC/B;IAER;IACAC,MAAKV,GAAmB,EAAEW,IAAS;QACjCX,IACGO,SAAS,CAAC,gBAAgB,oBAC1BL,GAAG,CAACU,OAAOC,IAAI,CAACC,KAAKC,SAAS,CAACJ;IACpC;IACAK,YAAWhB,GAAmB,EAAEW,IAAY;QAC1CX,IAAIO,SAAS,CAAC,gBAAgB,oBAAoBL,GAAG,CAACU,OAAOC,IAAI,CAACF;IACpE;AACF,EAAC"}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
import {
|
1
|
+
import { getOriginalCodeFrame } from './shared';
|
2
|
+
import { middlewareResponse } from './middleware-response';
|
2
3
|
import fs, { constants as FS } from 'fs/promises';
|
3
4
|
import path from 'path';
|
4
5
|
import url from 'url';
|
@@ -257,7 +258,7 @@ export function getOverlayMiddleware(project) {
|
|
257
258
|
const { pathname, searchParams } = new URL(req.url, 'http://n');
|
258
259
|
if (pathname === '/__nextjs_original-stack-frames') {
|
259
260
|
if (req.method !== 'POST') {
|
260
|
-
return badRequest(res);
|
261
|
+
return middlewareResponse.badRequest(res);
|
261
262
|
}
|
262
263
|
const body = await new Promise((resolve, reject)=>{
|
263
264
|
let data = '';
|
@@ -291,20 +292,20 @@ export function getOverlayMiddleware(project) {
|
|
291
292
|
};
|
292
293
|
}
|
293
294
|
}));
|
294
|
-
return json(res, result);
|
295
|
+
return middlewareResponse.json(res, result);
|
295
296
|
} else if (pathname === '/__nextjs_launch-editor') {
|
296
297
|
const frame = createStackFrame(searchParams);
|
297
|
-
if (!frame) return badRequest(res);
|
298
|
+
if (!frame) return middlewareResponse.badRequest(res);
|
298
299
|
const fileExists = await fs.access(frame.file, FS.F_OK).then(()=>true, ()=>false);
|
299
|
-
if (!fileExists) return notFound(res);
|
300
|
+
if (!fileExists) return middlewareResponse.notFound(res);
|
300
301
|
try {
|
301
302
|
var _frame_line, _frame_column;
|
302
303
|
launchEditor(frame.file, (_frame_line = frame.line) != null ? _frame_line : 1, (_frame_column = frame.column) != null ? _frame_column : 1);
|
303
304
|
} catch (err) {
|
304
305
|
console.log('Failed to launch editor:', err);
|
305
|
-
return internalServerError(res);
|
306
|
+
return middlewareResponse.internalServerError(res);
|
306
307
|
}
|
307
|
-
return noContent(res);
|
308
|
+
return middlewareResponse.noContent(res);
|
308
309
|
}
|
309
310
|
return next();
|
310
311
|
};
|
@@ -317,16 +318,16 @@ export function getSourceMapMiddleware(project) {
|
|
317
318
|
}
|
318
319
|
let filename = searchParams.get('filename');
|
319
320
|
if (!filename) {
|
320
|
-
return badRequest(res);
|
321
|
+
return middlewareResponse.badRequest(res);
|
321
322
|
}
|
322
323
|
// TODO(veil): Always try the native version first.
|
323
324
|
// Externals could also be files that aren't bundled via Webpack.
|
324
325
|
if (filename.startsWith('webpack://') || filename.startsWith('webpack-internal:///')) {
|
325
326
|
const sourceMap = findSourceMap(filename);
|
326
327
|
if (sourceMap) {
|
327
|
-
return json(res, sourceMap.payload);
|
328
|
+
return middlewareResponse.json(res, sourceMap.payload);
|
328
329
|
}
|
329
|
-
return noContent(res);
|
330
|
+
return middlewareResponse.noContent(res);
|
330
331
|
}
|
331
332
|
try {
|
332
333
|
// Turbopack chunk filenames might be URL-encoded.
|
@@ -336,18 +337,18 @@ export function getSourceMapMiddleware(project) {
|
|
336
337
|
}
|
337
338
|
const sourceMapString = await project.getSourceMap(filename);
|
338
339
|
if (sourceMapString) {
|
339
|
-
return jsonString(res, sourceMapString);
|
340
|
+
return middlewareResponse.jsonString(res, sourceMapString);
|
340
341
|
}
|
341
342
|
if (filename.startsWith('file:')) {
|
342
343
|
const sourceMap = await getSourceMapFromFile(filename);
|
343
344
|
if (sourceMap) {
|
344
|
-
return json(res, sourceMap);
|
345
|
+
return middlewareResponse.json(res, sourceMap);
|
345
346
|
}
|
346
347
|
}
|
347
348
|
} catch (error) {
|
348
349
|
console.error('Failed to get source map:', error);
|
349
350
|
}
|
350
|
-
noContent(res);
|
351
|
+
middlewareResponse.noContent(res);
|
351
352
|
};
|
352
353
|
}
|
353
354
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../../src/client/components/react-dev-overlay/server/middleware-turbopack.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'http'\nimport {\n badRequest,\n getOriginalCodeFrame,\n internalServerError,\n json,\n jsonString,\n noContent,\n notFound,\n type OriginalStackFrameResponse,\n type OriginalStackFramesRequest,\n type OriginalStackFramesResponse,\n} from './shared'\n\nimport fs, { constants as FS } from 'fs/promises'\nimport path from 'path'\nimport url from 'url'\nimport { launchEditor } from '../internal/helpers/launchEditor'\nimport type { StackFrame } from 'next/dist/compiled/stacktrace-parser'\nimport {\n SourceMapConsumer,\n type BasicSourceMapConsumer,\n type NullableMappedPosition,\n} from 'next/dist/compiled/source-map08'\nimport type { Project, TurbopackStackFrame } from '../../../../build/swc/types'\nimport { getSourceMapFromFile } from '../internal/helpers/get-source-map-from-file'\nimport { findSourceMap, type SourceMapPayload } from 'node:module'\nimport { pathToFileURL } from 'node:url'\nimport { inspect } from 'node:util'\n\nfunction shouldIgnorePath(modulePath: string): boolean {\n return (\n modulePath.includes('node_modules') ||\n // Only relevant for when Next.js is symlinked e.g. in the Next.js monorepo\n modulePath.includes('next/dist') ||\n modulePath.startsWith('node:')\n )\n}\n\ntype IgnorableStackFrame = StackFrame & { ignored: boolean }\n\nconst currentSourcesByFile: Map<string, Promise<string | null>> = new Map()\nexport async function batchedTraceSource(\n project: Project,\n frame: TurbopackStackFrame\n): Promise<{ frame: IgnorableStackFrame; source: string | null } | undefined> {\n const file = frame.file\n ? // TODO(veil): Why are the frames sent encoded?\n decodeURIComponent(frame.file)\n : undefined\n\n if (!file) return\n\n // For node internals they cannot traced the actual source code with project.traceSource,\n // we need an early return to indicate it's ignored to avoid the unknown scheme error from `project.traceSource`.\n if (file.startsWith('node:')) {\n return {\n frame: {\n file,\n lineNumber: frame.line ?? 0,\n column: frame.column ?? 0,\n methodName: frame.methodName ?? '<unknown>',\n ignored: true,\n arguments: [],\n },\n source: null,\n }\n }\n\n const currentDirectoryFileUrl = pathToFileURL(process.cwd()).href\n\n const sourceFrame = await project.traceSource(frame, currentDirectoryFileUrl)\n if (!sourceFrame) {\n return {\n frame: {\n file,\n lineNumber: frame.line ?? 0,\n column: frame.column ?? 0,\n methodName: frame.methodName ?? '<unknown>',\n ignored: shouldIgnorePath(file),\n arguments: [],\n },\n source: null,\n }\n }\n\n let source = null\n const originalFile = sourceFrame.originalFile\n\n // Don't look up source for node_modules or internals. These can often be large bundled files.\n const ignored =\n shouldIgnorePath(originalFile ?? sourceFrame.file) ||\n // isInternal means resource starts with turbopack:///[turbopack]\n !!sourceFrame.isInternal\n if (originalFile && !ignored) {\n let sourcePromise = currentSourcesByFile.get(originalFile)\n if (!sourcePromise) {\n sourcePromise = project.getSourceForAsset(originalFile)\n currentSourcesByFile.set(originalFile, sourcePromise)\n setTimeout(() => {\n // Cache file reads for 100ms, as frames will often reference the same\n // files and can be large.\n currentSourcesByFile.delete(originalFile!)\n }, 100)\n }\n source = await sourcePromise\n }\n\n // TODO: get ignoredList from turbopack source map\n const ignorableFrame = {\n file: sourceFrame.file,\n lineNumber: sourceFrame.line ?? 0,\n column: sourceFrame.column ?? 0,\n methodName:\n // We ignore the sourcemapped name since it won't be the correct name.\n // The callsite will point to the column of the variable name instead of the\n // name of the enclosing function.\n // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n frame.methodName ?? '<unknown>',\n ignored,\n arguments: [],\n }\n\n return {\n frame: ignorableFrame,\n source,\n }\n}\nfunction parseFile(fileParam: string | null): string | undefined {\n if (!fileParam) {\n return undefined\n }\n\n // rsc://React/Server/file://<filename>?42 => file://<filename>\n return fileParam.replace(/^rsc:\\/\\/React\\/[^/]+\\//, '').replace(/\\?\\d+$/, '')\n}\n\nfunction createStackFrames(\n body: OriginalStackFramesRequest\n): TurbopackStackFrame[] {\n const { frames, isServer } = body\n\n return frames\n .map((frame): TurbopackStackFrame | undefined => {\n const file = parseFile(frame.file)\n\n if (!file) {\n return undefined\n }\n\n return {\n file,\n methodName: frame.methodName ?? '<unknown>',\n line: frame.lineNumber ?? 0,\n column: frame.column ?? 0,\n isServer,\n } satisfies TurbopackStackFrame\n })\n .filter((f): f is TurbopackStackFrame => f !== undefined)\n}\n\nfunction createStackFrame(\n searchParams: URLSearchParams\n): TurbopackStackFrame | undefined {\n const file = parseFile(searchParams.get('file'))\n\n if (!file) {\n return undefined\n }\n\n return {\n file,\n methodName: searchParams.get('methodName') ?? '<unknown>',\n line: parseInt(searchParams.get('lineNumber') ?? '0', 10) || 0,\n column: parseInt(searchParams.get('column') ?? '0', 10) || 0,\n isServer: searchParams.get('isServer') === 'true',\n } satisfies TurbopackStackFrame\n}\n\n/**\n * https://tc39.es/source-map/#index-map\n */\ninterface IndexSourceMapSection {\n offset: {\n line: number\n column: number\n }\n map: ModernRawSourceMap\n}\n\n// TODO(veil): Upstream types\ninterface IndexSourceMap {\n version: number\n file: string\n sections: IndexSourceMapSection[]\n}\n\ninterface ModernRawSourceMap extends SourceMapPayload {\n ignoreList?: number[]\n}\n\ntype ModernSourceMapPayload = ModernRawSourceMap | IndexSourceMap\n\n/**\n * Finds the sourcemap payload applicable to a given frame.\n * Equal to the input unless an Index Source Map is used.\n */\nfunction findApplicableSourceMapPayload(\n frame: TurbopackStackFrame,\n payload: ModernSourceMapPayload\n): ModernRawSourceMap | undefined {\n if ('sections' in payload) {\n const frameLine = frame.line ?? 0\n const frameColumn = frame.column ?? 0\n // Sections must not overlap and must be sorted: https://tc39.es/source-map/#section-object\n // Therefore the last section that has an offset less than or equal to the frame is the applicable one.\n // TODO(veil): Binary search\n let section: IndexSourceMapSection | undefined = payload.sections[0]\n for (\n let i = 0;\n i < payload.sections.length &&\n payload.sections[i].offset.line <= frameLine &&\n payload.sections[i].offset.column <= frameColumn;\n i++\n ) {\n section = payload.sections[i]\n }\n\n return section === undefined ? undefined : section.map\n } else {\n return payload\n }\n}\n\n/**\n * @returns 1-based lines and 0-based columns\n */\nasync function nativeTraceSource(\n frame: TurbopackStackFrame\n): Promise<{ frame: IgnorableStackFrame; source: string | null } | undefined> {\n const sourceURL = // TODO(veil): Why are the frames sent encoded?\n decodeURIComponent(frame.file)\n let sourceMapPayload: ModernSourceMapPayload | undefined\n try {\n sourceMapPayload = findSourceMap(sourceURL)?.payload\n } catch (cause) {\n throw new Error(\n `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n }\n\n if (sourceMapPayload !== undefined) {\n let consumer: BasicSourceMapConsumer\n try {\n consumer = await new SourceMapConsumer(sourceMapPayload)\n } catch (cause) {\n throw new Error(\n `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n }\n let traced: {\n originalPosition: NullableMappedPosition\n sourceContent: string | null\n } | null\n try {\n const originalPosition = consumer.originalPositionFor({\n line: frame.line ?? 1,\n // 0-based columns out requires 0-based columns in.\n column: (frame.column ?? 1) - 1,\n })\n\n if (originalPosition.source === null) {\n traced = null\n } else {\n const sourceContent: string | null =\n consumer.sourceContentFor(\n originalPosition.source,\n /* returnNullOnMissing */ true\n ) ?? null\n\n traced = { originalPosition, sourceContent }\n }\n } finally {\n consumer.destroy()\n }\n\n if (traced !== null) {\n const { originalPosition, sourceContent } = traced\n const applicableSourceMap = findApplicableSourceMapPayload(\n frame,\n sourceMapPayload\n )\n\n // TODO(veil): Upstream a method to sourcemap consumer that immediately says if a frame is ignored or not.\n let ignored = false\n if (applicableSourceMap === undefined) {\n console.error(\n 'No applicable source map found in sections for frame',\n frame\n )\n } else {\n // TODO: O(n^2). Consider moving `ignoreList` into a Set\n const sourceIndex = applicableSourceMap.sources.indexOf(\n originalPosition.source!\n )\n ignored =\n applicableSourceMap.ignoreList?.includes(sourceIndex) ??\n // When sourcemap is not available, fallback to checking `frame.file`.\n // e.g. In pages router, nextjs server code is not bundled into the page.\n shouldIgnorePath(frame.file)\n }\n\n const originalStackFrame: IgnorableStackFrame = {\n methodName:\n // We ignore the sourcemapped name since it won't be the correct name.\n // The callsite will point to the column of the variable name instead of the\n // name of the enclosing function.\n // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n frame.methodName\n ?.replace('__WEBPACK_DEFAULT_EXPORT__', 'default')\n ?.replace('__webpack_exports__.', '') || '<unknown>',\n column: (originalPosition.column ?? 0) + 1,\n file: originalPosition.source?.startsWith('file://')\n ? relativeToCwd(originalPosition.source)\n : originalPosition.source,\n lineNumber: originalPosition.line ?? 0,\n // TODO: c&p from async createOriginalStackFrame but why not frame.arguments?\n arguments: [],\n ignored,\n }\n\n return {\n frame: originalStackFrame,\n source: sourceContent,\n }\n }\n }\n\n return undefined\n}\n\nfunction relativeToCwd(file: string): string {\n const relPath = path.relative(process.cwd(), url.fileURLToPath(file))\n // TODO(sokra) include a ./ here to make it a relative path\n return relPath\n}\n\nasync function createOriginalStackFrame(\n project: Project,\n frame: TurbopackStackFrame\n): Promise<OriginalStackFrameResponse | null> {\n const traced =\n (await nativeTraceSource(frame)) ??\n // TODO(veil): When would the bundler know more than native?\n // If it's faster, try the bundler first and fall back to native later.\n (await batchedTraceSource(project, frame))\n if (!traced) {\n return null\n }\n\n return {\n originalStackFrame: traced.frame,\n originalCodeFrame: getOriginalCodeFrame(traced.frame, traced.source),\n }\n}\n\nexport function getOverlayMiddleware(project: Project) {\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(req.url!, 'http://n')\n\n if (pathname === '/__nextjs_original-stack-frames') {\n if (req.method !== 'POST') {\n return badRequest(res)\n }\n\n const body = await new Promise<string>((resolve, reject) => {\n let data = ''\n req.on('data', (chunk) => {\n data += chunk\n })\n req.on('end', () => resolve(data))\n req.on('error', reject)\n })\n\n const request = JSON.parse(body) as OriginalStackFramesRequest\n const stackFrames = createStackFrames(request)\n const result: OriginalStackFramesResponse = await Promise.all(\n stackFrames.map(async (frame) => {\n try {\n const stackFrame = await createOriginalStackFrame(project, frame)\n if (stackFrame === null) {\n return {\n status: 'rejected',\n reason: 'Failed to create original stack frame',\n }\n }\n return { status: 'fulfilled', value: stackFrame }\n } catch (error) {\n return {\n status: 'rejected',\n reason: inspect(error, { colors: false }),\n }\n }\n })\n )\n\n return json(res, result)\n } else if (pathname === '/__nextjs_launch-editor') {\n const frame = createStackFrame(searchParams)\n\n if (!frame) return badRequest(res)\n\n const fileExists = await fs.access(frame.file, FS.F_OK).then(\n () => true,\n () => false\n )\n if (!fileExists) return notFound(res)\n\n try {\n launchEditor(frame.file, frame.line ?? 1, frame.column ?? 1)\n } catch (err) {\n console.log('Failed to launch editor:', err)\n return internalServerError(res)\n }\n\n return noContent(res)\n }\n\n return next()\n }\n}\n\nexport function getSourceMapMiddleware(project: Project) {\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(req.url!, 'http://n')\n\n if (pathname !== '/__nextjs_source-map') {\n return next()\n }\n\n let filename = searchParams.get('filename')\n\n if (!filename) {\n return badRequest(res)\n }\n\n // TODO(veil): Always try the native version first.\n // Externals could also be files that aren't bundled via Webpack.\n if (\n filename.startsWith('webpack://') ||\n filename.startsWith('webpack-internal:///')\n ) {\n const sourceMap = findSourceMap(filename)\n\n if (sourceMap) {\n return json(res, sourceMap.payload)\n }\n\n return noContent(res)\n }\n\n try {\n // Turbopack chunk filenames might be URL-encoded.\n filename = decodeURI(filename)\n\n if (path.isAbsolute(filename)) {\n filename = url.pathToFileURL(filename).href\n }\n\n const sourceMapString = await project.getSourceMap(filename)\n\n if (sourceMapString) {\n return jsonString(res, sourceMapString)\n }\n\n if (filename.startsWith('file:')) {\n const sourceMap = await getSourceMapFromFile(filename)\n\n if (sourceMap) {\n return json(res, sourceMap)\n }\n }\n } catch (error) {\n console.error('Failed to get source map:', error)\n }\n\n noContent(res)\n }\n}\n"],"names":["badRequest","getOriginalCodeFrame","internalServerError","json","jsonString","noContent","notFound","fs","constants","FS","path","url","launchEditor","SourceMapConsumer","getSourceMapFromFile","findSourceMap","pathToFileURL","inspect","shouldIgnorePath","modulePath","includes","startsWith","currentSourcesByFile","Map","batchedTraceSource","project","frame","file","decodeURIComponent","undefined","lineNumber","line","column","methodName","ignored","arguments","source","currentDirectoryFileUrl","process","cwd","href","sourceFrame","traceSource","originalFile","isInternal","sourcePromise","get","getSourceForAsset","set","setTimeout","delete","ignorableFrame","parseFile","fileParam","replace","createStackFrames","body","frames","isServer","map","filter","f","createStackFrame","searchParams","parseInt","findApplicableSourceMapPayload","payload","frameLine","frameColumn","section","sections","i","length","offset","nativeTraceSource","sourceURL","sourceMapPayload","cause","Error","consumer","traced","originalPosition","originalPositionFor","sourceContent","sourceContentFor","destroy","applicableSourceMap","console","error","sourceIndex","sources","indexOf","ignoreList","originalStackFrame","relativeToCwd","relPath","relative","fileURLToPath","createOriginalStackFrame","originalCodeFrame","getOverlayMiddleware","req","res","next","pathname","URL","method","Promise","resolve","reject","data","on","chunk","request","JSON","parse","stackFrames","result","all","stackFrame","status","reason","value","colors","fileExists","access","F_OK","then","err","log","getSourceMapMiddleware","filename","sourceMap","decodeURI","isAbsolute","sourceMapString","getSourceMap"],"mappings":"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"}
|
1
|
+
{"version":3,"sources":["../../../../../src/client/components/react-dev-overlay/server/middleware-turbopack.ts"],"sourcesContent":["import type { IncomingMessage, ServerResponse } from 'http'\nimport {\n getOriginalCodeFrame,\n type OriginalStackFrameResponse,\n type OriginalStackFramesRequest,\n type OriginalStackFramesResponse,\n} from './shared'\nimport { middlewareResponse } from './middleware-response'\nimport fs, { constants as FS } from 'fs/promises'\nimport path from 'path'\nimport url from 'url'\nimport { launchEditor } from '../internal/helpers/launchEditor'\nimport type { StackFrame } from 'next/dist/compiled/stacktrace-parser'\nimport {\n SourceMapConsumer,\n type BasicSourceMapConsumer,\n type NullableMappedPosition,\n} from 'next/dist/compiled/source-map08'\nimport type { Project, TurbopackStackFrame } from '../../../../build/swc/types'\nimport { getSourceMapFromFile } from '../internal/helpers/get-source-map-from-file'\nimport { findSourceMap, type SourceMapPayload } from 'node:module'\nimport { pathToFileURL } from 'node:url'\nimport { inspect } from 'node:util'\n\nfunction shouldIgnorePath(modulePath: string): boolean {\n return (\n modulePath.includes('node_modules') ||\n // Only relevant for when Next.js is symlinked e.g. in the Next.js monorepo\n modulePath.includes('next/dist') ||\n modulePath.startsWith('node:')\n )\n}\n\ntype IgnorableStackFrame = StackFrame & { ignored: boolean }\n\nconst currentSourcesByFile: Map<string, Promise<string | null>> = new Map()\nexport async function batchedTraceSource(\n project: Project,\n frame: TurbopackStackFrame\n): Promise<{ frame: IgnorableStackFrame; source: string | null } | undefined> {\n const file = frame.file\n ? // TODO(veil): Why are the frames sent encoded?\n decodeURIComponent(frame.file)\n : undefined\n\n if (!file) return\n\n // For node internals they cannot traced the actual source code with project.traceSource,\n // we need an early return to indicate it's ignored to avoid the unknown scheme error from `project.traceSource`.\n if (file.startsWith('node:')) {\n return {\n frame: {\n file,\n lineNumber: frame.line ?? 0,\n column: frame.column ?? 0,\n methodName: frame.methodName ?? '<unknown>',\n ignored: true,\n arguments: [],\n },\n source: null,\n }\n }\n\n const currentDirectoryFileUrl = pathToFileURL(process.cwd()).href\n\n const sourceFrame = await project.traceSource(frame, currentDirectoryFileUrl)\n if (!sourceFrame) {\n return {\n frame: {\n file,\n lineNumber: frame.line ?? 0,\n column: frame.column ?? 0,\n methodName: frame.methodName ?? '<unknown>',\n ignored: shouldIgnorePath(file),\n arguments: [],\n },\n source: null,\n }\n }\n\n let source = null\n const originalFile = sourceFrame.originalFile\n\n // Don't look up source for node_modules or internals. These can often be large bundled files.\n const ignored =\n shouldIgnorePath(originalFile ?? sourceFrame.file) ||\n // isInternal means resource starts with turbopack:///[turbopack]\n !!sourceFrame.isInternal\n if (originalFile && !ignored) {\n let sourcePromise = currentSourcesByFile.get(originalFile)\n if (!sourcePromise) {\n sourcePromise = project.getSourceForAsset(originalFile)\n currentSourcesByFile.set(originalFile, sourcePromise)\n setTimeout(() => {\n // Cache file reads for 100ms, as frames will often reference the same\n // files and can be large.\n currentSourcesByFile.delete(originalFile!)\n }, 100)\n }\n source = await sourcePromise\n }\n\n // TODO: get ignoredList from turbopack source map\n const ignorableFrame = {\n file: sourceFrame.file,\n lineNumber: sourceFrame.line ?? 0,\n column: sourceFrame.column ?? 0,\n methodName:\n // We ignore the sourcemapped name since it won't be the correct name.\n // The callsite will point to the column of the variable name instead of the\n // name of the enclosing function.\n // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n frame.methodName ?? '<unknown>',\n ignored,\n arguments: [],\n }\n\n return {\n frame: ignorableFrame,\n source,\n }\n}\nfunction parseFile(fileParam: string | null): string | undefined {\n if (!fileParam) {\n return undefined\n }\n\n // rsc://React/Server/file://<filename>?42 => file://<filename>\n return fileParam.replace(/^rsc:\\/\\/React\\/[^/]+\\//, '').replace(/\\?\\d+$/, '')\n}\n\nfunction createStackFrames(\n body: OriginalStackFramesRequest\n): TurbopackStackFrame[] {\n const { frames, isServer } = body\n\n return frames\n .map((frame): TurbopackStackFrame | undefined => {\n const file = parseFile(frame.file)\n\n if (!file) {\n return undefined\n }\n\n return {\n file,\n methodName: frame.methodName ?? '<unknown>',\n line: frame.lineNumber ?? 0,\n column: frame.column ?? 0,\n isServer,\n } satisfies TurbopackStackFrame\n })\n .filter((f): f is TurbopackStackFrame => f !== undefined)\n}\n\nfunction createStackFrame(\n searchParams: URLSearchParams\n): TurbopackStackFrame | undefined {\n const file = parseFile(searchParams.get('file'))\n\n if (!file) {\n return undefined\n }\n\n return {\n file,\n methodName: searchParams.get('methodName') ?? '<unknown>',\n line: parseInt(searchParams.get('lineNumber') ?? '0', 10) || 0,\n column: parseInt(searchParams.get('column') ?? '0', 10) || 0,\n isServer: searchParams.get('isServer') === 'true',\n } satisfies TurbopackStackFrame\n}\n\n/**\n * https://tc39.es/source-map/#index-map\n */\ninterface IndexSourceMapSection {\n offset: {\n line: number\n column: number\n }\n map: ModernRawSourceMap\n}\n\n// TODO(veil): Upstream types\ninterface IndexSourceMap {\n version: number\n file: string\n sections: IndexSourceMapSection[]\n}\n\ninterface ModernRawSourceMap extends SourceMapPayload {\n ignoreList?: number[]\n}\n\ntype ModernSourceMapPayload = ModernRawSourceMap | IndexSourceMap\n\n/**\n * Finds the sourcemap payload applicable to a given frame.\n * Equal to the input unless an Index Source Map is used.\n */\nfunction findApplicableSourceMapPayload(\n frame: TurbopackStackFrame,\n payload: ModernSourceMapPayload\n): ModernRawSourceMap | undefined {\n if ('sections' in payload) {\n const frameLine = frame.line ?? 0\n const frameColumn = frame.column ?? 0\n // Sections must not overlap and must be sorted: https://tc39.es/source-map/#section-object\n // Therefore the last section that has an offset less than or equal to the frame is the applicable one.\n // TODO(veil): Binary search\n let section: IndexSourceMapSection | undefined = payload.sections[0]\n for (\n let i = 0;\n i < payload.sections.length &&\n payload.sections[i].offset.line <= frameLine &&\n payload.sections[i].offset.column <= frameColumn;\n i++\n ) {\n section = payload.sections[i]\n }\n\n return section === undefined ? undefined : section.map\n } else {\n return payload\n }\n}\n\n/**\n * @returns 1-based lines and 0-based columns\n */\nasync function nativeTraceSource(\n frame: TurbopackStackFrame\n): Promise<{ frame: IgnorableStackFrame; source: string | null } | undefined> {\n const sourceURL = // TODO(veil): Why are the frames sent encoded?\n decodeURIComponent(frame.file)\n let sourceMapPayload: ModernSourceMapPayload | undefined\n try {\n sourceMapPayload = findSourceMap(sourceURL)?.payload\n } catch (cause) {\n throw new Error(\n `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n }\n\n if (sourceMapPayload !== undefined) {\n let consumer: BasicSourceMapConsumer\n try {\n consumer = await new SourceMapConsumer(sourceMapPayload)\n } catch (cause) {\n throw new Error(\n `${sourceURL}: Invalid source map. Only conformant source maps can be used to find the original code.`,\n { cause }\n )\n }\n let traced: {\n originalPosition: NullableMappedPosition\n sourceContent: string | null\n } | null\n try {\n const originalPosition = consumer.originalPositionFor({\n line: frame.line ?? 1,\n // 0-based columns out requires 0-based columns in.\n column: (frame.column ?? 1) - 1,\n })\n\n if (originalPosition.source === null) {\n traced = null\n } else {\n const sourceContent: string | null =\n consumer.sourceContentFor(\n originalPosition.source,\n /* returnNullOnMissing */ true\n ) ?? null\n\n traced = { originalPosition, sourceContent }\n }\n } finally {\n consumer.destroy()\n }\n\n if (traced !== null) {\n const { originalPosition, sourceContent } = traced\n const applicableSourceMap = findApplicableSourceMapPayload(\n frame,\n sourceMapPayload\n )\n\n // TODO(veil): Upstream a method to sourcemap consumer that immediately says if a frame is ignored or not.\n let ignored = false\n if (applicableSourceMap === undefined) {\n console.error(\n 'No applicable source map found in sections for frame',\n frame\n )\n } else {\n // TODO: O(n^2). Consider moving `ignoreList` into a Set\n const sourceIndex = applicableSourceMap.sources.indexOf(\n originalPosition.source!\n )\n ignored =\n applicableSourceMap.ignoreList?.includes(sourceIndex) ??\n // When sourcemap is not available, fallback to checking `frame.file`.\n // e.g. In pages router, nextjs server code is not bundled into the page.\n shouldIgnorePath(frame.file)\n }\n\n const originalStackFrame: IgnorableStackFrame = {\n methodName:\n // We ignore the sourcemapped name since it won't be the correct name.\n // The callsite will point to the column of the variable name instead of the\n // name of the enclosing function.\n // TODO(NDX-531): Spy on prepareStackTrace to get the enclosing line number for method name mapping.\n frame.methodName\n ?.replace('__WEBPACK_DEFAULT_EXPORT__', 'default')\n ?.replace('__webpack_exports__.', '') || '<unknown>',\n column: (originalPosition.column ?? 0) + 1,\n file: originalPosition.source?.startsWith('file://')\n ? relativeToCwd(originalPosition.source)\n : originalPosition.source,\n lineNumber: originalPosition.line ?? 0,\n // TODO: c&p from async createOriginalStackFrame but why not frame.arguments?\n arguments: [],\n ignored,\n }\n\n return {\n frame: originalStackFrame,\n source: sourceContent,\n }\n }\n }\n\n return undefined\n}\n\nfunction relativeToCwd(file: string): string {\n const relPath = path.relative(process.cwd(), url.fileURLToPath(file))\n // TODO(sokra) include a ./ here to make it a relative path\n return relPath\n}\n\nasync function createOriginalStackFrame(\n project: Project,\n frame: TurbopackStackFrame\n): Promise<OriginalStackFrameResponse | null> {\n const traced =\n (await nativeTraceSource(frame)) ??\n // TODO(veil): When would the bundler know more than native?\n // If it's faster, try the bundler first and fall back to native later.\n (await batchedTraceSource(project, frame))\n if (!traced) {\n return null\n }\n\n return {\n originalStackFrame: traced.frame,\n originalCodeFrame: getOriginalCodeFrame(traced.frame, traced.source),\n }\n}\n\nexport function getOverlayMiddleware(project: Project) {\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(req.url!, 'http://n')\n\n if (pathname === '/__nextjs_original-stack-frames') {\n if (req.method !== 'POST') {\n return middlewareResponse.badRequest(res)\n }\n\n const body = await new Promise<string>((resolve, reject) => {\n let data = ''\n req.on('data', (chunk) => {\n data += chunk\n })\n req.on('end', () => resolve(data))\n req.on('error', reject)\n })\n\n const request = JSON.parse(body) as OriginalStackFramesRequest\n const stackFrames = createStackFrames(request)\n const result: OriginalStackFramesResponse = await Promise.all(\n stackFrames.map(async (frame) => {\n try {\n const stackFrame = await createOriginalStackFrame(project, frame)\n if (stackFrame === null) {\n return {\n status: 'rejected',\n reason: 'Failed to create original stack frame',\n }\n }\n return { status: 'fulfilled', value: stackFrame }\n } catch (error) {\n return {\n status: 'rejected',\n reason: inspect(error, { colors: false }),\n }\n }\n })\n )\n\n return middlewareResponse.json(res, result)\n } else if (pathname === '/__nextjs_launch-editor') {\n const frame = createStackFrame(searchParams)\n\n if (!frame) return middlewareResponse.badRequest(res)\n\n const fileExists = await fs.access(frame.file, FS.F_OK).then(\n () => true,\n () => false\n )\n if (!fileExists) return middlewareResponse.notFound(res)\n\n try {\n launchEditor(frame.file, frame.line ?? 1, frame.column ?? 1)\n } catch (err) {\n console.log('Failed to launch editor:', err)\n return middlewareResponse.internalServerError(res)\n }\n\n return middlewareResponse.noContent(res)\n }\n\n return next()\n }\n}\n\nexport function getSourceMapMiddleware(project: Project) {\n return async function (\n req: IncomingMessage,\n res: ServerResponse,\n next: () => void\n ): Promise<void> {\n const { pathname, searchParams } = new URL(req.url!, 'http://n')\n\n if (pathname !== '/__nextjs_source-map') {\n return next()\n }\n\n let filename = searchParams.get('filename')\n\n if (!filename) {\n return middlewareResponse.badRequest(res)\n }\n\n // TODO(veil): Always try the native version first.\n // Externals could also be files that aren't bundled via Webpack.\n if (\n filename.startsWith('webpack://') ||\n filename.startsWith('webpack-internal:///')\n ) {\n const sourceMap = findSourceMap(filename)\n\n if (sourceMap) {\n return middlewareResponse.json(res, sourceMap.payload)\n }\n\n return middlewareResponse.noContent(res)\n }\n\n try {\n // Turbopack chunk filenames might be URL-encoded.\n filename = decodeURI(filename)\n\n if (path.isAbsolute(filename)) {\n filename = url.pathToFileURL(filename).href\n }\n\n const sourceMapString = await project.getSourceMap(filename)\n\n if (sourceMapString) {\n return middlewareResponse.jsonString(res, sourceMapString)\n }\n\n if (filename.startsWith('file:')) {\n const sourceMap = await getSourceMapFromFile(filename)\n\n if (sourceMap) {\n return middlewareResponse.json(res, sourceMap)\n }\n }\n } catch (error) {\n console.error('Failed to get source map:', error)\n }\n\n middlewareResponse.noContent(res)\n }\n}\n"],"names":["getOriginalCodeFrame","middlewareResponse","fs","constants","FS","path","url","launchEditor","SourceMapConsumer","getSourceMapFromFile","findSourceMap","pathToFileURL","inspect","shouldIgnorePath","modulePath","includes","startsWith","currentSourcesByFile","Map","batchedTraceSource","project","frame","file","decodeURIComponent","undefined","lineNumber","line","column","methodName","ignored","arguments","source","currentDirectoryFileUrl","process","cwd","href","sourceFrame","traceSource","originalFile","isInternal","sourcePromise","get","getSourceForAsset","set","setTimeout","delete","ignorableFrame","parseFile","fileParam","replace","createStackFrames","body","frames","isServer","map","filter","f","createStackFrame","searchParams","parseInt","findApplicableSourceMapPayload","payload","frameLine","frameColumn","section","sections","i","length","offset","nativeTraceSource","sourceURL","sourceMapPayload","cause","Error","consumer","traced","originalPosition","originalPositionFor","sourceContent","sourceContentFor","destroy","applicableSourceMap","console","error","sourceIndex","sources","indexOf","ignoreList","originalStackFrame","relativeToCwd","relPath","relative","fileURLToPath","createOriginalStackFrame","originalCodeFrame","getOverlayMiddleware","req","res","next","pathname","URL","method","badRequest","Promise","resolve","reject","data","on","chunk","request","JSON","parse","stackFrames","result","all","stackFrame","status","reason","value","colors","json","fileExists","access","F_OK","then","notFound","err","log","internalServerError","noContent","getSourceMapMiddleware","filename","sourceMap","decodeURI","isAbsolute","sourceMapString","getSourceMap","jsonString"],"mappings":"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"}
|
@@ -5,7 +5,8 @@ import { fileURLToPath, pathToFileURL } from 'url';
|
|
5
5
|
import { SourceMapConsumer } from 'next/dist/compiled/source-map08';
|
6
6
|
import { getSourceMapFromFile } from '../internal/helpers/get-source-map-from-file';
|
7
7
|
import { launchEditor } from '../internal/helpers/launchEditor';
|
8
|
-
import {
|
8
|
+
import { getOriginalCodeFrame } from './shared';
|
9
|
+
import { middlewareResponse } from './middleware-response';
|
9
10
|
export { getServerError } from '../internal/helpers/node-stack-frames';
|
10
11
|
export { parseStack } from '../internal/helpers/parse-stack';
|
11
12
|
export { getSourceMapFromFile };
|
@@ -334,7 +335,7 @@ export function getOverlayMiddleware(options) {
|
|
334
335
|
const { pathname, searchParams } = new URL("http://n" + req.url);
|
335
336
|
if (pathname === '/__nextjs_original-stack-frames') {
|
336
337
|
if (req.method !== 'POST') {
|
337
|
-
return badRequest(res);
|
338
|
+
return middlewareResponse.badRequest(res);
|
338
339
|
}
|
339
340
|
const body = await new Promise((resolve, reject)=>{
|
340
341
|
let data = '';
|
@@ -346,7 +347,7 @@ export function getOverlayMiddleware(options) {
|
|
346
347
|
});
|
347
348
|
try {
|
348
349
|
const { frames, isServer, isEdgeServer, isAppDirectory } = JSON.parse(body);
|
349
|
-
return json(res, await getOriginalStackFrames({
|
350
|
+
return middlewareResponse.json(res, await getOriginalStackFrames({
|
350
351
|
isServer,
|
351
352
|
isEdgeServer,
|
352
353
|
isAppDirectory,
|
@@ -364,7 +365,7 @@ export function getOverlayMiddleware(options) {
|
|
364
365
|
rootDirectory
|
365
366
|
}));
|
366
367
|
} catch (err) {
|
367
|
-
return badRequest(res);
|
368
|
+
return middlewareResponse.badRequest(res);
|
368
369
|
}
|
369
370
|
} else if (pathname === '/__nextjs_launch-editor') {
|
370
371
|
var _searchParams_get, _searchParams_get1;
|
@@ -375,19 +376,19 @@ export function getOverlayMiddleware(options) {
|
|
375
376
|
column: parseInt((_searchParams_get1 = searchParams.get('column')) != null ? _searchParams_get1 : '0', 10) || 0,
|
376
377
|
arguments: searchParams.getAll('arguments').filter(Boolean)
|
377
378
|
};
|
378
|
-
if (!frame.file) return badRequest(res);
|
379
|
+
if (!frame.file) return middlewareResponse.badRequest(res);
|
379
380
|
// frame files may start with their webpack layer, like (middleware)/middleware.js
|
380
381
|
const filePath = path.resolve(rootDirectory, frame.file.replace(/^\([^)]+\)\//, ''));
|
381
382
|
const fileExists = await fs.access(filePath, FS.F_OK).then(()=>true, ()=>false);
|
382
|
-
if (!fileExists) return notFound(res);
|
383
|
+
if (!fileExists) return middlewareResponse.notFound(res);
|
383
384
|
try {
|
384
385
|
var _frame_column;
|
385
386
|
launchEditor(filePath, frame.lineNumber, (_frame_column = frame.column) != null ? _frame_column : 1);
|
386
387
|
} catch (err) {
|
387
388
|
console.log('Failed to launch editor:', err);
|
388
|
-
return internalServerError(res);
|
389
|
+
return middlewareResponse.internalServerError(res);
|
389
390
|
}
|
390
|
-
return noContent(res);
|
391
|
+
return middlewareResponse.noContent(res);
|
391
392
|
}
|
392
393
|
return next();
|
393
394
|
};
|
@@ -401,7 +402,7 @@ export function getSourceMapMiddleware(options) {
|
|
401
402
|
}
|
402
403
|
const filename = searchParams.get('filename');
|
403
404
|
if (!filename) {
|
404
|
-
return badRequest(res);
|
405
|
+
return middlewareResponse.badRequest(res);
|
405
406
|
}
|
406
407
|
let source;
|
407
408
|
try {
|
@@ -421,12 +422,12 @@ export function getSourceMapMiddleware(options) {
|
|
421
422
|
}
|
422
423
|
});
|
423
424
|
} catch (error) {
|
424
|
-
return internalServerError(res, error);
|
425
|
+
return middlewareResponse.internalServerError(res, error);
|
425
426
|
}
|
426
427
|
if (!source) {
|
427
|
-
return noContent(res);
|
428
|
+
return middlewareResponse.noContent(res);
|
428
429
|
}
|
429
|
-
return json(res, source.sourceMap);
|
430
|
+
return middlewareResponse.json(res, source.sourceMap);
|
430
431
|
};
|
431
432
|
}
|
432
433
|
|