@serwist/next 9.5.2 → 9.5.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.config.d.ts","sourceRoot":"","sources":["../src/index.config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAoC,MAAM,uBAAuB,CAAC;AAK/F;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5G;;;;OAIG;IACH,cAAc,EAAE,CACd,eAAe,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,EAC7F,OAAO,CAAC,EAAE,cAAc,KACrB,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,OAAO,EAAE,OA6ErB,CAAC;AAOF,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,YAAY,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"index.config.d.ts","sourceRoot":"","sources":["../src/index.config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAkB,MAAM,uBAAuB,CAAC;AAK7E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,OAAO;IACtB;;;;OAIG;IACH,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC5G;;;;OAIG;IACH,cAAc,EAAE,CACd,eAAe,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,EAC7F,OAAO,CAAC,EAAE,cAAc,KACrB,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5B;AAED,eAAO,MAAM,OAAO,EAAE,OA6ErB,CAAC;AAOF,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC,YAAY,EAAE,cAAc,EAAE,CAAC"}
@@ -1,28 +1,10 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { rebasePath } from '@serwist/build';
4
- import { createRequire } from 'module';
4
+ import { browserslistToEsbuild } from '@serwist/utils';
5
5
  import browserslist from 'browserslist';
6
6
  import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD, MODERN_BROWSERSLIST_TARGET } from 'next/constants.js';
7
-
8
- const SUPPORTED_ESBUILD_TARGETS = [
9
- "chrome",
10
- "deno",
11
- "edge",
12
- "firefox",
13
- "hermes",
14
- "ie",
15
- "ios",
16
- "node",
17
- "opera",
18
- "rhino",
19
- "safari"
20
- ];
21
- const UNSUPPORTED_BROWSERLIST_TARGETS = [
22
- "android 4",
23
- "android 3",
24
- "android 2"
25
- ];
7
+ import { createRequire } from 'module';
26
8
 
27
9
  const __require = createRequire(import.meta.url);
28
10
  const nextConfig = __require("next/dist/server/config.js");
@@ -36,53 +18,6 @@ const generateGlobPatterns = (distDir)=>[
36
18
  `${distDir}static/**/*.{js,css,html,ico,apng,png,avif,jpg,jpeg,jfif,pjpeg,pjp,gif,svg,webp,json,webmanifest}`,
37
19
  "public/**/*"
38
20
  ];
39
- const compare = (a, b)=>{
40
- if (a < b) return -1;
41
- if (a > b) return 1;
42
- return 0;
43
- };
44
- const compareSemver = (a, b)=>{
45
- return compare(Number.parseInt(a[0], 10), Number.parseInt(b[0], 10)) || compare(Number.parseInt(a[1] || "0", 10), Number.parseInt(b[1] || "0", 10)) || compare(Number.parseInt(a[2] || "0", 10), Number.parseInt(b[2] || "0", 10));
46
- };
47
- const loadBrowserslist = (cwd)=>{
48
- const browserslistConfig = browserslist.loadConfig({
49
- path: cwd
50
- }) ?? MODERN_BROWSERSLIST_TARGET;
51
- return browserslist(browserslistConfig).filter((query)=>!UNSUPPORTED_BROWSERLIST_TARGETS.some((target)=>query.startsWith(target))).map((query)=>{
52
- const modified = query === "safari TP" ? browserslist("last 1 safari version")[0] : query;
53
- const split = modified.split(" ");
54
- if (split[0] === "android" || split[0] === "and_chr") {
55
- split[0] = "chrome";
56
- }
57
- if (split[0] === "and_ff") {
58
- split[0] = "firefox";
59
- }
60
- if (split[0] === "ios_saf" || split[0] === "ios") {
61
- split[0] = "safari";
62
- }
63
- if (split[1].includes("-")) {
64
- split[1] = split[1].slice(0, split[1].indexOf("-"));
65
- }
66
- if (split[1].endsWith(".0")) {
67
- split[1] = split[1].slice(0, -2);
68
- }
69
- return split;
70
- }).filter((split)=>SUPPORTED_ESBUILD_TARGETS.includes(split[0]) && /^\d+(\.\d+)*$/.test(split[1])).sort((a, b)=>{
71
- if (a[0] === b[0]) {
72
- return compareSemver(b[1].split("."), a[1].split("."));
73
- } else {
74
- return compare(a[0], b[0]);
75
- }
76
- }).reduce((acc, browser)=>{
77
- const existingIndex = acc.findIndex((br)=>br[0] === browser[0]);
78
- if (existingIndex !== -1) {
79
- acc[existingIndex][1] = browser[1];
80
- } else {
81
- acc.push(browser);
82
- }
83
- return acc;
84
- }, []).map((split)=>split.join(""));
85
- };
86
21
 
87
22
  const _cwd = process.cwd();
88
23
  const _isDev = process.env.NODE_ENV === "development";
@@ -168,7 +103,7 @@ const serwist = async (options, nextConfig, { cwd = _cwd, isDev = _isDev } = {})
168
103
  ],
