@posthog/nextjs-config 1.0.1 → 1.0.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.
package/lib/index.cjs CHANGED
@@ -4,17 +4,57 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var child_process = require('child_process');
6
6
  var path = require('path');
7
+ var fs = require('fs');
7
8
 
8
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
10
 
10
11
  var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
12
+ var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
13
+
14
+ function resolveBinaryPath(envPath, cwd, binName) {
15
+ const envLocations = envPath.split(path__default["default"].delimiter);
16
+ const localLocations = buildLocalBinaryPaths(cwd);
17
+ const directories = [...new Set([...envLocations, ...localLocations])];
18
+ for (const directory of directories) {
19
+ const binaryPath = path__default["default"].join(directory, binName);
20
+ if (fs__default["default"].existsSync(binaryPath)) {
21
+ return binaryPath;
22
+ }
23
+ }
24
+ throw new Error(`Binary ${binName} not found`);
25
+ }
26
+ const buildLocalBinaryPaths = cwd => {
27
+ const localPaths = getLocalPaths(path__default["default"].resolve(cwd)).map(localPath => path__default["default"].join(localPath, 'node_modules/.bin'));
28
+ return localPaths;
29
+ };
30
+ const getLocalPaths = startPath => {
31
+ const paths = [];
32
+ let currentPath = startPath;
33
+ while (true) {
34
+ paths.push(currentPath);
35
+ const parentPath = path__default["default"].resolve(currentPath, '..');
36
+ // If we've reached the root directory, stop
37
+ if (parentPath === currentPath) {
38
+ break;
39
+ }
40
+ currentPath = parentPath;
41
+ }
42
+ return paths;
43
+ };
11
44
 
