@interfere/next 0.0.9 → 0.0.12

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.
Files changed (135) hide show
  1. package/README.md +308 -0
  2. package/dist/__tests__/build/with-interfere-coverage.test.d.ts +2 -0
  3. package/dist/__tests__/build/with-interfere-coverage.test.d.ts.map +1 -0
  4. package/dist/__tests__/build/with-interfere-coverage.test.js +325 -0
  5. package/dist/__tests__/build/with-interfere-coverage.test.js.map +1 -0
  6. package/dist/__tests__/build/with-interfere.test.d.ts +2 -0
  7. package/dist/__tests__/build/with-interfere.test.d.ts.map +1 -0
  8. package/dist/__tests__/build/with-interfere.test.js +425 -0
  9. package/dist/__tests__/build/with-interfere.test.js.map +1 -0
  10. package/dist/__tests__/core/client.test.d.ts.map +1 -0
  11. package/dist/__tests__/core/client.test.js +373 -0
  12. package/dist/__tests__/core/client.test.js.map +1 -0
  13. package/dist/__tests__/core/encoders.test.d.ts.map +1 -0
  14. package/dist/{core → __tests__/core}/encoders.test.js +20 -19
  15. package/dist/__tests__/core/encoders.test.js.map +1 -0
  16. package/dist/__tests__/core/rage-click.test.d.ts +2 -0
  17. package/dist/__tests__/core/rage-click.test.d.ts.map +1 -0
  18. package/dist/__tests__/core/rage-click.test.js +121 -0
  19. package/dist/__tests__/core/rage-click.test.js.map +1 -0
  20. package/dist/__tests__/core/session-manager.test.d.ts +2 -0
  21. package/dist/__tests__/core/session-manager.test.d.ts.map +1 -0
  22. package/dist/__tests__/core/session-manager.test.js +1132 -0
  23. package/dist/__tests__/core/session-manager.test.js.map +1 -0
  24. package/dist/__tests__/integration/release-upload.test.d.ts +2 -0
  25. package/dist/__tests__/integration/release-upload.test.d.ts.map +1 -0
  26. package/dist/__tests__/integration/release-upload.test.js +167 -0
  27. package/dist/__tests__/integration/release-upload.test.js.map +1 -0
  28. package/dist/__tests__/session/persistence.test.d.ts +2 -0
  29. package/dist/__tests__/session/persistence.test.d.ts.map +1 -0
  30. package/dist/__tests__/session/persistence.test.js +129 -0
  31. package/dist/__tests__/session/persistence.test.js.map +1 -0
  32. package/dist/__tests__/session/session-summary.test.d.ts +2 -0
  33. package/dist/__tests__/session/session-summary.test.d.ts.map +1 -0
  34. package/dist/__tests__/session/session-summary.test.js +763 -0
  35. package/dist/__tests__/session/session-summary.test.js.map +1 -0
  36. package/dist/build/index.d.ts +3 -0
  37. package/dist/build/index.d.ts.map +1 -0
  38. package/dist/build/index.js +2 -0
  39. package/dist/build/index.js.map +1 -0
  40. package/dist/build/with-interfere.d.ts +49 -0
  41. package/dist/build/with-interfere.d.ts.map +1 -0
  42. package/dist/build/with-interfere.js +261 -0
  43. package/dist/build/with-interfere.js.map +1 -0
  44. package/dist/core/client-core.d.ts +27 -0
  45. package/dist/core/client-core.d.ts.map +1 -0
  46. package/dist/core/client-core.js +152 -0
  47. package/dist/core/client-core.js.map +1 -0
  48. package/dist/core/client.d.ts +71 -18
  49. package/dist/core/client.d.ts.map +1 -1
  50. package/dist/core/client.js +105 -97
  51. package/dist/core/client.js.map +1 -1
  52. package/dist/core/constants.d.ts +12 -0
  53. package/dist/core/constants.d.ts.map +1 -0
  54. package/dist/core/constants.js +17 -0
  55. package/dist/core/constants.js.map +1 -0
  56. package/dist/core/debug.d.ts +47 -0
  57. package/dist/core/debug.d.ts.map +1 -0
  58. package/dist/core/debug.js +79 -0
  59. package/dist/core/debug.js.map +1 -0
  60. package/dist/core/error-handlers.d.ts +14 -0
  61. package/dist/core/error-handlers.d.ts.map +1 -0
  62. package/dist/core/error-handlers.js +191 -0
  63. package/dist/core/error-handlers.js.map +1 -0
  64. package/dist/core/runtime.d.ts +7 -0
  65. package/dist/core/runtime.d.ts.map +1 -0
  66. package/dist/core/runtime.js +16 -0
  67. package/dist/core/runtime.js.map +1 -0
  68. package/dist/index.d.ts +10 -5
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +9 -5
  71. package/dist/index.js.map +1 -1
  72. package/dist/next/middleware.d.ts +8 -0
  73. package/dist/next/middleware.d.ts.map +1 -0
  74. package/dist/next/middleware.js +139 -0
  75. package/dist/next/middleware.js.map +1 -0
  76. package/dist/persistence/storage.d.ts +5 -0
  77. package/dist/persistence/storage.d.ts.map +1 -0
  78. package/dist/persistence/storage.js +67 -0
  79. package/dist/persistence/storage.js.map +1 -0
  80. package/dist/react/provider.d.ts +12 -7
  81. package/dist/react/provider.d.ts.map +1 -1
  82. package/dist/react/provider.jsx +37 -10
  83. package/dist/react/provider.jsx.map +1 -1
  84. package/dist/session/constants.d.ts +19 -0
  85. package/dist/session/constants.d.ts.map +1 -0
  86. package/dist/session/constants.js +34 -0
  87. package/dist/session/constants.js.map +1 -0
  88. package/dist/session/persistence.d.ts +58 -0
  89. package/dist/session/persistence.d.ts.map +1 -0
  90. package/dist/session/persistence.js +179 -0
  91. package/dist/session/persistence.js.map +1 -0
  92. package/dist/session/rage-click.d.ts +17 -0
  93. package/dist/session/rage-click.d.ts.map +1 -0
  94. package/dist/session/rage-click.js +104 -0
  95. package/dist/session/rage-click.js.map +1 -0
  96. package/dist/session/replay.d.ts +3 -0
  97. package/dist/session/replay.d.ts.map +1 -0
  98. package/dist/session/replay.js +109 -0
  99. package/dist/session/replay.js.map +1 -0
  100. package/dist/session/session-manager.d.ts +126 -0
  101. package/dist/session/session-manager.d.ts.map +1 -0
  102. package/dist/session/session-manager.js +635 -0
  103. package/dist/session/session-manager.js.map +1 -0
  104. package/dist/session/session-summary.d.ts +3 -0
  105. package/dist/session/session-summary.d.ts.map +1 -0
  106. package/dist/session/session-summary.js +214 -0
  107. package/dist/session/session-summary.js.map +1 -0
  108. package/dist/types/storage.d.ts +7 -0
  109. package/dist/types/storage.d.ts.map +1 -0
  110. package/dist/types/storage.js +2 -0
  111. package/dist/types/storage.js.map +1 -0
  112. package/package.json +32 -11
  113. package/dist/core/client.test.d.ts.map +0 -1
  114. package/dist/core/client.test.js +0 -227
  115. package/dist/core/client.test.js.map +0 -1
  116. package/dist/core/encoders.test.d.ts.map +0 -1
  117. package/dist/core/encoders.test.js.map +0 -1
  118. package/dist/edge/edge.d.ts +0 -11
  119. package/dist/edge/edge.d.ts.map +0 -1
  120. package/dist/edge/edge.js +0 -41
  121. package/dist/edge/edge.js.map +0 -1
  122. package/dist/edge/edge.test.d.ts +0 -2
  123. package/dist/edge/edge.test.d.ts.map +0 -1
  124. package/dist/edge/edge.test.js +0 -109
  125. package/dist/edge/edge.test.js.map +0 -1
  126. package/dist/server/server.d.ts +0 -6
  127. package/dist/server/server.d.ts.map +0 -1
  128. package/dist/server/server.js +0 -35
  129. package/dist/server/server.js.map +0 -1
  130. package/dist/server/server.test.d.ts +0 -2
  131. package/dist/server/server.test.d.ts.map +0 -1
  132. package/dist/server/server.test.js +0 -88
  133. package/dist/server/server.test.js.map +0 -1
  134. /package/dist/{core → __tests__/core}/client.test.d.ts +0 -0
  135. /package/dist/{core → __tests__/core}/encoders.test.d.ts +0 -0