169
104
  esbuildOptions: {
170
105
  ...cliOptions.esbuildOptions,
171
- target: cliOptions.esbuildOptions?.target ?? loadBrowserslist(cwd)
106
+ target: cliOptions.esbuildOptions?.target ?? browserslistToEsbuild(browserslist, cwd, MODERN_BROWSERSLIST_TARGET)
172
107
  }
173
108
  };
174
109
  };
@@ -1,4 +1,2 @@
1
- /** @see https://esbuild.github.io/api/#target */
2
- export declare const SUPPORTED_ESBUILD_TARGETS: string[];
3
- export declare const UNSUPPORTED_BROWSERLIST_TARGETS: string[];
1
+ export {};
4
2
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/config/constants.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,eAAO,MAAM,yBAAyB,UAAmG,CAAC;AAE1I,eAAO,MAAM,+BAA+B,UAA0C,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/config/constants.ts"],"names":[],"mappings":""}
@@ -1,10 +1,3 @@
1
1
  export declare const loadNextConfig: (cwd: string, isDev: boolean) => Promise<import("next/dist/server/config-shared.js").NextConfigComplete>;
2
2
  export declare const generateGlobPatterns: (distDir: string) => string[];
3
- /**
4
- * Loads and converts Browserslist into esbuild's `target` option.
5
- *
6
- * @param cwd
7
- * @returns
8
- */
9
- export declare const loadBrowserslist: (cwd: string) => string[];
10
3
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/config/utils.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,OAAO,OAAO,4EAKzD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,SAAS,MAAM,aAGnD,CAAC;AAmBF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAAM,EAqDpD,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/config/utils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,OAAO,OAAO,4EAKzD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,SAAS,MAAM,aAGnD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serwist/next",
3
- "version": "9.5.2",
3
+ "version": "9.5.3",
4
4
  "type": "module",
5
5
  "description": "A module that integrates Serwist into your Next.js application.",
6
6
  "files": [
@@ -81,11 +81,11 @@
81
81
  "kolorist": "1.8.0",
82
82
  "semver": "7.7.3",
83
83
  "zod": "4.3.6",
84
- "@serwist/build": "9.5.2",
85
- "@serwist/utils": "9.5.2",
86
- "@serwist/webpack-plugin": "9.5.2",
87
- "@serwist/window": "9.5.2",
88
- "serwist": "9.5.2"
84
+ "@serwist/build": "9.5.3",
85
+ "@serwist/utils": "9.5.3",
86
+ "@serwist/webpack-plugin": "9.5.3",
87
+ "@serwist/window": "9.5.3",
88
+ "serwist": "9.5.3"
89
89
  },
90
90
  "devDependencies": {
91
91
  "@types/node": "25.1.0",
@@ -98,14 +98,14 @@
98
98
  "type-fest": "5.4.2",
99
99
  "typescript": "5.9.3",
100
100
  "webpack": "5.104.1",
101
- "@serwist/cli": "9.5.2",
102
- "@serwist/configs": "9.5.2"
101
+ "@serwist/cli": "9.5.3",
102
+ "@serwist/configs": "9.5.3"
103
103
  },
104
104
  "peerDependencies": {
105
105
  "next": ">=14.0.0",
106
106
  "react": ">=18.0.0",
107
107
  "typescript": ">=5.0.0",
108
- "@serwist/cli": "^9.5.2"
108
+ "@serwist/cli": "^9.5.3"
109
109
  },