12
45
  class SourcemapWebpackPlugin {
13
- constructor(posthogOptions, isServer, nextRuntime) {
46
+ constructor(posthogOptions, isServer, nextRuntime, distDir) {
14
47
  this.posthogOptions = posthogOptions;
15
48
  this.isServer = isServer;
16
49
  this.nextRuntime = nextRuntime;
17
- this.directory = this.isServer ? `./.next/server` : `./.next/static/chunks`;
50
+ const resolvedDistDir = path__default["default"].resolve(distDir ?? '.next');
51
+ if (!this.posthogOptions.personalApiKey) {
52
+ throw new Error(`Personal API key not provided. If you are using turbo, make sure to add env variables to your turbo config`);
53
+ }
54
+ if (!this.posthogOptions.envId) {
55
+ throw new Error(`Environment ID not provided. If you are using turbo, make sure to add env variables to your turbo config`);
56
+ }
57
+ this.directory = this.isServer ? path__default["default"].join(resolvedDistDir, 'server') : path__default["default"].join(resolvedDistDir, 'static/chunks');
18
58
  }
19
59
  apply(compiler) {
20
60
  if (this.nextRuntime === 'edge') {
@@ -70,10 +110,19 @@ class SourcemapWebpackPlugin {
70
110
  }
71
111
  }
72
112
  async function callPosthogCli(args, env, verbose) {
73
- const cwd = path__default["default"].resolve('.');
74
- const child = child_process.spawn('posthog-cli', [...args], {
113
+ let binaryLocation;
114
+ try {
115
+ binaryLocation = resolveBinaryPath(process.env.PATH ?? '', __dirname, 'posthog-cli');
116
+ } catch (e) {
117
+ throw new Error(`Binary ${e} not found. Make sure postinstall script has been allowed for @posthog/cli`);
118
+ }
119
+ if (verbose) {
120
+ console.log('running posthog-cli from ', binaryLocation);
121
+ }
122
+ const child = child_process.spawn(binaryLocation, [...args], {
75
123
  stdio: verbose ? 'inherit' : 'ignore',
76
- env: addLocalPath(env ?? process.env, cwd)
124
+ env,
125
+ cwd: process.cwd()
77
126
  });
78
127
  await new Promise((resolve, reject) => {
79
128
  child.on('close', code => {
@@ -88,19 +137,6 @@ async function callPosthogCli(args, env, verbose) {
88
137
  });
89
138
  });
90
139
  }
91
- const addLocalPath = ({
92
- Path = '',
93
- PATH = Path,
94
- ...env
95
- }, cwd) => {
96
- const pathParts = PATH.split(path__default["default"].delimiter);
97
- const localPaths = getLocalPaths([], path__default["default"].resolve(cwd)).map(localPath => path__default["default"].join(localPath, 'node_modules/.bin')).filter(localPath => !pathParts.includes(localPath));
98
- return {
99
- ...env,
100
- PATH: [...localPaths, PATH].filter(Boolean).join(path__default["default"].delimiter)
101
- };
102
- };
103
- const getLocalPaths = (localPaths, localPath) => localPaths.at(-1) === localPath ? localPaths : getLocalPaths([...localPaths, localPath], path__default["default"].resolve(localPath, '..'));
104
140
 
105
141
  function withPostHogConfig(userNextConfig, posthogConfig) {
106
142
  const posthogNextConfigComplete = resolvePostHogConfig(posthogConfig);
@@ -109,12 +145,14 @@ function withPostHogConfig(userNextConfig, posthogConfig) {
109
145
  }) => {
110
146
  const {
111
147
  webpack: userWebPackConfig,
148
+ distDir,
112
149
  ...userConfig
113
150
  } = await resolveUserConfig(userNextConfig, phase, defaultConfig);
114
151
  const defaultWebpackConfig = userWebPackConfig || (config => config);
115
152
  const sourceMapEnabled = posthogNextConfigComplete.sourcemaps.enabled;
116
153
  return {
117
154
  ...userConfig,
155
+ distDir,
118
156
  productionBrowserSourceMaps: sourceMapEnabled,
119
157
  webpack: (config, options) => {
120
158
  const webpackConfig = defaultWebpackConfig(config, options);
@@ -123,7 +161,7 @@ function withPostHogConfig(userNextConfig, posthogConfig) {
123
161
  }
124
162
  if (sourceMapEnabled) {
125
163
  webpackConfig.plugins = webpackConfig.plugins || [];
126
- webpackConfig.plugins.push(new SourcemapWebpackPlugin(posthogNextConfigComplete, options.isServer, options.nextRuntime));
164
+ webpackConfig.plugins.push(new SourcemapWebpackPlugin(posthogNextConfigComplete, options.isServer, options.nextRuntime, distDir));
127
165
  }
128
166
  return webpackConfig;
129
167
  }
package/lib/index.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/webpack-plugin.ts","../src/config.ts"],"sourcesContent":["import { PostHogNextConfigComplete } from './config'\nimport { spawn } from 'child_process'\nimport path from 'path'\n\ntype NextRuntime = 'edge' | 'nodejs' | undefined\n\nexport class SourcemapWebpackPlugin {\n directory: string\n\n constructor(\n private posthogOptions: PostHogNextConfigComplete,\n private isServer: boolean,\n private nextRuntime: NextRuntime\n ) {\n this.directory = this.isServer ? `./.next/server` : `./.next/static/chunks`\n }\n\n apply(compiler: any): void {\n if (this.nextRuntime === 'edge') {\n // TODO: edge and nodejs runtime output files in the same location\n // to support edge runtime we need a way to pass a list of files to the cli\n return\n }\n\n const onDone = async (_: any, callback: any): Promise<void> => {\n callback = callback || (() => {})\n try {\n await this.runInject()\n await this.runUpload()\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : error\n return console.error('Error running PostHog sourcemap plugin:', errorMessage)\n }\n return callback()\n }\n\n if (compiler.hooks) {\n compiler.hooks.done.tapAsync('SourcemapWebpackPlugin', onDone)\n } else {\n compiler.plugin('done', onDone)\n }\n }\n\n async runInject(): Promise<void> {\n const cliOptions = []\n cliOptions.push('sourcemap', 'inject', '--directory', this.directory)\n await callPosthogCli(cliOptions, process.env, this.posthogOptions.verbose)\n }\n\n async runUpload(): Promise<void> {\n const cliOptions = []\n if (this.posthogOptions.host) {\n cliOptions.push('--host', this.posthogOptions.host)\n }\n cliOptions.push('sourcemap', 'upload')\n cliOptions.push('--directory', this.directory)\n if (this.posthogOptions.sourcemaps.project) {\n cliOptions.push('--project', this.posthogOptions.sourcemaps.project)\n }\n if (this.posthogOptions.sourcemaps.version) {\n cliOptions.push('--version', this.posthogOptions.sourcemaps.version)\n }\n if (this.posthogOptions.sourcemaps.deleteAfterUpload && !this.isServer) {\n cliOptions.push('--delete-after')\n }\n // Add env variables\n const envVars = {\n ...process.env,\n POSTHOG_CLI_TOKEN: this.posthogOptions.personalApiKey,\n POSTHOG_CLI_ENV_ID: this.posthogOptions.envId,\n }\n await callPosthogCli(cliOptions, envVars, this.posthogOptions.verbose)\n }\n}\n\nasync function callPosthogCli(args: string[], env: NodeJS.ProcessEnv, verbose: boolean): Promise<void> {\n const cwd = path.resolve('.')\n const child = spawn('posthog-cli', [...args], {\n stdio: verbose ? 'inherit' : 'ignore',\n env: addLocalPath(env ?? process.env, cwd),\n })\n\n await new Promise<void>((resolve, reject) => {\n child.on('close', (code) => {\n if (code === 0) {\n resolve()\n } else {\n reject(new Error(`Command failed with code ${code}`))\n }\n })\n\n child.on('error', (error) => {\n reject(error)\n })\n })\n}\n\nconst addLocalPath = ({ Path = '', PATH = Path, ...env }: NodeJS.ProcessEnv, cwd: string): NodeJS.ProcessEnv => {\n const pathParts = PATH.split(path.delimiter)\n const localPaths = getLocalPaths([], path.resolve(cwd))\n .map((localPath: string) => path.join(localPath, 'node_modules/.bin'))\n .filter((localPath: string) => !pathParts.includes(localPath))\n return { ...env, PATH: [...localPaths, PATH].filter(Boolean).join(path.delimiter) }\n}\n\nconst getLocalPaths = (localPaths: string[], localPath: string): string[] =>\n localPaths.at(-1) === localPath\n ? localPaths\n : getLocalPaths([...localPaths, localPath], path.resolve(localPath, '..'))\n","import type { NextConfig } from 'next'\nimport { SourcemapWebpackPlugin } from './webpack-plugin'\n\ntype NextFuncConfig = (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => NextConfig\ntype NextAsyncConfig = (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => Promise<NextConfig>\ntype UserProvidedConfig = NextConfig | NextFuncConfig | NextAsyncConfig\n\nexport type PostHogNextConfig = {\n personalApiKey: string\n envId: string\n host?: string\n verbose?: boolean\n sourcemaps?: {\n enabled?: boolean\n project?: string\n version?: string\n deleteAfterUpload?: boolean\n }\n}\n\nexport type PostHogNextConfigComplete = {\n personalApiKey: string\n envId: string\n host: string\n verbose: boolean\n sourcemaps: {\n enabled: boolean\n project?: string\n version?: string\n deleteAfterUpload: boolean\n }\n}\n\nexport function withPostHogConfig(userNextConfig: UserProvidedConfig, posthogConfig: PostHogNextConfig): NextConfig {\n const posthogNextConfigComplete = resolvePostHogConfig(posthogConfig)\n return async (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => {\n const { webpack: userWebPackConfig, ...userConfig } = await resolveUserConfig(userNextConfig, phase, defaultConfig)\n const defaultWebpackConfig = userWebPackConfig || ((config: any) => config)\n const sourceMapEnabled = posthogNextConfigComplete.sourcemaps.enabled\n return {\n ...userConfig,\n productionBrowserSourceMaps: sourceMapEnabled,\n webpack: (config: any, options: any) => {\n const webpackConfig = defaultWebpackConfig(config, options)\n if (webpackConfig && options.isServer && sourceMapEnabled) {\n webpackConfig.devtool = 'source-map'\n }\n if (sourceMapEnabled) {\n webpackConfig.plugins = webpackConfig.plugins || []\n webpackConfig.plugins.push(\n new SourcemapWebpackPlugin(posthogNextConfigComplete, options.isServer, options.nextRuntime)\n )\n }\n return webpackConfig\n },\n }\n }\n}\n\nfunction resolveUserConfig(\n userNextConfig: UserProvidedConfig,\n phase: string,\n defaultConfig: NextConfig\n): Promise<NextConfig> {\n if (typeof userNextConfig === 'function') {\n const maybePromise = userNextConfig(phase, { defaultConfig })\n if (maybePromise instanceof Promise) {\n return maybePromise\n } else {\n return Promise.resolve(maybePromise)\n }\n } else if (typeof userNextConfig === 'object') {\n return Promise.resolve(userNextConfig)\n } else {\n throw new Error('Invalid user config')\n }\n}\n\nfunction resolvePostHogConfig(posthogProvidedConfig: PostHogNextConfig): PostHogNextConfigComplete {\n const { personalApiKey, envId, host, verbose, sourcemaps = {} } = posthogProvidedConfig\n return {\n personalApiKey,\n envId,\n host: host ?? 'https://us.posthog.com',\n verbose: verbose ?? true,\n sourcemaps: {\n enabled: sourcemaps.enabled ?? process.env.NODE_ENV == 'production',\n project: sourcemaps.project,\n version: sourcemaps.version,\n deleteAfterUpload: sourcemaps.deleteAfterUpload ?? true,\n },\n }\n}\n"],"names":["SourcemapWebpackPlugin","constructor","posthogOptions","isServer","nextRuntime","directory","apply","compiler","onDone","_","callback","runInject","runUpload","error","errorMessage","Error","message","console","hooks","done","tapAsync","plugin","cliOptions","push","callPosthogCli","process","env","verbose","host","sourcemaps","project","version","deleteAfterUpload","envVars","POSTHOG_CLI_TOKEN","personalApiKey","POSTHOG_CLI_ENV_ID","envId","args","cwd","path","resolve","child","spawn","stdio","addLocalPath","Promise","reject","on","code","Path","PATH","pathParts","split","delimiter","localPaths","getLocalPaths","map","localPath","join","filter","includes","Boolean","at","withPostHogConfig","userNextConfig","posthogConfig","posthogNextConfigComplete","resolvePostHogConfig","phase","defaultConfig","webpack","userWebPackConfig","userConfig","resolveUserConfig","defaultWebpackConfig","config","sourceMapEnabled","enabled","productionBrowserSourceMaps","options","webpackConfig","devtool","plugins","maybePromise","posthogProvidedConfig","NODE_ENV"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/utils.ts","../src/webpack-plugin.ts","../src/config.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs'\n\nexport function resolveBinaryPath(envPath: string, cwd: string, binName: string): string {\n const envLocations = envPath.split(path.delimiter)\n const localLocations = buildLocalBinaryPaths(cwd)\n const directories = [...new Set([...envLocations, ...localLocations])]\n for (const directory of directories) {\n const binaryPath = path.join(directory, binName)\n if (fs.existsSync(binaryPath)) {\n return binaryPath\n }\n }\n throw new Error(`Binary ${binName} not found`)\n}\n\nexport const buildLocalBinaryPaths = (cwd: string): string[] => {\n const localPaths = getLocalPaths(path.resolve(cwd)).map((localPath: string) =>\n path.join(localPath, 'node_modules/.bin')\n )\n return localPaths\n}\n\nconst getLocalPaths = (startPath: string): string[] => {\n const paths: string[] = []\n let currentPath = startPath\n\n while (true) {\n paths.push(currentPath)\n const parentPath = path.resolve(currentPath, '..')\n\n // If we've reached the root directory, stop\n if (parentPath === currentPath) {\n break\n }\n\n currentPath = parentPath\n }\n\n return paths\n}\n","import { PostHogNextConfigComplete } from './config'\nimport { spawn } from 'child_process'\nimport path from 'path'\nimport { resolveBinaryPath } from './utils'\n\ntype NextRuntime = 'edge' | 'nodejs' | undefined\n\nexport class SourcemapWebpackPlugin {\n directory: string\n\n constructor(\n private posthogOptions: PostHogNextConfigComplete,\n private isServer: boolean,\n private nextRuntime: NextRuntime,\n distDir?: string\n ) {\n const resolvedDistDir = path.resolve(distDir ?? '.next')\n if (!this.posthogOptions.personalApiKey) {\n throw new Error(\n `Personal API key not provided. If you are using turbo, make sure to add env variables to your turbo config`\n )\n }\n if (!this.posthogOptions.envId) {\n throw new Error(\n `Environment ID not provided. If you are using turbo, make sure to add env variables to your turbo config`\n )\n }\n this.directory = this.isServer ? path.join(resolvedDistDir, 'server') : path.join(resolvedDistDir, 'static/chunks')\n }\n\n apply(compiler: any): void {\n if (this.nextRuntime === 'edge') {\n // TODO: edge and nodejs runtime output files in the same location\n // to support edge runtime we need a way to pass a list of files to the cli\n return\n }\n\n const onDone = async (_: any, callback: any): Promise<void> => {\n callback = callback || (() => {})\n try {\n await this.runInject()\n await this.runUpload()\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : error\n return console.error('Error running PostHog sourcemap plugin:', errorMessage)\n }\n return callback()\n }\n\n if (compiler.hooks) {\n compiler.hooks.done.tapAsync('SourcemapWebpackPlugin', onDone)\n } else {\n compiler.plugin('done', onDone)\n }\n }\n\n async runInject(): Promise<void> {\n const cliOptions = []\n cliOptions.push('sourcemap', 'inject', '--directory', this.directory)\n await callPosthogCli(cliOptions, process.env, this.posthogOptions.verbose)\n }\n\n async runUpload(): Promise<void> {\n const cliOptions = []\n if (this.posthogOptions.host) {\n cliOptions.push('--host', this.posthogOptions.host)\n }\n cliOptions.push('sourcemap', 'upload')\n cliOptions.push('--directory', this.directory)\n if (this.posthogOptions.sourcemaps.project) {\n cliOptions.push('--project', this.posthogOptions.sourcemaps.project)\n }\n if (this.posthogOptions.sourcemaps.version) {\n cliOptions.push('--version', this.posthogOptions.sourcemaps.version)\n }\n if (this.posthogOptions.sourcemaps.deleteAfterUpload && !this.isServer) {\n cliOptions.push('--delete-after')\n }\n // Add env variables\n const envVars = {\n ...process.env,\n POSTHOG_CLI_TOKEN: this.posthogOptions.personalApiKey,\n POSTHOG_CLI_ENV_ID: this.posthogOptions.envId,\n }\n await callPosthogCli(cliOptions, envVars, this.posthogOptions.verbose)\n }\n}\n\nasync function callPosthogCli(args: string[], env: NodeJS.ProcessEnv, verbose: boolean): Promise<void> {\n let binaryLocation\n try {\n binaryLocation = resolveBinaryPath(process.env.PATH ?? '', __dirname, 'posthog-cli')\n } catch (e) {\n throw new Error(`Binary ${e} not found. Make sure postinstall script has been allowed for @posthog/cli`)\n }\n\n if (verbose) {\n console.log('running posthog-cli from ', binaryLocation)\n }\n\n const child = spawn(binaryLocation, [...args], {\n stdio: verbose ? 'inherit' : 'ignore',\n env,\n cwd: process.cwd(),\n })\n\n await new Promise<void>((resolve, reject) => {\n child.on('close', (code) => {\n if (code === 0) {\n resolve()\n } else {\n reject(new Error(`Command failed with code ${code}`))\n }\n })\n\n child.on('error', (error) => {\n reject(error)\n })\n })\n}\n","import type { NextConfig } from 'next'\nimport { SourcemapWebpackPlugin } from './webpack-plugin'\n\ntype NextFuncConfig = (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => NextConfig\ntype NextAsyncConfig = (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => Promise<NextConfig>\ntype UserProvidedConfig = NextConfig | NextFuncConfig | NextAsyncConfig\n\nexport type PostHogNextConfig = {\n personalApiKey: string\n envId: string\n host?: string\n verbose?: boolean\n sourcemaps?: {\n enabled?: boolean\n project?: string\n version?: string\n deleteAfterUpload?: boolean\n }\n}\n\nexport type PostHogNextConfigComplete = {\n personalApiKey: string\n envId: string\n host: string\n verbose: boolean\n sourcemaps: {\n enabled: boolean\n project?: string\n version?: string\n deleteAfterUpload: boolean\n }\n}\n\nexport function withPostHogConfig(userNextConfig: UserProvidedConfig, posthogConfig: PostHogNextConfig): NextConfig {\n const posthogNextConfigComplete = resolvePostHogConfig(posthogConfig)\n return async (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => {\n const {\n webpack: userWebPackConfig,\n distDir,\n ...userConfig\n } = await resolveUserConfig(userNextConfig, phase, defaultConfig)\n const defaultWebpackConfig = userWebPackConfig || ((config: any) => config)\n const sourceMapEnabled = posthogNextConfigComplete.sourcemaps.enabled\n return {\n ...userConfig,\n distDir,\n productionBrowserSourceMaps: sourceMapEnabled,\n webpack: (config: any, options: any) => {\n const webpackConfig = defaultWebpackConfig(config, options)\n if (webpackConfig && options.isServer && sourceMapEnabled) {\n webpackConfig.devtool = 'source-map'\n }\n if (sourceMapEnabled) {\n webpackConfig.plugins = webpackConfig.plugins || []\n webpackConfig.plugins.push(\n new SourcemapWebpackPlugin(posthogNextConfigComplete, options.isServer, options.nextRuntime, distDir)\n )\n }\n return webpackConfig\n },\n }\n }\n}\n\nfunction resolveUserConfig(\n userNextConfig: UserProvidedConfig,\n phase: string,\n defaultConfig: NextConfig\n): Promise<NextConfig> {\n if (typeof userNextConfig === 'function') {\n const maybePromise = userNextConfig(phase, { defaultConfig })\n if (maybePromise instanceof Promise) {\n return maybePromise\n } else {\n return Promise.resolve(maybePromise)\n }\n } else if (typeof userNextConfig === 'object') {\n return Promise.resolve(userNextConfig)\n } else {\n throw new Error('Invalid user config')\n }\n}\n\nfunction resolvePostHogConfig(posthogProvidedConfig: PostHogNextConfig): PostHogNextConfigComplete {\n const { personalApiKey, envId, host, verbose, sourcemaps = {} } = posthogProvidedConfig\n return {\n personalApiKey,\n envId,\n host: host ?? 'https://us.posthog.com',\n verbose: verbose ?? true,\n sourcemaps: {\n enabled: sourcemaps.enabled ?? process.env.NODE_ENV == 'production',\n project: sourcemaps.project,\n version: sourcemaps.version,\n deleteAfterUpload: sourcemaps.deleteAfterUpload ?? true,\n },\n }\n}\n"],"names":["resolveBinaryPath","envPath","cwd","binName","envLocations","split","path","delimiter","localLocations","buildLocalBinaryPaths","directories","Set","directory","binaryPath","join","fs","existsSync","Error","localPaths","getLocalPaths","resolve","map","localPath","startPath","paths","currentPath","push","parentPath","SourcemapWebpackPlugin","constructor","posthogOptions","isServer","nextRuntime","distDir","resolvedDistDir","personalApiKey","envId","apply","compiler","onDone","_","callback","runInject","runUpload","error","errorMessage","message","console","hooks","done","tapAsync","plugin","cliOptions","callPosthogCli","process","env","verbose","host","sourcemaps","project","version","deleteAfterUpload","envVars","POSTHOG_CLI_TOKEN","POSTHOG_CLI_ENV_ID","args","binaryLocation","PATH","__dirname","e","log","child","spawn","stdio","Promise","reject","on","code","withPostHogConfig","userNextConfig","posthogConfig","posthogNextConfigComplete","resolvePostHogConfig","phase","defaultConfig","webpack","userWebPackConfig","userConfig","resolveUserConfig","defaultWebpackConfig","config","sourceMapEnabled","enabled","productionBrowserSourceMaps","options","webpackConfig","devtool","plugins","maybePromise","posthogProvidedConfig","NODE_ENV"],"mappings":"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"}
package/lib/index.mjs CHANGED
@@ -1,12 +1,51 @@
1
1
  import { spawn } from 'child_process';
2
2
  import path from 'path';
3
+ import fs from 'fs';
4
+
5
+ function resolveBinaryPath(envPath, cwd, binName) {
6
+ const envLocations = envPath.split(path.delimiter);
7
+ const localLocations = buildLocalBinaryPaths(cwd);
8
+ const directories = [...new Set([...envLocations, ...localLocations])];
9
+ for (const directory of directories) {
10
+ const binaryPath = path.join(directory, binName);
11
+ if (fs.existsSync(binaryPath)) {
12
+ return binaryPath;
13
+ }
14
+ }
15
+ throw new Error(`Binary ${binName} not found`);
16
+ }
17
+ const buildLocalBinaryPaths = cwd => {
18
+ const localPaths = getLocalPaths(path.resolve(cwd)).map(localPath => path.join(localPath, 'node_modules/.bin'));
19
+ return localPaths;
20
+ };
21
+ const getLocalPaths = startPath => {
22
+ const paths = [];
23
+ let currentPath = startPath;
24
+ while (true) {
25
+ paths.push(currentPath);
26
+ const parentPath = path.resolve(currentPath, '..');
27
+ // If we've reached the root directory, stop
28
+ if (parentPath === currentPath) {
29
+ break;
30
+ }
31
+ currentPath = parentPath;
32
+ }
33
+ return paths;
34
+ };
3
35
 
4
36
  class SourcemapWebpackPlugin {
5
- constructor(posthogOptions, isServer, nextRuntime) {
37
+ constructor(posthogOptions, isServer, nextRuntime, distDir) {
6
38
  this.posthogOptions = posthogOptions;
7
39
  this.isServer = isServer;
8
40
  this.nextRuntime = nextRuntime;
9
- this.directory = this.isServer ? `./.next/server` : `./.next/static/chunks`;
41
+ const resolvedDistDir = path.resolve(distDir ?? '.next');
42
+ if (!this.posthogOptions.personalApiKey) {
43
+ throw new Error(`Personal API key not provided. If you are using turbo, make sure to add env variables to your turbo config`);
44
+ }
45
+ if (!this.posthogOptions.envId) {
46
+ throw new Error(`Environment ID not provided. If you are using turbo, make sure to add env variables to your turbo config`);
47
+ }
48
+ this.directory = this.isServer ? path.join(resolvedDistDir, 'server') : path.join(resolvedDistDir, 'static/chunks');
10
49
  }
11
50
  apply(compiler) {
12
51
  if (this.nextRuntime === 'edge') {
@@ -62,10 +101,19 @@ class SourcemapWebpackPlugin {
62
101
  }
63
102
  }
64
103
  async function callPosthogCli(args, env, verbose) {
65
- const cwd = path.resolve('.');
66
- const child = spawn('posthog-cli', [...args], {
104
+ let binaryLocation;
105
+ try {
106
+ binaryLocation = resolveBinaryPath(process.env.PATH ?? '', __dirname, 'posthog-cli');
107
+ } catch (e) {
108
+ throw new Error(`Binary ${e} not found. Make sure postinstall script has been allowed for @posthog/cli`);
109
+ }
110
+ if (verbose) {
111
+ console.log('running posthog-cli from ', binaryLocation);
112
+ }
113
+ const child = spawn(binaryLocation, [...args], {
67
114
  stdio: verbose ? 'inherit' : 'ignore',
68
- env: addLocalPath(env ?? process.env, cwd)
115
+ env,
116
+ cwd: process.cwd()
69
117
  });
70
118
  await new Promise((resolve, reject) => {
71
119
  child.on('close', code => {
@@ -80,19 +128,6 @@ async function callPosthogCli(args, env, verbose) {
80
128
  });
81
129
  });
82
130
  }
83
- const addLocalPath = ({
84
- Path = '',
85
- PATH = Path,
86
- ...env
87
- }, cwd) => {
88
- const pathParts = PATH.split(path.delimiter);
89
- const localPaths = getLocalPaths([], path.resolve(cwd)).map(localPath => path.join(localPath, 'node_modules/.bin')).filter(localPath => !pathParts.includes(localPath));
90
- return {
91
- ...env,
92
- PATH: [...localPaths, PATH].filter(Boolean).join(path.delimiter)
93
- };
94
- };
95
- const getLocalPaths = (localPaths, localPath) => localPaths.at(-1) === localPath ? localPaths : getLocalPaths([...localPaths, localPath], path.resolve(localPath, '..'));
96
131
 
97
132
  function withPostHogConfig(userNextConfig, posthogConfig) {
98
133
  const posthogNextConfigComplete = resolvePostHogConfig(posthogConfig);
@@ -101,12 +136,14 @@ function withPostHogConfig(userNextConfig, posthogConfig) {
101
136
  }) => {
102
137
  const {
103
138
  webpack: userWebPackConfig,
139
+ distDir,
104
140
  ...userConfig
105
141
  } = await resolveUserConfig(userNextConfig, phase, defaultConfig);
106
142
  const defaultWebpackConfig = userWebPackConfig || (config => config);
107
143
  const sourceMapEnabled = posthogNextConfigComplete.sourcemaps.enabled;
108
144
  return {
109
145
  ...userConfig,
146
+ distDir,
110
147
  productionBrowserSourceMaps: sourceMapEnabled,
111
148
  webpack: (config, options) => {
112
149
  const webpackConfig = defaultWebpackConfig(config, options);
@@ -115,7 +152,7 @@ function withPostHogConfig(userNextConfig, posthogConfig) {
115
152
  }
116
153
  if (sourceMapEnabled) {
117
154
  webpackConfig.plugins = webpackConfig.plugins || [];
118
- webpackConfig.plugins.push(new SourcemapWebpackPlugin(posthogNextConfigComplete, options.isServer, options.nextRuntime));
155
+ webpackConfig.plugins.push(new SourcemapWebpackPlugin(posthogNextConfigComplete, options.isServer, options.nextRuntime, distDir));
119
156
  }
120
157
  return webpackConfig;
121
158
  }
package/lib/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/webpack-plugin.ts","../src/config.ts"],"sourcesContent":["import { PostHogNextConfigComplete } from './config'\nimport { spawn } from 'child_process'\nimport path from 'path'\n\ntype NextRuntime = 'edge' | 'nodejs' | undefined\n\nexport class SourcemapWebpackPlugin {\n directory: string\n\n constructor(\n private posthogOptions: PostHogNextConfigComplete,\n private isServer: boolean,\n private nextRuntime: NextRuntime\n ) {\n this.directory = this.isServer ? `./.next/server` : `./.next/static/chunks`\n }\n\n apply(compiler: any): void {\n if (this.nextRuntime === 'edge') {\n // TODO: edge and nodejs runtime output files in the same location\n // to support edge runtime we need a way to pass a list of files to the cli\n return\n }\n\n const onDone = async (_: any, callback: any): Promise<void> => {\n callback = callback || (() => {})\n try {\n await this.runInject()\n await this.runUpload()\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : error\n return console.error('Error running PostHog sourcemap plugin:', errorMessage)\n }\n return callback()\n }\n\n if (compiler.hooks) {\n compiler.hooks.done.tapAsync('SourcemapWebpackPlugin', onDone)\n } else {\n compiler.plugin('done', onDone)\n }\n }\n\n async runInject(): Promise<void> {\n const cliOptions = []\n cliOptions.push('sourcemap', 'inject', '--directory', this.directory)\n await callPosthogCli(cliOptions, process.env, this.posthogOptions.verbose)\n }\n\n async runUpload(): Promise<void> {\n const cliOptions = []\n if (this.posthogOptions.host) {\n cliOptions.push('--host', this.posthogOptions.host)\n }\n cliOptions.push('sourcemap', 'upload')\n cliOptions.push('--directory', this.directory)\n if (this.posthogOptions.sourcemaps.project) {\n cliOptions.push('--project', this.posthogOptions.sourcemaps.project)\n }\n if (this.posthogOptions.sourcemaps.version) {\n cliOptions.push('--version', this.posthogOptions.sourcemaps.version)\n }\n if (this.posthogOptions.sourcemaps.deleteAfterUpload && !this.isServer) {\n cliOptions.push('--delete-after')\n }\n // Add env variables\n const envVars = {\n ...process.env,\n POSTHOG_CLI_TOKEN: this.posthogOptions.personalApiKey,\n POSTHOG_CLI_ENV_ID: this.posthogOptions.envId,\n }\n await callPosthogCli(cliOptions, envVars, this.posthogOptions.verbose)\n }\n}\n\nasync function callPosthogCli(args: string[], env: NodeJS.ProcessEnv, verbose: boolean): Promise<void> {\n const cwd = path.resolve('.')\n const child = spawn('posthog-cli', [...args], {\n stdio: verbose ? 'inherit' : 'ignore',\n env: addLocalPath(env ?? process.env, cwd),\n })\n\n await new Promise<void>((resolve, reject) => {\n child.on('close', (code) => {\n if (code === 0) {\n resolve()\n } else {\n reject(new Error(`Command failed with code ${code}`))\n }\n })\n\n child.on('error', (error) => {\n reject(error)\n })\n })\n}\n\nconst addLocalPath = ({ Path = '', PATH = Path, ...env }: NodeJS.ProcessEnv, cwd: string): NodeJS.ProcessEnv => {\n const pathParts = PATH.split(path.delimiter)\n const localPaths = getLocalPaths([], path.resolve(cwd))\n .map((localPath: string) => path.join(localPath, 'node_modules/.bin'))\n .filter((localPath: string) => !pathParts.includes(localPath))\n return { ...env, PATH: [...localPaths, PATH].filter(Boolean).join(path.delimiter) }\n}\n\nconst getLocalPaths = (localPaths: string[], localPath: string): string[] =>\n localPaths.at(-1) === localPath\n ? localPaths\n : getLocalPaths([...localPaths, localPath], path.resolve(localPath, '..'))\n","import type { NextConfig } from 'next'\nimport { SourcemapWebpackPlugin } from './webpack-plugin'\n\ntype NextFuncConfig = (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => NextConfig\ntype NextAsyncConfig = (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => Promise<NextConfig>\ntype UserProvidedConfig = NextConfig | NextFuncConfig | NextAsyncConfig\n\nexport type PostHogNextConfig = {\n personalApiKey: string\n envId: string\n host?: string\n verbose?: boolean\n sourcemaps?: {\n enabled?: boolean\n project?: string\n version?: string\n deleteAfterUpload?: boolean\n }\n}\n\nexport type PostHogNextConfigComplete = {\n personalApiKey: string\n envId: string\n host: string\n verbose: boolean\n sourcemaps: {\n enabled: boolean\n project?: string\n version?: string\n deleteAfterUpload: boolean\n }\n}\n\nexport function withPostHogConfig(userNextConfig: UserProvidedConfig, posthogConfig: PostHogNextConfig): NextConfig {\n const posthogNextConfigComplete = resolvePostHogConfig(posthogConfig)\n return async (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => {\n const { webpack: userWebPackConfig, ...userConfig } = await resolveUserConfig(userNextConfig, phase, defaultConfig)\n const defaultWebpackConfig = userWebPackConfig || ((config: any) => config)\n const sourceMapEnabled = posthogNextConfigComplete.sourcemaps.enabled\n return {\n ...userConfig,\n productionBrowserSourceMaps: sourceMapEnabled,\n webpack: (config: any, options: any) => {\n const webpackConfig = defaultWebpackConfig(config, options)\n if (webpackConfig && options.isServer && sourceMapEnabled) {\n webpackConfig.devtool = 'source-map'\n }\n if (sourceMapEnabled) {\n webpackConfig.plugins = webpackConfig.plugins || []\n webpackConfig.plugins.push(\n new SourcemapWebpackPlugin(posthogNextConfigComplete, options.isServer, options.nextRuntime)\n )\n }\n return webpackConfig\n },\n }\n }\n}\n\nfunction resolveUserConfig(\n userNextConfig: UserProvidedConfig,\n phase: string,\n defaultConfig: NextConfig\n): Promise<NextConfig> {\n if (typeof userNextConfig === 'function') {\n const maybePromise = userNextConfig(phase, { defaultConfig })\n if (maybePromise instanceof Promise) {\n return maybePromise\n } else {\n return Promise.resolve(maybePromise)\n }\n } else if (typeof userNextConfig === 'object') {\n return Promise.resolve(userNextConfig)\n } else {\n throw new Error('Invalid user config')\n }\n}\n\nfunction resolvePostHogConfig(posthogProvidedConfig: PostHogNextConfig): PostHogNextConfigComplete {\n const { personalApiKey, envId, host, verbose, sourcemaps = {} } = posthogProvidedConfig\n return {\n personalApiKey,\n envId,\n host: host ?? 'https://us.posthog.com',\n verbose: verbose ?? true,\n sourcemaps: {\n enabled: sourcemaps.enabled ?? process.env.NODE_ENV == 'production',\n project: sourcemaps.project,\n version: sourcemaps.version,\n deleteAfterUpload: sourcemaps.deleteAfterUpload ?? true,\n },\n }\n}\n"],"names":["SourcemapWebpackPlugin","constructor","posthogOptions","isServer","nextRuntime","directory","apply","compiler","onDone","_","callback","runInject","runUpload","error","errorMessage","Error","message","console","hooks","done","tapAsync","plugin","cliOptions","push","callPosthogCli","process","env","verbose","host","sourcemaps","project","version","deleteAfterUpload","envVars","POSTHOG_CLI_TOKEN","personalApiKey","POSTHOG_CLI_ENV_ID","envId","args","cwd","path","resolve","child","spawn","stdio","addLocalPath","Promise","reject","on","code","Path","PATH","pathParts","split","delimiter","localPaths","getLocalPaths","map","localPath","join","filter","includes","Boolean","at","withPostHogConfig","userNextConfig","posthogConfig","posthogNextConfigComplete","resolvePostHogConfig","phase","defaultConfig","webpack","userWebPackConfig","userConfig","resolveUserConfig","defaultWebpackConfig","config","sourceMapEnabled","enabled","productionBrowserSourceMaps","options","webpackConfig","devtool","plugins","maybePromise","posthogProvidedConfig","NODE_ENV"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/utils.ts","../src/webpack-plugin.ts","../src/config.ts"],"sourcesContent":["import path from 'path'\nimport fs from 'fs'\n\nexport function resolveBinaryPath(envPath: string, cwd: string, binName: string): string {\n const envLocations = envPath.split(path.delimiter)\n const localLocations = buildLocalBinaryPaths(cwd)\n const directories = [...new Set([...envLocations, ...localLocations])]\n for (const directory of directories) {\n const binaryPath = path.join(directory, binName)\n if (fs.existsSync(binaryPath)) {\n return binaryPath\n }\n }\n throw new Error(`Binary ${binName} not found`)\n}\n\nexport const buildLocalBinaryPaths = (cwd: string): string[] => {\n const localPaths = getLocalPaths(path.resolve(cwd)).map((localPath: string) =>\n path.join(localPath, 'node_modules/.bin')\n )\n return localPaths\n}\n\nconst getLocalPaths = (startPath: string): string[] => {\n const paths: string[] = []\n let currentPath = startPath\n\n while (true) {\n paths.push(currentPath)\n const parentPath = path.resolve(currentPath, '..')\n\n // If we've reached the root directory, stop\n if (parentPath === currentPath) {\n break\n }\n\n currentPath = parentPath\n }\n\n return paths\n}\n","import { PostHogNextConfigComplete } from './config'\nimport { spawn } from 'child_process'\nimport path from 'path'\nimport { resolveBinaryPath } from './utils'\n\ntype NextRuntime = 'edge' | 'nodejs' | undefined\n\nexport class SourcemapWebpackPlugin {\n directory: string\n\n constructor(\n private posthogOptions: PostHogNextConfigComplete,\n private isServer: boolean,\n private nextRuntime: NextRuntime,\n distDir?: string\n ) {\n const resolvedDistDir = path.resolve(distDir ?? '.next')\n if (!this.posthogOptions.personalApiKey) {\n throw new Error(\n `Personal API key not provided. If you are using turbo, make sure to add env variables to your turbo config`\n )\n }\n if (!this.posthogOptions.envId) {\n throw new Error(\n `Environment ID not provided. If you are using turbo, make sure to add env variables to your turbo config`\n )\n }\n this.directory = this.isServer ? path.join(resolvedDistDir, 'server') : path.join(resolvedDistDir, 'static/chunks')\n }\n\n apply(compiler: any): void {\n if (this.nextRuntime === 'edge') {\n // TODO: edge and nodejs runtime output files in the same location\n // to support edge runtime we need a way to pass a list of files to the cli\n return\n }\n\n const onDone = async (_: any, callback: any): Promise<void> => {\n callback = callback || (() => {})\n try {\n await this.runInject()\n await this.runUpload()\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : error\n return console.error('Error running PostHog sourcemap plugin:', errorMessage)\n }\n return callback()\n }\n\n if (compiler.hooks) {\n compiler.hooks.done.tapAsync('SourcemapWebpackPlugin', onDone)\n } else {\n compiler.plugin('done', onDone)\n }\n }\n\n async runInject(): Promise<void> {\n const cliOptions = []\n cliOptions.push('sourcemap', 'inject', '--directory', this.directory)\n await callPosthogCli(cliOptions, process.env, this.posthogOptions.verbose)\n }\n\n async runUpload(): Promise<void> {\n const cliOptions = []\n if (this.posthogOptions.host) {\n cliOptions.push('--host', this.posthogOptions.host)\n }\n cliOptions.push('sourcemap', 'upload')\n cliOptions.push('--directory', this.directory)\n if (this.posthogOptions.sourcemaps.project) {\n cliOptions.push('--project', this.posthogOptions.sourcemaps.project)\n }\n if (this.posthogOptions.sourcemaps.version) {\n cliOptions.push('--version', this.posthogOptions.sourcemaps.version)\n }\n if (this.posthogOptions.sourcemaps.deleteAfterUpload && !this.isServer) {\n cliOptions.push('--delete-after')\n }\n // Add env variables\n const envVars = {\n ...process.env,\n POSTHOG_CLI_TOKEN: this.posthogOptions.personalApiKey,\n POSTHOG_CLI_ENV_ID: this.posthogOptions.envId,\n }\n await callPosthogCli(cliOptions, envVars, this.posthogOptions.verbose)\n }\n}\n\nasync function callPosthogCli(args: string[], env: NodeJS.ProcessEnv, verbose: boolean): Promise<void> {\n let binaryLocation\n try {\n binaryLocation = resolveBinaryPath(process.env.PATH ?? '', __dirname, 'posthog-cli')\n } catch (e) {\n throw new Error(`Binary ${e} not found. Make sure postinstall script has been allowed for @posthog/cli`)\n }\n\n if (verbose) {\n console.log('running posthog-cli from ', binaryLocation)\n }\n\n const child = spawn(binaryLocation, [...args], {\n stdio: verbose ? 'inherit' : 'ignore',\n env,\n cwd: process.cwd(),\n })\n\n await new Promise<void>((resolve, reject) => {\n child.on('close', (code) => {\n if (code === 0) {\n resolve()\n } else {\n reject(new Error(`Command failed with code ${code}`))\n }\n })\n\n child.on('error', (error) => {\n reject(error)\n })\n })\n}\n","import type { NextConfig } from 'next'\nimport { SourcemapWebpackPlugin } from './webpack-plugin'\n\ntype NextFuncConfig = (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => NextConfig\ntype NextAsyncConfig = (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => Promise<NextConfig>\ntype UserProvidedConfig = NextConfig | NextFuncConfig | NextAsyncConfig\n\nexport type PostHogNextConfig = {\n personalApiKey: string\n envId: string\n host?: string\n verbose?: boolean\n sourcemaps?: {\n enabled?: boolean\n project?: string\n version?: string\n deleteAfterUpload?: boolean\n }\n}\n\nexport type PostHogNextConfigComplete = {\n personalApiKey: string\n envId: string\n host: string\n verbose: boolean\n sourcemaps: {\n enabled: boolean\n project?: string\n version?: string\n deleteAfterUpload: boolean\n }\n}\n\nexport function withPostHogConfig(userNextConfig: UserProvidedConfig, posthogConfig: PostHogNextConfig): NextConfig {\n const posthogNextConfigComplete = resolvePostHogConfig(posthogConfig)\n return async (phase: string, { defaultConfig }: { defaultConfig: NextConfig }) => {\n const {\n webpack: userWebPackConfig,\n distDir,\n ...userConfig\n } = await resolveUserConfig(userNextConfig, phase, defaultConfig)\n const defaultWebpackConfig = userWebPackConfig || ((config: any) => config)\n const sourceMapEnabled = posthogNextConfigComplete.sourcemaps.enabled\n return {\n ...userConfig,\n distDir,\n productionBrowserSourceMaps: sourceMapEnabled,\n webpack: (config: any, options: any) => {\n const webpackConfig = defaultWebpackConfig(config, options)\n if (webpackConfig && options.isServer && sourceMapEnabled) {\n webpackConfig.devtool = 'source-map'\n }\n if (sourceMapEnabled) {\n webpackConfig.plugins = webpackConfig.plugins || []\n webpackConfig.plugins.push(\n new SourcemapWebpackPlugin(posthogNextConfigComplete, options.isServer, options.nextRuntime, distDir)\n )\n }\n return webpackConfig\n },\n }\n }\n}\n\nfunction resolveUserConfig(\n userNextConfig: UserProvidedConfig,\n phase: string,\n defaultConfig: NextConfig\n): Promise<NextConfig> {\n if (typeof userNextConfig === 'function') {\n const maybePromise = userNextConfig(phase, { defaultConfig })\n if (maybePromise instanceof Promise) {\n return maybePromise\n } else {\n return Promise.resolve(maybePromise)\n }\n } else if (typeof userNextConfig === 'object') {\n return Promise.resolve(userNextConfig)\n } else {\n throw new Error('Invalid user config')\n }\n}\n\nfunction resolvePostHogConfig(posthogProvidedConfig: PostHogNextConfig): PostHogNextConfigComplete {\n const { personalApiKey, envId, host, verbose, sourcemaps = {} } = posthogProvidedConfig\n return {\n personalApiKey,\n envId,\n host: host ?? 'https://us.posthog.com',\n verbose: verbose ?? true,\n sourcemaps: {\n enabled: sourcemaps.enabled ?? process.env.NODE_ENV == 'production',\n project: sourcemaps.project,\n version: sourcemaps.version,\n deleteAfterUpload: sourcemaps.deleteAfterUpload ?? true,\n },\n }\n}\n"],"names":["resolveBinaryPath","envPath","cwd","binName","envLocations","split","path","delimiter","localLocations","buildLocalBinaryPaths","directories","Set","directory","binaryPath","join","fs","existsSync","Error","localPaths","getLocalPaths","resolve","map","localPath","startPath","paths","currentPath","push","parentPath","SourcemapWebpackPlugin","constructor","posthogOptions","isServer","nextRuntime","distDir","resolvedDistDir","personalApiKey","envId","apply","compiler","onDone","_","callback","runInject","runUpload","error","errorMessage","message","console","hooks","done","tapAsync","plugin","cliOptions","callPosthogCli","process","env","verbose","host","sourcemaps","project","version","deleteAfterUpload","envVars","POSTHOG_CLI_TOKEN","POSTHOG_CLI_ENV_ID","args","binaryLocation","PATH","__dirname","e","log","child","spawn","stdio","Promise","reject","on","code","withPostHogConfig","userNextConfig","posthogConfig","posthogNextConfigComplete","resolvePostHogConfig","phase","defaultConfig","webpack","userWebPackConfig","userConfig","resolveUserConfig","defaultWebpackConfig","config","sourceMapEnabled","enabled","productionBrowserSourceMaps","options","webpackConfig","devtool","plugins","maybePromise","posthogProvidedConfig","NODE_ENV"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posthog/nextjs-config",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "NextJS configuration helper for Posthog 🦔",
5
5
  "main": "./lib/index.cjs",
6
6
  "module": "./lib/index.mjs",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "license": "MIT",
25
25
  "dependencies": {
26
- "@posthog/cli": "^0.3.4"
26
+ "@posthog/cli": "^0.3.5"
27
27
  },
28
28
  "keywords": [
29
29
  "posthog",