@@ -0,0 +1,425 @@
1
+ import { execSync } from "node:child_process";
2
+ import * as fs from "node:fs";
3
+ import { glob } from "glob";
4
+ import fetch from "node-fetch";
5
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
6
+ import { withInterfere } from "../../build/with-interfere.js";
7
+ // Test constants
8
+ const TEST_SURFACE_ID = "test-surface";
9
+ const TEST_API_KEY = "test-api-key";
10
+ const TEST_BUILD_ID = "test-build";
11
+ const TEST_DEPLOY_URL = "https://test.vercel.app";
12
+ const TEST_CUSTOM_API_URL = "https://custom-api.example.com";
13
+ const MOCK_GIT_SHA = "abc123def456789";
14
+ const MOCK_BRANCH = "main";
15
+ const MOCK_COMMIT_MESSAGE = "feat: add new feature";
16
+ const MOCK_VERCEL_URL = "test-app-123.vercel.app";
17
+ // Mock modules
18
+ vi.mock("node:child_process");
19
+ vi.mock("node:fs", () => ({
20
+ promises: {
21
+ readFile: vi.fn(),
22
+ },
23
+ }));
24
+ vi.mock("glob");
25
+ vi.mock("node-fetch");
26
+ vi.mock("@vercel/blob");
27
+ // Mock crypto for hashing
28
+ vi.mock("node:crypto", () => ({
29
+ createHash: vi.fn(() => ({
30
+ update: vi.fn().mockReturnThis(),
31
+ digest: vi.fn(() => "mock-hash-123"),
32
+ })),
33
+ }));
34
+ describe("withInterfere", () => {
35
+ beforeEach(() => {
36
+ vi.clearAllMocks();
37
+ // Reset environment variables using vi.stubEnv
38
+ vi.stubEnv("INTERFERE_API_KEY", undefined);
39
+ vi.stubEnv("VERCEL_URL", undefined);
40
+ vi.stubEnv("VERCEL_DEPLOYMENT_ID", undefined);
41
+ vi.stubEnv("NODE_ENV", undefined);
42
+ vi.stubEnv("DEPLOY_URL", undefined);
43
+ vi.stubEnv("NEXT_BUILD_ID", undefined);
44
+ // Mock Git commands to return the expected values (with newlines as git does)
45
+ vi.mocked(execSync).mockImplementation((command) => {
46
+ const cmd = String(command);
47
+ if (cmd.includes("git rev-parse HEAD")) {
48
+ return `${MOCK_GIT_SHA}\n`;
49
+ }
50
+ if (cmd.includes("git rev-parse --abbrev-ref HEAD")) {
51
+ return `${MOCK_BRANCH}\n`;
52
+ }
53
+ if (cmd.includes("git log -1 --pretty=%B")) {
54
+ return `${MOCK_COMMIT_MESSAGE}\n`;
55
+ }
56
+ throw new Error("Unknown command");
57
+ });
58
+ });
59
+ afterEach(() => {
60
+ vi.resetAllMocks();
61
+ });
62
+ describe("configuration", () => {
63
+ it("should require surface option", () => {
64
+ expect(() => {
65
+ // @ts-expect-error - Testing missing required field
66
+ const wrapper = withInterfere({});
67
+ wrapper({});
68
+ }).toThrow("[Interfere] 'surface' is required in withInterfere options");
69
+ });
70
+ // clerkOrgId is not required anymore
71
+ it("should use environment variable for API key", () => {
72
+ vi.stubEnv("INTERFERE_API_KEY", "env-api-key");
73
+ const wrapper = withInterfere({
74
+ surface: TEST_SURFACE_ID,
75
+ });
76
+ const config = wrapper({});
77
+ expect(config).toBeDefined();
78
+ expect(config.productionBrowserSourceMaps).toBe(true);
79
+ });
80
+ it("should warn and disable if no API key provided", () => {
81
+ const consoleSpy = vi.spyOn(console, "warn").mockImplementation(() => { });
82
+ const wrapper = withInterfere({
83
+ surface: TEST_SURFACE_ID,
84
+ });
85
+ wrapper({});
86
+ expect(consoleSpy).toHaveBeenCalledWith("[Interfere] No API key provided. Set INTERFERE_API_KEY environment variable or pass apiKey option");
87
+ });
88
+ it("should respect disabled option", () => {
89
+ const wrapper = withInterfere({
90
+ surface: TEST_SURFACE_ID,
91
+ disabled: true,
92
+ });
93
+ const config = wrapper({});
94
+ expect(config.productionBrowserSourceMaps).toBe(true);
95
+ // Should not set up webpack plugin when disabled
96
+ });
97
+ it("should use custom apiUrl if provided", () => {
98
+ const wrapper = withInterfere({
99
+ surface: TEST_SURFACE_ID,
100
+ apiUrl: TEST_CUSTOM_API_URL,
101
+ apiKey: TEST_API_KEY,
102
+ });
103
+ const config = wrapper({});
104
+ expect(config).toBeDefined();
105
+ });
106
+ it("should use default environment if not provided", () => {
107
+ const wrapper = withInterfere({
108
+ surface: TEST_SURFACE_ID,
109
+ apiKey: TEST_API_KEY,
110
+ });
111
+ const config = wrapper({});
112
+ expect(config).toBeDefined();
113
+ // Environment defaults to production or NODE_ENV
114
+ });
115
+ it("should enable productionBrowserSourceMaps", () => {
116
+ const wrapper = withInterfere({
117
+ surface: TEST_SURFACE_ID,
118
+ apiKey: TEST_API_KEY,
119
+ });
120
+ const config = wrapper({});
121
+ expect(config.productionBrowserSourceMaps).toBe(true);
122
+ });
123
+ it("should preserve existing config properties", () => {
124
+ const wrapper = withInterfere({
125
+ surface: TEST_SURFACE_ID,
126
+ apiKey: TEST_API_KEY,
127
+ });
128
+ const existingConfig = {
129
+ reactStrictMode: true,
130
+ swcMinify: true,
131
+ images: {
132
+ domains: ["example.com"],
133
+ },
134
+ };
135
+ const config = wrapper(existingConfig);
136
+ expect(config.reactStrictMode).toBe(true);
137
+ expect(config.swcMinify).toBe(true);
138
+ expect(config.images?.domains).toEqual(["example.com"]);
139
+ });
140
+ it("should use debug mode when enabled", () => {
141
+ const consoleSpy = vi.spyOn(console, "log").mockImplementation(() => { });
142
+ const wrapper = withInterfere({
143
+ surface: TEST_SURFACE_ID,
144
+ apiKey: TEST_API_KEY,
145
+ debug: true,
146
+ });
147
+ const config = wrapper({});
148
+ expect(config).toBeDefined();
149
+ });
150
+ });
151
+ describe("environment detection", () => {
152
+ it("should detect Git SHA", () => {
153
+ const wrapper = withInterfere({
154
+ surface: TEST_SURFACE_ID,
155
+ apiKey: TEST_API_KEY,
156
+ });
157
+ const config = wrapper({});
158
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_BUILD_ID).toBe(MOCK_GIT_SHA);
159
+ });
160
+ it("should handle missing Git repository", () => {
161
+ vi.mocked(execSync).mockImplementation(() => {
162
+ throw new Error("Not a git repository");
163
+ });
164
+ const wrapper = withInterfere({
165
+ surface: TEST_SURFACE_ID,
166
+ apiKey: TEST_API_KEY,
167
+ });
168
+ const config = wrapper({});
169
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_BUILD_ID).toBe("");
170
+ });
171
+ it("should detect Vercel deployment ID", () => {
172
+ vi.stubEnv("VERCEL_URL", MOCK_VERCEL_URL);
173
+ const wrapper = withInterfere({
174
+ surface: TEST_SURFACE_ID,
175
+ apiKey: TEST_API_KEY,
176
+ });
177
+ const config = wrapper({});
178
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_RELEASE_ID).toBe("test-app-123");
179
+ });
180
+ it("should fall back to Git SHA if no Vercel deployment", () => {
181
+ const wrapper = withInterfere({
182
+ surface: TEST_SURFACE_ID,
183
+ apiKey: TEST_API_KEY,
184
+ });
185
+ const config = wrapper({});
186
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_RELEASE_ID).toBe(MOCK_GIT_SHA);
187
+ });
188
+ it("should use custom environment if provided", () => {
189
+ const wrapper = withInterfere({
190
+ surface: TEST_SURFACE_ID,
191
+ apiKey: TEST_API_KEY,
192
+ environment: "staging",
193
+ });
194
+ const config = wrapper({});
195
+ expect(config).toBeDefined();
196
+ });
197
+ it("should use DEPLOY_URL if VERCEL_URL not available", () => {
198
+ vi.stubEnv("DEPLOY_URL", TEST_DEPLOY_URL);
199
+ const wrapper = withInterfere({
200
+ surface: TEST_SURFACE_ID,
201
+ apiKey: TEST_API_KEY,
202
+ });
203
+ const config = wrapper({});
204
+ expect(config).toBeDefined();
205
+ });
206
+ it("should use NODE_ENV for environment if not specified", () => {
207
+ vi.stubEnv("NODE_ENV", "development");
208
+ const wrapper = withInterfere({
209
+ surface: TEST_SURFACE_ID,
210
+ apiKey: TEST_API_KEY,
211
+ });
212
+ const config = wrapper({});
213
+ expect(config).toBeDefined();
214
+ });
215
+ it("should use VERCEL_DEPLOYMENT_ID if available", () => {
216
+ vi.stubEnv("VERCEL_DEPLOYMENT_ID", "deploy-abc123");
217
+ const wrapper = withInterfere({
218
+ surface: TEST_SURFACE_ID,
219
+ apiKey: TEST_API_KEY,
220
+ });
221
+ const config = wrapper({});
222
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_RELEASE_ID).toBe("deploy-abc123");
223
+ });
224
+ });
225
+ describe("webpack configuration", () => {
226
+ const createWebpackConfig = () => ({
227
+ devtool: "eval",
228
+ plugins: [],
229
+ });
230
+ const createWebpackContext = (overrides) => ({
231
+ isServer: false,
232
+ dev: false,
233
+ buildId: TEST_BUILD_ID,
234
+ dir: "/project",
235
+ defaultLoaders: {},
236
+ totalPages: 10,
237
+ webpack: {},
238
+ config: {},
239
+ ...overrides,
240
+ });
241
+ it("should preserve existing webpack config", () => {
242
+ const originalWebpack = vi.fn((config) => ({
243
+ ...config,
244
+ customField: "preserved",
245
+ }));
246
+ const wrapper = withInterfere({
247
+ surface: TEST_SURFACE_ID,
248
+ apiKey: TEST_API_KEY,
249
+ });
250
+ const config = wrapper({
251
+ webpack: originalWebpack,
252
+ });
253
+ const webpackConfig = createWebpackConfig();
254
+ const context = createWebpackContext({ dev: true });
255
+ const result = config.webpack(webpackConfig, context);
256
+ expect(originalWebpack).toHaveBeenCalledWith(webpackConfig, context);
257
+ expect(result.customField).toBe("preserved");
258
+ });
259
+ it("should set source-map devtool for client production builds", () => {
260
+ const wrapper = withInterfere({
261
+ surface: TEST_SURFACE_ID,
262
+ apiKey: TEST_API_KEY,
263
+ });
264
+ const config = wrapper({});
265
+ const webpackConfig = createWebpackConfig();
266
+ const context = createWebpackContext({ isServer: false, dev: false });
267
+ const result = config.webpack(webpackConfig, context);
268
+ expect(result.devtool).toBe("source-map");
269
+ });
270
+ it("should not modify server-side builds", () => {
271
+ const wrapper = withInterfere({
272
+ surface: TEST_SURFACE_ID,
273
+ apiKey: TEST_API_KEY,
274
+ });
275
+ const config = wrapper({});
276
+ const webpackConfig = createWebpackConfig();
277
+ const context = createWebpackContext({ isServer: true, dev: false });
278
+ const result = config.webpack(webpackConfig, context);
279
+ expect(result.devtool).toBe("eval");
280
+ });
281
+ it("should not modify development builds", () => {
282
+ const wrapper = withInterfere({
283
+ surface: TEST_SURFACE_ID,
284
+ apiKey: TEST_API_KEY,
285
+ });
286
+ const config = wrapper({});
287
+ const webpackConfig = createWebpackConfig();
288
+ const context = createWebpackContext({ isServer: false, dev: true });
289
+ const result = config.webpack(webpackConfig, context);
290
+ expect(result.devtool).toBe("eval");
291
+ });
292
+ it("should add upload plugin for production client builds", () => {
293
+ const wrapper = withInterfere({
294
+ surface: TEST_SURFACE_ID,
295
+ apiKey: TEST_API_KEY,
296
+ });
297
+ const config = wrapper({});
298
+ const webpackConfig = createWebpackConfig();
299
+ const context = createWebpackContext({ isServer: false, dev: false });
300
+ const result = config.webpack(webpackConfig, context);
301
+ expect(result.plugins).toHaveLength(1);
302
+ expect(result.plugins[0]).toHaveProperty("apply");
303
+ });
304
+ it("should not add plugin when disabled", () => {
305
+ const wrapper = withInterfere({
306
+ surface: TEST_SURFACE_ID,
307
+ apiKey: TEST_API_KEY,
308
+ disabled: true,
309
+ });
310
+ const config = wrapper({});
311
+ const webpackConfig = createWebpackConfig();
312
+ const context = createWebpackContext({ isServer: false, dev: false });
313
+ const result = config.webpack(webpackConfig, context);
314
+ expect(result.plugins).toHaveLength(0);
315
+ });
316
+ it("should handle webpack config without existing plugins", () => {
317
+ const wrapper = withInterfere({
318
+ surface: TEST_SURFACE_ID,
319
+ apiKey: TEST_API_KEY,
320
+ });
321
+ const config = wrapper({});
322
+ const webpackConfig = { devtool: "eval" };
323
+ const context = createWebpackContext({ isServer: false, dev: false });
324
+ const result = config.webpack(webpackConfig, context);
325
+ expect(result.devtool).toBe("source-map");
326
+ expect(result.plugins).toBeDefined();
327
+ expect(result.plugins).toHaveLength(1);
328
+ });
329
+ });
330
+ describe("source map upload", () => {
331
+ it("should skip upload if no Git SHA", async () => {
332
+ vi.mocked(execSync).mockImplementation(() => {
333
+ throw new Error("Not a git repository");
334
+ });
335
+ const consoleSpy = vi.spyOn(console, "warn").mockImplementation(() => { });
336
+ // This would be called by the webpack plugin
337
+ // We'll test the upload logic directly
338
+ const { withInterfere: importedWithInterfere } = await import("../../build/with-interfere.js");
339
+ const wrapper = importedWithInterfere({
340
+ surface: TEST_SURFACE_ID,
341
+ apiKey: TEST_API_KEY,
342
+ });
343
+ const config = wrapper({});
344
+ // The upload would be triggered but should exit early
345
+ expect(config).toBeDefined();
346
+ });
347
+ it("should handle upload errors gracefully", async () => {
348
+ const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => { });
349
+ // Mock glob and fs to simulate read error
350
+ vi.mocked(glob).mockRejectedValue(new Error("File system error"));
351
+ const wrapper = withInterfere({
352
+ surface: TEST_SURFACE_ID,
353
+ apiKey: TEST_API_KEY,
354
+ });
355
+ const config = wrapper({});
356
+ // The webpack plugin would catch this error
357
+ // Testing that errors don't break the build
358
+ expect(config).toBeDefined();
359
+ });
360
+ it("should handle missing source maps gracefully", async () => {
361
+ vi.mocked(glob).mockResolvedValue([]);
362
+ const wrapper = withInterfere({
363
+ surface: TEST_SURFACE_ID,
364
+ apiKey: TEST_API_KEY,
365
+ });
366
+ const config = wrapper({});
367
+ expect(config).toBeDefined();
368
+ });
369
+ it("should handle fetch errors during upload", async () => {
370
+ vi.mocked(glob).mockResolvedValue([".next/static/chunks/app.js.map"]);
371
+ vi.mocked(fs.promises.readFile).mockResolvedValue('{"version":3}');
372
+ vi.mocked(fetch).mockRejectedValue(new Error("Network error"));
373
+ const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => { });
374
+ const wrapper = withInterfere({
375
+ surface: TEST_SURFACE_ID,
376
+ apiKey: TEST_API_KEY,
377
+ });
378
+ const config = wrapper({});
379
+ expect(config).toBeDefined();
380
+ });
381
+ });
382
+ describe("edge cases", () => {
383
+ it("should handle empty Next.js config", () => {
384
+ const wrapper = withInterfere({
385
+ surface: TEST_SURFACE_ID,
386
+ apiKey: TEST_API_KEY,
387
+ });
388
+ const config = wrapper();
389
+ expect(config).toBeDefined();
390
+ expect(config.productionBrowserSourceMaps).toBe(true);
391
+ expect(config.webpack).toBeDefined();
392
+ expect(config.env).toBeDefined();
393
+ });
394
+ it("should preserve existing env variables", () => {
395
+ const wrapper = withInterfere({
396
+ surface: TEST_SURFACE_ID,
397
+ apiKey: TEST_API_KEY,
398
+ });
399
+ const existingConfig = {
400
+ env: {
401
+ CUSTOM_VAR: "custom-value",
402
+ ANOTHER_VAR: "another-value",
403
+ },
404
+ };
405
+ const config = wrapper(existingConfig);
406
+ expect(config.env?.CUSTOM_VAR).toBe("custom-value");
407
+ expect(config.env?.ANOTHER_VAR).toBe("another-value");
408
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_BUILD_ID).toBe(MOCK_GIT_SHA);
409
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_RELEASE_ID).toBe(MOCK_GIT_SHA);
410
+ });
411
+ it("should handle all Git command failures gracefully", () => {
412
+ vi.mocked(execSync).mockImplementation(() => {
413
+ throw new Error("Command not found");
414
+ });
415
+ const wrapper = withInterfere({
416
+ surface: TEST_SURFACE_ID,
417
+ apiKey: TEST_API_KEY,
418
+ });
419
+ const config = wrapper({});
420
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_BUILD_ID).toBe("");
421
+ expect(config.env?.NEXT_PUBLIC_INTERFERE_RELEASE_ID).toBe("");
422
+ });
423
+ });
424
+ });
425
+ //# sourceMappingURL=with-interfere.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-interfere.test.js","sourceRoot":"","sources":["../../../src/__tests__/build/with-interfere.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/core/client.test.ts"],"names":[],"mappings":""}