Compare commits

..

11 Commits

Author SHA1 Message Date
Vercel Release Bot
d3c84e5d2a Version Packages (#10398)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-08-24 16:04:39 -05:00
Andrew Barba
9e3827c785 [build-utils] Support serverless function architecture (#10392)
# Problem

Framework authors often produce build outputs from platforms like Github
Actions or M1 Macs where the arm64 architecture is being used. They then
deploy these outputs to Vercel using `vercel deploy`, bypassing Vercel's
build system. Today they must cross compile to x86_64 in order to deploy
compatible Serverless functions to Vercel.

# Solution

Allow Framework authors to detect the current architecture and specify
either x86_64 or arm64 when deploying a Serverless function to Vercel.

# Related PRs

https://github.com/vercel/api/pull/21559

https://github.com/vercel/proxy/pull/6901

https://github.com/vercel/front/pull/24924
2023-08-24 16:44:30 -04:00
Trek Glowacki
fb6d77afac [cli] Improve error messages for JSON parse issues (#10396) 2023-08-24 15:09:13 -05:00
Vercel Release Bot
cfc1bb180b Version Packages (#10384)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-08-24 13:56:29 -05:00
Trek Glowacki
f06776468f [cli] Remove mri package (#10389)
`vc secrets` appears to be mostly deprecated but this was a fairly straightforward change that lets us drop `mri` today. Tested pretty extensively locally.
2023-08-24 18:05:11 +00:00
Kiko Beats
597a8a8176 upgrade edge-runtime (#10385) 2023-08-24 16:52:49 +02:00
Kiko Beats
3f6d99470d [node] use undici instead of node-fetch (#10387) 2023-08-24 10:06:33 +02:00
JJ Kasper
4422326865 Add handling to leverage RSC prefetch outputs (#10390)
Implements handling for the RSC prefetch outputs when available that
were added in https://github.com/vercel/next.js/pull/54403
2023-08-23 22:26:58 -07:00
Zack Tanner
09446a8fe8 [next] fix RSC matching behavior & 404 status code on fallback: false (#10388)
Fixes two separate issues for the Next builder:

- `pages` routes unexpectedly matching to RSC routes when prefetching from `app`. This update will attempt to match the route with the corresponding `pages` entry rather than falling back to a catch-all RSC
  - Fixes https://github.com/vercel/next.js/issues/53776
- `fallback: false` returning a successful status code when underlying page as a param (e.g. `/blog/[slug]` would 200 but `/blog/non-existent` would 404)
  - [slack x-ref](https://vercel.slack.com/archives/C03S8ED1DKM/p1692817762403579)
2023-08-23 22:30:33 +00:00
Vercel Release Bot
37e93a91a8 [remix] Update @remix-run/dev to v1.19.3 (#10381)
This auto-generated PR updates `@remix-run/dev` to version 1.19.3.
2023-08-22 20:49:48 +00:00
Trek Glowacki
eec6e47232 [cli] Update dns commands to new structure (#10379)
Before:
<img width="795" alt="CleanShot 2023-08-22 at 10 46 34@2x" src="https://github.com/vercel/vercel/assets/9736/456faef8-6335-46ac-89ae-5ce13db4568e">


After:
<img width="815" alt="CleanShot 2023-08-22 at 10 48 04@2x" src="https://github.com/vercel/vercel/assets/9736/e78a9cc5-d9e9-4079-bd4a-81cd68917127">
2023-08-22 20:24:19 +00:00
65 changed files with 842 additions and 333 deletions

7
api/CHANGELOG.md Normal file
View File

@@ -0,0 +1,7 @@
# api
## 0.0.1
### Patch Changes
- fix RSC matching behavior & 404 status code on `fallback: false` ([#10388](https://github.com/vercel/vercel/pull/10388))

View File

@@ -1,7 +1,7 @@
{
"name": "api",
"private": true,
"version": "0.0.0",
"version": "0.0.1",
"description": "API for the vercel/vercel repo",
"main": "index.js",
"scripts": {},

View File

@@ -1,5 +1,12 @@
# @vercel-internals/types
## 1.0.8
### Patch Changes
- Updated dependencies [[`9e3827c78`](https://github.com/vercel/vercel/commit/9e3827c785e1bc45f2bed421132167381481770f)]:
- @vercel/build-utils@7.1.0
## 1.0.7
### Patch Changes

View File

@@ -1,7 +1,7 @@
{
"private": true,
"name": "@vercel-internals/types",
"version": "1.0.7",
"version": "1.0.8",
"types": "index.d.ts",
"main": "index.d.ts",
"files": [
@@ -10,7 +10,7 @@
"dependencies": {
"@types/node": "14.14.31",
"@vercel-internals/constants": "1.0.4",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/routing-utils": "3.0.0"
},
"devDependencies": {

View File

@@ -1,5 +1,11 @@
# @vercel/build-utils
## 7.1.0
### Minor Changes
- Support serverless function architecture ([#10392](https://github.com/vercel/vercel/pull/10392))
## 7.0.0
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/build-utils",
"version": "7.0.0",
"version": "7.1.0",
"license": "Apache-2.0",
"main": "./dist/index.js",
"types": "./dist/index.d.js",

View File

@@ -13,9 +13,12 @@ interface Environment {
export type LambdaOptions = LambdaOptionsWithFiles | LambdaOptionsWithZipBuffer;
export type LambdaArchitecture = 'x86_64' | 'arm64';
export interface LambdaOptionsBase {
handler: string;
runtime: string;
architecture?: LambdaArchitecture;
memory?: number;
maxDuration?: number;
environment?: Environment;
@@ -62,6 +65,7 @@ export class Lambda {
files?: Files;
handler: string;
runtime: string;
architecture?: LambdaArchitecture;
memory?: number;
maxDuration?: number;
environment: Environment;
@@ -81,6 +85,7 @@ export class Lambda {
handler,
runtime,
maxDuration,
architecture,
memory,
environment = {},
allowQuery,
@@ -102,6 +107,13 @@ export class Lambda {
assert(typeof runtime === 'string', '"runtime" is not a string');
assert(typeof environment === 'object', '"environment" is not an object');
if (architecture !== undefined) {
assert(
architecture === 'x86_64' || architecture === 'arm64',
'"architecture" must be either "x86_64" or "arm64"'
);
}
if (memory !== undefined) {
assert(typeof memory === 'number', '"memory" is not a number');
}
@@ -159,6 +171,7 @@ export class Lambda {
this.files = 'files' in opts ? opts.files : undefined;
this.handler = handler;
this.runtime = runtime;
this.architecture = architecture;
this.memory = memory;
this.maxDuration = maxDuration;
this.environment = environment;

View File

@@ -1,5 +1,35 @@
# vercel
## 32.1.0
### Minor Changes
- Improve error messages for JSON parse failures ([#10396](https://github.com/vercel/vercel/pull/10396))
### Patch Changes
- Updated dependencies [[`9e3827c78`](https://github.com/vercel/vercel/commit/9e3827c785e1bc45f2bed421132167381481770f)]:
- @vercel/build-utils@7.1.0
- @vercel/node@3.0.3
- @vercel/remix-builder@2.0.2
- @vercel/static-build@2.0.3
## 32.0.2
### Patch Changes
- Remove use of mri preferring use of arg package ([#10389](https://github.com/vercel/vercel/pull/10389))
- upgrade edge-runtime ([#10385](https://github.com/vercel/vercel/pull/10385))
- Update dns commands to new structure ([#10379](https://github.com/vercel/vercel/pull/10379))
- Updated dependencies [[`09446a8fe`](https://github.com/vercel/vercel/commit/09446a8fe8b8201dbe3ead3ca645ef0aa1833b6b), [`597a8a817`](https://github.com/vercel/vercel/commit/597a8a81764c39e70c65b98e78bf4c3827a779a7), [`442232686`](https://github.com/vercel/vercel/commit/44223268651f1bbd5c6f2b0b315239685dd5716e), [`3f6d99470`](https://github.com/vercel/vercel/commit/3f6d99470db86681e006d66507f32afcea086b41), [`37e93a91a`](https://github.com/vercel/vercel/commit/37e93a91a8659934eac7f5cd441b310511bf5646)]:
- @vercel/next@4.0.1
- @vercel/node@3.0.2
- @vercel/remix-builder@2.0.1
- @vercel/static-build@2.0.2
## 32.0.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "vercel",
"version": "32.0.1",
"version": "32.1.0",
"preferGlobal": true,
"license": "Apache-2.0",
"description": "The command-line interface for Vercel",
@@ -31,20 +31,20 @@
"node": ">= 16"
},
"dependencies": {
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/go": "3.0.0",
"@vercel/hydrogen": "1.0.0",
"@vercel/next": "4.0.0",
"@vercel/node": "3.0.1",
"@vercel/next": "4.0.1",
"@vercel/node": "3.0.3",
"@vercel/python": "4.0.0",
"@vercel/redwood": "2.0.0",
"@vercel/remix-builder": "2.0.0",
"@vercel/remix-builder": "2.0.2",
"@vercel/ruby": "2.0.0",
"@vercel/static-build": "2.0.1"
"@vercel/static-build": "2.0.3"
},
"devDependencies": {
"@alex_neo/jest-expect-message": "1.0.5",
"@edge-runtime/node-utils": "2.1.0",
"@edge-runtime/node-utils": "2.2.0",
"@next/env": "11.1.2",
"@sentry/node": "5.5.0",
"@sindresorhus/slugify": "0.11.0",
@@ -64,10 +64,10 @@
"@types/inquirer": "7.3.1",
"@types/jest": "27.4.1",
"@types/jest-expect-message": "1.0.3",
"@types/json-parse-better-errors": "1.0.0",
"@types/load-json-file": "2.0.7",
"@types/mime-types": "2.1.0",
"@types/minimatch": "3.0.3",
"@types/mri": "1.1.0",
"@types/ms": "0.7.30",
"@types/node": "14.18.33",
"@types/node-fetch": "2.5.10",
@@ -86,8 +86,8 @@
"@types/yauzl-promise": "2.1.0",
"@vercel-internals/constants": "1.0.4",
"@vercel-internals/get-package-json": "1.0.0",
"@vercel-internals/types": "1.0.7",
"@vercel/client": "13.0.0",
"@vercel-internals/types": "1.0.8",
"@vercel/client": "13.0.1",
"@vercel/error-utils": "2.0.1",
"@vercel/frameworks": "2.0.1",
"@vercel/fs-detectors": "5.0.1",
@@ -136,12 +136,12 @@
"jaro-winkler": "0.2.8",
"jest-junit": "16.0.0",
"jest-matcher-utils": "29.3.1",
"json-parse-better-errors": "1.0.2",
"jsonlines": "0.1.1",
"line-async-iterator": "3.0.0",
"load-json-file": "3.0.0",
"mime-types": "2.1.24",
"minimatch": "3.1.2",
"mri": "1.1.5",
"ms": "2.1.2",
"node-fetch": "2.6.7",
"npm-package-arg": "6.1.0",

View File

@@ -118,7 +118,7 @@ export default async function main(client: Client) {
const pkg = await readJSONFile<PackageJson>(path.join(dir, 'package.json'));
if (pkg instanceof CantParseJSONFile) {
client.output.error('Could not parse package.json');
client.output.error(pkg.message);
return 1;
}

View File

@@ -0,0 +1,136 @@
import { Command } from '../help';
import { packageName } from '../../util/pkg-name';
export const dnsCommand: Command = {
name: 'dns',
description: 'Interact with DNS entries for a project.',
arguments: [
{
name: 'command',
required: true,
},
],
subcommands: [
{
name: 'import',
description: 'Import a DNS zone file (see below for examples)',
arguments: [
{
name: 'domain',
required: true,
},
{
name: 'zonefile',
required: true,
},
],
options: [],
examples: [],
},
{
name: 'ls',
description: 'List all DNS entries for a domain',
arguments: [
{
name: 'domain',
required: true,
},
],
options: [],
examples: [],
},
{
name: 'add',
description: 'Add a new DNS entry (see below for examples)',
arguments: [
{
name: 'details',
required: true,
},
{
name: 'alias',
required: true,
},
],
options: [],
examples: [],
},
{
name: 'rm',
description: 'Remove a DNS entry using its ID',
arguments: [
{
name: 'id',
required: true,
},
],
options: [],
examples: [],
},
],
options: [
{
name: 'next',
description: 'Show next page of results',
argument: 'MS',
shorthand: 'n',
type: 'string',
deprecated: false,
multi: false,
},
{
name: 'limit',
shorthand: 'n',
description:
'Number of results to return per page (default: 20, max: 100)',
argument: 'NUMBER',
type: 'string',
deprecated: false,
multi: false,
},
],
examples: [
{
name: 'Add an A record for a subdomain',
value: [
`${packageName} dns add <DOMAIN> <SUBDOMAIN> <A | AAAA | ALIAS | CNAME | TXT> <VALUE>`,
`${packageName} dns add zeit.rocks api A 198.51.100.100`,
],
},
{
name: 'Add an MX record (@ as a name refers to the domain)',
value: [
`${packageName} dns add <DOMAIN> '@' MX <RECORD VALUE> <PRIORITY>`,
`${packageName} dns add zeit.rocks '@' MX mail.zeit.rocks 10`,
],
},
{
name: 'Add an SRV record',
value: [
`${packageName} dns add <DOMAIN> <NAME> SRV <PRIORITY> <WEIGHT> <PORT> <TARGET>`,
`${packageName} dns add zeit.rocks '@' SRV 10 0 389 zeit.party`,
],
},
{
name: 'Add a CAA record',
value: [
`${packageName} dns add <DOMAIN> <NAME> CAA '<FLAGS> <TAG> "<VALUE>"'`,
`${packageName} dns add zeit.rocks '@' CAA '0 issue "example.com"'`,
],
},
{
name: 'Import a Zone file',
value: [
`${packageName} dns import <DOMAIN> <FILE>`,
`${packageName} dns import zeit.rocks ./zonefile.txt`,
],
},
{
name: 'Paginate results, where `1584722256178` is the time in milliseconds since the UNIX epoch.',
value: [
`${packageName} dns ls --next 1584722256178`,
`${packageName} dns ls zeit.rocks --next 1584722256178`,
],
},
],
};

View File

@@ -1,96 +1,14 @@
import chalk from 'chalk';
import Client from '../../util/client';
import getArgs from '../../util/get-args';
import getSubcommand from '../../util/get-subcommand';
import handleError from '../../util/handle-error';
import { packageName, logo } from '../../util/pkg-name';
import add from './add';
import importZone from './import';
import ls from './ls';
import rm from './rm';
const help = () => {
console.log(`
${chalk.bold(`${logo} ${packageName} dns`)} [options] <command>
${chalk.dim('Commands:')}
add [details] Add a new DNS entry (see below for examples)
import [domain] [zonefile] Import a DNS zone file (see below for examples)
rm [id] Remove a DNS entry using its ID
ls [domain] List all DNS entries for a domain
${chalk.dim('Options:')}
-h, --help Output usage information
-A ${chalk.bold.underline('FILE')}, --local-config=${chalk.bold.underline(
'FILE'
)} Path to the local ${'`vercel.json`'} file
-Q ${chalk.bold.underline('DIR')}, --global-config=${chalk.bold.underline(
'DIR'
)} Path to the global ${'`.vercel`'} directory
-d, --debug Debug mode [off]
--no-color No color mode [off]
-t ${chalk.bold.underline('TOKEN')}, --token=${chalk.bold.underline(
'TOKEN'
)} Login token
-S, --scope Set a custom scope
-N, --next Show next page of results
--limit=${chalk.bold.underline(
'VALUE'
)} Number of results to return per page (default: 20, max: 100)
${chalk.dim('Examples:')}
${chalk.gray('')} Add an A record for a subdomain
${chalk.cyan(
`$ ${packageName} dns add <DOMAIN> <SUBDOMAIN> <A | AAAA | ALIAS | CNAME | TXT> <VALUE>`
)}
${chalk.cyan(`$ ${packageName} dns add zeit.rocks api A 198.51.100.100`)}
${chalk.gray('')} Add an MX record (@ as a name refers to the domain)
${chalk.cyan(
`$ ${packageName} dns add <DOMAIN> '@' MX <RECORD VALUE> <PRIORITY>`
)}
${chalk.cyan(
`$ ${packageName} dns add zeit.rocks '@' MX mail.zeit.rocks 10`
)}
${chalk.gray('')} Add an SRV record
${chalk.cyan(
`$ ${packageName} dns add <DOMAIN> <NAME> SRV <PRIORITY> <WEIGHT> <PORT> <TARGET>`
)}
${chalk.cyan(
`$ ${packageName} dns add zeit.rocks '@' SRV 10 0 389 zeit.party`
)}
${chalk.gray('')} Add a CAA record
${chalk.cyan(
`$ ${packageName} dns add <DOMAIN> <NAME> CAA '<FLAGS> <TAG> "<VALUE>"'`
)}
${chalk.cyan(
`$ ${packageName} dns add zeit.rocks '@' CAA '0 issue "example.com"'`
)}
${chalk.gray('')} Import a Zone file
${chalk.cyan(`$ ${packageName} dns import <DOMAIN> <FILE>`)}
${chalk.cyan(`$ ${packageName} dns import zeit.rocks ./zonefile.txt`)}
${chalk.gray('')} Paginate results, where ${chalk.dim(
'`1584722256178`'
)} is the time in milliseconds since the UNIX epoch.
${chalk.cyan(`$ ${packageName} dns ls --next 1584722256178`)}
${chalk.cyan(`$ ${packageName} dns ls zeit.rocks --next 1584722256178`)}
`);
};
import { dnsCommand } from './command';
import { help } from '../help';
const COMMAND_CONFIG = {
add: ['add'],
@@ -99,7 +17,7 @@ const COMMAND_CONFIG = {
rm: ['rm', 'remove'],
};
export default async function main(client: Client) {
export default async function dns(client: Client) {
let argv;
try {
@@ -114,7 +32,7 @@ export default async function main(client: Client) {
}
if (argv['--help']) {
help();
client.output.print(help(dnsCommand, { columns: client.stderr.columns }));
return 2;
}

View File

@@ -24,6 +24,7 @@ import {
} from '../../util/env/diff-env-files';
import { isErrnoException } from '@vercel/error-utils';
import { addToGitIgnore } from '../../util/link/add-to-gitignore';
import JSONparse from 'json-parse-better-errors';
const CONTENTS_PREFIX = '# Created by Vercel CLI\n';
@@ -121,7 +122,7 @@ export default async function pull(
// We need this because double quotes are stripped from the local .env file,
// but `records` is already in the form of a JSON object that doesn't filter
// double quotes.
const newEnv = JSON.parse(JSON.stringify(records).replace(/\\"/g, ''));
const newEnv = JSONparse(JSON.stringify(records).replace(/\\"/g, ''));
deltaString = buildDeltaString(oldEnv, newEnv);
}
}

View File

@@ -1,6 +1,5 @@
import chalk from 'chalk';
import table from 'text-table';
import mri from 'mri';
import ms from 'ms';
import strlen from '../util/strlen.ts';
import { handleError, error } from '../util/error';
@@ -9,8 +8,8 @@ import exit from '../util/exit';
import getScope from '../util/get-scope.ts';
import confirm from '../util/input/confirm';
import getCommandFlags from '../util/get-command-flags';
import getPrefixedFlags from '../util/get-prefixed-flags';
import { packageName, getCommandName, logo } from '../util/pkg-name.ts';
import getArgs from '../util/get-args';
const help = () => {
console.log(`
@@ -81,14 +80,12 @@ let subcommand;
let nextTimestamp;
const main = async client => {
argv = mri(client.argv.slice(2), {
boolean: ['help', 'debug', 'yes'],
alias: {
help: 'h',
debug: 'd',
yes: 'y',
next: 'N',
},
argv = getArgs(client.argv.slice(2), {
'--yes': Boolean,
'--next': Number,
'--test-warning': Boolean,
'-y': '--yes',
'-N': '--next',
});
argv._ = argv._.slice(1);
@@ -134,7 +131,8 @@ async function run({ output, contextName, currentTeam, client }) {
const secrets = new NowSecrets({ client, currentTeam });
const args = argv._.slice(1);
const start = Date.now();
const { 'test-warning': testWarningFlag } = argv;
const { '--test-warning': testWarningFlag } = argv;
const commandName = getCommandName('secret ' + subcommand);
if (subcommand === 'ls' || subcommand === 'list') {
@@ -190,14 +188,7 @@ async function run({ output, contextName, currentTeam, client }) {
}
if (pagination && pagination.count === 20) {
const prefixedArgs = getPrefixedFlags(argv);
const flags = getCommandFlags(prefixedArgs, [
'_',
'--next',
'-N',
'-d',
'-y',
]);
const flags = getCommandFlags(argv, ['_', '--next', '-N', '-d', '-y']);
const nextCmd = `secrets ${subcommand}${flags} --next ${pagination.next}`;
output.log(`To display the next page run ${getCommandName(nextCmd)}`);
}
@@ -225,7 +216,7 @@ async function run({ output, contextName, currentTeam, client }) {
if (theSecret) {
const yes =
argv.yes ||
argv['--yes'] ||
(await readConfirmation(client, output, theSecret, contextName));
if (!yes) {
output.print(`Canceled. Secret not deleted.\n`);

View File

@@ -2,7 +2,6 @@ import chars from '../../util/output/chars';
import table from '../../util/output/table';
import getUser from '../../util/get-user';
import getTeams from '../../util/teams/get-teams';
import getPrefixedFlags from '../../util/get-prefixed-flags';
import { packageName } from '../../util/pkg-name';
import getCommandFlags from '../../util/get-command-flags';
import cmd from '../../util/output/cmd';
@@ -81,8 +80,7 @@ export default async function list(client: Client): Promise<number> {
);
if (pagination?.count === 20) {
const prefixedArgs = getPrefixedFlags(argv);
const flags = getCommandFlags(prefixedArgs, ['_', '--next', '-N', '-d']);
const flags = getCommandFlags(argv, ['_', '--next', '-N', '-d']);
const nextCmd = `${packageName} teams ls${flags} --next ${pagination.next}`;
console.log(); // empty line
output.log(`To display the next page run ${cmd(nextCmd)}`);

View File

@@ -20,7 +20,8 @@ export async function initCorepack({
);
if (pkg instanceof CantParseJSONFile) {
console.warn(
'Warning: Could not enable corepack because package.json is invalid JSON'
'Warning: Could not enable corepack because package.json is invalid JSON',
pkg.meta.parseErrorLocation
);
} else if (!pkg?.packageManager) {
console.warn(

View File

@@ -20,6 +20,7 @@ import isPortReachable from 'is-port-reachable';
import deepEqual from 'fast-deep-equal';
import npa from 'npm-package-arg';
import type { ChildProcess } from 'child_process';
import JSONparse from 'json-parse-better-errors';
import { getVercelIgnore, fileNameSymbol } from '@vercel/client';
import {
@@ -726,7 +727,7 @@ export default class DevServer {
try {
const raw = await fs.readFile(abs, 'utf8');
const parsed: WithFileNameSymbol<T> = JSON.parse(raw);
const parsed: WithFileNameSymbol<T> = JSONparse(raw);
parsed[fileNameSymbol] = rel;
return parsed;
} catch (err: unknown) {

View File

@@ -668,13 +668,14 @@ export class CertMissing extends NowError<'ALIAS_IN_USE', { domain: string }> {
export class CantParseJSONFile extends NowError<
'CANT_PARSE_JSON_FILE',
{ file: string }
{ file: string; parseErrorLocation: string }
> {
constructor(file: string) {
constructor(file: string, parseErrorLocation: string) {
const message = `Can't parse json file ${file}: ${parseErrorLocation}`;
super({
code: 'CANT_PARSE_JSON_FILE',
meta: { file },
message: `Can't parse json file`,
meta: { file, parseErrorLocation },
message,
});
}
}

View File

@@ -1,26 +0,0 @@
/**
* This function adds a prefix `-` or `--` to the flags
* passed from the command line, because the package `mri`
* used to extract the args removes them for some reason.
*/
export default function getPrefixedFlags(args: { [key in string]: any }) {
const prefixedArgs: {
[key in string]: any;
} = {};
for (const arg in args) {
if (arg === '_') {
prefixedArgs[arg] = args[arg];
} else {
let prefix = '-';
// Full form flags need two dashes, whereas one letter
// flags need only one.
if (arg.length > 1) {
prefix = '--';
}
prefixedArgs[`${prefix}${arg}`] = args[arg];
}
}
return prefixedArgs;
}

View File

@@ -1,5 +1,7 @@
import fs from 'fs-extra';
import { CantParseJSONFile } from './errors-ts';
import JSONparse from 'json-parse-better-errors';
import { errorToString } from '@vercel/error-utils';
export default async function readJSONFile<T>(
file: string
@@ -10,10 +12,10 @@ export default async function readJSONFile<T>(
}
try {
const json = JSON.parse(content);
const json = JSONparse(content);
return json;
} catch (error) {
return new CantParseJSONFile(file);
return new CantParseJSONFile(file, errorToString(error));
}
}

View File

@@ -1,5 +1,12 @@
# @vercel/client
## 13.0.1
### Patch Changes
- Updated dependencies [[`9e3827c78`](https://github.com/vercel/vercel/commit/9e3827c785e1bc45f2bed421132167381481770f)]:
- @vercel/build-utils@7.1.0
## 13.0.0
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/client",
"version": "13.0.0",
"version": "13.0.1",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"homepage": "https://vercel.com",
@@ -36,7 +36,7 @@
"typescript": "4.9.5"
},
"dependencies": {
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/routing-utils": "3.0.0",
"@zeit/fetch": "5.2.0",
"async-retry": "1.2.3",

View File

@@ -1,5 +1,11 @@
# @vercel/edge
## 1.0.1
### Patch Changes
- upgrade edge-runtime ([#10385](https://github.com/vercel/vercel/pull/10385))
## 1.0.0
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/edge",
"version": "1.0.0",
"version": "1.0.1",
"license": "Apache-2.0",
"main": "dist/index.js",
"module": "dist/index.mjs",
@@ -21,7 +21,7 @@
"build:docs": "typedoc && node scripts/fix-links.js && prettier --write docs/**/*.md docs/*.md"
},
"devDependencies": {
"@edge-runtime/jest-environment": "2.2.3",
"@edge-runtime/jest-environment": "2.3.0",
"@types/jest": "27.4.1",
"jest-junit": "16.0.0",
"ts-node": "8.9.1",

View File

@@ -36,7 +36,7 @@
"@types/minimatch": "3.0.5",
"@types/node": "14.18.33",
"@types/semver": "7.3.10",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"jest-junit": "16.0.0",
"typescript": "4.9.5"
}

View File

@@ -1,5 +1,20 @@
# @vercel/gatsby-plugin-vercel-builder
## 2.0.3
### Patch Changes
- Updated dependencies [[`9e3827c78`](https://github.com/vercel/vercel/commit/9e3827c785e1bc45f2bed421132167381481770f)]:
- @vercel/build-utils@7.1.0
- @vercel/node@3.0.3
## 2.0.2
### Patch Changes
- Updated dependencies [[`597a8a817`](https://github.com/vercel/vercel/commit/597a8a81764c39e70c65b98e78bf4c3827a779a7), [`3f6d99470`](https://github.com/vercel/vercel/commit/3f6d99470db86681e006d66507f32afcea086b41)]:
- @vercel/node@3.0.2
## 2.0.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/gatsby-plugin-vercel-builder",
"version": "2.0.1",
"version": "2.0.3",
"main": "dist/index.js",
"files": [
"dist",
@@ -20,8 +20,8 @@
},
"dependencies": {
"@sinclair/typebox": "0.25.24",
"@vercel/build-utils": "7.0.0",
"@vercel/node": "3.0.1",
"@vercel/build-utils": "7.1.0",
"@vercel/node": "3.0.3",
"@vercel/routing-utils": "3.0.0",
"esbuild": "0.14.47",
"etag": "1.8.1",

View File

@@ -27,7 +27,7 @@
"@types/node-fetch": "^2.3.0",
"@types/tar": "^4.0.0",
"@types/yauzl-promise": "2.1.0",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/ncc": "0.24.0",
"async-retry": "1.3.1",
"execa": "^1.0.0",

View File

@@ -21,7 +21,7 @@
"devDependencies": {
"@types/jest": "27.5.1",
"@types/node": "14.18.33",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/static-config": "3.0.0",
"execa": "3.2.0",
"fs-extra": "11.1.0",

View File

@@ -1,5 +1,13 @@
# @vercel/next
## 4.0.1
### Patch Changes
- fix RSC matching behavior & 404 status code on `fallback: false` ([#10388](https://github.com/vercel/vercel/pull/10388))
- Add handling to leverage RSC prefetch outputs ([#10390](https://github.com/vercel/vercel/pull/10390))
## 4.0.0
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/next",
"version": "4.0.0",
"version": "4.0.1",
"license": "Apache-2.0",
"main": "./dist/index",
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js",
@@ -35,7 +35,7 @@
"@types/semver": "6.0.0",
"@types/text-table": "0.2.1",
"@types/webpack-sources": "3.2.0",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/nft": "0.22.5",
"@vercel/routing-utils": "3.0.0",
"async-sema": "3.0.1",

View File

@@ -168,12 +168,15 @@ export async function serverBuild({
}
}
const APP_PREFETCH_SUFFIX = '.prefetch.rsc';
let appRscPrefetches: UnwrapPromise<ReturnType<typeof glob>> = {};
let appBuildTraces: UnwrapPromise<ReturnType<typeof glob>> = {};
let appDir: string | null = null;
if (appPathRoutesManifest) {
appDir = path.join(pagesDir, '../app');
appBuildTraces = await glob('**/*.js.nft.json', appDir);
appRscPrefetches = await glob(`**/*${APP_PREFETCH_SUFFIX}`, appDir);
}
const isCorrectNotFoundRoutes = semver.gte(
@@ -1225,6 +1228,7 @@ export async function serverBuild({
}
const rscHeader = routesManifest.rsc?.header?.toLowerCase() || '__rsc__';
const rscPrefetchHeader = routesManifest.rsc?.prefetchHeader?.toLowerCase();
const rscVaryHeader =
routesManifest?.rsc?.varyHeader ||
'RSC, Next-Router-State-Tree, Next-Router-Prefetch';
@@ -1236,6 +1240,7 @@ export async function serverBuild({
output: {
...publicDirectoryFiles,
...lambdas,
...appRscPrefetches,
// Prerenders may override Lambdas -- this is an intentional behavior.
...prerenders,
...staticPages,
@@ -1475,6 +1480,49 @@ export async function serverBuild({
...(appDir
? [
...(rscPrefetchHeader
? [
{
src: `^${path.posix.join('/', entryDirectory, '/')}`,
has: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
dest: path.posix.join(
'/',
entryDirectory,
'/index.prefetch.rsc'
),
headers: { vary: rscVaryHeader },
continue: true,
override: true,
},
{
src: `^${path.posix.join(
'/',
entryDirectory,
'/((?!.+\\.rsc).+?)(?:/)?$'
)}`,
has: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
dest: path.posix.join(
'/',
entryDirectory,
`/$1${APP_PREFETCH_SUFFIX}`
),
headers: { vary: rscVaryHeader },
continue: true,
override: true,
},
]
: []),
{
src: `^${path.posix.join('/', entryDirectory, '/')}`,
has: [
@@ -1539,10 +1587,98 @@ export async function serverBuild({
]
: []),
...(rscPrefetchHeader
? [
{
src: path.posix.join(
'/',
entryDirectory,
`/index${APP_PREFETCH_SUFFIX}`
),
dest: path.posix.join('/', entryDirectory, '/index.rsc'),
has: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
continue: true,
override: true,
},
{
src: `^${path.posix.join(
'/',
entryDirectory,
`/(.+?)${APP_PREFETCH_SUFFIX}(?:/)?$`
)}`,
dest: path.posix.join('/', entryDirectory, '/$1.rsc'),
has: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
continue: true,
override: true,
},
]
: []),
...(appDir
? [
// check routes that end in `.rsc` to see if a page with the resulting name (sans-.rsc) exists in the filesystem
// if so, we want to match that page instead. (This matters when prefetching a pages route while on an appdir route)
{
src: `^${path.posix.join('/', entryDirectory, '/(.*)\\.rsc$')}`,
dest: path.posix.join('/', entryDirectory, '/$1'),
has: [
{
type: 'header',
key: rscHeader,
},
],
...(rscPrefetchHeader
? {
missing: [
{
type: 'header',
key: rscPrefetchHeader,
},
],
}
: {}),
check: true,
} as Route,
]
: []),
// These need to come before handle: miss or else they are grouped
// with that routing section
...afterFilesRewrites,
...(appDir
? [
// rewrite route back to `.rsc`, but skip checking fs
{
src: `^${path.posix.join(
'/',
entryDirectory,
'/((?!.+\\.rsc).+?)(?:/)?$'
)}`,
has: [
{
type: 'header',
key: rscHeader,
},
],
dest: path.posix.join('/', entryDirectory, '/$1.rsc'),
headers: { vary: rscVaryHeader },
continue: true,
override: true,
},
]
: []),
// make sure 404 page is used when a directory is matched without
// an index page
{ handle: 'resource' },

View File

@@ -236,6 +236,7 @@ type RoutesManifestOld = {
rsc?: {
header: string;
varyHeader: string;
prefetchHeader?: string;
contentTypeHeader: string;
};
skipMiddlewareUrlNormalize?: boolean;
@@ -2002,6 +2003,10 @@ export const onPrerenderRoute =
),
});
if (isOmittedOrNotFound) {
initialStatus = 404;
}
if (isAppPathRoute) {
// for literal index routes we need to append an additional /index
// due to the proxy's normalizing for /index routes

View File

@@ -0,0 +1,7 @@
export default function CatchAllPage() {
return (
<div>
<h1>CatchAllPage</h1>
</div>
);
}

View File

@@ -0,0 +1,8 @@
export default function RootLayout({ children }) {
return (
<html>
<head />
<body>{children}</body>
</html>
)
}

View File

@@ -0,0 +1,7 @@
export default function Home() {
return (
<div>
<h1>Home</h1>
</div>
);
}

View File

@@ -0,0 +1,12 @@
/* eslint-env jest */
const path = require('path');
const { deployAndTest } = require('../../utils');
const ctx = {};
describe(`${__dirname.split(path.sep).pop()}`, () => {
it('should deploy and pass probe checks', async () => {
const info = await deployAndTest(__dirname);
Object.assign(ctx, info);
});
});

View File

@@ -0,0 +1 @@
module.exports = {};

View File

@@ -0,0 +1,8 @@
{
"dependencies": {
"next": "canary",
"react": "experimental",
"react-dom": "experimental"
},
"ignoreNextjsUpdates": true
}

View File

@@ -0,0 +1,7 @@
export default function About() {
return (
<div>
<h1>About Page</h1>
</div>
);
}

View File

@@ -0,0 +1,30 @@
{
"probes": [
{
"path": "/en",
"status": 200,
"mustContain": "Home"
},
{
"path": "/en/about",
"status": 200,
"mustContain": "About Page"
},
{
"path": "/en/about",
"status": 200,
"headers": {
"RSC": "1"
},
"mustContain": "<html"
},
{
"path": "/en/foobar",
"status": 200,
"headers": {
"RSC": "1"
},
"mustNotContain": "<html"
}
]
}

View File

@@ -1,3 +1,5 @@
export const dynamic = 'force-dynamic'
export default function ClientPage() {
return (
<>

View File

@@ -37,6 +37,16 @@
"mustContain": ":{",
"mustNotContain": "<html"
},
{
"path": "/dynamic/category-1/id-1",
"status": 200,
"headers": {
"RSC": "1",
"Next-Router-Prefetch": "1"
},
"mustContain": ":",
"mustNotContain": "<html"
},
{
"path": "/ssg",
"status": 200,
@@ -45,6 +55,25 @@
"vary": "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Url"
}
},
{
"path": "/client-nested",
"status": 200,
"mustContain": ":",
"mustNotContain": "<html",
"headers": {
"Next-Router-Prefetch": "1",
"RSC": "1"
}
},
{
"path": "/client-nested",
"status": 200,
"mustContain": "hello",
"mustNotContain": "<html",
"headers": {
"RSC": "1"
}
},
{
"path": "/ssg",
"status": 200,
@@ -57,6 +86,19 @@
"mustContain": ":{",
"mustNotContain": "<html"
},
{
"path": "/ssg",
"status": 200,
"responseHeaders": {
"vary": "RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Url"
},
"headers": {
"RSC": "1",
"Next-Router-Prefetch": "1"
},
"mustContain": ":{",
"mustNotContain": "<html"
},
{
"path": "/ssg?override=1",
"status": 307,

View File

@@ -0,0 +1,12 @@
/* eslint-env jest */
const path = require('path');
const { deployAndTest } = require('../../utils');
const ctx = {};
describe(`${__dirname.split(path.sep).pop()}`, () => {
it('should deploy and pass probe checks', async () => {
const info = await deployAndTest(__dirname);
Object.assign(ctx, info);
});
});

View File

@@ -0,0 +1 @@
module.exports = {};

View File

@@ -0,0 +1,13 @@
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"next": "canary",
"react": "latest",
"react-dom": "latest"
},
"ignoreNextjsUpdates": true
}

View File

@@ -0,0 +1,3 @@
export default function handler(req, res) {
res.status(200).json({ name: 'John Doe' });
}

View File

@@ -0,0 +1,24 @@
export default function Page(props) {
return (
<>
<p id="page">blog slug</p>
<p id="slug">{props.slug}</p>
</>
);
}
export function getStaticProps({ params }) {
const result =
params?.slug === 'awesome'
? { props: { slug: params?.slug } }
: { notFound: true };
return result;
}
export function getStaticPaths() {
return {
paths: [{ params: { slug: 'awesome' } }],
fallback: false,
};
}

View File

@@ -0,0 +1,19 @@
{
"probes": [
{
"path": "/blog/awesome",
"status": 200,
"mustContain": "blog slug"
},
{
"path": "/blog/does-not-exist",
"status": 404,
"mustContain": "This page could not be found"
},
{
"path": "/blog/[slug]",
"status": 404,
"mustContain": "This page could not be found"
}
]
}

View File

@@ -1,5 +1,20 @@
# @vercel/node
## 3.0.3
### Patch Changes
- Updated dependencies [[`9e3827c78`](https://github.com/vercel/vercel/commit/9e3827c785e1bc45f2bed421132167381481770f)]:
- @vercel/build-utils@7.1.0
## 3.0.2
### Patch Changes
- upgrade edge-runtime ([#10385](https://github.com/vercel/vercel/pull/10385))
- use `undici` instead of `node-fetch` ([#10387](https://github.com/vercel/vercel/pull/10387))
## 3.0.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/node",
"version": "3.0.1",
"version": "3.0.3",
"license": "Apache-2.0",
"main": "./dist/index",
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/node-js",
@@ -19,24 +19,24 @@
"dist"
],
"dependencies": {
"@edge-runtime/node-utils": "2.0.3",
"@edge-runtime/primitives": "2.1.2",
"@edge-runtime/vm": "3.0.1",
"@edge-runtime/node-utils": "2.2.0",
"@edge-runtime/primitives": "3.1.0",
"@edge-runtime/vm": "3.1.0",
"@types/node": "14.18.33",
"@types/node-fetch": "2.6.3",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/error-utils": "2.0.1",
"@vercel/static-config": "3.0.0",
"async-listen": "3.0.0",
"content-type": "1.0.5",
"edge-runtime": "2.4.4",
"edge-runtime": "2.5.0",
"esbuild": "0.14.47",
"exit-hook": "2.2.1",
"node-fetch": "2.6.9",
"path-to-regexp": "6.2.1",
"ts-morph": "12.0.0",
"ts-node": "10.9.1",
"typescript": "4.9.5"
"typescript": "4.9.5",
"undici": "5.23.0"
},
"devDependencies": {
"@babel/core": "7.5.0",

View File

@@ -6,13 +6,14 @@ if (!entrypoint) {
}
import { join } from 'path';
import type { Headers } from 'node-fetch';
import type { Headers } from 'undici';
import type { VercelProxyResponse } from './types.js';
import { Config } from '@vercel/build-utils';
import { createEdgeEventHandler } from './edge-functions/edge-handler.mjs';
import { createServer, IncomingMessage, ServerResponse } from 'http';
import { createServerlessEventHandler } from './serverless-functions/serverless-handler.mjs';
import { isEdgeRuntime, logError, validateConfiguredRuntime } from './utils.js';
import { toToReadable } from '@edge-runtime/node-utils';
import { getConfig } from '@vercel/static-config';
import { Project } from 'ts-morph';
import { listen } from 'async-listen';
@@ -104,18 +105,20 @@ async function onDevRequest(
const { headers, body, status } = await handleEvent(req);
res.statusCode = status;
for (const [key, value] of headers as unknown as Headers) {
// node-fetch does not support headers.getSetCookie(), so we need to
// manually set the raw value which can be an array of strings
if (value !== undefined) {
res.setHeader(key, key === 'set-cookie' ? headers.raw()[key] : value);
}
for (const [key, value] of headers as Headers) {
if (value !== undefined)
res.setHeader(
key,
key === 'set-cookie' ? headers.getSetCookie() : value
);
}
if (body instanceof Buffer) {
if (body === null) {
res.end();
} else if (body instanceof Buffer) {
res.end(body);
} else {
body.pipe(res);
toToReadable(body).pipe(res);
}
} catch (error: any) {
res.statusCode = 500;

View File

@@ -4,13 +4,13 @@ import {
NodeCompatBindings,
} from './edge-node-compat-plugin.mjs';
import { EdgeRuntime, runServer } from 'edge-runtime';
import fetch, { Headers } from 'node-fetch';
import { fetch, Headers } from 'undici';
import { isError } from '@vercel/error-utils';
import { readFileSync } from 'fs';
import { serializeBody, entrypointToOutputPath, logError } from '../utils.js';
import esbuild from 'esbuild';
import exitHook from 'exit-hook';
import type { HeadersInit } from 'node-fetch';
import type { HeadersInit } from 'undici';
import type { VercelProxyResponse } from '../types.js';
import type { IncomingMessage } from 'http';
import { fileURLToPath } from 'url';
@@ -196,7 +196,6 @@ export async function createEdgeEventHandler(
if (body !== undefined) headers.set('content-length', String(body.length));
const url = new URL(request.url ?? '/', server.url);
// @ts-expect-error
const response = await fetch(url, {
body,
headers,

View File

@@ -26,6 +26,7 @@ const webHandlerToNodeHandler = buildToNodeHandler(
{
Headers,
ReadableStream,
// @ts-expect-error Property 'duplex' is missing in type 'Request'
Request: class extends Request {
constructor(input: RequestInfo | URL, init?: RequestInit | undefined) {
super(input, addDuplexToInit(init));

View File

@@ -1,9 +1,8 @@
import { addHelpers } from './helpers.js';
import { createServer } from 'http';
import { serializeBody } from '../utils.js';
import { streamToBuffer } from '@vercel/build-utils';
import exitHook from 'exit-hook';
import fetch from 'node-fetch';
import { Headers, fetch } from 'undici';
import { listen } from 'async-listen';
import { isAbsolute } from 'path';
import { pathToFileURL } from 'url';
@@ -104,10 +103,10 @@ export async function createServerlessEventHandler(
return async function (request: IncomingMessage) {
const url = new URL(request.url ?? '/', server.url);
// @ts-expect-error
const response = await fetch(url, {
body: await serializeBody(request),
compress: !isStreaming,
// @ts-expect-error
headers: {
...request.headers,
host: request.headers['x-forwarded-host'],
@@ -116,28 +115,33 @@ export async function createServerlessEventHandler(
redirect: 'manual',
});
let body;
let body: Buffer | null = null;
let headers: Headers = response.headers;
if (isStreaming) {
body = response.body;
} else {
body = await streamToBuffer(response.body);
body = Buffer.from(await response.arrayBuffer());
const contentEncoding = response.headers.get('content-encoding');
if (contentEncoding) {
body = compress(body, contentEncoding);
response.headers.set('content-length', Buffer.byteLength(body));
const clonedHeaders = [];
console.log(response.headers.entries());
for (const [key, value] of response.headers.entries()) {
if (key !== 'transfer-encoding') {
// transfer-encoding is only for streaming response
clonedHeaders.push([key, value]);
}
}
clonedHeaders.push(['content-length', String(Buffer.byteLength(body))]);
headers = new Headers(clonedHeaders);
}
/**
* `transfer-encoding` is related to streaming chunks.
* Since we are buffering the response.body, it should be stripped.
*/
response.headers.delete('transfer-encoding');
}
return {
status: response.status,
headers: response.headers,
headers,
body,
encoding: 'utf8',
};

View File

@@ -1,5 +1,5 @@
import { ServerResponse, IncomingMessage } from 'http';
import type { Headers } from 'node-fetch';
import type { Headers } from 'undici';
export type VercelRequestCookies = { [key: string]: string };
export type VercelRequestQuery = { [key: string]: string | string[] };
@@ -44,6 +44,6 @@ export type NowApiHandler = VercelApiHandler;
export interface VercelProxyResponse {
status: number;
headers: Headers;
body: Buffer | NodeJS.ReadableStream;
body: ReadableStream<Uint8Array> | Buffer | null;
encoding: BufferEncoding;
}

View File

@@ -1,6 +1,6 @@
import { forkDevServer, readMessage } from '../../src/fork-dev-server';
import { resolve, extname } from 'path';
import fetch from 'node-fetch';
import { fetch } from 'undici';
import { createServer } from 'http';
import { listen } from 'async-listen';
import zlib from 'zlib';
@@ -302,7 +302,7 @@ test('allow setting multiple cookies with same name', async () => {
text: 'Hello, world!',
});
expect(response.headers.raw()['set-cookie']).toEqual(['a=x', 'b=y', 'c=z']);
expect(response.headers.getSetCookie()).toEqual(['a=x', 'b=y', 'c=z']);
} finally {
child.kill(9);
}

View File

@@ -23,7 +23,7 @@
"@types/execa": "^0.9.0",
"@types/jest": "27.4.1",
"@types/node": "14.18.33",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/ncc": "0.24.0",
"execa": "^1.0.0",
"jest-junit": "16.0.0"

View File

@@ -27,7 +27,7 @@
"@types/aws-lambda": "8.10.19",
"@types/node": "14.18.33",
"@types/semver": "6.0.0",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"execa": "3.2.0",
"fs-extra": "11.1.0",
"jest-junit": "16.0.0"

View File

@@ -1,5 +1,18 @@
# @vercel/remix-builder
## 2.0.2
### Patch Changes
- Updated dependencies [[`9e3827c78`](https://github.com/vercel/vercel/commit/9e3827c785e1bc45f2bed421132167381481770f)]:
- @vercel/build-utils@7.1.0
## 2.0.1
### Patch Changes
- Update `@remix-run/dev` fork to v1.19.3 ([#10381](https://github.com/vercel/vercel/pull/10381))
## 2.0.0
### Major Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/remix-builder",
"version": "2.0.0",
"version": "2.0.2",
"license": "Apache-2.0",
"main": "./dist/index.js",
"homepage": "https://vercel.com/docs",
@@ -20,7 +20,7 @@
"defaults"
],
"dependencies": {
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/nft": "0.22.5",
"@vercel/static-config": "3.0.0",
"path-to-regexp": "6.2.1",
@@ -28,7 +28,7 @@
"ts-morph": "12.0.0"
},
"devDependencies": {
"@remix-run/dev": "npm:@vercel/remix-run-dev@1.19.2",
"@remix-run/dev": "npm:@vercel/remix-run-dev@1.19.3",
"@types/jest": "27.5.1",
"@types/node": "14.18.33",
"@types/semver": "7.3.13",

View File

@@ -22,7 +22,7 @@
"devDependencies": {
"@types/fs-extra": "8.0.0",
"@types/semver": "6.0.0",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/ncc": "0.24.0",
"execa": "2.0.4",
"fs-extra": "^7.0.1",

View File

@@ -1,5 +1,19 @@
# @vercel/static-build
## 2.0.3
### Patch Changes
- Updated dependencies []:
- @vercel/gatsby-plugin-vercel-builder@2.0.3
## 2.0.2
### Patch Changes
- Updated dependencies []:
- @vercel/gatsby-plugin-vercel-builder@2.0.2
## 2.0.1
### Patch Changes

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/static-build",
"version": "2.0.1",
"version": "2.0.3",
"license": "Apache-2.0",
"main": "./dist/index",
"homepage": "https://vercel.com/docs/build-step",
@@ -20,7 +20,7 @@
},
"dependencies": {
"@vercel/gatsby-plugin-vercel-analytics": "1.0.10",
"@vercel/gatsby-plugin-vercel-builder": "2.0.1"
"@vercel/gatsby-plugin-vercel-builder": "2.0.3"
},
"devDependencies": {
"@types/aws-lambda": "8.10.64",
@@ -32,7 +32,7 @@
"@types/node-fetch": "2.5.4",
"@types/promise-timeout": "1.3.0",
"@types/semver": "7.3.13",
"@vercel/build-utils": "7.0.0",
"@vercel/build-utils": "7.1.0",
"@vercel/error-utils": "2.0.1",
"@vercel/frameworks": "2.0.1",
"@vercel/fs-detectors": "5.0.1",

231
pnpm-lock.yaml generated
View File

@@ -183,7 +183,7 @@ importers:
specifier: 1.0.4
version: link:../constants
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../../packages/build-utils
'@vercel/routing-utils':
specifier: 3.0.0
@@ -310,7 +310,7 @@ importers:
packages/cli:
dependencies:
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/go':
specifier: 3.0.0
@@ -319,10 +319,10 @@ importers:
specifier: 1.0.0
version: link:../hydrogen
'@vercel/next':
specifier: 4.0.0
specifier: 4.0.1
version: link:../next
'@vercel/node':
specifier: 3.0.1
specifier: 3.0.3
version: link:../node
'@vercel/python':
specifier: 4.0.0
@@ -331,21 +331,21 @@ importers:
specifier: 2.0.0
version: link:../redwood
'@vercel/remix-builder':
specifier: 2.0.0
specifier: 2.0.2
version: link:../remix
'@vercel/ruby':
specifier: 2.0.0
version: link:../ruby
'@vercel/static-build':
specifier: 2.0.1
specifier: 2.0.3
version: link:../static-build
devDependencies:
'@alex_neo/jest-expect-message':
specifier: 1.0.5
version: 1.0.5
'@edge-runtime/node-utils':
specifier: 2.1.0
version: 2.1.0
specifier: 2.2.0
version: 2.2.0
'@next/env':
specifier: 11.1.2
version: 11.1.2
@@ -403,6 +403,9 @@ importers:
'@types/jest-expect-message':
specifier: 1.0.3
version: 1.0.3
'@types/json-parse-better-errors':
specifier: 1.0.0
version: 1.0.0
'@types/load-json-file':
specifier: 2.0.7
version: 2.0.7
@@ -412,9 +415,6 @@ importers:
'@types/minimatch':
specifier: 3.0.3
version: 3.0.3
'@types/mri':
specifier: 1.1.0
version: 1.1.0
'@types/ms':
specifier: 0.7.30
version: 0.7.30
@@ -470,10 +470,10 @@ importers:
specifier: 1.0.0
version: link:../../internals/get-package-json
'@vercel-internals/types':
specifier: 1.0.7
specifier: 1.0.8
version: link:../../internals/types
'@vercel/client':
specifier: 13.0.0
specifier: 13.0.1
version: link:../client
'@vercel/error-utils':
specifier: 2.0.1
@@ -619,6 +619,9 @@ importers:
jest-matcher-utils:
specifier: 29.3.1
version: 29.3.1
json-parse-better-errors:
specifier: 1.0.2
version: 1.0.2
jsonlines:
specifier: 0.1.1
version: 0.1.1
@@ -634,9 +637,6 @@ importers:
minimatch:
specifier: 3.1.2
version: 3.1.2
mri:
specifier: 1.1.5
version: 1.1.5
ms:
specifier: 2.1.2
version: 2.1.2
@@ -734,7 +734,7 @@ importers:
packages/client:
dependencies:
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/routing-utils':
specifier: 3.0.0
@@ -810,8 +810,8 @@ importers:
packages/edge:
devDependencies:
'@edge-runtime/jest-environment':
specifier: 2.2.3
version: 2.2.3
specifier: 2.3.0
version: 2.3.0
'@types/jest':
specifier: 27.4.1
version: 27.4.1
@@ -935,7 +935,7 @@ importers:
specifier: 7.3.10
version: 7.3.10
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
jest-junit:
specifier: 16.0.0
@@ -969,10 +969,10 @@ importers:
specifier: 0.25.24
version: 0.25.24
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/node':
specifier: 3.0.1
specifier: 3.0.3
version: link:../node
'@vercel/routing-utils':
specifier: 3.0.0
@@ -1036,7 +1036,7 @@ importers:
specifier: 2.1.0
version: 2.1.0
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/ncc':
specifier: 0.24.0
@@ -1081,7 +1081,7 @@ importers:
specifier: 14.18.33
version: 14.18.33
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/static-config':
specifier: 3.0.0
@@ -1141,7 +1141,7 @@ importers:
specifier: 3.2.0
version: 3.2.0
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/nft':
specifier: 0.22.5
@@ -1219,22 +1219,19 @@ importers:
packages/node:
dependencies:
'@edge-runtime/node-utils':
specifier: 2.0.3
version: 2.0.3
specifier: 2.2.0
version: 2.2.0
'@edge-runtime/primitives':
specifier: 2.1.2
version: 2.1.2
specifier: 3.1.0
version: 3.1.0
'@edge-runtime/vm':
specifier: 3.0.1
version: 3.0.1
specifier: 3.1.0
version: 3.1.0
'@types/node':
specifier: 14.18.33
version: 14.18.33
'@types/node-fetch':
specifier: 2.6.3
version: 2.6.3
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/error-utils':
specifier: 2.0.1
@@ -1249,8 +1246,8 @@ importers:
specifier: 1.0.5
version: 1.0.5
edge-runtime:
specifier: 2.4.4
version: 2.4.4
specifier: 2.5.0
version: 2.5.0
esbuild:
specifier: 0.14.47
version: 0.14.47
@@ -1272,6 +1269,9 @@ importers:
typescript:
specifier: 4.9.5
version: 4.9.5
undici:
specifier: 5.23.0
version: 5.23.0
devDependencies:
'@babel/core':
specifier: 7.5.0
@@ -1343,7 +1343,7 @@ importers:
specifier: 14.18.33
version: 14.18.33
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/ncc':
specifier: 0.24.0
@@ -1377,7 +1377,7 @@ importers:
specifier: 6.0.0
version: 6.0.0
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
execa:
specifier: 3.2.0
@@ -1392,7 +1392,7 @@ importers:
packages/remix:
dependencies:
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/nft':
specifier: 0.22.5
@@ -1411,8 +1411,8 @@ importers:
version: 12.0.0
devDependencies:
'@remix-run/dev':
specifier: npm:@vercel/remix-run-dev@1.19.2
version: /@vercel/remix-run-dev@1.19.2(@types/node@14.18.33)
specifier: npm:@vercel/remix-run-dev@1.19.3
version: /@vercel/remix-run-dev@1.19.3(@types/node@14.18.33)
'@types/jest':
specifier: 27.5.1
version: 27.5.1
@@ -1458,7 +1458,7 @@ importers:
specifier: 6.0.0
version: 6.0.0
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/ncc':
specifier: 0.24.0
@@ -1482,7 +1482,7 @@ importers:
specifier: 1.0.10
version: link:../gatsby-plugin-vercel-analytics
'@vercel/gatsby-plugin-vercel-builder':
specifier: 2.0.1
specifier: 2.0.3
version: link:../gatsby-plugin-vercel-builder
devDependencies:
'@types/aws-lambda':
@@ -1513,7 +1513,7 @@ importers:
specifier: 7.3.13
version: 7.3.13
'@vercel/build-utils':
specifier: 7.0.0
specifier: 7.1.0
version: link:../build-utils
'@vercel/error-utils':
specifier: 2.0.1
@@ -3233,58 +3233,41 @@ packages:
dependencies:
'@jridgewell/trace-mapping': 0.3.9
/@edge-runtime/format@2.1.0:
resolution: {integrity: sha512-gc2qbYEIIJRczBApBPznVI1c5vZgzrZQOsFZnAxxFiYah9qldHiu1YEitzSvXI8X8ZgvAguuIiyIbpWz17nlXA==}
engines: {node: '>=14'}
/@edge-runtime/cookies@3.4.0:
resolution: {integrity: sha512-rhkTN7D8YO78lf76gdmK4FYc4Z5zQMGPABFLCWiJzeHmHgaCievF/lHEf1WO1OGZVxe1V34NYxsNTZsXwLht3Q==}
engines: {node: '>=16'}
/@edge-runtime/format@2.2.0:
resolution: {integrity: sha512-gPrS6AVw/qJJL0vcxMXv4kFXCU3ZTCD1uuJpwX15YxHV8BgU9OG5v9LrkkXcr96PBT/9epypfNJMhlWADuEziw==}
engines: {node: '>=16'}
dev: false
/@edge-runtime/jest-environment@2.2.3:
resolution: {integrity: sha512-5DEv8nzuMFGoVbNYbOz7/mileYSbq1/oIvisyTeSfyjId7Pc5Qh2t3BH7ixLa62aVz7oCQlALM4cYGbZQZw1YQ==}
engines: {node: '>=14'}
/@edge-runtime/jest-environment@2.3.0:
resolution: {integrity: sha512-ecjoJ6Ai/Cr/QOFpLC9nu5WC8LHnyFrnbkd8/L53q7sSmeWPKkzvjeFnaS1GLbYHPKZ1GidTsCquw6IPL1xlxA==}
engines: {node: '>=16'}
dependencies:
'@edge-runtime/vm': 3.0.3
'@edge-runtime/vm': 3.1.0
'@jest/environment': 29.5.0
'@jest/fake-timers': 29.5.0
jest-mock: 29.5.0
jest-util: 29.5.0
dev: true
/@edge-runtime/node-utils@2.0.3:
resolution: {integrity: sha512-JUSbi5xu/A8+D2t9B9wfirCI1J8n8q0660FfmqZgA+n3RqxD3y7SnamL1sKRE5/AbHsKs9zcqCbK2YDklbc9Bg==}
engines: {node: '>=14'}
dev: false
/@edge-runtime/node-utils@2.1.0:
resolution: {integrity: sha512-/zxJ7URFqli6aES7BSCH856sheK6pS6RfcXtKEjinO1u6ZQKRBZhFei7xik8XWFopv/nHT758BK97kUPcNXK1A==}
engines: {node: '>=14'}
dev: true
/@edge-runtime/primitives@2.1.2:
resolution: {integrity: sha512-SR04SMDybALlhIYIi0hiuEUwIl0b7Sn+RKwQkX6hydg4+AKMzBNDFhj2nqHDD1+xkHArV9EhmJIb6iGjShwSzg==}
engines: {node: '>=14'}
dev: false
/@edge-runtime/primitives@3.0.1:
resolution: {integrity: sha512-l5NNDcPkKW4N6qRmB8zzpCF6uRW1S808V/zm72z7b/aWwZUYbmEPPkzyhGAW0aQxLU1pGdZ8u2gNjamdaU6RXw==}
engines: {node: '>=14'}
dev: false
/@edge-runtime/primitives@3.0.3:
resolution: {integrity: sha512-YnfMWMRQABAH8IsnFMJWMW+SyB4ZeYBPnR7V0aqdnew7Pq60cbH5DyFjS/FhiLwvHQk9wBREmXD7PP0HooEQ1A==}
engines: {node: '>=14'}
/@edge-runtime/vm@3.0.1:
resolution: {integrity: sha512-69twXLIcqVx0iNlc1vFqnXgka2CZi2c/QBAmMzXBk0M6mPG+ICCBh2dd+cv1K+HW2pfLuSW+EskkFXWGeCf1Vw==}
engines: {node: '>=14'}
/@edge-runtime/node-utils@2.2.0:
resolution: {integrity: sha512-eRM3d/zwF+VczI9+YY9j0b5s/NQ6Cj6y6XY1Fb3HHdu8rCphH8Z41qjTYt4S315FUXo78GcDgnYv7GUvqQ0a8A==}
engines: {node: '>=16'}
dependencies:
'@edge-runtime/primitives': 3.0.1
dev: false
'@edge-runtime/cookies': 3.4.0
/@edge-runtime/vm@3.0.3:
resolution: {integrity: sha512-SPfI1JeIRNs/4EEE2Oc0X6gG3RqjD1TnKu2lwmwFXq0435xgZGKhc3UiKkYAdoMn2dNFD73nlabMKHBRoMRpxg==}
engines: {node: '>=14'}
/@edge-runtime/primitives@3.1.0:
resolution: {integrity: sha512-yxr1QM/lC8nrU38zxePeDqVeIjwsJ83gKGTH8YJ4CoHTv3q+6xEeqRIT+/9IPX/FApWYtnxHauhNqr6CHRj5YA==}
engines: {node: '>=16'}
/@edge-runtime/vm@3.1.0:
resolution: {integrity: sha512-Y2JZgJP+4byI17SiDeEZhvBUvJ+om7E5ll/jrS7aGRpet5qKnJSsGep6xxhMjqT/j8ulFvTMN/kdlMMy5pEKBQ==}
engines: {node: '>=16'}
dependencies:
'@edge-runtime/primitives': 3.0.3
'@edge-runtime/primitives': 3.1.0
/@emotion/hash@0.9.0:
resolution: {integrity: sha512-14FtKiHhy2QoPIzdTcvh//8OyBlknNs2nXRwIhG904opCby3l+9Xaf/wuPvICBF0rc1ZCNBd3nKe9cd2mecVkQ==}
@@ -4234,8 +4217,8 @@ packages:
engines: {node: '>=14'}
dev: true
/@remix-run/server-runtime@1.19.2:
resolution: {integrity: sha512-d+oOaQlBPFHPum1nstJCntRgwgi4fzijW51yPCo3ljUxIrjlDjutX2GCQ72Apd6Ffpd11/6nEq+B90EY+Ala9Q==}
/@remix-run/server-runtime@1.19.3:
resolution: {integrity: sha512-KzQ+htUsKqpBgKE2tWo7kIIGy3MyHP58Io/itUPvV+weDjApwr9tQr9PZDPA3yAY6rAzLax7BU0NMSYCXWFY5A==}
engines: {node: '>=14.0.0'}
dependencies:
'@remix-run/router': 1.7.2
@@ -5129,6 +5112,10 @@ packages:
resolution: {integrity: sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==}
dev: true
/@types/json-parse-better-errors@1.0.0:
resolution: {integrity: sha512-JAsGXEMsiw2ttNrlady/Z8ztrSEl1y8IoG9ge7hpBQ4I+ilKxelOPGKnVmt9TX69lkXdJioDWCkzkktWcdAshA==}
dev: true
/@types/json-schema@7.0.11:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
@@ -5195,10 +5182,6 @@ packages:
minipass: 5.0.0
dev: true
/@types/mri@1.1.0:
resolution: {integrity: sha512-fMl88ZoZXOB7VKazJ6wUMpZc9QIn+jcigSFRf2K/rrw4DcXn+/uGxlWX8DDlcE7JkwgIZ7BDH+JgxZPlc/Ap3g==}
dev: true
/@types/ms@0.7.30:
resolution: {integrity: sha512-OftRLCgAzJP7vmKn9by/GVjnf4hloz/pXNOwPo0vKGAfXI7GqWXJi9N2kRar4cP5s1dGwuwcagWqO6iHBTq1Mg==}
dev: true
@@ -5247,13 +5230,6 @@ packages:
form-data: 3.0.1
dev: true
/@types/node-fetch@2.6.3:
resolution: {integrity: sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==}
dependencies:
'@types/node': 16.18.11
form-data: 3.0.1
dev: false
/@types/node@10.12.18:
resolution: {integrity: sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==}
dev: false
@@ -6030,12 +6006,12 @@ packages:
- encoding
- supports-color
/@vercel/remix-run-dev@1.19.2(@types/node@14.18.33):
resolution: {integrity: sha512-SWvccKSjRheW4FhFVRvz/a2ipY2zmvjWKm0v2yi+WuKwmcMcYPwYSFn/yBiW1dMfrnmnVaXe0KLt61SWJRUpCw==}
/@vercel/remix-run-dev@1.19.3(@types/node@14.18.33):
resolution: {integrity: sha512-Sxg6X0Sp8t2ZpHPE9V/HASgbF9V3kYH7ll4NGDdABpRQVvgx4Y2kn4DZdFiDXslIWE7/ExBLCeN70S+JhdW1UQ==}
engines: {node: '>=14.0.0'}
hasBin: true
peerDependencies:
'@remix-run/serve': ^1.19.2
'@remix-run/serve': ^1.19.3
peerDependenciesMeta:
'@remix-run/serve':
optional: true
@@ -6050,7 +6026,7 @@ packages:
'@babel/traverse': 7.21.5
'@babel/types': 7.21.5
'@npmcli/package-json': 2.0.0
'@remix-run/server-runtime': 1.19.2
'@remix-run/server-runtime': 1.19.3
'@vanilla-extract/integration': 6.2.1(@types/node@14.18.33)
arg: 5.0.2
cacache: 15.3.0
@@ -6673,6 +6649,11 @@ packages:
resolution: {integrity: sha512-V+SsTpDqkrWTimiotsyl33ePSjA5/KrithwupuvJ6ztsqPvGv6ge4OredFhPffVXiLN/QUWvE0XcqJaYgt6fOg==}
engines: {node: '>= 14'}
/async-listen@3.0.1:
resolution: {integrity: sha512-cWMaNwUJnf37C/S5TfCkk/15MwbPRwVYALA2jtjkbHjCmAPiDXyNJy2q3p1KAZzDLHAWyarUWSujUoHR4pEgrA==}
engines: {node: '>= 14'}
dev: false
/async-retry@1.1.3:
resolution: {integrity: sha512-fiAB2uaoAoUS5Ua75XFGoMKF4hmQ5H4u4gsINUjwPNof5dygJS1zyL9mh0SOmIkzAwGijwG4ybLNc8yG2OGpEQ==}
dependencies:
@@ -6708,6 +6689,7 @@ packages:
/asynckit@0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: true
/atob@2.1.2:
resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
@@ -7096,6 +7078,13 @@ packages:
load-tsconfig: 0.2.3
dev: true
/busboy@1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
dependencies:
streamsearch: 1.1.0
dev: false
/bytes@3.0.0:
resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
engines: {node: '>= 0.8'}
@@ -7585,6 +7574,7 @@ packages:
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: 1.0.0
dev: true
/comma-separated-tokens@2.0.3:
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
@@ -8060,6 +8050,7 @@ packages:
/delayed-stream@1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
dev: true
/delegates@1.0.0:
resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
@@ -8238,14 +8229,14 @@ packages:
safer-buffer: 2.1.2
dev: true
/edge-runtime@2.4.4:
resolution: {integrity: sha512-uq1YdIxkMDsBYLdSSp/w62PciCL46ic4m1Z/2G6N8RcAPI8p35O8u6hJQT83j28Dnt4U5iyvmwFMYouHMK51uA==}
engines: {node: '>=14'}
/edge-runtime@2.5.0:
resolution: {integrity: sha512-QgDNX6R+RPwhY3+vqHpvYE4XUoB/cFG60nGBKu9pmPOJxQleeTCj2F5CHimIpNqex9h1Cy2Y3tuQ+Vq2GzmZIA==}
engines: {node: '>=16'}
hasBin: true
dependencies:
'@edge-runtime/format': 2.1.0
'@edge-runtime/vm': 3.0.3
async-listen: 3.0.0
'@edge-runtime/format': 2.2.0
'@edge-runtime/vm': 3.1.0
async-listen: 3.0.1
mri: 1.2.0
picocolors: 1.0.0
pretty-bytes: 5.6.0
@@ -9997,6 +9988,7 @@ packages:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.24
dev: true
/format@0.2.2:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
@@ -13187,6 +13179,7 @@ packages:
/mime-db@1.40.0:
resolution: {integrity: sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==}
engines: {node: '>= 0.6'}
dev: true
/mime-db@1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
@@ -13205,6 +13198,7 @@ packages:
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.40.0
dev: true
/mime-types@2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
@@ -13391,15 +13385,9 @@ packages:
engines: {node: '>=4'}
dev: true
/mri@1.1.5:
resolution: {integrity: sha512-d2RKzMD4JNyHMbnbWnznPaa8vbdlq/4pNZ3IgdaGrVbBhebBsGUUE/6qorTMYNS6TwuH3ilfOlD2bf4Igh8CKg==}
engines: {node: '>=4'}
dev: true
/mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
dev: false
/ms@2.0.0:
resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
@@ -15032,7 +15020,7 @@ packages:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'}
dependencies:
mri: 1.1.5
mri: 1.2.0
dev: true
/safe-buffer@5.1.2:
@@ -15075,6 +15063,7 @@ packages:
/semver@5.7.1:
resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
hasBin: true
dev: true
/semver@6.1.1:
@@ -15544,6 +15533,11 @@ packages:
mixme: 0.5.9
dev: true
/streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
dev: false
/string-argv@0.3.1:
resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
engines: {node: '>=0.6.19'}
@@ -16536,6 +16530,13 @@ packages:
which-boxed-primitive: 1.0.2
dev: true
/undici@5.23.0:
resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==}
engines: {node: '>=14.0'}
dependencies:
busboy: 1.6.0
dev: false
/unicode-canonical-property-names-ecmascript@2.0.0:
resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==}
engines: {node: '>=4'}