110
110
  "peerDependenciesMeta": {
111
111
  "@serwist/cli": {
@@ -2,9 +2,12 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { rebasePath } from "@serwist/build";
4
4
  import type { BuildOptions } from "@serwist/cli";
5
+ import { browserslistToEsbuild } from "@serwist/utils";
6
+ import browserslist from "browserslist";
7
+ import { MODERN_BROWSERSLIST_TARGET } from "next/constants.js";
5
8
  import type { NextConfigComplete } from "next/dist/server/config-shared.js";
6
9
  import type { SerwistOptions } from "./lib/config/types.js";
7
- import { generateGlobPatterns, loadBrowserslist, loadNextConfig } from "./lib/config/utils.js";
10
+ import { generateGlobPatterns, loadNextConfig } from "./lib/config/utils.js";
8
11
 
9
12
  const _cwd = process.cwd();
10
13
  const _isDev = process.env.NODE_ENV === "development";
@@ -116,7 +119,7 @@ export const serwist: Serwist = async (options, nextConfig, { cwd = _cwd, isDev
116
119
  ],
117
120
  esbuildOptions: {
118
121
  ...cliOptions.esbuildOptions,
119
- target: cliOptions.esbuildOptions?.target ?? loadBrowserslist(cwd),
122
+ target: cliOptions.esbuildOptions?.target ?? browserslistToEsbuild(browserslist, cwd, MODERN_BROWSERSLIST_TARGET),
120
123
  },
121
124
  };
122
125
  };
@@ -1,4 +0,0 @@
1
- /** @see https://esbuild.github.io/api/#target */
2
- export const SUPPORTED_ESBUILD_TARGETS = ["chrome", "deno", "edge", "firefox", "hermes", "ie", "ios", "node", "opera", "rhino", "safari"];
3
-
4
- export const UNSUPPORTED_BROWSERLIST_TARGETS = ["android 4", "android 3", "android 2"];
@@ -1,6 +1,4 @@
1
- import browserslist from "browserslist";
2
- import { MODERN_BROWSERSLIST_TARGET, PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "next/constants.js";
3
- import { SUPPORTED_ESBUILD_TARGETS, UNSUPPORTED_BROWSERLIST_TARGETS } from "./constants.js";
1
+ import { PHASE_DEVELOPMENT_SERVER, PHASE_PRODUCTION_BUILD } from "next/constants.js";
4
2
 
5
3
  import nextConfig = require("next/dist/server/config.js");
6
4
 
@@ -15,81 +13,3 @@ export const generateGlobPatterns = (distDir: string) => [
15
13
  `${distDir}static/**/*.{js,css,html,ico,apng,png,avif,jpg,jpeg,jfif,pjpeg,pjp,gif,svg,webp,json,webmanifest}`,
16
14
  "public/**/*",
17
15
  ];
18
-
19
- // Source: https://github.com/browserslist/browserslist/blob/5cad191bc1a1e5beb7768ca263503cc15d0dcc7d/index.js#L139-L151
20
- // License: MIT
21
- const compare = <T extends string | number>(a: T, b: T) => {
22
- if (a < b) return -1;
23
- if (a > b) return +1;
24
- return 0;
25
- };
26
- const compareSemver = (a: string[], b: string[]) => {
27
- return (
28
- compare(Number.parseInt(a[0], 10), Number.parseInt(b[0], 10)) ||
29
- compare(Number.parseInt(a[1] || "0", 10), Number.parseInt(b[1] || "0", 10)) ||
30
- compare(Number.parseInt(a[2] || "0", 10), Number.parseInt(b[2] || "0", 10))
31
- );
32
- };
33
-
34
- // Original: https://github.com/marcofugaro/browserslist-to-esbuild/blob/0875f1a4ec71f206a634ba406c3528ca5ecf04de/src/index.js
35
- // License: MIT
36
- /**
37
- * Loads and converts Browserslist into esbuild's `target` option.
38
- *
39
- * @param cwd
40
- * @returns
41
- */
42
- export const loadBrowserslist = (cwd: string): string[] => {
43
- const browserslistConfig = browserslist.loadConfig({ path: cwd }) ?? MODERN_BROWSERSLIST_TARGET;
44
- return (
45
- browserslist(browserslistConfig)
46
- // Filter out legacy Android webview to avoid converting them into Chrome targets
47
- .filter((query) => !UNSUPPORTED_BROWSERLIST_TARGETS.some((target) => query.startsWith(target)))
48
- .map((query) => {
49
- const modified = query === "safari TP" ? browserslist("last 1 safari version")[0] : query;
50
- const split = modified.split(" ");
51
- // https://github.com/browserslist/browserslist/blob/5cad191bc1a1e5beb7768ca263503cc15d0dcc7d/README.md?plain=1#L329-L350
52
- // https://esbuild.github.io/api/#target
53
- if (split[0] === "android" || split[0] === "and_chr") {
54
- split[0] = "chrome";
55
- }
56
- if (split[0] === "and_ff") {
57
- split[0] = "firefox";
58
- }
59
- if (split[0] === "ios_saf" || split[0] === "ios") {
60
- split[0] = "safari";
61
- }
62
- // Remove upper version bound
63
- if (split[1].includes("-")) {
64
- split[1] = split[1].slice(0, split[1].indexOf("-"));
65
- }
66
- // Trim ending .0
67
- if (split[1].endsWith(".0")) {
68
- split[1] = split[1].slice(0, -2);
69
- }
70
- return split;
71
- })
72
- // Remove unsupported browsers and invalid versions
73
- .filter((split) => SUPPORTED_ESBUILD_TARGETS.includes(split[0]) && /^\d+(\.\d+)*$/.test(split[1]))
74
- // Re-sort the result such that the oldest versions end up the latest, same as how
75
- // Browserslist does it.
76
- .sort((a, b) => {
77
- if (a[0] === b[0]) {
78
- return compareSemver(b[1].split("."), a[1].split("."));
79
- } else {
80
- return compare(a[0], b[0]);
81
- }
82
- })
83
- // Only pick the oldest included version for each browser to avoid duplications.
84
- .reduce((acc, browser) => {
85
- const existingIndex = acc.findIndex((br) => br[0] === browser[0]);
86
- if (existingIndex !== -1) {
87
- acc[existingIndex][1] = browser[1];
88
- } else {
89
- acc.push(browser);
90
- }
91
- return acc;
92
- }, [] as string[][])
93
- .map((split) => split.join(""))
94
- );
95
- };