@honeybadger-io/nextjs 5.8.14 → 5.9.2

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.
@@ -63,12 +63,12 @@ function mergeWithExistingWebpackConfig(nextJsWebpackConfig, honeybadgerNextJsCo
63
63
  };
64
64
  }
65
65
  async function injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType) {
66
+ const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry };
66
67
  const hbConfigFile = getHoneybadgerConfigFile(projectDir, configType);
67
68
  if (!hbConfigFile) {
68
- return originalEntry;
69
+ return result;
69
70
  }
70
71
  const hbConfigFileRelativePath = `./${hbConfigFile}`;
71
- const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry };
72
72
  if (!Object.keys(result).length) {
73
73
  log('debug', `no entry points for configType[${configType}]`);
74
74
  }
@@ -144,6 +144,49 @@ function getWebpackPluginOptions(honeybadgerNextJsConfig) {
144
144
  silent: _silent,
145
145
  };
146
146
  }
147
+ function getNextJsVersionInstalled() {
148
+ var _a;
149
+ try {
150
+ return (_a = require('next/package.json').version) === null || _a === void 0 ? void 0 : _a.split('.');
151
+ }
152
+ catch (e) {
153
+ return null;
154
+ }
155
+ }
156
+ /**
157
+ * NextJs will report a warning if the `serverExternalPackages` option is not present.
158
+ * This is because @honeybadger-io/js will try to require configuration files dynamically (https://github.com/honeybadger-io/honeybadger-js/pull/1268).
159
+ *
160
+ * First reported here: https://github.com/honeybadger-io/honeybadger-js/issues/1351
161
+ */
162
+ function addServerExternalPackagesOption(config) {
163
+ var _a, _b;
164
+ // this should be available in the upcoming version of Next.js (14.3.0)
165
+ if (config.serverExternalPackages && Array.isArray(config.serverExternalPackages)) {
166
+ log('debug', 'adding @honeybadger-io/js to serverExternalPackages');
167
+ config.serverExternalPackages.push('@honeybadger-io/js');
168
+ return;
169
+ }
170
+ if (((_a = config.experimental) === null || _a === void 0 ? void 0 : _a.serverComponentsExternalPackages) && Array.isArray((_b = config.experimental) === null || _b === void 0 ? void 0 : _b.serverComponentsExternalPackages)) {
171
+ log('debug', 'adding @honeybadger-io/js to experimental.serverComponentsExternalPackages');
172
+ config.experimental.serverComponentsExternalPackages.push('@honeybadger-io/js');
173
+ return;
174
+ }
175
+ const nextJsVersion = getNextJsVersionInstalled();
176
+ if (nextJsVersion) {
177
+ if (+nextJsVersion[0] >= 14 && +nextJsVersion[1] >= 3) {
178
+ log('debug', 'adding serverExternalPackages option with value ["@honeybadger-io/js"]');
179
+ config.serverExternalPackages = ['@honeybadger-io/js'];
180
+ }
181
+ else {
182
+ log('debug', 'adding experimental.serverComponentsExternalPackages option with value ["@honeybadger-io/js"]');
183
+ if (!config.experimental) {
184
+ config.experimental = {};
185
+ }
186
+ config.experimental.serverComponentsExternalPackages = ['@honeybadger-io/js'];
187
+ }
188
+ }
189
+ }
147
190
  function setupHoneybadger(config, honeybadgerNextJsConfig) {
148
191
  var _a;
149
192
  if (!honeybadgerNextJsConfig) {
@@ -153,6 +196,7 @@ function setupHoneybadger(config, honeybadgerNextJsConfig) {
153
196
  };
154
197
  }
155
198
  _silent = (_a = honeybadgerNextJsConfig.silent) !== null && _a !== void 0 ? _a : true;
199
+ addServerExternalPackagesOption(config);
156
200
  return {
157
201
  ...config,
158
202
  webpack: mergeWithExistingWebpackConfig(config.webpack, honeybadgerNextJsConfig)
@@ -1 +1 @@
1
- {"version":3,"file":"honeybadger-nextjs.cjs.js","sources":["../../build/index.js"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport HoneybadgerSourceMapPlugin from '@honeybadger-io/webpack';\nconst URL_DOCS_SOURCE_MAPS_UPLOAD = 'https://docs.honeybadger.io/lib/javascript/integration/nextjs/#source-map-upload-and-tracking-deploys';\nlet _silent = true;\nfunction log(type, msg) {\n if (['error', 'warn'].includes(type) || !_silent) {\n console[type]('[HoneybadgerNextJs]', msg);\n }\n}\nfunction shouldUploadSourceMaps(honeybadgerNextJsConfig, context) {\n const { dev } = context;\n if (honeybadgerNextJsConfig.disableSourceMapUpload) {\n return false;\n }\n if (!honeybadgerNextJsConfig.webpackPluginOptions || !honeybadgerNextJsConfig.webpackPluginOptions.apiKey) {\n log('warn', `skipping source map upload; here's how to enable: ${URL_DOCS_SOURCE_MAPS_UPLOAD}`);\n return false;\n }\n if (dev || process.env.NODE_ENV === 'development') {\n return false;\n }\n return true;\n}\nfunction mergeWithExistingWebpackConfig(nextJsWebpackConfig, honeybadgerNextJsConfig) {\n return function webpackFunctionMergedWithHb(webpackConfig, context) {\n const { isServer, dir: projectDir, nextRuntime } = context;\n const configType = isServer ? (nextRuntime === 'edge' ? 'edge' : 'server') : 'browser';\n log('debug', `reached webpackFunctionMergedWithHb isServer[${isServer}] configType[${configType}]`);\n let result = { ...webpackConfig };\n if (typeof nextJsWebpackConfig === 'function') {\n result = nextJsWebpackConfig(result, context);\n }\n const originalEntry = result.entry;\n result.entry = async () => injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType);\n if (shouldUploadSourceMaps(honeybadgerNextJsConfig, context)) {\n // `result.devtool` must be 'hidden-source-map' or 'source-map' to properly pass sourcemaps.\n // Next.js uses regular `source-map` which doesnt pass its sourcemaps to Webpack.\n // https://github.com/vercel/next.js/blob/89ec21ed686dd79a5770b5c669abaff8f55d8fef/packages/next/build/webpack/config/blocks/base.ts#L40\n // Use the hidden-source-map option when you don't want the source maps to be\n // publicly available on the servers, only to the error reporting\n result.devtool = 'hidden-source-map';\n if (!result.plugins) {\n result.plugins = [];\n }\n const options = getWebpackPluginOptions(honeybadgerNextJsConfig);\n if (options) {\n result.plugins.push(new HoneybadgerSourceMapPlugin(options));\n }\n }\n return result;\n };\n}\nasync function injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType) {\n const hbConfigFile = getHoneybadgerConfigFile(projectDir, configType);\n if (!hbConfigFile) {\n return originalEntry;\n }\n const hbConfigFileRelativePath = `./${hbConfigFile}`;\n const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry };\n if (!Object.keys(result).length) {\n log('debug', `no entry points for configType[${configType}]`);\n }\n for (const entryName in result) {\n addHoneybadgerConfigToEntry(result, entryName, hbConfigFileRelativePath, configType);\n }\n return result;\n}\nfunction addHoneybadgerConfigToEntry(entry, entryName, hbConfigFile, configType) {\n log('debug', `adding entry[${entryName}] to configType[${configType}]`);\n switch (configType) {\n case 'server':\n if (!entryName.startsWith('pages/')) {\n return;\n }\n break;\n case 'browser':\n if (!['pages/_app', 'main-app'].includes(entryName)) {\n return;\n }\n break;\n case 'edge':\n // nothing?\n break;\n }\n const currentEntryPoint = entry[entryName];\n let newEntryPoint = currentEntryPoint;\n if (typeof currentEntryPoint === 'string') {\n newEntryPoint = [hbConfigFile, currentEntryPoint];\n }\n else if (Array.isArray(currentEntryPoint)) {\n newEntryPoint = [hbConfigFile, ...currentEntryPoint];\n } // descriptor object (webpack 5+)\n else if (typeof currentEntryPoint === 'object' && currentEntryPoint && 'import' in currentEntryPoint) {\n const currentImportValue = currentEntryPoint['import'];\n const newImportValue = [hbConfigFile];\n if (typeof currentImportValue === 'string') {\n newImportValue.push(currentImportValue);\n }\n else {\n newImportValue.push(...(currentImportValue));\n }\n newEntryPoint = {\n ...currentEntryPoint,\n import: newImportValue,\n };\n }\n else {\n log('error', 'Could not inject Honeybadger config to entry point: ' + JSON.stringify(currentEntryPoint, null, 2));\n }\n entry[entryName] = newEntryPoint;\n}\nfunction getHoneybadgerConfigFile(projectDir, configType) {\n const possibilities = [`honeybadger.${configType}.config.ts`, `honeybadger.${configType}.config.js`];\n for (const filename of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n return filename;\n }\n }\n log('debug', `could not find config file in ${projectDir} for ${configType}`);\n return null;\n}\nfunction getWebpackPluginOptions(honeybadgerNextJsConfig) {\n var _a, _b, _c;\n const apiKey = ((_a = honeybadgerNextJsConfig.webpackPluginOptions) === null || _a === void 0 ? void 0 : _a.apiKey) || process.env.NEXT_PUBLIC_HONEYBADGER_API_KEY;\n const assetsUrl = ((_b = honeybadgerNextJsConfig.webpackPluginOptions) === null || _b === void 0 ? void 0 : _b.assetsUrl) || process.env.NEXT_PUBLIC_HONEYBADGER_ASSETS_URL;\n if (!apiKey || !assetsUrl) {\n log('error', 'Missing Honeybadger required configuration for webpack plugin. Source maps will not be uploaded to Honeybadger.');\n return null;\n }\n return {\n ...honeybadgerNextJsConfig.webpackPluginOptions,\n apiKey,\n assetsUrl,\n revision: ((_c = honeybadgerNextJsConfig.webpackPluginOptions) === null || _c === void 0 ? void 0 : _c.revision) || process.env.NEXT_PUBLIC_HONEYBADGER_REVISION,\n silent: _silent,\n };\n}\nexport function setupHoneybadger(config, honeybadgerNextJsConfig) {\n var _a;\n if (!honeybadgerNextJsConfig) {\n honeybadgerNextJsConfig = {\n silent: true,\n disableSourceMapUpload: false,\n };\n }\n _silent = (_a = honeybadgerNextJsConfig.silent) !== null && _a !== void 0 ? _a : true;\n return {\n ...config,\n webpack: mergeWithExistingWebpackConfig(config.webpack, honeybadgerNextJsConfig)\n };\n}\n//# sourceMappingURL=index.js.map"],"names":["HoneybadgerSourceMapPlugin","fs","path"],"mappings":"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"}
1
+ {"version":3,"file":"honeybadger-nextjs.cjs.js","sources":["../../build/index.js"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport HoneybadgerSourceMapPlugin from '@honeybadger-io/webpack';\nconst URL_DOCS_SOURCE_MAPS_UPLOAD = 'https://docs.honeybadger.io/lib/javascript/integration/nextjs/#source-map-upload-and-tracking-deploys';\nlet _silent = true;\nfunction log(type, msg) {\n if (['error', 'warn'].includes(type) || !_silent) {\n console[type]('[HoneybadgerNextJs]', msg);\n }\n}\nfunction shouldUploadSourceMaps(honeybadgerNextJsConfig, context) {\n const { dev } = context;\n if (honeybadgerNextJsConfig.disableSourceMapUpload) {\n return false;\n }\n if (!honeybadgerNextJsConfig.webpackPluginOptions || !honeybadgerNextJsConfig.webpackPluginOptions.apiKey) {\n log('warn', `skipping source map upload; here's how to enable: ${URL_DOCS_SOURCE_MAPS_UPLOAD}`);\n return false;\n }\n if (dev || process.env.NODE_ENV === 'development') {\n return false;\n }\n return true;\n}\nfunction mergeWithExistingWebpackConfig(nextJsWebpackConfig, honeybadgerNextJsConfig) {\n return function webpackFunctionMergedWithHb(webpackConfig, context) {\n const { isServer, dir: projectDir, nextRuntime } = context;\n const configType = isServer ? (nextRuntime === 'edge' ? 'edge' : 'server') : 'browser';\n log('debug', `reached webpackFunctionMergedWithHb isServer[${isServer}] configType[${configType}]`);\n let result = { ...webpackConfig };\n if (typeof nextJsWebpackConfig === 'function') {\n result = nextJsWebpackConfig(result, context);\n }\n const originalEntry = result.entry;\n result.entry = async () => injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType);\n if (shouldUploadSourceMaps(honeybadgerNextJsConfig, context)) {\n // `result.devtool` must be 'hidden-source-map' or 'source-map' to properly pass sourcemaps.\n // Next.js uses regular `source-map` which doesnt pass its sourcemaps to Webpack.\n // https://github.com/vercel/next.js/blob/89ec21ed686dd79a5770b5c669abaff8f55d8fef/packages/next/build/webpack/config/blocks/base.ts#L40\n // Use the hidden-source-map option when you don't want the source maps to be\n // publicly available on the servers, only to the error reporting\n result.devtool = 'hidden-source-map';\n if (!result.plugins) {\n result.plugins = [];\n }\n const options = getWebpackPluginOptions(honeybadgerNextJsConfig);\n if (options) {\n result.plugins.push(new HoneybadgerSourceMapPlugin(options));\n }\n }\n return result;\n };\n}\nasync function injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType) {\n const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry };\n const hbConfigFile = getHoneybadgerConfigFile(projectDir, configType);\n if (!hbConfigFile) {\n return result;\n }\n const hbConfigFileRelativePath = `./${hbConfigFile}`;\n if (!Object.keys(result).length) {\n log('debug', `no entry points for configType[${configType}]`);\n }\n for (const entryName in result) {\n addHoneybadgerConfigToEntry(result, entryName, hbConfigFileRelativePath, configType);\n }\n return result;\n}\nfunction addHoneybadgerConfigToEntry(entry, entryName, hbConfigFile, configType) {\n log('debug', `adding entry[${entryName}] to configType[${configType}]`);\n switch (configType) {\n case 'server':\n if (!entryName.startsWith('pages/')) {\n return;\n }\n break;\n case 'browser':\n if (!['pages/_app', 'main-app'].includes(entryName)) {\n return;\n }\n break;\n case 'edge':\n // nothing?\n break;\n }\n const currentEntryPoint = entry[entryName];\n let newEntryPoint = currentEntryPoint;\n if (typeof currentEntryPoint === 'string') {\n newEntryPoint = [hbConfigFile, currentEntryPoint];\n }\n else if (Array.isArray(currentEntryPoint)) {\n newEntryPoint = [hbConfigFile, ...currentEntryPoint];\n } // descriptor object (webpack 5+)\n else if (typeof currentEntryPoint === 'object' && currentEntryPoint && 'import' in currentEntryPoint) {\n const currentImportValue = currentEntryPoint['import'];\n const newImportValue = [hbConfigFile];\n if (typeof currentImportValue === 'string') {\n newImportValue.push(currentImportValue);\n }\n else {\n newImportValue.push(...(currentImportValue));\n }\n newEntryPoint = {\n ...currentEntryPoint,\n import: newImportValue,\n };\n }\n else {\n log('error', 'Could not inject Honeybadger config to entry point: ' + JSON.stringify(currentEntryPoint, null, 2));\n }\n entry[entryName] = newEntryPoint;\n}\nfunction getHoneybadgerConfigFile(projectDir, configType) {\n const possibilities = [`honeybadger.${configType}.config.ts`, `honeybadger.${configType}.config.js`];\n for (const filename of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n return filename;\n }\n }\n log('debug', `could not find config file in ${projectDir} for ${configType}`);\n return null;\n}\nfunction getWebpackPluginOptions(honeybadgerNextJsConfig) {\n var _a, _b, _c;\n const apiKey = ((_a = honeybadgerNextJsConfig.webpackPluginOptions) === null || _a === void 0 ? void 0 : _a.apiKey) || process.env.NEXT_PUBLIC_HONEYBADGER_API_KEY;\n const assetsUrl = ((_b = honeybadgerNextJsConfig.webpackPluginOptions) === null || _b === void 0 ? void 0 : _b.assetsUrl) || process.env.NEXT_PUBLIC_HONEYBADGER_ASSETS_URL;\n if (!apiKey || !assetsUrl) {\n log('error', 'Missing Honeybadger required configuration for webpack plugin. Source maps will not be uploaded to Honeybadger.');\n return null;\n }\n return {\n ...honeybadgerNextJsConfig.webpackPluginOptions,\n apiKey,\n assetsUrl,\n revision: ((_c = honeybadgerNextJsConfig.webpackPluginOptions) === null || _c === void 0 ? void 0 : _c.revision) || process.env.NEXT_PUBLIC_HONEYBADGER_REVISION,\n silent: _silent,\n };\n}\nfunction getNextJsVersionInstalled() {\n var _a;\n try {\n return (_a = require('next/package.json').version) === null || _a === void 0 ? void 0 : _a.split('.');\n }\n catch (e) {\n return null;\n }\n}\n/**\n * NextJs will report a warning if the `serverExternalPackages` option is not present.\n * This is because @honeybadger-io/js will try to require configuration files dynamically (https://github.com/honeybadger-io/honeybadger-js/pull/1268).\n *\n * First reported here: https://github.com/honeybadger-io/honeybadger-js/issues/1351\n */\nfunction addServerExternalPackagesOption(config) {\n var _a, _b;\n // this should be available in the upcoming version of Next.js (14.3.0)\n if (config.serverExternalPackages && Array.isArray(config.serverExternalPackages)) {\n log('debug', 'adding @honeybadger-io/js to serverExternalPackages');\n config.serverExternalPackages.push('@honeybadger-io/js');\n return;\n }\n if (((_a = config.experimental) === null || _a === void 0 ? void 0 : _a.serverComponentsExternalPackages) && Array.isArray((_b = config.experimental) === null || _b === void 0 ? void 0 : _b.serverComponentsExternalPackages)) {\n log('debug', 'adding @honeybadger-io/js to experimental.serverComponentsExternalPackages');\n config.experimental.serverComponentsExternalPackages.push('@honeybadger-io/js');\n return;\n }\n const nextJsVersion = getNextJsVersionInstalled();\n if (nextJsVersion) {\n if (+nextJsVersion[0] >= 14 && +nextJsVersion[1] >= 3) {\n log('debug', 'adding serverExternalPackages option with value [\"@honeybadger-io/js\"]');\n config.serverExternalPackages = ['@honeybadger-io/js'];\n }\n else {\n log('debug', 'adding experimental.serverComponentsExternalPackages option with value [\"@honeybadger-io/js\"]');\n if (!config.experimental) {\n config.experimental = {};\n }\n config.experimental.serverComponentsExternalPackages = ['@honeybadger-io/js'];\n }\n }\n}\nexport function setupHoneybadger(config, honeybadgerNextJsConfig) {\n var _a;\n if (!honeybadgerNextJsConfig) {\n honeybadgerNextJsConfig = {\n silent: true,\n disableSourceMapUpload: false,\n };\n }\n _silent = (_a = honeybadgerNextJsConfig.silent) !== null && _a !== void 0 ? _a : true;\n addServerExternalPackagesOption(config);\n return {\n ...config,\n webpack: mergeWithExistingWebpackConfig(config.webpack, honeybadgerNextJsConfig)\n };\n}\n//# sourceMappingURL=index.js.map"],"names":["HoneybadgerSourceMapPlugin","fs","path"],"mappings":"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"}
@@ -53,12 +53,12 @@ function mergeWithExistingWebpackConfig(nextJsWebpackConfig, honeybadgerNextJsCo
53
53
  };
54
54
  }
55
55
  async function injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType) {
56
+ const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry };
56
57
  const hbConfigFile = getHoneybadgerConfigFile(projectDir, configType);
57
58
  if (!hbConfigFile) {
58
- return originalEntry;
59
+ return result;
59
60
  }
60
61
  const hbConfigFileRelativePath = `./${hbConfigFile}`;
61
- const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry };
62
62
  if (!Object.keys(result).length) {
63
63
  log('debug', `no entry points for configType[${configType}]`);
64
64
  }
@@ -134,6 +134,49 @@ function getWebpackPluginOptions(honeybadgerNextJsConfig) {
134
134
  silent: _silent,
135
135
  };
136
136
  }
137
+ function getNextJsVersionInstalled() {
138
+ var _a;
139
+ try {
140
+ return (_a = require('next/package.json').version) === null || _a === void 0 ? void 0 : _a.split('.');
141
+ }
142
+ catch (e) {
143
+ return null;
144
+ }
145
+ }
146
+ /**
147
+ * NextJs will report a warning if the `serverExternalPackages` option is not present.
148
+ * This is because @honeybadger-io/js will try to require configuration files dynamically (https://github.com/honeybadger-io/honeybadger-js/pull/1268).
149
+ *
150
+ * First reported here: https://github.com/honeybadger-io/honeybadger-js/issues/1351
151
+ */
152
+ function addServerExternalPackagesOption(config) {
153
+ var _a, _b;
154
+ // this should be available in the upcoming version of Next.js (14.3.0)
155
+ if (config.serverExternalPackages && Array.isArray(config.serverExternalPackages)) {
156
+ log('debug', 'adding @honeybadger-io/js to serverExternalPackages');
157
+ config.serverExternalPackages.push('@honeybadger-io/js');
158
+ return;
159
+ }
160
+ if (((_a = config.experimental) === null || _a === void 0 ? void 0 : _a.serverComponentsExternalPackages) && Array.isArray((_b = config.experimental) === null || _b === void 0 ? void 0 : _b.serverComponentsExternalPackages)) {
161
+ log('debug', 'adding @honeybadger-io/js to experimental.serverComponentsExternalPackages');
162
+ config.experimental.serverComponentsExternalPackages.push('@honeybadger-io/js');
163
+ return;
164
+ }
165
+ const nextJsVersion = getNextJsVersionInstalled();
166
+ if (nextJsVersion) {
167
+ if (+nextJsVersion[0] >= 14 && +nextJsVersion[1] >= 3) {
168
+ log('debug', 'adding serverExternalPackages option with value ["@honeybadger-io/js"]');
169
+ config.serverExternalPackages = ['@honeybadger-io/js'];
170
+ }
171
+ else {
172
+ log('debug', 'adding experimental.serverComponentsExternalPackages option with value ["@honeybadger-io/js"]');
173
+ if (!config.experimental) {
174
+ config.experimental = {};
175
+ }
176
+ config.experimental.serverComponentsExternalPackages = ['@honeybadger-io/js'];
177
+ }
178
+ }
179
+ }
137
180
  function setupHoneybadger(config, honeybadgerNextJsConfig) {
138
181
  var _a;
139
182
  if (!honeybadgerNextJsConfig) {
@@ -143,6 +186,7 @@ function setupHoneybadger(config, honeybadgerNextJsConfig) {
143
186
  };
144
187
  }
145
188
  _silent = (_a = honeybadgerNextJsConfig.silent) !== null && _a !== void 0 ? _a : true;
189
+ addServerExternalPackagesOption(config);
146
190
  return {
147
191
  ...config,
148
192
  webpack: mergeWithExistingWebpackConfig(config.webpack, honeybadgerNextJsConfig)
@@ -1 +1 @@
1
- {"version":3,"file":"honeybadger-nextjs.esm.js","sources":["../../build/index.js"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport HoneybadgerSourceMapPlugin from '@honeybadger-io/webpack';\nconst URL_DOCS_SOURCE_MAPS_UPLOAD = 'https://docs.honeybadger.io/lib/javascript/integration/nextjs/#source-map-upload-and-tracking-deploys';\nlet _silent = true;\nfunction log(type, msg) {\n if (['error', 'warn'].includes(type) || !_silent) {\n console[type]('[HoneybadgerNextJs]', msg);\n }\n}\nfunction shouldUploadSourceMaps(honeybadgerNextJsConfig, context) {\n const { dev } = context;\n if (honeybadgerNextJsConfig.disableSourceMapUpload) {\n return false;\n }\n if (!honeybadgerNextJsConfig.webpackPluginOptions || !honeybadgerNextJsConfig.webpackPluginOptions.apiKey) {\n log('warn', `skipping source map upload; here's how to enable: ${URL_DOCS_SOURCE_MAPS_UPLOAD}`);\n return false;\n }\n if (dev || process.env.NODE_ENV === 'development') {\n return false;\n }\n return true;\n}\nfunction mergeWithExistingWebpackConfig(nextJsWebpackConfig, honeybadgerNextJsConfig) {\n return function webpackFunctionMergedWithHb(webpackConfig, context) {\n const { isServer, dir: projectDir, nextRuntime } = context;\n const configType = isServer ? (nextRuntime === 'edge' ? 'edge' : 'server') : 'browser';\n log('debug', `reached webpackFunctionMergedWithHb isServer[${isServer}] configType[${configType}]`);\n let result = { ...webpackConfig };\n if (typeof nextJsWebpackConfig === 'function') {\n result = nextJsWebpackConfig(result, context);\n }\n const originalEntry = result.entry;\n result.entry = async () => injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType);\n if (shouldUploadSourceMaps(honeybadgerNextJsConfig, context)) {\n // `result.devtool` must be 'hidden-source-map' or 'source-map' to properly pass sourcemaps.\n // Next.js uses regular `source-map` which doesnt pass its sourcemaps to Webpack.\n // https://github.com/vercel/next.js/blob/89ec21ed686dd79a5770b5c669abaff8f55d8fef/packages/next/build/webpack/config/blocks/base.ts#L40\n // Use the hidden-source-map option when you don't want the source maps to be\n // publicly available on the servers, only to the error reporting\n result.devtool = 'hidden-source-map';\n if (!result.plugins) {\n result.plugins = [];\n }\n const options = getWebpackPluginOptions(honeybadgerNextJsConfig);\n if (options) {\n result.plugins.push(new HoneybadgerSourceMapPlugin(options));\n }\n }\n return result;\n };\n}\nasync function injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType) {\n const hbConfigFile = getHoneybadgerConfigFile(projectDir, configType);\n if (!hbConfigFile) {\n return originalEntry;\n }\n const hbConfigFileRelativePath = `./${hbConfigFile}`;\n const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry };\n if (!Object.keys(result).length) {\n log('debug', `no entry points for configType[${configType}]`);\n }\n for (const entryName in result) {\n addHoneybadgerConfigToEntry(result, entryName, hbConfigFileRelativePath, configType);\n }\n return result;\n}\nfunction addHoneybadgerConfigToEntry(entry, entryName, hbConfigFile, configType) {\n log('debug', `adding entry[${entryName}] to configType[${configType}]`);\n switch (configType) {\n case 'server':\n if (!entryName.startsWith('pages/')) {\n return;\n }\n break;\n case 'browser':\n if (!['pages/_app', 'main-app'].includes(entryName)) {\n return;\n }\n break;\n case 'edge':\n // nothing?\n break;\n }\n const currentEntryPoint = entry[entryName];\n let newEntryPoint = currentEntryPoint;\n if (typeof currentEntryPoint === 'string') {\n newEntryPoint = [hbConfigFile, currentEntryPoint];\n }\n else if (Array.isArray(currentEntryPoint)) {\n newEntryPoint = [hbConfigFile, ...currentEntryPoint];\n } // descriptor object (webpack 5+)\n else if (typeof currentEntryPoint === 'object' && currentEntryPoint && 'import' in currentEntryPoint) {\n const currentImportValue = currentEntryPoint['import'];\n const newImportValue = [hbConfigFile];\n if (typeof currentImportValue === 'string') {\n newImportValue.push(currentImportValue);\n }\n else {\n newImportValue.push(...(currentImportValue));\n }\n newEntryPoint = {\n ...currentEntryPoint,\n import: newImportValue,\n };\n }\n else {\n log('error', 'Could not inject Honeybadger config to entry point: ' + JSON.stringify(currentEntryPoint, null, 2));\n }\n entry[entryName] = newEntryPoint;\n}\nfunction getHoneybadgerConfigFile(projectDir, configType) {\n const possibilities = [`honeybadger.${configType}.config.ts`, `honeybadger.${configType}.config.js`];\n for (const filename of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n return filename;\n }\n }\n log('debug', `could not find config file in ${projectDir} for ${configType}`);\n return null;\n}\nfunction getWebpackPluginOptions(honeybadgerNextJsConfig) {\n var _a, _b, _c;\n const apiKey = ((_a = honeybadgerNextJsConfig.webpackPluginOptions) === null || _a === void 0 ? void 0 : _a.apiKey) || process.env.NEXT_PUBLIC_HONEYBADGER_API_KEY;\n const assetsUrl = ((_b = honeybadgerNextJsConfig.webpackPluginOptions) === null || _b === void 0 ? void 0 : _b.assetsUrl) || process.env.NEXT_PUBLIC_HONEYBADGER_ASSETS_URL;\n if (!apiKey || !assetsUrl) {\n log('error', 'Missing Honeybadger required configuration for webpack plugin. Source maps will not be uploaded to Honeybadger.');\n return null;\n }\n return {\n ...honeybadgerNextJsConfig.webpackPluginOptions,\n apiKey,\n assetsUrl,\n revision: ((_c = honeybadgerNextJsConfig.webpackPluginOptions) === null || _c === void 0 ? void 0 : _c.revision) || process.env.NEXT_PUBLIC_HONEYBADGER_REVISION,\n silent: _silent,\n };\n}\nexport function setupHoneybadger(config, honeybadgerNextJsConfig) {\n var _a;\n if (!honeybadgerNextJsConfig) {\n honeybadgerNextJsConfig = {\n silent: true,\n disableSourceMapUpload: false,\n };\n }\n _silent = (_a = honeybadgerNextJsConfig.silent) !== null && _a !== void 0 ? _a : true;\n return {\n ...config,\n webpack: mergeWithExistingWebpackConfig(config.webpack, honeybadgerNextJsConfig)\n };\n}\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"honeybadger-nextjs.esm.js","sources":["../../build/index.js"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport HoneybadgerSourceMapPlugin from '@honeybadger-io/webpack';\nconst URL_DOCS_SOURCE_MAPS_UPLOAD = 'https://docs.honeybadger.io/lib/javascript/integration/nextjs/#source-map-upload-and-tracking-deploys';\nlet _silent = true;\nfunction log(type, msg) {\n if (['error', 'warn'].includes(type) || !_silent) {\n console[type]('[HoneybadgerNextJs]', msg);\n }\n}\nfunction shouldUploadSourceMaps(honeybadgerNextJsConfig, context) {\n const { dev } = context;\n if (honeybadgerNextJsConfig.disableSourceMapUpload) {\n return false;\n }\n if (!honeybadgerNextJsConfig.webpackPluginOptions || !honeybadgerNextJsConfig.webpackPluginOptions.apiKey) {\n log('warn', `skipping source map upload; here's how to enable: ${URL_DOCS_SOURCE_MAPS_UPLOAD}`);\n return false;\n }\n if (dev || process.env.NODE_ENV === 'development') {\n return false;\n }\n return true;\n}\nfunction mergeWithExistingWebpackConfig(nextJsWebpackConfig, honeybadgerNextJsConfig) {\n return function webpackFunctionMergedWithHb(webpackConfig, context) {\n const { isServer, dir: projectDir, nextRuntime } = context;\n const configType = isServer ? (nextRuntime === 'edge' ? 'edge' : 'server') : 'browser';\n log('debug', `reached webpackFunctionMergedWithHb isServer[${isServer}] configType[${configType}]`);\n let result = { ...webpackConfig };\n if (typeof nextJsWebpackConfig === 'function') {\n result = nextJsWebpackConfig(result, context);\n }\n const originalEntry = result.entry;\n result.entry = async () => injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType);\n if (shouldUploadSourceMaps(honeybadgerNextJsConfig, context)) {\n // `result.devtool` must be 'hidden-source-map' or 'source-map' to properly pass sourcemaps.\n // Next.js uses regular `source-map` which doesnt pass its sourcemaps to Webpack.\n // https://github.com/vercel/next.js/blob/89ec21ed686dd79a5770b5c669abaff8f55d8fef/packages/next/build/webpack/config/blocks/base.ts#L40\n // Use the hidden-source-map option when you don't want the source maps to be\n // publicly available on the servers, only to the error reporting\n result.devtool = 'hidden-source-map';\n if (!result.plugins) {\n result.plugins = [];\n }\n const options = getWebpackPluginOptions(honeybadgerNextJsConfig);\n if (options) {\n result.plugins.push(new HoneybadgerSourceMapPlugin(options));\n }\n }\n return result;\n };\n}\nasync function injectHoneybadgerConfigToEntry(originalEntry, projectDir, configType) {\n const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry };\n const hbConfigFile = getHoneybadgerConfigFile(projectDir, configType);\n if (!hbConfigFile) {\n return result;\n }\n const hbConfigFileRelativePath = `./${hbConfigFile}`;\n if (!Object.keys(result).length) {\n log('debug', `no entry points for configType[${configType}]`);\n }\n for (const entryName in result) {\n addHoneybadgerConfigToEntry(result, entryName, hbConfigFileRelativePath, configType);\n }\n return result;\n}\nfunction addHoneybadgerConfigToEntry(entry, entryName, hbConfigFile, configType) {\n log('debug', `adding entry[${entryName}] to configType[${configType}]`);\n switch (configType) {\n case 'server':\n if (!entryName.startsWith('pages/')) {\n return;\n }\n break;\n case 'browser':\n if (!['pages/_app', 'main-app'].includes(entryName)) {\n return;\n }\n break;\n case 'edge':\n // nothing?\n break;\n }\n const currentEntryPoint = entry[entryName];\n let newEntryPoint = currentEntryPoint;\n if (typeof currentEntryPoint === 'string') {\n newEntryPoint = [hbConfigFile, currentEntryPoint];\n }\n else if (Array.isArray(currentEntryPoint)) {\n newEntryPoint = [hbConfigFile, ...currentEntryPoint];\n } // descriptor object (webpack 5+)\n else if (typeof currentEntryPoint === 'object' && currentEntryPoint && 'import' in currentEntryPoint) {\n const currentImportValue = currentEntryPoint['import'];\n const newImportValue = [hbConfigFile];\n if (typeof currentImportValue === 'string') {\n newImportValue.push(currentImportValue);\n }\n else {\n newImportValue.push(...(currentImportValue));\n }\n newEntryPoint = {\n ...currentEntryPoint,\n import: newImportValue,\n };\n }\n else {\n log('error', 'Could not inject Honeybadger config to entry point: ' + JSON.stringify(currentEntryPoint, null, 2));\n }\n entry[entryName] = newEntryPoint;\n}\nfunction getHoneybadgerConfigFile(projectDir, configType) {\n const possibilities = [`honeybadger.${configType}.config.ts`, `honeybadger.${configType}.config.js`];\n for (const filename of possibilities) {\n if (fs.existsSync(path.resolve(projectDir, filename))) {\n return filename;\n }\n }\n log('debug', `could not find config file in ${projectDir} for ${configType}`);\n return null;\n}\nfunction getWebpackPluginOptions(honeybadgerNextJsConfig) {\n var _a, _b, _c;\n const apiKey = ((_a = honeybadgerNextJsConfig.webpackPluginOptions) === null || _a === void 0 ? void 0 : _a.apiKey) || process.env.NEXT_PUBLIC_HONEYBADGER_API_KEY;\n const assetsUrl = ((_b = honeybadgerNextJsConfig.webpackPluginOptions) === null || _b === void 0 ? void 0 : _b.assetsUrl) || process.env.NEXT_PUBLIC_HONEYBADGER_ASSETS_URL;\n if (!apiKey || !assetsUrl) {\n log('error', 'Missing Honeybadger required configuration for webpack plugin. Source maps will not be uploaded to Honeybadger.');\n return null;\n }\n return {\n ...honeybadgerNextJsConfig.webpackPluginOptions,\n apiKey,\n assetsUrl,\n revision: ((_c = honeybadgerNextJsConfig.webpackPluginOptions) === null || _c === void 0 ? void 0 : _c.revision) || process.env.NEXT_PUBLIC_HONEYBADGER_REVISION,\n silent: _silent,\n };\n}\nfunction getNextJsVersionInstalled() {\n var _a;\n try {\n return (_a = require('next/package.json').version) === null || _a === void 0 ? void 0 : _a.split('.');\n }\n catch (e) {\n return null;\n }\n}\n/**\n * NextJs will report a warning if the `serverExternalPackages` option is not present.\n * This is because @honeybadger-io/js will try to require configuration files dynamically (https://github.com/honeybadger-io/honeybadger-js/pull/1268).\n *\n * First reported here: https://github.com/honeybadger-io/honeybadger-js/issues/1351\n */\nfunction addServerExternalPackagesOption(config) {\n var _a, _b;\n // this should be available in the upcoming version of Next.js (14.3.0)\n if (config.serverExternalPackages && Array.isArray(config.serverExternalPackages)) {\n log('debug', 'adding @honeybadger-io/js to serverExternalPackages');\n config.serverExternalPackages.push('@honeybadger-io/js');\n return;\n }\n if (((_a = config.experimental) === null || _a === void 0 ? void 0 : _a.serverComponentsExternalPackages) && Array.isArray((_b = config.experimental) === null || _b === void 0 ? void 0 : _b.serverComponentsExternalPackages)) {\n log('debug', 'adding @honeybadger-io/js to experimental.serverComponentsExternalPackages');\n config.experimental.serverComponentsExternalPackages.push('@honeybadger-io/js');\n return;\n }\n const nextJsVersion = getNextJsVersionInstalled();\n if (nextJsVersion) {\n if (+nextJsVersion[0] >= 14 && +nextJsVersion[1] >= 3) {\n log('debug', 'adding serverExternalPackages option with value [\"@honeybadger-io/js\"]');\n config.serverExternalPackages = ['@honeybadger-io/js'];\n }\n else {\n log('debug', 'adding experimental.serverComponentsExternalPackages option with value [\"@honeybadger-io/js\"]');\n if (!config.experimental) {\n config.experimental = {};\n }\n config.experimental.serverComponentsExternalPackages = ['@honeybadger-io/js'];\n }\n }\n}\nexport function setupHoneybadger(config, honeybadgerNextJsConfig) {\n var _a;\n if (!honeybadgerNextJsConfig) {\n honeybadgerNextJsConfig = {\n silent: true,\n disableSourceMapUpload: false,\n };\n }\n _silent = (_a = honeybadgerNextJsConfig.silent) !== null && _a !== void 0 ? _a : true;\n addServerExternalPackagesOption(config);\n return {\n ...config,\n webpack: mergeWithExistingWebpackConfig(config.webpack, honeybadgerNextJsConfig)\n };\n}\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@honeybadger-io/nextjs",
3
- "version": "5.8.14",
3
+ "version": "5.9.2",
4
4
  "description": "Next.js integration for Honeybadger",
5
5
  "keywords": [
6
6
  "nextjs",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@honeybadger-io/js": "^6.9.1",
45
- "@honeybadger-io/webpack": "^6.1.1"
45
+ "@honeybadger-io/webpack": "^6.2.0"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@honeybadger-io/react": "^6.1.21",
@@ -63,5 +63,5 @@
63
63
  "publishConfig": {
64
64
  "access": "public"
65
65
  },
66
- "gitHead": "3c161af7e8437a3cdd78bbe44bf45f28e75327e1"
66
+ "gitHead": "1ee0a9ffcba28b89bae06a84cfa0ebe4d9b39612"
67
67
  }
package/src/index.ts CHANGED
@@ -67,13 +67,13 @@ function mergeWithExistingWebpackConfig(nextJsWebpackConfig, honeybadgerNextJsCo
67
67
  }
68
68
 
69
69
  async function injectHoneybadgerConfigToEntry(originalEntry, projectDir: string, configType: NextJsRuntime) {
70
+ const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry }
70
71
  const hbConfigFile = getHoneybadgerConfigFile(projectDir, configType)
71
72
  if (!hbConfigFile) {
72
- return originalEntry
73
+ return result
73
74
  }
74
75
 
75
76
  const hbConfigFileRelativePath = `./${hbConfigFile}`
76
- const result = typeof originalEntry === 'function' ? await originalEntry() : { ...originalEntry }
77
77
  if (!Object.keys(result).length) {
78
78
  log('debug', `no entry points for configType[${configType}]`)
79
79
  }
@@ -165,6 +165,50 @@ function getWebpackPluginOptions(honeybadgerNextJsConfig: HoneybadgerNextJsConfi
165
165
  }
166
166
  }
167
167
 
168
+ function getNextJsVersionInstalled(): [major: string, minor: string, patch: string] | null {
169
+ try {
170
+ return require('next/package.json').version?.split('.')
171
+ } catch (e) {
172
+ return null
173
+ }
174
+ }
175
+
176
+ /**
177
+ * NextJs will report a warning if the `serverExternalPackages` option is not present.
178
+ * This is because @honeybadger-io/js will try to require configuration files dynamically (https://github.com/honeybadger-io/honeybadger-js/pull/1268).
179
+ *
180
+ * First reported here: https://github.com/honeybadger-io/honeybadger-js/issues/1351
181
+ */
182
+ function addServerExternalPackagesOption(config) {
183
+ // this should be available in the upcoming version of Next.js (14.3.0)
184
+ if (config.serverExternalPackages && Array.isArray(config.serverExternalPackages)) {
185
+ log('debug', 'adding @honeybadger-io/js to serverExternalPackages')
186
+ config.serverExternalPackages.push('@honeybadger-io/js')
187
+ return
188
+ }
189
+
190
+ if (config.experimental?.serverComponentsExternalPackages && Array.isArray(config.experimental?.serverComponentsExternalPackages)) {
191
+ log('debug', 'adding @honeybadger-io/js to experimental.serverComponentsExternalPackages')
192
+ config.experimental.serverComponentsExternalPackages.push('@honeybadger-io/js')
193
+ return
194
+ }
195
+
196
+ const nextJsVersion = getNextJsVersionInstalled();
197
+ if (nextJsVersion) {
198
+ if (+nextJsVersion[0] >= 14 && +nextJsVersion[1] >= 3) {
199
+ log('debug', 'adding serverExternalPackages option with value ["@honeybadger-io/js"]')
200
+ config.serverExternalPackages = ['@honeybadger-io/js']
201
+ }
202
+ else {
203
+ log('debug', 'adding experimental.serverComponentsExternalPackages option with value ["@honeybadger-io/js"]')
204
+ if (!config.experimental) {
205
+ config.experimental = {}
206
+ }
207
+ config.experimental.serverComponentsExternalPackages = ['@honeybadger-io/js']
208
+ }
209
+ }
210
+ }
211
+
168
212
  export function setupHoneybadger(config, honeybadgerNextJsConfig?: HoneybadgerNextJsConfig) {
169
213
  if (!honeybadgerNextJsConfig) {
170
214
  honeybadgerNextJsConfig = {
@@ -175,6 +219,8 @@ export function setupHoneybadger(config, honeybadgerNextJsConfig?: HoneybadgerNe
175
219
 
176
220
  _silent = honeybadgerNextJsConfig.silent ?? true
177
221
 
222
+ addServerExternalPackagesOption(config)
223
+
178
224
  return {
179
225
  ...config,
180
226
  webpack: mergeWithExistingWebpackConfig(config.webpack, honeybadgerNextJsConfig)