@vercel/build-utils 9.0.0 → 9.1.0
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/CHANGELOG.md +15 -0
- package/dist/fs/node-version.js +45 -26
- package/dist/fs/run-user-scripts.d.ts +8 -16
- package/dist/fs/run-user-scripts.js +29 -38
- package/dist/index.js +105 -64
- package/dist/nodejs-lambda.d.ts +3 -1
- package/dist/nodejs-lambda.js +2 -0
- package/dist/types.d.ts +18 -2
- package/dist/types.js +35 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# @vercel/build-utils
|
2
2
|
|
3
|
+
## 9.1.0
|
4
|
+
|
5
|
+
### Minor Changes
|
6
|
+
|
7
|
+
- Add `useWebApi` property to `NodejsLambda` class ([#12873](https://github.com/vercel/vercel/pull/12873))
|
8
|
+
|
9
|
+
- [build-utils] convert NodeVersion to class and add state getter ([#12883](https://github.com/vercel/vercel/pull/12883))
|
10
|
+
[ruby] convert RubyVersion to class and add state getter
|
11
|
+
|
12
|
+
## 9.0.1
|
13
|
+
|
14
|
+
### Patch Changes
|
15
|
+
|
16
|
+
- Revert build utils refactor ([#12818](https://github.com/vercel/vercel/pull/12818))
|
17
|
+
|
3
18
|
## 9.0.0
|
4
19
|
|
5
20
|
### Major Changes
|
package/dist/fs/node-version.js
CHANGED
@@ -37,42 +37,55 @@ __export(node_version_exports, {
|
|
37
37
|
module.exports = __toCommonJS(node_version_exports);
|
38
38
|
var import_fs = require("fs");
|
39
39
|
var import_semver = require("semver");
|
40
|
+
var import_types = require("../types");
|
40
41
|
var import_errors = require("../errors");
|
41
42
|
var import_debug = __toESM(require("../debug"));
|
42
43
|
const NODE_VERSIONS = [
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
new import_types.NodeVersion({
|
45
|
+
major: 22,
|
46
|
+
range: "22.x",
|
47
|
+
runtime: "nodejs22.x"
|
48
|
+
}),
|
49
|
+
new import_types.NodeVersion({
|
50
|
+
major: 20,
|
51
|
+
range: "20.x",
|
52
|
+
runtime: "nodejs20.x"
|
53
|
+
}),
|
54
|
+
new import_types.NodeVersion({
|
55
|
+
major: 18,
|
56
|
+
range: "18.x",
|
57
|
+
runtime: "nodejs18.x"
|
58
|
+
}),
|
59
|
+
new import_types.NodeVersion({
|
47
60
|
major: 16,
|
48
61
|
range: "16.x",
|
49
62
|
runtime: "nodejs16.x",
|
50
63
|
discontinueDate: /* @__PURE__ */ new Date("2025-01-31")
|
51
|
-
},
|
52
|
-
{
|
64
|
+
}),
|
65
|
+
new import_types.NodeVersion({
|
53
66
|
major: 14,
|
54
67
|
range: "14.x",
|
55
68
|
runtime: "nodejs14.x",
|
56
69
|
discontinueDate: /* @__PURE__ */ new Date("2023-08-15")
|
57
|
-
},
|
58
|
-
{
|
70
|
+
}),
|
71
|
+
new import_types.NodeVersion({
|
59
72
|
major: 12,
|
60
73
|
range: "12.x",
|
61
74
|
runtime: "nodejs12.x",
|
62
75
|
discontinueDate: /* @__PURE__ */ new Date("2022-10-03")
|
63
|
-
},
|
64
|
-
{
|
76
|
+
}),
|
77
|
+
new import_types.NodeVersion({
|
65
78
|
major: 10,
|
66
79
|
range: "10.x",
|
67
80
|
runtime: "nodejs10.x",
|
68
81
|
discontinueDate: /* @__PURE__ */ new Date("2021-04-20")
|
69
|
-
},
|
70
|
-
{
|
82
|
+
}),
|
83
|
+
new import_types.NodeVersion({
|
71
84
|
major: 8,
|
72
85
|
range: "8.10.x",
|
73
86
|
runtime: "nodejs8.10",
|
74
87
|
discontinueDate: /* @__PURE__ */ new Date("2020-01-06")
|
75
|
-
}
|
88
|
+
})
|
76
89
|
];
|
77
90
|
function getOptions() {
|
78
91
|
return NODE_VERSIONS;
|
@@ -105,7 +118,9 @@ function getLatestNodeVersion(availableVersions) {
|
|
105
118
|
return all[0];
|
106
119
|
}
|
107
120
|
function getDiscontinuedNodeVersions() {
|
108
|
-
return getOptions().filter(
|
121
|
+
return getOptions().filter((version) => {
|
122
|
+
return version.state === "discontinued";
|
123
|
+
});
|
109
124
|
}
|
110
125
|
async function getSupportedNodeVersion(engineRange, isAuto = false, availableVersions) {
|
111
126
|
let selection;
|
@@ -128,7 +143,7 @@ async function getSupportedNodeVersion(engineRange, isAuto = false, availableVer
|
|
128
143
|
if (!selection) {
|
129
144
|
selection = getLatestNodeVersion(availableVersions);
|
130
145
|
}
|
131
|
-
if (
|
146
|
+
if (selection.state === "discontinued") {
|
132
147
|
const intro = `Node.js Version "${selection.range}" is discontinued and must be upgraded.`;
|
133
148
|
throw new import_errors.NowBuildError({
|
134
149
|
code: "BUILD_UTILS_NODE_VERSION_DISCONTINUED",
|
@@ -137,20 +152,24 @@ async function getSupportedNodeVersion(engineRange, isAuto = false, availableVer
|
|
137
152
|
});
|
138
153
|
}
|
139
154
|
(0, import_debug.default)(`Selected Node.js ${selection.range}`);
|
140
|
-
if (selection.
|
141
|
-
const d = selection.
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
155
|
+
if (selection.state === "deprecated") {
|
156
|
+
const d = selection.formattedDate;
|
157
|
+
if (d) {
|
158
|
+
console.warn(
|
159
|
+
`Error: Node.js version ${selection.range} is deprecated. Deployments created on or after ${d} will fail to build. ${getHint(
|
160
|
+
isAuto
|
161
|
+
)}`
|
162
|
+
);
|
163
|
+
} else {
|
164
|
+
console.warn(
|
165
|
+
`Error: Node.js version ${selection.range} is deprecated. ${getHint(
|
166
|
+
isAuto
|
167
|
+
)}`
|
168
|
+
);
|
169
|
+
}
|
147
170
|
}
|
148
171
|
return selection;
|
149
172
|
}
|
150
|
-
function isDiscontinued({ discontinueDate }) {
|
151
|
-
const today = Date.now();
|
152
|
-
return discontinueDate !== void 0 && discontinueDate.getTime() <= today;
|
153
|
-
}
|
154
173
|
// Annotate the CommonJS export names for ESM import in node:
|
155
174
|
0 && (module.exports = {
|
156
175
|
NODE_VERSIONS,
|
@@ -37,11 +37,6 @@ export interface ScanParentDirsResult {
|
|
37
37
|
* `undefined` if not a Turborepo project.
|
38
38
|
*/
|
39
39
|
turboSupportsCorepackHome?: boolean;
|
40
|
-
/**
|
41
|
-
* Name of the lockfile (`yarn.lock`, `package-lock.json`, ...) detected
|
42
|
-
* or `undefined` if no lockfile was detected.
|
43
|
-
*/
|
44
|
-
detectedLockfile?: string;
|
45
40
|
}
|
46
41
|
export interface TraverseUpDirectoriesProps {
|
47
42
|
/**
|
@@ -102,7 +97,7 @@ export declare function runNpmInstall(destPath: string, args?: string[], spawnOp
|
|
102
97
|
* Prepares the input environment based on the used package manager and lockfile
|
103
98
|
* versions.
|
104
99
|
*/
|
105
|
-
export declare function getEnvForPackageManager({ cliType, lockfileVersion, packageJsonPackageManager, nodeVersion, env, packageJsonEngines, turboSupportsCorepackHome,
|
100
|
+
export declare function getEnvForPackageManager({ cliType, lockfileVersion, packageJsonPackageManager, nodeVersion, env, packageJsonEngines, turboSupportsCorepackHome, }: {
|
106
101
|
cliType: CliType;
|
107
102
|
lockfileVersion: number | undefined;
|
108
103
|
packageJsonPackageManager?: string | undefined;
|
@@ -112,7 +107,6 @@ export declare function getEnvForPackageManager({ cliType, lockfileVersion, pack
|
|
112
107
|
};
|
113
108
|
packageJsonEngines?: PackageJson.Engines;
|
114
109
|
turboSupportsCorepackHome?: boolean | undefined;
|
115
|
-
detectedLockfile: string | undefined;
|
116
110
|
}): {
|
117
111
|
[x: string]: string | undefined;
|
118
112
|
};
|
@@ -120,14 +114,13 @@ export declare function getEnvForPackageManager({ cliType, lockfileVersion, pack
|
|
120
114
|
* Helper to get the binary paths that link to the used package manager.
|
121
115
|
* Note: Make sure it doesn't contain any `console.log` calls.
|
122
116
|
*/
|
123
|
-
export declare function getPathOverrideForPackageManager({ cliType, lockfileVersion, corepackPackageManager, corepackEnabled, packageJsonEngines,
|
117
|
+
export declare function getPathOverrideForPackageManager({ cliType, lockfileVersion, corepackPackageManager, corepackEnabled, packageJsonEngines, }: {
|
124
118
|
cliType: CliType;
|
125
119
|
lockfileVersion: number | undefined;
|
126
120
|
corepackPackageManager: string | undefined;
|
127
121
|
nodeVersion: NodeVersion | undefined;
|
128
122
|
corepackEnabled?: boolean;
|
129
123
|
packageJsonEngines?: PackageJson.Engines;
|
130
|
-
detectedLockfile?: string;
|
131
124
|
}): {
|
132
125
|
/**
|
133
126
|
* Which lockfile was detected.
|
@@ -143,24 +136,24 @@ export declare function getPathOverrideForPackageManager({ cliType, lockfileVers
|
|
143
136
|
*/
|
144
137
|
path: string | undefined;
|
145
138
|
};
|
146
|
-
export declare function detectPackageManager(cliType: CliType, lockfileVersion: number | undefined
|
139
|
+
export declare function detectPackageManager(cliType: CliType, lockfileVersion: number | undefined): {
|
147
140
|
path: string;
|
148
|
-
detectedLockfile: string
|
141
|
+
detectedLockfile: string;
|
149
142
|
detectedPackageManager: string;
|
150
143
|
pnpmVersionRange: string;
|
151
144
|
} | {
|
152
145
|
path: undefined;
|
153
|
-
detectedLockfile: string
|
146
|
+
detectedLockfile: string;
|
154
147
|
detectedPackageManager: string;
|
155
148
|
pnpmVersionRange: string;
|
156
149
|
} | {
|
157
150
|
path: string;
|
158
|
-
detectedLockfile: string
|
151
|
+
detectedLockfile: string;
|
159
152
|
detectedPackageManager: string;
|
160
153
|
pnpmVersionRange?: undefined;
|
161
154
|
} | {
|
162
155
|
path: undefined;
|
163
|
-
detectedLockfile: string
|
156
|
+
detectedLockfile: string;
|
164
157
|
detectedPackageManager: string;
|
165
158
|
pnpmVersionRange?: undefined;
|
166
159
|
} | undefined;
|
@@ -169,14 +162,13 @@ export declare function detectPackageManager(cliType: CliType, lockfileVersion:
|
|
169
162
|
* Note: Make sure it doesn't contain any `console.log` calls.
|
170
163
|
* @deprecated use `getEnvForPackageManager` instead
|
171
164
|
*/
|
172
|
-
export declare function getPathForPackageManager({ cliType, lockfileVersion, nodeVersion, env,
|
165
|
+
export declare function getPathForPackageManager({ cliType, lockfileVersion, nodeVersion, env, }: {
|
173
166
|
cliType: CliType;
|
174
167
|
lockfileVersion: number | undefined;
|
175
168
|
nodeVersion: NodeVersion | undefined;
|
176
169
|
env: {
|
177
170
|
[x: string]: string | undefined;
|
178
171
|
};
|
179
|
-
detectedLockfile: string;
|
180
172
|
}): {
|
181
173
|
/**
|
182
174
|
* Which lockfile was detected.
|
@@ -201,7 +201,8 @@ function getSpawnOptions(meta, nodeVersion) {
|
|
201
201
|
async function getNodeVersion(destPath, fallbackVersion = process.env.VERCEL_PROJECT_SETTINGS_NODE_VERSION, config = {}, meta = {}, availableVersions = (0, import_node_version.getAvailableNodeVersions)()) {
|
202
202
|
const latestVersion = (0, import_node_version.getLatestNodeVersion)(availableVersions);
|
203
203
|
if (meta.isDev) {
|
204
|
-
|
204
|
+
latestVersion.runtime = "nodejs";
|
205
|
+
return latestVersion;
|
205
206
|
}
|
206
207
|
const { packageJson } = await scanParentDirs(destPath, true);
|
207
208
|
const configuredVersion = config.nodeVersion || fallbackVersion;
|
@@ -280,6 +281,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
280
281
|
if (bunLock && hasYarnLock) {
|
281
282
|
cliType = "bun";
|
282
283
|
lockfilePath = bunLockPath;
|
284
|
+
lockfileVersion = bunLockTextPath ? 1 : 0;
|
283
285
|
} else if (hasYarnLock) {
|
284
286
|
cliType = "yarn";
|
285
287
|
lockfilePath = yarnLockPath;
|
@@ -294,6 +296,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
294
296
|
} else if (bunLock) {
|
295
297
|
cliType = "bun";
|
296
298
|
lockfilePath = bunLockPath;
|
299
|
+
lockfileVersion = bunLockTextPath ? 1 : 0;
|
297
300
|
} else {
|
298
301
|
cliType = detectPackageManagerNameWithoutLockfile(
|
299
302
|
packageJsonPackageManager,
|
@@ -308,8 +311,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
308
311
|
lockfilePath,
|
309
312
|
lockfileVersion,
|
310
313
|
packageJsonPath,
|
311
|
-
turboSupportsCorepackHome
|
312
|
-
detectedLockfile: lockfilePath ? import_path.default.basename(lockfilePath) : void 0
|
314
|
+
turboSupportsCorepackHome
|
313
315
|
};
|
314
316
|
}
|
315
317
|
async function checkTurboSupportsCorepack(turboVersionRange, rootDir) {
|
@@ -435,8 +437,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
|
|
435
437
|
packageJson,
|
436
438
|
lockfileVersion,
|
437
439
|
packageJsonPackageManager,
|
438
|
-
turboSupportsCorepackHome
|
439
|
-
detectedLockfile
|
440
|
+
turboSupportsCorepackHome
|
440
441
|
} = await scanParentDirs(destPath, true);
|
441
442
|
if (!packageJsonPath) {
|
442
443
|
(0, import_debug.default)(
|
@@ -470,8 +471,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
|
|
470
471
|
nodeVersion,
|
471
472
|
env,
|
472
473
|
packageJsonEngines: packageJson?.engines,
|
473
|
-
turboSupportsCorepackHome
|
474
|
-
detectedLockfile
|
474
|
+
turboSupportsCorepackHome
|
475
475
|
});
|
476
476
|
let commandArgs;
|
477
477
|
const isPotentiallyBrokenNpm = cliType === "npm" && (nodeVersion?.major === 16 || opts.env.PATH?.includes("/node16/bin-npm7")) && !args.includes("--legacy-peer-deps") && spawnOpts?.env?.ENABLE_EXPERIMENTAL_COREPACK !== "1";
|
@@ -525,22 +525,24 @@ function getEnvForPackageManager({
|
|
525
525
|
nodeVersion,
|
526
526
|
env,
|
527
527
|
packageJsonEngines,
|
528
|
-
turboSupportsCorepackHome
|
529
|
-
detectedLockfile
|
528
|
+
turboSupportsCorepackHome
|
530
529
|
}) {
|
531
530
|
const corepackEnabled = usingCorepack(
|
532
531
|
env,
|
533
532
|
packageJsonPackageManager,
|
534
533
|
turboSupportsCorepackHome
|
535
534
|
);
|
536
|
-
const {
|
535
|
+
const {
|
536
|
+
detectedLockfile,
|
537
|
+
detectedPackageManager,
|
538
|
+
path: newPath
|
539
|
+
} = getPathOverrideForPackageManager({
|
537
540
|
cliType,
|
538
541
|
lockfileVersion,
|
539
542
|
corepackPackageManager: packageJsonPackageManager,
|
540
543
|
nodeVersion,
|
541
544
|
corepackEnabled,
|
542
|
-
packageJsonEngines
|
543
|
-
detectedLockfile
|
545
|
+
packageJsonEngines
|
544
546
|
});
|
545
547
|
if (corepackEnabled) {
|
546
548
|
(0, import_debug.default)(
|
@@ -624,14 +626,9 @@ function getPathOverrideForPackageManager({
|
|
624
626
|
lockfileVersion,
|
625
627
|
corepackPackageManager,
|
626
628
|
corepackEnabled = true,
|
627
|
-
packageJsonEngines
|
628
|
-
detectedLockfile
|
629
|
+
packageJsonEngines
|
629
630
|
}) {
|
630
|
-
const detectedPackageManger = detectPackageManager(
|
631
|
-
cliType,
|
632
|
-
lockfileVersion,
|
633
|
-
detectedLockfile
|
634
|
-
);
|
631
|
+
const detectedPackageManger = detectPackageManager(cliType, lockfileVersion);
|
635
632
|
if (!corepackPackageManager || !corepackEnabled) {
|
636
633
|
if (cliType === "pnpm" && packageJsonEngines?.pnpm) {
|
637
634
|
checkEnginesPnpmAgainstDetected(
|
@@ -722,7 +719,7 @@ function validateVersionSpecifier(version) {
|
|
722
719
|
packageVersion
|
723
720
|
};
|
724
721
|
}
|
725
|
-
function detectPackageManager(cliType, lockfileVersion
|
722
|
+
function detectPackageManager(cliType, lockfileVersion) {
|
726
723
|
switch (cliType) {
|
727
724
|
case "npm":
|
728
725
|
return void 0;
|
@@ -731,21 +728,21 @@ function detectPackageManager(cliType, lockfileVersion, detectedLockfile) {
|
|
731
728
|
case "pnpm 7":
|
732
729
|
return {
|
733
730
|
path: "/pnpm7/node_modules/.bin",
|
734
|
-
detectedLockfile,
|
731
|
+
detectedLockfile: "pnpm-lock.yaml",
|
735
732
|
detectedPackageManager: "pnpm@7.x",
|
736
733
|
pnpmVersionRange: "7.x"
|
737
734
|
};
|
738
735
|
case "pnpm 8":
|
739
736
|
return {
|
740
737
|
path: "/pnpm8/node_modules/.bin",
|
741
|
-
detectedLockfile,
|
738
|
+
detectedLockfile: "pnpm-lock.yaml",
|
742
739
|
detectedPackageManager: "pnpm@8.x",
|
743
740
|
pnpmVersionRange: "8.x"
|
744
741
|
};
|
745
742
|
case "pnpm 9":
|
746
743
|
return {
|
747
744
|
path: "/pnpm9/node_modules/.bin",
|
748
|
-
detectedLockfile,
|
745
|
+
detectedLockfile: "pnpm-lock.yaml",
|
749
746
|
detectedPackageManager: "pnpm@9.x",
|
750
747
|
pnpmVersionRange: "9.x"
|
751
748
|
};
|
@@ -753,7 +750,7 @@ function detectPackageManager(cliType, lockfileVersion, detectedLockfile) {
|
|
753
750
|
return {
|
754
751
|
// undefined because pnpm@6 is the current default in the build container
|
755
752
|
path: void 0,
|
756
|
-
detectedLockfile,
|
753
|
+
detectedLockfile: "pnpm-lock.yaml",
|
757
754
|
detectedPackageManager: "pnpm@6.x",
|
758
755
|
pnpmVersionRange: "6.x"
|
759
756
|
};
|
@@ -763,13 +760,13 @@ function detectPackageManager(cliType, lockfileVersion, detectedLockfile) {
|
|
763
760
|
case "bun":
|
764
761
|
return {
|
765
762
|
path: "/bun1",
|
766
|
-
detectedLockfile,
|
763
|
+
detectedLockfile: lockfileVersion === 0 ? "bun.lockb" : "bun.lock",
|
767
764
|
detectedPackageManager: "bun@1.x"
|
768
765
|
};
|
769
766
|
case "yarn":
|
770
767
|
return {
|
771
768
|
path: void 0,
|
772
|
-
detectedLockfile,
|
769
|
+
detectedLockfile: "yarn.lock",
|
773
770
|
detectedPackageManager: "yarn"
|
774
771
|
};
|
775
772
|
}
|
@@ -778,16 +775,14 @@ function getPathForPackageManager({
|
|
778
775
|
cliType,
|
779
776
|
lockfileVersion,
|
780
777
|
nodeVersion,
|
781
|
-
env
|
782
|
-
detectedLockfile
|
778
|
+
env
|
783
779
|
}) {
|
784
780
|
const corepackEnabled = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
|
785
781
|
let overrides = getPathOverrideForPackageManager({
|
786
782
|
cliType,
|
787
783
|
lockfileVersion,
|
788
784
|
corepackPackageManager: void 0,
|
789
|
-
nodeVersion
|
790
|
-
detectedLockfile
|
785
|
+
nodeVersion
|
791
786
|
});
|
792
787
|
if (corepackEnabled) {
|
793
788
|
overrides = NO_OVERRIDE;
|
@@ -822,8 +817,7 @@ async function runCustomInstallCommand({
|
|
822
817
|
lockfileVersion,
|
823
818
|
packageJson,
|
824
819
|
packageJsonPackageManager,
|
825
|
-
turboSupportsCorepackHome
|
826
|
-
detectedLockfile
|
820
|
+
turboSupportsCorepackHome
|
827
821
|
} = await scanParentDirs(destPath, true);
|
828
822
|
const env = getEnvForPackageManager({
|
829
823
|
cliType,
|
@@ -832,8 +826,7 @@ async function runCustomInstallCommand({
|
|
832
826
|
nodeVersion,
|
833
827
|
env: spawnOpts?.env || {},
|
834
828
|
packageJsonEngines: packageJson?.engines,
|
835
|
-
turboSupportsCorepackHome
|
836
|
-
detectedLockfile
|
829
|
+
turboSupportsCorepackHome
|
837
830
|
});
|
838
831
|
(0, import_debug.default)(`Running with $PATH:`, env?.PATH || "");
|
839
832
|
await execCommand(installCommand, {
|
@@ -849,8 +842,7 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
|
|
849
842
|
cliType,
|
850
843
|
lockfileVersion,
|
851
844
|
packageJsonPackageManager,
|
852
|
-
turboSupportsCorepackHome
|
853
|
-
detectedLockfile
|
845
|
+
turboSupportsCorepackHome
|
854
846
|
} = await scanParentDirs(destPath, true);
|
855
847
|
const scriptName = getScriptName(
|
856
848
|
packageJson,
|
@@ -870,8 +862,7 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
|
|
870
862
|
nodeVersion: void 0,
|
871
863
|
env: (0, import_clone_env.cloneEnv)(process.env, spawnOpts?.env),
|
872
864
|
packageJsonEngines: packageJson?.engines,
|
873
|
-
turboSupportsCorepackHome
|
874
|
-
detectedLockfile
|
865
|
+
turboSupportsCorepackHome
|
875
866
|
})
|
876
867
|
};
|
877
868
|
if (cliType === "npm") {
|
package/dist/index.js
CHANGED
@@ -21851,9 +21851,11 @@ __export(src_exports, {
|
|
21851
21851
|
FileRef: () => FileRef,
|
21852
21852
|
Lambda: () => Lambda,
|
21853
21853
|
NODE_VERSIONS: () => NODE_VERSIONS,
|
21854
|
+
NodeVersion: () => NodeVersion,
|
21854
21855
|
NodejsLambda: () => NodejsLambda,
|
21855
21856
|
NowBuildError: () => NowBuildError,
|
21856
21857
|
Prerender: () => Prerender,
|
21858
|
+
Version: () => Version,
|
21857
21859
|
buildsSchema: () => buildsSchema,
|
21858
21860
|
cloneEnv: () => cloneEnv,
|
21859
21861
|
createLambda: () => createLambda,
|
@@ -22581,6 +22583,7 @@ var NodejsLambda = class extends Lambda {
|
|
22581
22583
|
shouldAddHelpers,
|
22582
22584
|
shouldAddSourcemapSupport,
|
22583
22585
|
awsLambdaHandler,
|
22586
|
+
useWebApi,
|
22584
22587
|
...opts
|
22585
22588
|
}) {
|
22586
22589
|
super(opts);
|
@@ -22588,6 +22591,7 @@ var NodejsLambda = class extends Lambda {
|
|
22588
22591
|
this.shouldAddHelpers = shouldAddHelpers;
|
22589
22592
|
this.shouldAddSourcemapSupport = shouldAddSourcemapSupport;
|
22590
22593
|
this.awsLambdaHandler = awsLambdaHandler;
|
22594
|
+
this.useWebApi = useWebApi;
|
22591
22595
|
}
|
22592
22596
|
};
|
22593
22597
|
|
@@ -22853,40 +22857,78 @@ var import_util2 = require("util");
|
|
22853
22857
|
// src/fs/node-version.ts
|
22854
22858
|
var import_fs = require("fs");
|
22855
22859
|
var import_semver = __toESM(require_semver2());
|
22860
|
+
|
22861
|
+
// src/types.ts
|
22862
|
+
var Version = class {
|
22863
|
+
constructor(version) {
|
22864
|
+
this.major = version.major;
|
22865
|
+
this.minor = version.minor;
|
22866
|
+
this.range = version.range;
|
22867
|
+
this.runtime = version.runtime;
|
22868
|
+
this.discontinueDate = version.discontinueDate;
|
22869
|
+
}
|
22870
|
+
get state() {
|
22871
|
+
if (this.discontinueDate && this.discontinueDate.getTime() <= Date.now()) {
|
22872
|
+
return "discontinued";
|
22873
|
+
} else if (this.discontinueDate) {
|
22874
|
+
return "deprecated";
|
22875
|
+
}
|
22876
|
+
return "active";
|
22877
|
+
}
|
22878
|
+
get formattedDate() {
|
22879
|
+
return this.discontinueDate && this.discontinueDate.toISOString().split("T")[0];
|
22880
|
+
}
|
22881
|
+
};
|
22882
|
+
var NodeVersion = class extends Version {
|
22883
|
+
};
|
22884
|
+
|
22885
|
+
// src/fs/node-version.ts
|
22856
22886
|
var NODE_VERSIONS = [
|
22857
|
-
{
|
22858
|
-
|
22859
|
-
|
22860
|
-
|
22887
|
+
new NodeVersion({
|
22888
|
+
major: 22,
|
22889
|
+
range: "22.x",
|
22890
|
+
runtime: "nodejs22.x"
|
22891
|
+
}),
|
22892
|
+
new NodeVersion({
|
22893
|
+
major: 20,
|
22894
|
+
range: "20.x",
|
22895
|
+
runtime: "nodejs20.x"
|
22896
|
+
}),
|
22897
|
+
new NodeVersion({
|
22898
|
+
major: 18,
|
22899
|
+
range: "18.x",
|
22900
|
+
runtime: "nodejs18.x"
|
22901
|
+
}),
|
22902
|
+
new NodeVersion({
|
22861
22903
|
major: 16,
|
22862
22904
|
range: "16.x",
|
22863
22905
|
runtime: "nodejs16.x",
|
22864
22906
|
discontinueDate: /* @__PURE__ */ new Date("2025-01-31")
|
22865
|
-
},
|
22866
|
-
{
|
22907
|
+
}),
|
22908
|
+
new NodeVersion({
|
22867
22909
|
major: 14,
|
22868
22910
|
range: "14.x",
|
22869
22911
|
runtime: "nodejs14.x",
|
22870
22912
|
discontinueDate: /* @__PURE__ */ new Date("2023-08-15")
|
22871
|
-
},
|
22872
|
-
{
|
22913
|
+
}),
|
22914
|
+
new NodeVersion({
|
22873
22915
|
major: 12,
|
22874
22916
|
range: "12.x",
|
22875
22917
|
runtime: "nodejs12.x",
|
22876
22918
|
discontinueDate: /* @__PURE__ */ new Date("2022-10-03")
|
22877
|
-
},
|
22878
|
-
{
|
22919
|
+
}),
|
22920
|
+
new NodeVersion({
|
22879
22921
|
major: 10,
|
22880
22922
|
range: "10.x",
|
22881
22923
|
runtime: "nodejs10.x",
|
22882
22924
|
discontinueDate: /* @__PURE__ */ new Date("2021-04-20")
|
22883
|
-
},
|
22884
|
-
{
|
22925
|
+
}),
|
22926
|
+
new NodeVersion({
|
22885
22927
|
major: 8,
|
22886
22928
|
range: "8.10.x",
|
22887
22929
|
runtime: "nodejs8.10",
|
22888
22930
|
discontinueDate: /* @__PURE__ */ new Date("2020-01-06")
|
22889
|
-
}
|
22931
|
+
})
|
22890
22932
|
];
|
22891
22933
|
function getOptions() {
|
22892
22934
|
return NODE_VERSIONS;
|
@@ -22919,7 +22961,9 @@ function getLatestNodeVersion(availableVersions) {
|
|
22919
22961
|
return all[0];
|
22920
22962
|
}
|
22921
22963
|
function getDiscontinuedNodeVersions() {
|
22922
|
-
return getOptions().filter(
|
22964
|
+
return getOptions().filter((version) => {
|
22965
|
+
return version.state === "discontinued";
|
22966
|
+
});
|
22923
22967
|
}
|
22924
22968
|
async function getSupportedNodeVersion(engineRange, isAuto = false, availableVersions) {
|
22925
22969
|
let selection;
|
@@ -22942,7 +22986,7 @@ async function getSupportedNodeVersion(engineRange, isAuto = false, availableVer
|
|
22942
22986
|
if (!selection) {
|
22943
22987
|
selection = getLatestNodeVersion(availableVersions);
|
22944
22988
|
}
|
22945
|
-
if (
|
22989
|
+
if (selection.state === "discontinued") {
|
22946
22990
|
const intro = `Node.js Version "${selection.range}" is discontinued and must be upgraded.`;
|
22947
22991
|
throw new NowBuildError({
|
22948
22992
|
code: "BUILD_UTILS_NODE_VERSION_DISCONTINUED",
|
@@ -22951,20 +22995,24 @@ async function getSupportedNodeVersion(engineRange, isAuto = false, availableVer
|
|
22951
22995
|
});
|
22952
22996
|
}
|
22953
22997
|
debug(`Selected Node.js ${selection.range}`);
|
22954
|
-
if (selection.
|
22955
|
-
const d = selection.
|
22956
|
-
|
22957
|
-
|
22958
|
-
|
22959
|
-
|
22960
|
-
|
22998
|
+
if (selection.state === "deprecated") {
|
22999
|
+
const d = selection.formattedDate;
|
23000
|
+
if (d) {
|
23001
|
+
console.warn(
|
23002
|
+
`Error: Node.js version ${selection.range} is deprecated. Deployments created on or after ${d} will fail to build. ${getHint(
|
23003
|
+
isAuto
|
23004
|
+
)}`
|
23005
|
+
);
|
23006
|
+
} else {
|
23007
|
+
console.warn(
|
23008
|
+
`Error: Node.js version ${selection.range} is deprecated. ${getHint(
|
23009
|
+
isAuto
|
23010
|
+
)}`
|
23011
|
+
);
|
23012
|
+
}
|
22961
23013
|
}
|
22962
23014
|
return selection;
|
22963
23015
|
}
|
22964
|
-
function isDiscontinued({ discontinueDate }) {
|
22965
|
-
const today = Date.now();
|
22966
|
-
return discontinueDate !== void 0 && discontinueDate.getTime() <= today;
|
22967
|
-
}
|
22968
23016
|
|
22969
23017
|
// src/fs/read-config-file.ts
|
22970
23018
|
var import_js_yaml = __toESM(require_js_yaml2());
|
@@ -23161,7 +23209,8 @@ function getSpawnOptions(meta, nodeVersion) {
|
|
23161
23209
|
async function getNodeVersion(destPath, fallbackVersion = process.env.VERCEL_PROJECT_SETTINGS_NODE_VERSION, config = {}, meta = {}, availableVersions = getAvailableNodeVersions()) {
|
23162
23210
|
const latestVersion = getLatestNodeVersion(availableVersions);
|
23163
23211
|
if (meta.isDev) {
|
23164
|
-
|
23212
|
+
latestVersion.runtime = "nodejs";
|
23213
|
+
return latestVersion;
|
23165
23214
|
}
|
23166
23215
|
const { packageJson } = await scanParentDirs(destPath, true);
|
23167
23216
|
const configuredVersion = config.nodeVersion || fallbackVersion;
|
@@ -23240,6 +23289,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
23240
23289
|
if (bunLock && hasYarnLock) {
|
23241
23290
|
cliType = "bun";
|
23242
23291
|
lockfilePath = bunLockPath;
|
23292
|
+
lockfileVersion = bunLockTextPath ? 1 : 0;
|
23243
23293
|
} else if (hasYarnLock) {
|
23244
23294
|
cliType = "yarn";
|
23245
23295
|
lockfilePath = yarnLockPath;
|
@@ -23254,6 +23304,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
23254
23304
|
} else if (bunLock) {
|
23255
23305
|
cliType = "bun";
|
23256
23306
|
lockfilePath = bunLockPath;
|
23307
|
+
lockfileVersion = bunLockTextPath ? 1 : 0;
|
23257
23308
|
} else {
|
23258
23309
|
cliType = detectPackageManagerNameWithoutLockfile(
|
23259
23310
|
packageJsonPackageManager,
|
@@ -23268,8 +23319,7 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
|
|
23268
23319
|
lockfilePath,
|
23269
23320
|
lockfileVersion,
|
23270
23321
|
packageJsonPath,
|
23271
|
-
turboSupportsCorepackHome
|
23272
|
-
detectedLockfile: lockfilePath ? import_path5.default.basename(lockfilePath) : void 0
|
23322
|
+
turboSupportsCorepackHome
|
23273
23323
|
};
|
23274
23324
|
}
|
23275
23325
|
async function checkTurboSupportsCorepack(turboVersionRange, rootDir) {
|
@@ -23395,8 +23445,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
|
|
23395
23445
|
packageJson,
|
23396
23446
|
lockfileVersion,
|
23397
23447
|
packageJsonPackageManager,
|
23398
|
-
turboSupportsCorepackHome
|
23399
|
-
detectedLockfile
|
23448
|
+
turboSupportsCorepackHome
|
23400
23449
|
} = await scanParentDirs(destPath, true);
|
23401
23450
|
if (!packageJsonPath) {
|
23402
23451
|
debug(
|
@@ -23430,8 +23479,7 @@ async function runNpmInstall(destPath, args = [], spawnOpts, meta, nodeVersion)
|
|
23430
23479
|
nodeVersion,
|
23431
23480
|
env,
|
23432
23481
|
packageJsonEngines: packageJson?.engines,
|
23433
|
-
turboSupportsCorepackHome
|
23434
|
-
detectedLockfile
|
23482
|
+
turboSupportsCorepackHome
|
23435
23483
|
});
|
23436
23484
|
let commandArgs;
|
23437
23485
|
const isPotentiallyBrokenNpm = cliType === "npm" && (nodeVersion?.major === 16 || opts.env.PATH?.includes("/node16/bin-npm7")) && !args.includes("--legacy-peer-deps") && spawnOpts?.env?.ENABLE_EXPERIMENTAL_COREPACK !== "1";
|
@@ -23485,22 +23533,24 @@ function getEnvForPackageManager({
|
|
23485
23533
|
nodeVersion,
|
23486
23534
|
env,
|
23487
23535
|
packageJsonEngines,
|
23488
|
-
turboSupportsCorepackHome
|
23489
|
-
detectedLockfile
|
23536
|
+
turboSupportsCorepackHome
|
23490
23537
|
}) {
|
23491
23538
|
const corepackEnabled = usingCorepack(
|
23492
23539
|
env,
|
23493
23540
|
packageJsonPackageManager,
|
23494
23541
|
turboSupportsCorepackHome
|
23495
23542
|
);
|
23496
|
-
const {
|
23543
|
+
const {
|
23544
|
+
detectedLockfile,
|
23545
|
+
detectedPackageManager,
|
23546
|
+
path: newPath
|
23547
|
+
} = getPathOverrideForPackageManager({
|
23497
23548
|
cliType,
|
23498
23549
|
lockfileVersion,
|
23499
23550
|
corepackPackageManager: packageJsonPackageManager,
|
23500
23551
|
nodeVersion,
|
23501
23552
|
corepackEnabled,
|
23502
|
-
packageJsonEngines
|
23503
|
-
detectedLockfile
|
23553
|
+
packageJsonEngines
|
23504
23554
|
});
|
23505
23555
|
if (corepackEnabled) {
|
23506
23556
|
debug(
|
@@ -23584,14 +23634,9 @@ function getPathOverrideForPackageManager({
|
|
23584
23634
|
lockfileVersion,
|
23585
23635
|
corepackPackageManager,
|
23586
23636
|
corepackEnabled = true,
|
23587
|
-
packageJsonEngines
|
23588
|
-
detectedLockfile
|
23637
|
+
packageJsonEngines
|
23589
23638
|
}) {
|
23590
|
-
const detectedPackageManger = detectPackageManager(
|
23591
|
-
cliType,
|
23592
|
-
lockfileVersion,
|
23593
|
-
detectedLockfile
|
23594
|
-
);
|
23639
|
+
const detectedPackageManger = detectPackageManager(cliType, lockfileVersion);
|
23595
23640
|
if (!corepackPackageManager || !corepackEnabled) {
|
23596
23641
|
if (cliType === "pnpm" && packageJsonEngines?.pnpm) {
|
23597
23642
|
checkEnginesPnpmAgainstDetected(
|
@@ -23682,7 +23727,7 @@ function validateVersionSpecifier(version) {
|
|
23682
23727
|
packageVersion
|
23683
23728
|
};
|
23684
23729
|
}
|
23685
|
-
function detectPackageManager(cliType, lockfileVersion
|
23730
|
+
function detectPackageManager(cliType, lockfileVersion) {
|
23686
23731
|
switch (cliType) {
|
23687
23732
|
case "npm":
|
23688
23733
|
return void 0;
|
@@ -23691,21 +23736,21 @@ function detectPackageManager(cliType, lockfileVersion, detectedLockfile) {
|
|
23691
23736
|
case "pnpm 7":
|
23692
23737
|
return {
|
23693
23738
|
path: "/pnpm7/node_modules/.bin",
|
23694
|
-
detectedLockfile,
|
23739
|
+
detectedLockfile: "pnpm-lock.yaml",
|
23695
23740
|
detectedPackageManager: "pnpm@7.x",
|
23696
23741
|
pnpmVersionRange: "7.x"
|
23697
23742
|
};
|
23698
23743
|
case "pnpm 8":
|
23699
23744
|
return {
|
23700
23745
|
path: "/pnpm8/node_modules/.bin",
|
23701
|
-
detectedLockfile,
|
23746
|
+
detectedLockfile: "pnpm-lock.yaml",
|
23702
23747
|
detectedPackageManager: "pnpm@8.x",
|
23703
23748
|
pnpmVersionRange: "8.x"
|
23704
23749
|
};
|
23705
23750
|
case "pnpm 9":
|
23706
23751
|
return {
|
23707
23752
|
path: "/pnpm9/node_modules/.bin",
|
23708
|
-
detectedLockfile,
|
23753
|
+
detectedLockfile: "pnpm-lock.yaml",
|
23709
23754
|
detectedPackageManager: "pnpm@9.x",
|
23710
23755
|
pnpmVersionRange: "9.x"
|
23711
23756
|
};
|
@@ -23713,7 +23758,7 @@ function detectPackageManager(cliType, lockfileVersion, detectedLockfile) {
|
|
23713
23758
|
return {
|
23714
23759
|
// undefined because pnpm@6 is the current default in the build container
|
23715
23760
|
path: void 0,
|
23716
|
-
detectedLockfile,
|
23761
|
+
detectedLockfile: "pnpm-lock.yaml",
|
23717
23762
|
detectedPackageManager: "pnpm@6.x",
|
23718
23763
|
pnpmVersionRange: "6.x"
|
23719
23764
|
};
|
@@ -23723,13 +23768,13 @@ function detectPackageManager(cliType, lockfileVersion, detectedLockfile) {
|
|
23723
23768
|
case "bun":
|
23724
23769
|
return {
|
23725
23770
|
path: "/bun1",
|
23726
|
-
detectedLockfile,
|
23771
|
+
detectedLockfile: lockfileVersion === 0 ? "bun.lockb" : "bun.lock",
|
23727
23772
|
detectedPackageManager: "bun@1.x"
|
23728
23773
|
};
|
23729
23774
|
case "yarn":
|
23730
23775
|
return {
|
23731
23776
|
path: void 0,
|
23732
|
-
detectedLockfile,
|
23777
|
+
detectedLockfile: "yarn.lock",
|
23733
23778
|
detectedPackageManager: "yarn"
|
23734
23779
|
};
|
23735
23780
|
}
|
@@ -23738,16 +23783,14 @@ function getPathForPackageManager({
|
|
23738
23783
|
cliType,
|
23739
23784
|
lockfileVersion,
|
23740
23785
|
nodeVersion,
|
23741
|
-
env
|
23742
|
-
detectedLockfile
|
23786
|
+
env
|
23743
23787
|
}) {
|
23744
23788
|
const corepackEnabled = env.ENABLE_EXPERIMENTAL_COREPACK === "1";
|
23745
23789
|
let overrides = getPathOverrideForPackageManager({
|
23746
23790
|
cliType,
|
23747
23791
|
lockfileVersion,
|
23748
23792
|
corepackPackageManager: void 0,
|
23749
|
-
nodeVersion
|
23750
|
-
detectedLockfile
|
23793
|
+
nodeVersion
|
23751
23794
|
});
|
23752
23795
|
if (corepackEnabled) {
|
23753
23796
|
overrides = NO_OVERRIDE;
|
@@ -23782,8 +23825,7 @@ async function runCustomInstallCommand({
|
|
23782
23825
|
lockfileVersion,
|
23783
23826
|
packageJson,
|
23784
23827
|
packageJsonPackageManager,
|
23785
|
-
turboSupportsCorepackHome
|
23786
|
-
detectedLockfile
|
23828
|
+
turboSupportsCorepackHome
|
23787
23829
|
} = await scanParentDirs(destPath, true);
|
23788
23830
|
const env = getEnvForPackageManager({
|
23789
23831
|
cliType,
|
@@ -23792,8 +23834,7 @@ async function runCustomInstallCommand({
|
|
23792
23834
|
nodeVersion,
|
23793
23835
|
env: spawnOpts?.env || {},
|
23794
23836
|
packageJsonEngines: packageJson?.engines,
|
23795
|
-
turboSupportsCorepackHome
|
23796
|
-
detectedLockfile
|
23837
|
+
turboSupportsCorepackHome
|
23797
23838
|
});
|
23798
23839
|
debug(`Running with $PATH:`, env?.PATH || "");
|
23799
23840
|
await execCommand(installCommand, {
|
@@ -23809,8 +23850,7 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
|
|
23809
23850
|
cliType,
|
23810
23851
|
lockfileVersion,
|
23811
23852
|
packageJsonPackageManager,
|
23812
|
-
turboSupportsCorepackHome
|
23813
|
-
detectedLockfile
|
23853
|
+
turboSupportsCorepackHome
|
23814
23854
|
} = await scanParentDirs(destPath, true);
|
23815
23855
|
const scriptName = getScriptName(
|
23816
23856
|
packageJson,
|
@@ -23830,8 +23870,7 @@ async function runPackageJsonScript(destPath, scriptNames, spawnOpts) {
|
|
23830
23870
|
nodeVersion: void 0,
|
23831
23871
|
env: cloneEnv(process.env, spawnOpts?.env),
|
23832
23872
|
packageJsonEngines: packageJson?.engines,
|
23833
|
-
turboSupportsCorepackHome
|
23834
|
-
detectedLockfile
|
23873
|
+
turboSupportsCorepackHome
|
23835
23874
|
})
|
23836
23875
|
};
|
23837
23876
|
if (cliType === "npm") {
|
@@ -24209,9 +24248,11 @@ async function getInstalledPackageVersion(packageName, path7) {
|
|
24209
24248
|
FileRef,
|
24210
24249
|
Lambda,
|
24211
24250
|
NODE_VERSIONS,
|
24251
|
+
NodeVersion,
|
24212
24252
|
NodejsLambda,
|
24213
24253
|
NowBuildError,
|
24214
24254
|
Prerender,
|
24255
|
+
Version,
|
24215
24256
|
buildsSchema,
|
24216
24257
|
cloneEnv,
|
24217
24258
|
createLambda,
|
package/dist/nodejs-lambda.d.ts
CHANGED
@@ -3,12 +3,14 @@ interface NodejsLambdaOptions extends LambdaOptionsWithFiles {
|
|
3
3
|
shouldAddHelpers: boolean;
|
4
4
|
shouldAddSourcemapSupport: boolean;
|
5
5
|
awsLambdaHandler?: string;
|
6
|
+
useWebApi?: boolean;
|
6
7
|
}
|
7
8
|
export declare class NodejsLambda extends Lambda {
|
8
9
|
launcherType: 'Nodejs';
|
9
10
|
shouldAddHelpers: boolean;
|
10
11
|
shouldAddSourcemapSupport: boolean;
|
11
12
|
awsLambdaHandler?: string;
|
12
|
-
|
13
|
+
useWebApi?: boolean;
|
14
|
+
constructor({ shouldAddHelpers, shouldAddSourcemapSupport, awsLambdaHandler, useWebApi, ...opts }: NodejsLambdaOptions);
|
13
15
|
}
|
14
16
|
export {};
|
package/dist/nodejs-lambda.js
CHANGED
@@ -27,6 +27,7 @@ class NodejsLambda extends import_lambda.Lambda {
|
|
27
27
|
shouldAddHelpers,
|
28
28
|
shouldAddSourcemapSupport,
|
29
29
|
awsLambdaHandler,
|
30
|
+
useWebApi,
|
30
31
|
...opts
|
31
32
|
}) {
|
32
33
|
super(opts);
|
@@ -34,6 +35,7 @@ class NodejsLambda extends import_lambda.Lambda {
|
|
34
35
|
this.shouldAddHelpers = shouldAddHelpers;
|
35
36
|
this.shouldAddSourcemapSupport = shouldAddSourcemapSupport;
|
36
37
|
this.awsLambdaHandler = awsLambdaHandler;
|
38
|
+
this.useWebApi = useWebApi;
|
37
39
|
}
|
38
40
|
}
|
39
41
|
// Annotate the CommonJS export names for ESM import in node:
|
package/dist/types.d.ts
CHANGED
@@ -283,16 +283,32 @@ export interface PackageJson {
|
|
283
283
|
readonly publishConfig?: PackageJson.PublishConfig;
|
284
284
|
readonly packageManager?: string;
|
285
285
|
}
|
286
|
-
export interface
|
286
|
+
export interface ConstructorVersion {
|
287
287
|
/** major version number: 18 */
|
288
288
|
major: number;
|
289
|
+
/** minor version number: 18 */
|
290
|
+
minor?: number;
|
289
291
|
/** major version range: "18.x" */
|
290
292
|
range: string;
|
291
293
|
/** runtime descriptor: "nodejs18.x" */
|
292
294
|
runtime: string;
|
293
|
-
/** date beyond which this version is discontinued: 2023-08-17T19:05:45.951Z */
|
294
295
|
discontinueDate?: Date;
|
295
296
|
}
|
297
|
+
interface BaseVersion extends ConstructorVersion {
|
298
|
+
state: 'active' | 'deprecated' | 'discontinued';
|
299
|
+
}
|
300
|
+
export declare class Version implements BaseVersion {
|
301
|
+
major: number;
|
302
|
+
minor?: number;
|
303
|
+
range: string;
|
304
|
+
runtime: string;
|
305
|
+
discontinueDate?: Date;
|
306
|
+
constructor(version: ConstructorVersion);
|
307
|
+
get state(): "active" | "deprecated" | "discontinued";
|
308
|
+
get formattedDate(): string | undefined;
|
309
|
+
}
|
310
|
+
export declare class NodeVersion extends Version {
|
311
|
+
}
|
296
312
|
export interface Builder {
|
297
313
|
use: string;
|
298
314
|
src?: string;
|
package/dist/types.js
CHANGED
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
5
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
+
var __export = (target, all) => {
|
7
|
+
for (var name in all)
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
+
};
|
6
10
|
var __copyProps = (to, from, except, desc) => {
|
7
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
8
12
|
for (let key of __getOwnPropNames(from))
|
@@ -13,4 +17,35 @@ var __copyProps = (to, from, except, desc) => {
|
|
13
17
|
};
|
14
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
15
19
|
var types_exports = {};
|
20
|
+
__export(types_exports, {
|
21
|
+
NodeVersion: () => NodeVersion,
|
22
|
+
Version: () => Version
|
23
|
+
});
|
16
24
|
module.exports = __toCommonJS(types_exports);
|
25
|
+
class Version {
|
26
|
+
constructor(version) {
|
27
|
+
this.major = version.major;
|
28
|
+
this.minor = version.minor;
|
29
|
+
this.range = version.range;
|
30
|
+
this.runtime = version.runtime;
|
31
|
+
this.discontinueDate = version.discontinueDate;
|
32
|
+
}
|
33
|
+
get state() {
|
34
|
+
if (this.discontinueDate && this.discontinueDate.getTime() <= Date.now()) {
|
35
|
+
return "discontinued";
|
36
|
+
} else if (this.discontinueDate) {
|
37
|
+
return "deprecated";
|
38
|
+
}
|
39
|
+
return "active";
|
40
|
+
}
|
41
|
+
get formattedDate() {
|
42
|
+
return this.discontinueDate && this.discontinueDate.toISOString().split("T")[0];
|
43
|
+
}
|
44
|
+
}
|
45
|
+
class NodeVersion extends Version {
|
46
|
+
}
|
47
|
+
// Annotate the CommonJS export names for ESM import in node:
|
48
|
+
0 && (module.exports = {
|
49
|
+
NodeVersion,
|
50
|
+
Version
|
51
|
+
});
|