@vercel/build-utils 10.5.1 → 10.6.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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # @vercel/build-utils
2
2
 
3
+ ## 10.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - provide a more verbose error when package.json is not valid ([#13346](https://github.com/vercel/vercel/pull/13346))
8
+
9
+ - Allow configuring functions `architecture` via the `vercel.json` configuration ([#13344](https://github.com/vercel/vercel/pull/13344))
10
+
3
11
  ## 10.5.1
4
12
 
5
13
  ### Patch Changes
@@ -239,7 +239,16 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
239
239
  start: destPath,
240
240
  filename: "package.json"
241
241
  });
242
- const packageJson = readPackageJson && pkgJsonPath ? JSON.parse(await import_fs_extra.default.readFile(pkgJsonPath, "utf8")) : void 0;
242
+ let packageJson;
243
+ if (readPackageJson && pkgJsonPath) {
244
+ try {
245
+ packageJson = JSON.parse(await import_fs_extra.default.readFile(pkgJsonPath, "utf8"));
246
+ } catch (err) {
247
+ throw new Error(
248
+ `Could not read ${pkgJsonPath}: ${err.message}.`
249
+ );
250
+ }
251
+ }
243
252
  const {
244
253
  paths: [
245
254
  yarnLockPath,
package/dist/index.js CHANGED
@@ -10825,9 +10825,9 @@ var require_fs2 = __commonJS({
10825
10825
  }
10826
10826
  });
10827
10827
 
10828
- // ../../node_modules/.pnpm/minimatch@5.1.6/node_modules/minimatch/lib/path.js
10828
+ // ../../node_modules/.pnpm/minimatch@5.0.1/node_modules/minimatch/lib/path.js
10829
10829
  var require_path = __commonJS({
10830
- "../../node_modules/.pnpm/minimatch@5.1.6/node_modules/minimatch/lib/path.js"(exports2, module2) {
10830
+ "../../node_modules/.pnpm/minimatch@5.0.1/node_modules/minimatch/lib/path.js"(exports2, module2) {
10831
10831
  var isWindows = typeof process === "object" && process && process.platform === "win32";
10832
10832
  module2.exports = isWindows ? { sep: "\\" } : { sep: "/" };
10833
10833
  }
@@ -10984,9 +10984,9 @@ var require_brace_expansion2 = __commonJS({
10984
10984
  }
10985
10985
  });
10986
10986
 
10987
- // ../../node_modules/.pnpm/minimatch@5.1.6/node_modules/minimatch/minimatch.js
10987
+ // ../../node_modules/.pnpm/minimatch@5.0.1/node_modules/minimatch/minimatch.js
10988
10988
  var require_minimatch2 = __commonJS({
10989
- "../../node_modules/.pnpm/minimatch@5.1.6/node_modules/minimatch/minimatch.js"(exports2, module2) {
10989
+ "../../node_modules/.pnpm/minimatch@5.0.1/node_modules/minimatch/minimatch.js"(exports2, module2) {
10990
10990
  var minimatch2 = module2.exports = (p, pattern, options = {}) => {
10991
10991
  assertValidPattern(pattern);
10992
10992
  if (!options.nocomment && pattern.charAt(0) === "#") {
@@ -11072,9 +11072,7 @@ var require_minimatch2 = __commonJS({
11072
11072
  return list;
11073
11073
  };
11074
11074
  var globUnescape = (s) => s.replace(/\\(.)/g, "$1");
11075
- var charUnescape = (s) => s.replace(/\\([^-\]])/g, "$1");
11076
11075
  var regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
11077
- var braExpEscape = (s) => s.replace(/[[\]\\]/g, "\\$&");
11078
11076
  var Minimatch = class {
11079
11077
  constructor(pattern, options) {
11080
11078
  assertValidPattern(pattern);
@@ -11083,10 +11081,6 @@ var require_minimatch2 = __commonJS({
11083
11081
  this.options = options;
11084
11082
  this.set = [];
11085
11083
  this.pattern = pattern;
11086
- this.windowsPathsNoEscape = !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
11087
- if (this.windowsPathsNoEscape) {
11088
- this.pattern = this.pattern.replace(/\\/g, "/");
11089
- }
11090
11084
  this.regexp = null;
11091
11085
  this.negate = false;
11092
11086
  this.comment = false;
@@ -11131,7 +11125,7 @@ var require_minimatch2 = __commonJS({
11131
11125
  negateOffset++;
11132
11126
  }
11133
11127
  if (negateOffset)
11134
- this.pattern = pattern.slice(negateOffset);
11128
+ this.pattern = pattern.substr(negateOffset);
11135
11129
  this.negate = negate;
11136
11130
  }
11137
11131
  // set partial to true to test if, for example,
@@ -11222,7 +11216,7 @@ var require_minimatch2 = __commonJS({
11222
11216
  if (pattern === "")
11223
11217
  return "";
11224
11218
  let re = "";
11225
- let hasMagic = false;
11219
+ let hasMagic = !!options.nocase;
11226
11220
  let escaping = false;
11227
11221
  const patternListStack = [];
11228
11222
  const negativeLists = [];
@@ -11233,10 +11227,7 @@ var require_minimatch2 = __commonJS({
11233
11227
  let cs;
11234
11228
  let pl;
11235
11229
  let sp;
11236
- let dotTravAllowed = pattern.charAt(0) === ".";
11237
- let dotFileAllowed = options.dot || dotTravAllowed;
11238
- const patternStart = () => dotTravAllowed ? "" : dotFileAllowed ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)";
11239
- const subPatternStart = (p) => p.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)";
11230
+ const patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)";
11240
11231
  const clearStateChar = () => {
11241
11232
  if (stateChar) {
11242
11233
  switch (stateChar) {
@@ -11274,10 +11265,6 @@ var require_minimatch2 = __commonJS({
11274
11265
  return false;
11275
11266
  }
11276
11267
  case "\\":
11277
- if (inClass && pattern.charAt(i + 1) === "-") {
11278
- re += c;
11279
- continue;
11280
- }
11281
11268
  clearStateChar();
11282
11269
  escaping = true;
11283
11270
  continue;
@@ -11300,7 +11287,7 @@ var require_minimatch2 = __commonJS({
11300
11287
  if (options.noext)
11301
11288
  clearStateChar();
11302
11289
  continue;
11303
- case "(": {
11290
+ case "(":
11304
11291
  if (inClass) {
11305
11292
  re += "(";
11306
11293
  continue;
@@ -11309,54 +11296,39 @@ var require_minimatch2 = __commonJS({
11309
11296
  re += "\\(";
11310
11297
  continue;
11311
11298
  }
11312
- const plEntry = {
11299
+ patternListStack.push({
11313
11300
  type: stateChar,
11314
11301
  start: i - 1,
11315
11302
  reStart: re.length,
11316
11303
  open: plTypes[stateChar].open,
11317
11304
  close: plTypes[stateChar].close
11318
- };
11319
- this.debug(this.pattern, " ", plEntry);
11320
- patternListStack.push(plEntry);
11321
- re += plEntry.open;
11322
- if (plEntry.start === 0 && plEntry.type !== "!") {
11323
- dotTravAllowed = true;
11324
- re += subPatternStart(pattern.slice(i + 1));
11325
- }
11305
+ });
11306
+ re += stateChar === "!" ? "(?:(?!(?:" : "(?:";
11326
11307
  this.debug("plType %j %j", stateChar, re);
11327
11308
  stateChar = false;
11328
11309
  continue;
11329
- }
11330
- case ")": {
11331
- const plEntry = patternListStack[patternListStack.length - 1];
11332
- if (inClass || !plEntry) {
11310
+ case ")":
11311
+ if (inClass || !patternListStack.length) {
11333
11312
  re += "\\)";
11334
11313
  continue;
11335
11314
  }
11336
- patternListStack.pop();
11337
11315
  clearStateChar();
11338
11316
  hasMagic = true;
11339
- pl = plEntry;
11317
+ pl = patternListStack.pop();
11340
11318
  re += pl.close;
11341
11319
  if (pl.type === "!") {
11342
- negativeLists.push(Object.assign(pl, { reEnd: re.length }));
11320
+ negativeLists.push(pl);
11343
11321
  }
11322
+ pl.reEnd = re.length;
11344
11323
  continue;
11345
- }
11346
- case "|": {
11347
- const plEntry = patternListStack[patternListStack.length - 1];
11348
- if (inClass || !plEntry) {
11324
+ case "|":
11325
+ if (inClass || !patternListStack.length) {
11349
11326
  re += "\\|";
11350
11327
  continue;
11351
11328
  }
11352
11329
  clearStateChar();
11353
11330
  re += "|";
11354
- if (plEntry.start === 0 && plEntry.type !== "!") {
11355
- dotTravAllowed = true;
11356
- re += subPatternStart(pattern.slice(i + 1));
11357
- }
11358
11331
  continue;
11359
- }
11360
11332
  case "[":
11361
11333
  clearStateChar();
11362
11334
  if (inClass) {
@@ -11375,13 +11347,17 @@ var require_minimatch2 = __commonJS({
11375
11347
  }
11376
11348
  cs = pattern.substring(classStart + 1, i);
11377
11349
  try {
11378
- RegExp("[" + braExpEscape(charUnescape(cs)) + "]");
11379
- re += c;
11350
+ RegExp("[" + cs + "]");
11380
11351
  } catch (er) {
11381
- re = re.substring(0, reClassStart) + "(?:$.)";
11352
+ sp = this.parse(cs, SUBPARSE);
11353
+ re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]";
11354
+ hasMagic = hasMagic || sp[1];
11355
+ inClass = false;
11356
+ continue;
11382
11357
  }
11383
11358
  hasMagic = true;
11384
11359
  inClass = false;
11360
+ re += c;
11385
11361
  continue;
11386
11362
  default:
11387
11363
  clearStateChar();
@@ -11393,9 +11369,9 @@ var require_minimatch2 = __commonJS({
11393
11369
  }
11394
11370
  }
11395
11371
  if (inClass) {
11396
- cs = pattern.slice(classStart + 1);
11372
+ cs = pattern.substr(classStart + 1);
11397
11373
  sp = this.parse(cs, SUBPARSE);
11398
- re = re.substring(0, reClassStart) + "\\[" + sp[0];
11374
+ re = re.substr(0, reClassStart) + "\\[" + sp[0];
11399
11375
  hasMagic = hasMagic || sp[1];
11400
11376
  }
11401
11377
  for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
@@ -11424,28 +11400,24 @@ var require_minimatch2 = __commonJS({
11424
11400
  const nlFirst = re.slice(nl.reStart, nl.reEnd - 8);
11425
11401
  let nlAfter = re.slice(nl.reEnd);
11426
11402
  const nlLast = re.slice(nl.reEnd - 8, nl.reEnd) + nlAfter;
11427
- const closeParensBefore = nlBefore.split(")").length;
11428
- const openParensBefore = nlBefore.split("(").length - closeParensBefore;
11403
+ const openParensBefore = nlBefore.split("(").length - 1;
11429
11404
  let cleanAfter = nlAfter;
11430
11405
  for (let i = 0; i < openParensBefore; i++) {
11431
11406
  cleanAfter = cleanAfter.replace(/\)[+*?]?/, "");
11432
11407
  }
11433
11408
  nlAfter = cleanAfter;
11434
- const dollar = nlAfter === "" && isSub !== SUBPARSE ? "(?:$|\\/)" : "";
11409
+ const dollar = nlAfter === "" && isSub !== SUBPARSE ? "$" : "";
11435
11410
  re = nlBefore + nlFirst + nlAfter + dollar + nlLast;
11436
11411
  }
11437
11412
  if (re !== "" && hasMagic) {
11438
11413
  re = "(?=.)" + re;
11439
11414
  }
11440
11415
  if (addPatternStart) {
11441
- re = patternStart() + re;
11416
+ re = patternStart + re;
11442
11417
  }
11443
11418
  if (isSub === SUBPARSE) {
11444
11419
  return [re, hasMagic];
11445
11420
  }
11446
- if (options.nocase && !hasMagic) {
11447
- hasMagic = pattern.toUpperCase() !== pattern.toLowerCase();
11448
- }
11449
11421
  if (!hasMagic) {
11450
11422
  return globUnescape(pattern);
11451
11423
  }
@@ -22573,6 +22545,7 @@ async function getLambdaOptionsFromFunction({
22573
22545
  for (const [pattern, fn] of Object.entries(config.functions)) {
22574
22546
  if (sourceFile === pattern || (0, import_minimatch.default)(sourceFile, pattern)) {
22575
22547
  return {
22548
+ architecture: fn.architecture,
22576
22549
  memory: fn.memory,
22577
22550
  maxDuration: fn.maxDuration
22578
22551
  };
@@ -23253,7 +23226,16 @@ async function scanParentDirs(destPath, readPackageJson = false, base = "/") {
23253
23226
  start: destPath,
23254
23227
  filename: "package.json"
23255
23228
  });
23256
- const packageJson = readPackageJson && pkgJsonPath ? JSON.parse(await import_fs_extra7.default.readFile(pkgJsonPath, "utf8")) : void 0;
23229
+ let packageJson;
23230
+ if (readPackageJson && pkgJsonPath) {
23231
+ try {
23232
+ packageJson = JSON.parse(await import_fs_extra7.default.readFile(pkgJsonPath, "utf8"));
23233
+ } catch (err) {
23234
+ throw new Error(
23235
+ `Could not read ${pkgJsonPath}: ${err.message}.`
23236
+ );
23237
+ }
23238
+ }
23257
23239
  const {
23258
23240
  paths: [
23259
23241
  yarnLockPath,
@@ -24286,6 +24268,10 @@ var functionsSchema = {
24286
24268
  type: "object",
24287
24269
  additionalProperties: false,
24288
24270
  properties: {
24271
+ architecture: {
24272
+ type: "string",
24273
+ enum: ["x86_64", "arm64"]
24274
+ },
24289
24275
  runtime: {
24290
24276
  type: "string",
24291
24277
  maxLength: 256
package/dist/lambda.d.ts CHANGED
@@ -77,5 +77,5 @@ export declare class Lambda {
77
77
  */
78
78
  export declare function createLambda(opts: LambdaOptions): Promise<Lambda>;
79
79
  export declare function createZip(files: Files): Promise<Buffer>;
80
- export declare function getLambdaOptionsFromFunction({ sourceFile, config, }: GetLambdaOptionsFromFunctionOptions): Promise<Pick<LambdaOptions, 'memory' | 'maxDuration'>>;
80
+ export declare function getLambdaOptionsFromFunction({ sourceFile, config, }: GetLambdaOptionsFromFunctionOptions): Promise<Pick<LambdaOptions, 'architecture' | 'memory' | 'maxDuration'>>;
81
81
  export {};
package/dist/lambda.js CHANGED
@@ -214,6 +214,7 @@ async function getLambdaOptionsFromFunction({
214
214
  for (const [pattern, fn] of Object.entries(config.functions)) {
215
215
  if (sourceFile === pattern || (0, import_minimatch.default)(sourceFile, pattern)) {
216
216
  return {
217
+ architecture: fn.architecture,
217
218
  memory: fn.memory,
218
219
  maxDuration: fn.maxDuration
219
220
  };
package/dist/schemas.d.ts CHANGED
@@ -8,6 +8,10 @@ export declare const functionsSchema: {
8
8
  type: string;
9
9
  additionalProperties: boolean;
10
10
  properties: {
11
+ architecture: {
12
+ type: string;
13
+ enum: string[];
14
+ };
11
15
  runtime: {
12
16
  type: string;
13
17
  maxLength: number;
package/dist/schemas.js CHANGED
@@ -32,6 +32,10 @@ const functionsSchema = {
32
32
  type: "object",
33
33
  additionalProperties: false,
34
34
  properties: {
35
+ architecture: {
36
+ type: "string",
37
+ enum: ["x86_64", "arm64"]
38
+ },
35
39
  runtime: {
36
40
  type: "string",
37
41
  maxLength: 256
package/dist/types.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  import type FileRef from './file-ref';
3
3
  import type FileFsRef from './file-fs-ref';
4
4
  import type FileBlob from './file-blob';
5
- import type { Lambda } from './lambda';
5
+ import type { Lambda, LambdaArchitecture } from './lambda';
6
6
  import type { Prerender } from './prerender';
7
7
  import type { EdgeFunction } from './edge-function';
8
8
  import type { Span } from './trace';
@@ -322,6 +322,7 @@ export interface Builder {
322
322
  }
323
323
  export interface BuilderFunctions {
324
324
  [key: string]: {
325
+ architecture?: LambdaArchitecture;
325
326
  memory?: number;
326
327
  maxDuration?: number;
327
328
  runtime?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vercel/build-utils",
3
- "version": "10.5.1",
3
+ "version": "10.6.0",
4
4
  "license": "Apache-2.0",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.js",