[cli] Run middleware as a plugin instead of running directly (#6941)

* Move loadPlugins to a utils file to be shared w/ dev server.

* Update loadCliPlugins to also return startDevServer and runDevMiddleware based plugins.

* Move plugins back to dependencies.

These can't be bundled as it interferes with plugin resolution.

* Hook up middleware plugins to dev server.

* Pass output object to loadCliPlugins instead of a logging function.

* Allow more than one runDevMiddleware defining plugins.

* Bundle esbuild w/ middleware plugin.

* Keep esbuild as an external

* Update middleware's esbuild.

* set old space size

* Revert "set old space size"

This reverts commit b579194a862949a11769e9087f01c31f2e1f3b60.

* Use --max-old-space-size for CLI unit tests

* Increase memory

* Use `run.js` to set the memory

* Make NODE_OPTIONS optional

Co-authored-by: Leo Lamprecht <leo@vercel.com>
Co-authored-by: Andy <AndyBitz@users.noreply.github.com>
Co-authored-by: Andy Bitz <artzbitz@gmail.com>
This commit is contained in:
Gary Borton
2021-11-08 10:38:13 -08:00
committed by GitHub
parent bf4e77110f
commit d3e98cdb73
8 changed files with 201 additions and 150 deletions

View File

@@ -23,13 +23,11 @@ import handleError from '../util/handle-error';
import confirm from '../util/input/confirm'; import confirm from '../util/input/confirm';
import { isSettingValue } from '../util/is-setting-value'; import { isSettingValue } from '../util/is-setting-value';
import cmd from '../util/output/cmd'; import cmd from '../util/output/cmd';
import code from '../util/output/code';
import { getColorForPkgName } from '../util/output/color-name-cache';
import logo from '../util/output/logo'; import logo from '../util/output/logo';
import param from '../util/output/param'; import param from '../util/output/param';
import stamp from '../util/output/stamp'; import stamp from '../util/output/stamp';
import cliPkgJson from '../util/pkg';
import { getCommandName, getPkgName } from '../util/pkg-name'; import { getCommandName, getPkgName } from '../util/pkg-name';
import { loadCliPlugins } from '../util/plugins';
import { findFramework } from '../util/projects/find-framework'; import { findFramework } from '../util/projects/find-framework';
import { VERCEL_DIR } from '../util/projects/link'; import { VERCEL_DIR } from '../util/projects/link';
import { import {
@@ -69,7 +67,6 @@ const help = () => {
}; };
const OUTPUT_DIR = '.output'; const OUTPUT_DIR = '.output';
const VERCEL_PLUGIN_PREFIX = 'vercel-plugin-';
const fields: { const fields: {
name: string; name: string;
@@ -200,7 +197,7 @@ export default async function main(client: Client) {
const debug = argv['--debug']; const debug = argv['--debug'];
let plugins; let plugins;
try { try {
plugins = await loadCliPlugins(client, cwd); plugins = await loadCliPlugins(cwd, client.output);
} catch (error) { } catch (error) {
client.output.error('Failed to load CLI Plugins'); client.output.error('Failed to load CLI Plugins');
handleError(error, { debug }); handleError(error, { debug });
@@ -615,52 +612,6 @@ export async function runPackageJsonScript(
return true; return true;
} }
async function loadCliPlugins(client: Client, cwd: string) {
const { packageJson } = await scanParentDirs(cwd, true);
let pluginCount = 0;
const preBuildPlugins = [];
const buildPlugins = [];
const deps = new Set(
[
...Object.keys(packageJson?.dependencies || {}),
...Object.keys(packageJson?.devDependencies || {}),
...Object.keys(cliPkgJson.dependencies),
].filter(dep => dep.startsWith(VERCEL_PLUGIN_PREFIX))
);
for (let dep of deps) {
pluginCount++;
const resolved = require.resolve(dep, {
paths: [cwd, process.cwd(), __dirname],
});
let plugin;
try {
plugin = require(resolved);
const color = getColorForPkgName(dep);
if (typeof plugin.preBuild === 'function') {
preBuildPlugins.push({
plugin,
name: dep,
color,
});
}
if (typeof plugin.build === 'function') {
buildPlugins.push({
plugin,
name: dep,
color,
});
}
} catch (error) {
client.output.error(`Failed to import ${code(dep)}`);
throw error;
}
}
return { pluginCount, preBuildPlugins, buildPlugins };
}
async function linkOrCopy(existingPath: string, newPath: string) { async function linkOrCopy(existingPath: string, newPath: string) {
try { try {
await fs.createLink(existingPath, newPath); await fs.createLink(existingPath, newPath);

View File

@@ -22,8 +22,6 @@ import deepEqual from 'fast-deep-equal';
import which from 'which'; import which from 'which';
import npa from 'npm-package-arg'; import npa from 'npm-package-arg';
import { runDevMiddleware } from 'vercel-plugin-middleware';
import { getVercelIgnore, fileNameSymbol } from '@vercel/client'; import { getVercelIgnore, fileNameSymbol } from '@vercel/client';
import { import {
getTransformedRoutes, getTransformedRoutes,
@@ -91,6 +89,7 @@ import {
} from './types'; } from './types';
import { ProjectEnvVariable, ProjectSettings } from '../../types'; import { ProjectEnvVariable, ProjectSettings } from '../../types';
import exposeSystemEnvs from './expose-system-envs'; import exposeSystemEnvs from './expose-system-envs';
import { loadCliPlugins } from '../plugins';
const frontendRuntimeSet = new Set( const frontendRuntimeSet = new Set(
frameworkList.map(f => f.useRuntime?.use || '@vercel/static-build') frameworkList.map(f => f.useRuntime?.use || '@vercel/static-build')
@@ -1351,6 +1350,23 @@ export default class DevServer {
return false; return false;
}; };
runDevMiddleware = async (
req: http.IncomingMessage,
res: http.ServerResponse
) => {
const { devMiddlewarePlugins } = await loadCliPlugins(
this.cwd,
this.output
);
for (let plugin of devMiddlewarePlugins) {
const result = await plugin.plugin.runDevMiddleware(req, res, this.cwd);
if (result.finished) {
return result;
}
}
return { finished: false };
};
/** /**
* Serve project directory as a v2 deployment. * Serve project directory as a v2 deployment.
*/ */
@@ -1418,7 +1434,7 @@ export default class DevServer {
let prevUrl = req.url; let prevUrl = req.url;
let prevHeaders: HttpHeadersConfig = {}; let prevHeaders: HttpHeadersConfig = {};
const middlewareResult = await runDevMiddleware(req, res, this.cwd); const middlewareResult = await this.runDevMiddleware(req, res);
if (middlewareResult) { if (middlewareResult) {
if (middlewareResult.error) { if (middlewareResult.error) {

View File

@@ -0,0 +1,76 @@
import code from '../util/output/code';
import { getColorForPkgName } from '../util/output/color-name-cache';
import cliPkgJson from '../util/pkg';
import { scanParentDirs } from '@vercel/build-utils';
import { Output } from './output';
const VERCEL_PLUGIN_PREFIX = 'vercel-plugin-';
export async function loadCliPlugins(cwd: string, output: Output) {
const { packageJson } = await scanParentDirs(cwd, true);
let pluginCount = 0;
const preBuildPlugins = [];
const buildPlugins = [];
const devServerPlugins = [];
const devMiddlewarePlugins = [];
const deps = new Set(
[
...Object.keys(packageJson?.dependencies || {}),
...Object.keys(packageJson?.devDependencies || {}),
...Object.keys(cliPkgJson.dependencies),
].filter(dep => dep.startsWith(VERCEL_PLUGIN_PREFIX))
);
for (let dep of deps) {
pluginCount++;
const resolved = require.resolve(dep, {
paths: [cwd, process.cwd(), __dirname],
});
let plugin;
try {
plugin = require(resolved);
const color = getColorForPkgName(dep);
if (typeof plugin.preBuild === 'function') {
preBuildPlugins.push({
plugin,
name: dep,
color,
});
}
if (typeof plugin.build === 'function') {
buildPlugins.push({
plugin,
name: dep,
color,
});
}
if (typeof plugin.startDevServer === 'function') {
devServerPlugins.push({
plugin,
name: dep,
color,
});
}
if (typeof plugin.runDevMiddleware === 'function') {
devMiddlewarePlugins.push({
plugin,
name: dep,
color,
});
}
} catch (error) {
output.error(`Failed to import ${code(dep)}`);
throw error;
}
}
return {
pluginCount,
preBuildPlugins,
buildPlugins,
devServerPlugins,
devMiddlewarePlugins,
};
}

View File

@@ -13,7 +13,9 @@ async function main() {
await execa( await execa(
'ncc', 'ncc',
['build', join(srcDir, 'index.ts'), '-o', outDir, '--external', 'esbuild'], ['build', join(srcDir, 'index.ts'), '-o', outDir, '--external', 'esbuild'],
{ stdio: 'inherit' } {
stdio: 'inherit',
}
); );
await fs.copyFile( await fs.copyFile(

View File

@@ -17,6 +17,9 @@
"files": [ "files": [
"dist" "dist"
], ],
"dependencies": {
"esbuild": "0.13.12"
},
"devDependencies": { "devDependencies": {
"@peculiar/webcrypto": "1.2.0", "@peculiar/webcrypto": "1.2.0",
"@types/cookie": "0.4.1", "@types/cookie": "0.4.1",
@@ -29,7 +32,6 @@
"@types/uuid": "8.3.1", "@types/uuid": "8.3.1",
"@vercel/ncc": "0.24.0", "@vercel/ncc": "0.24.0",
"cookie": "0.4.1", "cookie": "0.4.1",
"esbuild": "0.13.10",
"formdata-node": "4.3.1", "formdata-node": "4.3.1",
"glob": "7.2.0", "glob": "7.2.0",
"http-proxy": "1.18.1", "http-proxy": "1.18.1",

View File

@@ -295,11 +295,6 @@ async function runMiddleware(params: {
console.error(`Uncaught: middleware waitUntil errored`, error); console.error(`Uncaught: middleware waitUntil errored`, error);
}); });
// TODO - is this needed?
// if (!result) {
// this.send404(params.request, params.response, params.requestId);
// }
return result; return result;
} }

9
utils/run.js vendored
View File

@@ -81,6 +81,15 @@ function runScript(pkgName, script) {
cwd, cwd,
stdio: 'inherit', stdio: 'inherit',
shell: true, shell: true,
env: {
// Only add this for unit tests, as it's not relevant to others.
...(script === 'test-unit'
? {
NODE_OPTIONS: '--max-old-space-size=4096',
}
: null),
...process.env,
},
}); });
child.on('error', reject); child.on('error', reject);
child.on('close', (code, signal) => { child.on('close', (code, signal) => {

178
yarn.lock
View File

@@ -5160,113 +5160,113 @@ es6-promisify@^5.0.0:
dependencies: dependencies:
es6-promise "^4.0.3" es6-promise "^4.0.3"
esbuild-android-arm64@0.13.10: esbuild-android-arm64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.10.tgz#3545c71bf01e8b36535681078cdb0191c8654452" resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.12.tgz#e1f199dc05405cdc6670c00fb6c793822bf8ae4c"
integrity sha512-1sCdVAq64yMp2Uhlu+97/enFxpmrj31QHtThz7K+/QGjbHa7JZdBdBsZCzWJuntKHZ+EU178tHYkvjaI9z5sGg== integrity sha512-TSVZVrb4EIXz6KaYjXfTzPyyRpXV5zgYIADXtQsIenjZ78myvDGaPi11o4ZSaHIwFHsuwkB6ne5SZRBwAQ7maw==
esbuild-darwin-64@0.13.10: esbuild-darwin-64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.10.tgz#143e34d7f5d3860cc681c64c860f531e60496b5b" resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.12.tgz#f5c59e622955c01f050e5a7ac9c1d41db714b94d"
integrity sha512-XlL+BYZ2h9cz3opHfFgSHGA+iy/mljBFIRU9q++f9SiBXEZTb4gTW/IENAD1l9oKH0FdO9rUpyAfV+lM4uAxrg== integrity sha512-c51C+N+UHySoV2lgfWSwwmlnLnL0JWj/LzuZt9Ltk9ub1s2Y8cr6SQV5W3mqVH1egUceew6KZ8GyI4nwu+fhsw==
esbuild-darwin-arm64@0.13.10: esbuild-darwin-arm64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.10.tgz#456a044b789d5d256af8d264314da5217ca9fcd1" resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.12.tgz#8abae74c2956a8aa568fc52c78829338c4a4b988"
integrity sha512-RZMMqMTyActMrXKkW71IQO8B0tyQm0Bm+ZJQWNaHJchL5LlqazJi7rriwSocP+sKLszHhsyTEBBh6qPdw5g5yQ== integrity sha512-JvAMtshP45Hd8A8wOzjkY1xAnTKTYuP/QUaKp5eUQGX+76GIie3fCdUUr2ZEKdvpSImNqxiZSIMziEiGB5oUmQ==
esbuild-freebsd-64@0.13.10: esbuild-freebsd-64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.10.tgz#dcd829a4a95226716faae8a2f378f08688f921b6" resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.12.tgz#6ad2ab8c0364ee7dd2d6e324d876a8e60ae75d12"
integrity sha512-pf4BEN9reF3jvZEZdxljVgOv5JS4kuYFCI78xk+2HWustbLvTP0b9XXfWI/OD0ZLWbyLYZYIA+VbVe4tdAklig== integrity sha512-r6On/Skv9f0ZjTu6PW5o7pdXr8aOgtFOEURJZYf1XAJs0IQ+gW+o1DzXjVkIoT+n1cm3N/t1KRJfX71MPg/ZUA==
esbuild-freebsd-arm64@0.13.10: esbuild-freebsd-arm64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.10.tgz#116c254b3eb1b9d1dd6f12e0271967de4512ca09" resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.12.tgz#6f38155f4c300ac4c8adde1fde3cc6a4440a8294"
integrity sha512-j9PUcuNWmlxr4/ry4dK/s6zKh42Jhh/N5qnAAj7tx3gMbkIHW0JBoVSbbgp97p88X9xgKbXx4lG2sJDhDWmsYQ== integrity sha512-F6LmI2Q1gii073kmBE3NOTt/6zLL5zvZsxNLF8PMAwdHc+iBhD1vzfI8uQZMJA1IgXa3ocr3L3DJH9fLGXy6Yw==
esbuild-linux-32@0.13.10: esbuild-linux-32@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.10.tgz#131971622c38e5aa014303a494a1b5c3cc90f2be" resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.12.tgz#b1d15e330188a8c21de75c3f0058628a3eefade7"
integrity sha512-imtdHG5ru0xUUXuc2ofdtyw0fWlHYXV7JjF7oZHgmn0b+B4o4Nr6ZON3xxoo1IP8wIekW+7b9exIf/MYq0QV7w== integrity sha512-U1UZwG3UIwF7/V4tCVAo/nkBV9ag5KJiJTt+gaCmLVWH3bPLX7y+fNlhIWZy8raTMnXhMKfaTvWZ9TtmXzvkuQ==
esbuild-linux-64@0.13.10: esbuild-linux-64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.10.tgz#48826c388abd5dde3fc098a8ef38d8b548674f93" resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.12.tgz#25bd64b66162b02348e32d8f12e4c9ee61f1d070"
integrity sha512-O7fzQIH2e7GC98dvoTH0rad5BVLm9yU3cRWfEmryCEIFTwbNEWCEWOfsePuoGOHRtSwoVY1hPc21CJE4/9rWxQ== integrity sha512-YpXSwtu2NxN3N4ifJxEdsgd6Q5d8LYqskrAwjmoCT6yQnEHJSF5uWcxv783HWN7lnGpJi9KUtDvYsnMdyGw71Q==
esbuild-linux-arm64@0.13.10: esbuild-linux-arm64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.10.tgz#0be9ffc92e30641869c7fbca0ec5d30fa8cbddd6" resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.12.tgz#ba582298457cc5c9ac823a275de117620c06537f"
integrity sha512-bkGxN67S2n0PF4zhh87/92kBTsH2xXLuH6T5omReKhpXdJZF5SVDSk5XU/nngARzE+e6QK6isK060Dr5uobzNw== integrity sha512-sgDNb8kb3BVodtAlcFGgwk+43KFCYjnFOaOfJibXnnIojNWuJHpL6aQJ4mumzNWw8Rt1xEtDQyuGK9f+Y24jGA==
esbuild-linux-arm@0.13.10: esbuild-linux-arm@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.10.tgz#8c15bcaa41a022c834f049a71a7d1fbade507532" resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.12.tgz#6bc81c957bff22725688cc6359c29a25765be09b"
integrity sha512-R2Jij4A0K8BcmBehvQeUteQEcf24Y2YZ6mizlNFuJOBPxe3vZNmkZ4mCE7Pf1tbcqA65qZx8J3WSHeGJl9EsJA== integrity sha512-SyiT/JKxU6J+DY2qUiSLZJqCAftIt3uoGejZ0HDnUM2MGJqEGSGh7p1ecVL2gna3PxS4P+j6WAehCwgkBPXNIw==
esbuild-linux-mips64le@0.13.10: esbuild-linux-mips64le@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.10.tgz#5bb33a2bc82e9c78ed724f345a8359610ddc9695" resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.12.tgz#ef3c4aba3e585d847cbade5945a8b4a5c62c7ce2"
integrity sha512-UDNO5snJYOLWrA2uOUxM/PVbzzh2TR7Zf2i8zCCuFlYgvAb/81XO+Tasp3YAElDpp4VGqqcpBXLtofa9nrnJGA== integrity sha512-qQJHlZBG+QwVIA8AbTEtbvF084QgDi4DaUsUnA+EolY1bxrG+UyOuGflM2ZritGhfS/k7THFjJbjH2wIeoKA2g==
esbuild-linux-ppc64le@0.13.10: esbuild-linux-ppc64le@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.10.tgz#18703cd0d52447d97486735b8e79fba7d81eac65" resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.12.tgz#a21fb64e80c38bef06122e48283990fc6db578e1"
integrity sha512-xu6J9rMWu1TcEGuEmoc8gsTrJCEPsf+QtxK4IiUZNde9r4Q4nlRVah4JVZP3hJapZgZJcxsse0XiKXh1UFdOeA== integrity sha512-2dSnm1ldL7Lppwlo04CGQUpwNn5hGqXI38OzaoPOkRsBRWFBozyGxTFSee/zHFS+Pdh3b28JJbRK3owrrRgWNw==
esbuild-netbsd-64@0.13.10: esbuild-netbsd-64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.10.tgz#3ecb06158aadb5b7396a5b7632069181b1591c56" resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.12.tgz#1ea7fc8cfce88a20a4047b867ef184049a6641ae"
integrity sha512-d+Gr0ScMC2J83Bfx/ZvJHK0UAEMncctwgjRth9d4zppYGLk/xMfFKxv5z1ib8yZpQThafq8aPm8AqmFIJrEesw== integrity sha512-D4raxr02dcRiQNbxOLzpqBzcJNFAdsDNxjUbKkDMZBkL54Z0vZh4LRndycdZAMcIdizC/l/Yp/ZsBdAFxc5nbA==
esbuild-openbsd-64@0.13.10: esbuild-openbsd-64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.10.tgz#3a6950b1d955de921ac52f7af0b4865e89d6e4f1" resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.12.tgz#adde32f2f1b05dc4bd4fc544d6ea5a4379f9ca4d"
integrity sha512-OuCYc+bNKumBvxflga+nFzZvxsgmWQW+z4rMGIjM5XIW0nNbGgRc5p/0PSDv0rTdxAmwCpV69fezal0xjrDaaA== integrity sha512-KuLCmYMb2kh05QuPJ+va60bKIH5wHL8ypDkmpy47lzwmdxNsuySeCMHuTv5o2Af1RUn5KLO5ZxaZeq4GEY7DaQ==
esbuild-sunos-64@0.13.10: esbuild-sunos-64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.10.tgz#ad407f721a8b5727fca31958b5eab1b0232e2d73" resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.12.tgz#a7ecaf52b7364fbee76dc8aa707fa3e1cff3342c"
integrity sha512-gUkgivZK11bD56wDoLsnYrsOHD/zHzzLSdqKcIl3wRMulfHpRBpoX8gL0dbWr+8N9c+1HDdbNdvxSRmZ4RCVwg== integrity sha512-jBsF+e0woK3miKI8ufGWKG3o3rY9DpHvCVRn5eburMIIE+2c+y3IZ1srsthKyKI6kkXLvV4Cf/E7w56kLipMXw==
esbuild-windows-32@0.13.10: esbuild-windows-32@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.10.tgz#ddaaa0b6e172df6512edc7a91bd2456615cfa914" resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.12.tgz#a8756033dc905c4b7bea19be69f7ee68809f8770"
integrity sha512-C1xJ54E56dGWRaYcTnRy7amVZ9n1/D/D2/qVw7e5EtS7p+Fv/yZxxgqyb1hMGKXgtFYX4jMpU5eWBF/AsYrn+A== integrity sha512-L9m4lLFQrFeR7F+eLZXG82SbXZfUhyfu6CexZEil6vm+lc7GDCE0Q8DiNutkpzjv1+RAbIGVva9muItQ7HVTkQ==
esbuild-windows-64@0.13.10: esbuild-windows-64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.10.tgz#93d861abf36bf71b6e61f5cbd2e42762ce5cb83a" resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.12.tgz#ae694aa66ca078acb8509b2da31197ed1f40f798"
integrity sha512-6+EXEXopEs3SvPFAHcps2Krp/FvqXXsOQV33cInmyilb0ZBEQew4MIoZtMIyB3YXoV6//dl3i6YbPrFZaWEinQ== integrity sha512-k4tX4uJlSbSkfs78W5d9+I9gpd+7N95W7H2bgOMFPsYREVJs31+Q2gLLHlsnlY95zBoPQMIzHooUIsixQIBjaQ==
esbuild-windows-arm64@0.13.10: esbuild-windows-arm64@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.10.tgz#85a2d338aaa8b0cd1d8ecbe9150def9a608e8947" resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.12.tgz#782c5a8bd6d717ea55aaafe648f9926ca36a4a88"
integrity sha512-xTqM/XKhORo6u9S5I0dNJWEdWoemFjogLUTVLkQMVyUV3ZuMChahVA+bCqKHdyX55pCFxD/8v2fm3/sfFMWN+g== integrity sha512-2tTv/BpYRIvuwHpp2M960nG7uvL+d78LFW/ikPItO+2GfK51CswIKSetSpDii+cjz8e9iSPgs+BU4o8nWICBwQ==
esbuild@0.13.10: esbuild@0.13.12:
version "0.13.10" version "0.13.12"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.10.tgz#e3d24d59f1d8b2130d746ca858efcb80e1d99b26" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.12.tgz#9cac641594bf03cf34145258c093d743ebbde7ca"
integrity sha512-0NfCsnAh5XatHIx6Cu93wpR2v6opPoOMxONYhaAoZKzGYqAE+INcDeX2wqMdcndvPQdWCuuCmvlnsh0zmbHcSQ== integrity sha512-vTKKUt+yoz61U/BbrnmlG9XIjwpdIxmHB8DlPR0AAW6OdS+nBQBci6LUHU2q9WbBobMEIQxxDpKbkmOGYvxsow==
optionalDependencies: optionalDependencies:
esbuild-android-arm64 "0.13.10" esbuild-android-arm64 "0.13.12"
esbuild-darwin-64 "0.13.10" esbuild-darwin-64 "0.13.12"
esbuild-darwin-arm64 "0.13.10" esbuild-darwin-arm64 "0.13.12"
esbuild-freebsd-64 "0.13.10" esbuild-freebsd-64 "0.13.12"
esbuild-freebsd-arm64 "0.13.10" esbuild-freebsd-arm64 "0.13.12"
esbuild-linux-32 "0.13.10" esbuild-linux-32 "0.13.12"
esbuild-linux-64 "0.13.10" esbuild-linux-64 "0.13.12"
esbuild-linux-arm "0.13.10" esbuild-linux-arm "0.13.12"
esbuild-linux-arm64 "0.13.10" esbuild-linux-arm64 "0.13.12"
esbuild-linux-mips64le "0.13.10" esbuild-linux-mips64le "0.13.12"
esbuild-linux-ppc64le "0.13.10" esbuild-linux-ppc64le "0.13.12"
esbuild-netbsd-64 "0.13.10" esbuild-netbsd-64 "0.13.12"
esbuild-openbsd-64 "0.13.10" esbuild-openbsd-64 "0.13.12"
esbuild-sunos-64 "0.13.10" esbuild-sunos-64 "0.13.12"
esbuild-windows-32 "0.13.10" esbuild-windows-32 "0.13.12"
esbuild-windows-64 "0.13.10" esbuild-windows-64 "0.13.12"
esbuild-windows-arm64 "0.13.10" esbuild-windows-arm64 "0.13.12"
esbuild@^0.11.20: esbuild@^0.11.20:
version "0.11.23" version "0.11.23"