next 15.1.6 → 15.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of next might be problematic. Click here for more details.

Files changed (44) hide show
  1. package/dist/bin/next +1 -1
  2. package/dist/build/index.js +2 -2
  3. package/dist/build/swc/index.js +1 -1
  4. package/dist/build/webpack-config.js +2 -2
  5. package/dist/client/app-bootstrap.js +1 -1
  6. package/dist/client/index.js +1 -1
  7. package/dist/compiled/next-server/server.runtime.prod.js +1 -1
  8. package/dist/compiled/next-server/server.runtime.prod.js.map +1 -1
  9. package/dist/esm/build/index.js +2 -2
  10. package/dist/esm/build/swc/index.js +1 -1
  11. package/dist/esm/build/webpack-config.js +2 -2
  12. package/dist/esm/client/app-bootstrap.js +1 -1
  13. package/dist/esm/client/index.js +1 -1
  14. package/dist/esm/lib/verify-typescript-setup.js +1 -1
  15. package/dist/esm/lib/verify-typescript-setup.js.map +1 -1
  16. package/dist/esm/lib/worker.js +3 -2
  17. package/dist/esm/lib/worker.js.map +1 -1
  18. package/dist/esm/server/config.js +1 -1
  19. package/dist/esm/server/dev/hot-reloader-turbopack.js +1 -1
  20. package/dist/esm/server/dev/hot-reloader-webpack.js +1 -1
  21. package/dist/esm/server/lib/app-info-log.js +1 -1
  22. package/dist/esm/server/lib/start-server.js +1 -1
  23. package/dist/esm/server/send-response.js +4 -0
  24. package/dist/esm/server/send-response.js.map +1 -1
  25. package/dist/esm/server/web/sandbox/resource-managers.js +28 -2
  26. package/dist/esm/server/web/sandbox/resource-managers.js.map +1 -1
  27. package/dist/lib/verify-typescript-setup.js +1 -1
  28. package/dist/lib/verify-typescript-setup.js.map +1 -1
  29. package/dist/lib/worker.js +3 -2
  30. package/dist/lib/worker.js.map +1 -1
  31. package/dist/server/config.js +1 -1
  32. package/dist/server/dev/hot-reloader-turbopack.js +1 -1
  33. package/dist/server/dev/hot-reloader-webpack.js +1 -1
  34. package/dist/server/lib/app-info-log.js +1 -1
  35. package/dist/server/lib/start-server.js +1 -1
  36. package/dist/server/send-response.js +4 -0
  37. package/dist/server/send-response.js.map +1 -1
  38. package/dist/server/web/sandbox/resource-managers.d.ts +3 -3
  39. package/dist/server/web/sandbox/resource-managers.js +28 -2
  40. package/dist/server/web/sandbox/resource-managers.js.map +1 -1
  41. package/dist/telemetry/anonymous-meta.js +1 -1
  42. package/dist/telemetry/events/session-stopped.js +2 -2
  43. package/dist/telemetry/events/version.js +2 -2
  44. package/package.json +15 -15
@@ -1,8 +1,8 @@
1
- declare abstract class ResourceManager<T, K> {
1
+ declare abstract class ResourceManager<T, Args> {
2
2
  private resources;
3
- abstract create(resourceArgs: K): T;
3
+ abstract create(resourceArgs: Args): T;
4
4
  abstract destroy(resource: T): void;
5
- add(resourceArgs: K): T;
5
+ add(resourceArgs: Args): T;
6
6
  remove(resource: T): void;
7
7
  removeAll(): void;
8
8
  }
@@ -41,7 +41,7 @@ class ResourceManager {
41
41
  class IntervalsManager extends ResourceManager {
42
42
  create(args) {
43
43
  // TODO: use the edge runtime provided `setInterval` instead
44
- return setInterval(...args)[Symbol.toPrimitive]();
44
+ return webSetIntervalPolyfill(...args);
45
45
  }
46
46
  destroy(interval) {
47
47
  clearInterval(interval);
@@ -50,12 +50,38 @@ class IntervalsManager extends ResourceManager {
50
50
  class TimeoutsManager extends ResourceManager {
51
51
  create(args) {
52
52
  // TODO: use the edge runtime provided `setTimeout` instead
53
- return setTimeout(...args)[Symbol.toPrimitive]();
53
+ return webSetTimeoutPolyfill(...args);
54
54
  }
55
55
  destroy(timeout) {
56
56
  clearTimeout(timeout);
57
57
  }
58
58
  }
59
+ function webSetIntervalPolyfill(callback, ms, ...args) {
60
+ return setInterval(()=>{
61
+ // node's `setInterval` sets `this` to the `Timeout` instance it returned,
62
+ // but web `setInterval` always sets `this` to `window`
63
+ // see: https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval#the_this_problem
64
+ return callback.apply(globalThis, args);
65
+ }, ms)[Symbol.toPrimitive]();
66
+ }
67
+ function webSetTimeoutPolyfill(callback, ms, ...args) {
68
+ const wrappedCallback = ()=>{
69
+ try {
70
+ // node's `setTimeout` sets `this` to the `Timeout` instance it returned,
71
+ // but web `setTimeout` always sets `this` to `window`
72
+ // see: https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#the_this_problem
73
+ return callback.apply(globalThis, args);
74
+ } finally{
75
+ // On certain older node versions (<20.16.0, <22.4.0),
76
+ // a `setTimeout` whose Timeout was converted to a primitive will leak.
77
+ // See: https://github.com/nodejs/node/issues/53335
78
+ // We can work around this by explicitly calling `clearTimeout` after the callback runs.
79
+ clearTimeout(timeout);
80
+ }
81
+ };
82
+ const timeout = setTimeout(wrappedCallback, ms);
83
+ return timeout[Symbol.toPrimitive]();
84
+ }
59
85
  const intervalsManager = new IntervalsManager();
60
86
  const timeoutsManager = new TimeoutsManager();
61
87
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/server/web/sandbox/resource-managers.ts"],"sourcesContent":["abstract class ResourceManager<T, K> {\n private resources: T[] = []\n\n abstract create(resourceArgs: K): T\n abstract destroy(resource: T): void\n\n add(resourceArgs: K) {\n const resource = this.create(resourceArgs)\n this.resources.push(resource)\n return resource\n }\n\n remove(resource: T) {\n this.resources = this.resources.filter((r) => r !== resource)\n this.destroy(resource)\n }\n\n removeAll() {\n this.resources.forEach(this.destroy)\n this.resources = []\n }\n}\n\nclass IntervalsManager extends ResourceManager<\n number,\n Parameters<typeof setInterval>\n> {\n create(args: Parameters<typeof setInterval>) {\n // TODO: use the edge runtime provided `setInterval` instead\n return setInterval(...args)[Symbol.toPrimitive]()\n }\n\n destroy(interval: number) {\n clearInterval(interval)\n }\n}\n\nclass TimeoutsManager extends ResourceManager<\n number,\n Parameters<typeof setTimeout>\n> {\n create(args: Parameters<typeof setTimeout>) {\n // TODO: use the edge runtime provided `setTimeout` instead\n return setTimeout(...args)[Symbol.toPrimitive]()\n }\n\n destroy(timeout: number) {\n clearTimeout(timeout)\n }\n}\n\nexport const intervalsManager = new IntervalsManager()\nexport const timeoutsManager = new TimeoutsManager()\n"],"names":["intervalsManager","timeoutsManager","ResourceManager","add","resourceArgs","resource","create","resources","push","remove","filter","r","destroy","removeAll","forEach","IntervalsManager","args","setInterval","Symbol","toPrimitive","interval","clearInterval","TimeoutsManager","setTimeout","timeout","clearTimeout"],"mappings":";;;;;;;;;;;;;;;IAmDaA,gBAAgB;eAAhBA;;IACAC,eAAe;eAAfA;;;AApDb,MAAeC;IAMbC,IAAIC,YAAe,EAAE;QACnB,MAAMC,WAAW,IAAI,CAACC,MAAM,CAACF;QAC7B,IAAI,CAACG,SAAS,CAACC,IAAI,CAACH;QACpB,OAAOA;IACT;IAEAI,OAAOJ,QAAW,EAAE;QAClB,IAAI,CAACE,SAAS,GAAG,IAAI,CAACA,SAAS,CAACG,MAAM,CAAC,CAACC,IAAMA,MAAMN;QACpD,IAAI,CAACO,OAAO,CAACP;IACf;IAEAQ,YAAY;QACV,IAAI,CAACN,SAAS,CAACO,OAAO,CAAC,IAAI,CAACF,OAAO;QACnC,IAAI,CAACL,SAAS,GAAG,EAAE;IACrB;;aAnBQA,YAAiB,EAAE;;AAoB7B;AAEA,MAAMQ,yBAAyBb;IAI7BI,OAAOU,IAAoC,EAAE;QAC3C,4DAA4D;QAC5D,OAAOC,eAAeD,KAAK,CAACE,OAAOC,WAAW,CAAC;IACjD;IAEAP,QAAQQ,QAAgB,EAAE;QACxBC,cAAcD;IAChB;AACF;AAEA,MAAME,wBAAwBpB;IAI5BI,OAAOU,IAAmC,EAAE;QAC1C,2DAA2D;QAC3D,OAAOO,cAAcP,KAAK,CAACE,OAAOC,WAAW,CAAC;IAChD;IAEAP,QAAQY,OAAe,EAAE;QACvBC,aAAaD;IACf;AACF;AAEO,MAAMxB,mBAAmB,IAAIe;AAC7B,MAAMd,kBAAkB,IAAIqB"}
1
+ {"version":3,"sources":["../../../../src/server/web/sandbox/resource-managers.ts"],"sourcesContent":["abstract class ResourceManager<T, Args> {\n private resources: T[] = []\n\n abstract create(resourceArgs: Args): T\n abstract destroy(resource: T): void\n\n add(resourceArgs: Args) {\n const resource = this.create(resourceArgs)\n this.resources.push(resource)\n return resource\n }\n\n remove(resource: T) {\n this.resources = this.resources.filter((r) => r !== resource)\n this.destroy(resource)\n }\n\n removeAll() {\n this.resources.forEach(this.destroy)\n this.resources = []\n }\n}\n\nclass IntervalsManager extends ResourceManager<\n number,\n Parameters<typeof setInterval>\n> {\n create(args: Parameters<typeof setInterval>) {\n // TODO: use the edge runtime provided `setInterval` instead\n return webSetIntervalPolyfill(...args)\n }\n\n destroy(interval: number) {\n clearInterval(interval)\n }\n}\n\nclass TimeoutsManager extends ResourceManager<\n number,\n Parameters<typeof setTimeout>\n> {\n create(args: Parameters<typeof setTimeout>) {\n // TODO: use the edge runtime provided `setTimeout` instead\n return webSetTimeoutPolyfill(...args)\n }\n\n destroy(timeout: number) {\n clearTimeout(timeout)\n }\n}\n\nfunction webSetIntervalPolyfill<TArgs extends any[]>(\n callback: (...args: TArgs) => void,\n ms?: number,\n ...args: TArgs\n): number {\n return setInterval(() => {\n // node's `setInterval` sets `this` to the `Timeout` instance it returned,\n // but web `setInterval` always sets `this` to `window`\n // see: https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval#the_this_problem\n return callback.apply(globalThis, args)\n }, ms)[Symbol.toPrimitive]()\n}\n\nfunction webSetTimeoutPolyfill<TArgs extends any[]>(\n callback: (...args: TArgs) => void,\n ms?: number,\n ...args: TArgs\n): number {\n const wrappedCallback = () => {\n try {\n // node's `setTimeout` sets `this` to the `Timeout` instance it returned,\n // but web `setTimeout` always sets `this` to `window`\n // see: https://developer.mozilla.org/en-US/docs/Web/API/Window/setTimeout#the_this_problem\n return callback.apply(globalThis, args)\n } finally {\n // On certain older node versions (<20.16.0, <22.4.0),\n // a `setTimeout` whose Timeout was converted to a primitive will leak.\n // See: https://github.com/nodejs/node/issues/53335\n // We can work around this by explicitly calling `clearTimeout` after the callback runs.\n clearTimeout(timeout)\n }\n }\n const timeout = setTimeout(wrappedCallback, ms)\n return timeout[Symbol.toPrimitive]()\n}\n\nexport const intervalsManager = new IntervalsManager()\nexport const timeoutsManager = new TimeoutsManager()\n"],"names":["intervalsManager","timeoutsManager","ResourceManager","add","resourceArgs","resource","create","resources","push","remove","filter","r","destroy","removeAll","forEach","IntervalsManager","args","webSetIntervalPolyfill","interval","clearInterval","TimeoutsManager","webSetTimeoutPolyfill","timeout","clearTimeout","callback","ms","setInterval","apply","globalThis","Symbol","toPrimitive","wrappedCallback","setTimeout"],"mappings":";;;;;;;;;;;;;;;IAuFaA,gBAAgB;eAAhBA;;IACAC,eAAe;eAAfA;;;AAxFb,MAAeC;IAMbC,IAAIC,YAAkB,EAAE;QACtB,MAAMC,WAAW,IAAI,CAACC,MAAM,CAACF;QAC7B,IAAI,CAACG,SAAS,CAACC,IAAI,CAACH;QACpB,OAAOA;IACT;IAEAI,OAAOJ,QAAW,EAAE;QAClB,IAAI,CAACE,SAAS,GAAG,IAAI,CAACA,SAAS,CAACG,MAAM,CAAC,CAACC,IAAMA,MAAMN;QACpD,IAAI,CAACO,OAAO,CAACP;IACf;IAEAQ,YAAY;QACV,IAAI,CAACN,SAAS,CAACO,OAAO,CAAC,IAAI,CAACF,OAAO;QACnC,IAAI,CAACL,SAAS,GAAG,EAAE;IACrB;;aAnBQA,YAAiB,EAAE;;AAoB7B;AAEA,MAAMQ,yBAAyBb;IAI7BI,OAAOU,IAAoC,EAAE;QAC3C,4DAA4D;QAC5D,OAAOC,0BAA0BD;IACnC;IAEAJ,QAAQM,QAAgB,EAAE;QACxBC,cAAcD;IAChB;AACF;AAEA,MAAME,wBAAwBlB;IAI5BI,OAAOU,IAAmC,EAAE;QAC1C,2DAA2D;QAC3D,OAAOK,yBAAyBL;IAClC;IAEAJ,QAAQU,OAAe,EAAE;QACvBC,aAAaD;IACf;AACF;AAEA,SAASL,uBACPO,QAAkC,EAClCC,EAAW,EACX,GAAGT,IAAW;IAEd,OAAOU,YAAY;QACjB,0EAA0E;QAC1E,uDAAuD;QACvD,4FAA4F;QAC5F,OAAOF,SAASG,KAAK,CAACC,YAAYZ;IACpC,GAAGS,GAAG,CAACI,OAAOC,WAAW,CAAC;AAC5B;AAEA,SAAST,sBACPG,QAAkC,EAClCC,EAAW,EACX,GAAGT,IAAW;IAEd,MAAMe,kBAAkB;QACtB,IAAI;YACF,yEAAyE;YACzE,sDAAsD;YACtD,2FAA2F;YAC3F,OAAOP,SAASG,KAAK,CAACC,YAAYZ;QACpC,SAAU;YACR,sDAAsD;YACtD,uEAAuE;YACvE,mDAAmD;YACnD,wFAAwF;YACxFO,aAAaD;QACf;IACF;IACA,MAAMA,UAAUU,WAAWD,iBAAiBN;IAC5C,OAAOH,OAAO,CAACO,OAAOC,WAAW,CAAC;AACpC;AAEO,MAAM9B,mBAAmB,IAAIe;AAC7B,MAAMd,kBAAkB,IAAImB"}
@@ -81,7 +81,7 @@ function getAnonymousMeta() {
81
81
  isWsl: _iswsl.default,
82
82
  isCI: _ciinfo.isCI,
83
83
  ciName: _ciinfo.isCI && _ciinfo.name || null,
84
- nextVersion: "15.1.6"
84
+ nextVersion: "15.1.7"
85
85
  };
86
86
  return traits;
87
87
  }
@@ -11,11 +11,11 @@ Object.defineProperty(exports, "eventCliSessionStopped", {
11
11
  const EVENT_VERSION = 'NEXT_CLI_SESSION_STOPPED';
12
12
  function eventCliSessionStopped(event) {
13
13
  // This should be an invariant, if it fails our build tooling is broken.
14
- if (typeof "15.1.6" !== 'string') {
14
+ if (typeof "15.1.7" !== 'string') {
15
15
  return [];
16
16
  }
17
17
  const payload = {
18
- nextVersion: "15.1.6",
18
+ nextVersion: "15.1.7",
19
19
  nodeVersion: process.version,
20
20
  cliCommand: event.cliCommand,
21
21
  durationMilliseconds: event.durationMilliseconds,
@@ -36,12 +36,12 @@ function hasBabelConfig(dir) {
36
36
  function eventCliSession(dir, nextConfig, event) {
37
37
  var _nextConfig_experimental_staleTimes, _nextConfig_experimental_staleTimes1, _nextConfig_experimental_reactCompiler, _nextConfig_experimental_reactCompiler1;
38
38
  // This should be an invariant, if it fails our build tooling is broken.
39
- if (typeof "15.1.6" !== 'string') {
39
+ if (typeof "15.1.7" !== 'string') {
40
40
  return [];
41
41
  }
42
42
  const { images, i18n } = nextConfig || {};
43
43
  const payload = {
44
- nextVersion: "15.1.6",
44
+ nextVersion: "15.1.7",
45
45
  nodeVersion: process.version,
46
46
  cliCommand: event.cliCommand,
47
47
  isSrcDir: event.isSrcDir,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next",
3
- "version": "15.1.6",
3
+ "version": "15.1.7",
4
4
  "description": "The React Framework",
5
5
  "main": "./dist/server/next.js",
6
6
  "license": "MIT",
@@ -97,7 +97,7 @@
97
97
  ]
98
98
  },
99
99
  "dependencies": {
100
- "@next/env": "15.1.6",
100
+ "@next/env": "15.1.7",
101
101
  "@swc/counter": "0.1.3",
102
102
  "@swc/helpers": "0.5.15",
103
103
  "busboy": "1.6.0",
@@ -129,14 +129,14 @@
129
129
  },
130
130
  "optionalDependencies": {
131
131
  "sharp": "^0.33.5",
132
- "@next/swc-darwin-arm64": "15.1.6",
133
- "@next/swc-darwin-x64": "15.1.6",
134
- "@next/swc-linux-arm64-gnu": "15.1.6",
135
- "@next/swc-linux-arm64-musl": "15.1.6",
136
- "@next/swc-linux-x64-gnu": "15.1.6",
137
- "@next/swc-linux-x64-musl": "15.1.6",
138
- "@next/swc-win32-arm64-msvc": "15.1.6",
139
- "@next/swc-win32-x64-msvc": "15.1.6"
132
+ "@next/swc-darwin-arm64": "15.1.7",
133
+ "@next/swc-darwin-x64": "15.1.7",
134
+ "@next/swc-linux-arm64-gnu": "15.1.7",
135
+ "@next/swc-linux-arm64-musl": "15.1.7",
136
+ "@next/swc-linux-x64-gnu": "15.1.7",
137
+ "@next/swc-linux-x64-musl": "15.1.7",
138
+ "@next/swc-win32-arm64-msvc": "15.1.7",
139
+ "@next/swc-win32-x64-msvc": "15.1.7"
140
140
  },
141
141
  "devDependencies": {
142
142
  "@ampproject/toolbox-optimizer": "2.8.3",
@@ -169,11 +169,11 @@
169
169
  "@jest/types": "29.5.0",
170
170
  "@mswjs/interceptors": "0.23.0",
171
171
  "@napi-rs/triples": "1.2.0",
172
- "@next/font": "15.1.6",
173
- "@next/polyfill-module": "15.1.6",
174
- "@next/polyfill-nomodule": "15.1.6",
175
- "@next/react-refresh-utils": "15.1.6",
176
- "@next/swc": "15.1.6",
172
+ "@next/font": "15.1.7",
173
+ "@next/polyfill-module": "15.1.7",
174
+ "@next/polyfill-nomodule": "15.1.7",
175
+ "@next/react-refresh-utils": "15.1.7",
176
+ "@next/swc": "15.1.7",
177
177
  "@opentelemetry/api": "1.6.0",
178
178
  "@playwright/test": "1.41.2",
179
179
  "@swc/core": "1.9.3",