Compare commits

...

6 Commits

Author SHA1 Message Date
Steven
9a3739bebd Publish Stable
- vercel@25.2.2
 - @vercel/next@3.1.1
 - @vercel/node@2.3.2
 - @vercel/redwood@1.0.3
 - @vercel/remix@1.0.3
2022-06-29 09:27:34 -04:00
Gal Schlezinger
8c62de16ce Revert "[next] Update max size warning to handle initial layer better" (#8047)
Revert "[next] Update max size warning to handle initial layer better (#8013)"

This reverts commit f20703b15d.
2022-06-29 09:26:29 -04:00
Steven
e9333988d7 [next][node][redwood][remix] Bump @vercel/nft to 0.20.1 (#8042)
- https://github.com/vercel/nft/releases/tag/0.20.0
- https://github.com/vercel/nft/releases/tag/0.20.1
2022-06-29 00:21:14 +00:00
Nathan Rajlich
fb001ce7eb [tests] Remove TODO comments from Middleware matchers vc dev test (#8037) 2022-06-28 18:26:56 +00:00
Sean Massa
b399fe7037 Publish Stable
- vercel@25.2.1
 - @vercel/node@2.3.1
2022-06-28 12:04:57 -05:00
Sean Massa
88385b3c84 [cli][node] switch to esbuild for compiling edge functions (#8032) 2022-06-28 11:27:56 -05:00
21 changed files with 99 additions and 250 deletions

View File

@@ -1,6 +1,6 @@
{
"name": "vercel",
"version": "25.2.0",
"version": "25.2.2",
"preferGlobal": true,
"license": "Apache-2.0",
"description": "The command-line interface for Vercel",
@@ -44,11 +44,11 @@
"dependencies": {
"@vercel/build-utils": "4.2.0",
"@vercel/go": "2.0.2",
"@vercel/next": "3.1.0",
"@vercel/node": "2.3.0",
"@vercel/next": "3.1.1",
"@vercel/node": "2.3.2",
"@vercel/python": "3.0.2",
"@vercel/redwood": "1.0.2",
"@vercel/remix": "1.0.2",
"@vercel/redwood": "1.0.3",
"@vercel/remix": "1.0.3",
"@vercel/ruby": "1.3.10",
"@vercel/static-build": "1.0.2",
"update-notifier": "5.1.0"

View File

@@ -2,7 +2,7 @@ export const config = {
runtime: 'experimental-edge'
}
export default async function edge(request: Request, event: Event) {
export default async function edge(request, event) {
return new Response('some response body');
// intentional missing closing bracket to produce syntax error

View File

@@ -161,14 +161,13 @@ test('[vercel dev] should handle startup errors thrown in edge functions', async
});
validateResponseHeaders(res);
const { stdout, stderr } = await dev.kill('SIGTERM');
const { stderr } = await dev.kill('SIGTERM');
expect(await res.text()).toMatch(
/<strong>500<\/strong>: INTERNAL_SERVER_ERROR/g
);
expect(stdout).toMatch(
/Failed to instantiate edge runtime: intentional startup error/g
);
expect(stderr).toMatch(/Failed to instantiate edge runtime./g);
expect(stderr).toMatch(/intentional startup error/g);
expect(stderr).toMatch(
/Failed to complete request to \/api\/edge-error-startup: Error: socket hang up/g
);
@@ -193,14 +192,13 @@ test('[vercel dev] should handle syntax errors thrown in edge functions', async
});
validateResponseHeaders(res);
const { stdout, stderr } = await dev.kill('SIGTERM');
const { stderr } = await dev.kill('SIGTERM');
expect(await res.text()).toMatch(
/<strong>500<\/strong>: INTERNAL_SERVER_ERROR/g
);
expect(stdout).toMatch(
/Failed to instantiate edge runtime: Module parse failed: Unexpected token/g
);
expect(stderr).toMatch(/Failed to instantiate edge runtime./g);
expect(stderr).toMatch(/Unexpected end of file/g);
expect(stderr).toMatch(
/Failed to complete request to \/api\/edge-error-syntax: Error: socket hang up/g
);
@@ -228,13 +226,13 @@ test('[vercel dev] should handle import errors thrown in edge functions', async
);
validateResponseHeaders(res);
const { stdout, stderr } = await dev.kill('SIGTERM');
const { stderr } = await dev.kill('SIGTERM');
expect(await res.text()).toMatch(
/<strong>500<\/strong>: INTERNAL_SERVER_ERROR/g
);
expect(stdout).toMatch(
/Failed to instantiate edge runtime: Code generation from strings disallowed for this context/g
expect(stderr).toMatch(
/Could not resolve "unknown-module-893427589372458934795843"/g
);
expect(stderr).toMatch(
/Failed to complete request to \/api\/edge-error-unknown-import: Error: socket hang up/g
@@ -244,7 +242,7 @@ test('[vercel dev] should handle import errors thrown in edge functions', async
}
});
test('[vercel dev] should handle import errors thrown in edge functions', async () => {
test('[vercel dev] should handle missing handler errors thrown in edge functions', async () => {
const dir = fixture('edge-function-error');
const { dev, port, readyResolver } = await testFixture(dir);

View File

@@ -508,18 +508,10 @@ test(
test(
'[vercel dev] Middleware with `matchers` config',
testFixtureStdio(
'middleware-matchers',
async (testPath: any) => {
// TODO: remove once latest `@vercel/node` is shipped to stable with `matchers` support (fails because `directoryListing`)
//await testPath(404, '/');
await testPath(404, '/another');
await testPath(200, '/about/page', 'middleware response');
await testPath(200, '/dashboard/home', 'middleware response');
},
{
// TODO: remove once latest `@vercel/node` is shipped to stable with `matchers` support
skipDeploy: true,
}
)
testFixtureStdio('middleware-matchers', async (testPath: any) => {
await testPath(404, '/');
await testPath(404, '/another');
await testPath(200, '/about/page', 'middleware response');
await testPath(200, '/dashboard/home', 'middleware response');
})
);

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/next",
"version": "3.1.0",
"version": "3.1.1",
"license": "MIT",
"main": "./dist/index",
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js",
@@ -46,7 +46,7 @@
"@types/text-table": "0.2.1",
"@types/webpack-sources": "3.2.0",
"@vercel/build-utils": "4.2.0",
"@vercel/nft": "0.19.1",
"@vercel/nft": "0.20.1",
"@vercel/routing-utils": "1.13.5",
"async-sema": "3.0.1",
"buffer-crc32": "0.2.13",

View File

@@ -1528,7 +1528,7 @@ export const build: BuildV2 = async ({
pageTraces,
compressedPages,
tracedPseudoLayer?.pseudoLayer || {},
{ pseudoLayer: {}, pseudoLayerBytes: 0 },
0,
0,
lambdaCompressedByteLimit,
// internal pages are already referenced in traces for serverless
@@ -1544,7 +1544,7 @@ export const build: BuildV2 = async ({
pageTraces,
compressedPages,
tracedPseudoLayer?.pseudoLayer || {},
{ pseudoLayer: {}, pseudoLayerBytes: 0 },
0,
0,
lambdaCompressedByteLimit,
[]

View File

@@ -425,8 +425,11 @@ export async function serverBuild({
const uncompressedInitialSize = Object.keys(
initialPseudoLayer.pseudoLayer
).reduce((prev, cur) => {
const file = initialPseudoLayer.pseudoLayer[cur] as PseudoFile;
return prev + file.uncompressedSize || 0;
return (
prev +
(initialPseudoLayer.pseudoLayer[cur] as PseudoFile)
.uncompressedSize || 0
);
}, 0);
debug(
@@ -608,6 +611,13 @@ export async function serverBuild({
}, {})
);
const initialPseudoLayerSize = Object.keys(
initialPseudoLayer.pseudoLayer
).reduce((prev, cur) => {
const file = initialPseudoLayer.pseudoLayer[cur] as PseudoFile;
return prev + file.uncompressedSize || 0;
}, 0);
const pageExtensions = requiredServerFilesManifest.config?.pageExtensions;
const pageLambdaGroups = await getPageLambdaGroups(
@@ -618,9 +628,9 @@ export async function serverBuild({
pageTraces,
compressedPages,
tracedPseudoLayer.pseudoLayer,
initialPseudoLayer,
initialPseudoLayer.pseudoLayerBytes,
initialPseudoLayerSize,
lambdaCompressedByteLimit,
uncompressedInitialSize,
internalPages,
pageExtensions
);
@@ -633,8 +643,8 @@ export async function serverBuild({
pageTraces,
compressedPages,
tracedPseudoLayer.pseudoLayer,
initialPseudoLayer,
uncompressedInitialSize,
initialPseudoLayer.pseudoLayerBytes,
initialPseudoLayerSize,
lambdaCompressedByteLimit,
internalPages
);
@@ -672,6 +682,7 @@ export async function serverBuild({
const lambda = await createLambdaFromPseudoLayers({
files: launcherFiles,
layers: [
initialPseudoLayer.pseudoLayer,
group.pseudoLayer,
[...group.pages, ...internalPages].reduce((prev, page) => {
const pageFileName = path.normalize(

View File

@@ -1289,8 +1289,8 @@ export async function getPageLambdaGroups(
[page: string]: PseudoFile;
},
tracedPseudoLayer: PseudoLayer,
initialPseudoLayer: PseudoLayerResult,
initialPseudoLayerUncompressed: number,
initialPseudoLayerSize: number,
initialPseudoLayerUncompressedSize: number,
lambdaCompressedByteLimit: number,
internalPages: string[],
pageExtensions?: string[]
@@ -1341,10 +1341,10 @@ export async function getPageLambdaGroups(
}
const underUncompressedLimit =
newTracedFilesUncompressedSize <
newTracedFilesUncompressedSize + initialPseudoLayerUncompressedSize <
MAX_UNCOMPRESSED_LAMBDA_SIZE - LAMBDA_RESERVED_UNCOMPRESSED_SIZE;
const underCompressedLimit =
newTracedFilesSize <
newTracedFilesSize + initialPseudoLayerSize <
lambdaCompressedByteLimit - LAMBDA_RESERVED_COMPRESSED_SIZE;
return underUncompressedLimit && underCompressedLimit;
@@ -1359,9 +1359,9 @@ export async function getPageLambdaGroups(
pages: [page],
...opts,
isPrerenders: isPrerenderRoute,
pseudoLayerBytes: initialPseudoLayer.pseudoLayerBytes,
pseudoLayerUncompressedBytes: initialPseudoLayerUncompressed,
pseudoLayer: Object.assign({}, initialPseudoLayer.pseudoLayer),
pseudoLayerBytes: 0,
pseudoLayerUncompressedBytes: 0,
pseudoLayer: {},
};
groups.push(newGroup);
matchingGroup = newGroup;

View File

@@ -715,7 +715,7 @@ it('Should provide lambda info when limit is hit (server build)', async () => {
console.log = origLog;
expect(logs).toContain(
'Max serverless function size was exceeded for 2 functions'
'Max serverless function size was exceeded for 1 function'
);
expect(logs).toContain(
'Max serverless function size of 50 MB compressed or 250 MB uncompressed reached'
@@ -802,36 +802,3 @@ it('Should provide lambda info when limit is hit for internal pages (server buil
expect(logs).toMatch(/public\/big-image-1\.jpg/);
expect(logs).toMatch(/public\/big-image-2\.jpg/);
});
it('Should provide lambda info when limit is hit (uncompressed)', async () => {
let logs = '';
const origLog = console.log;
console.log = function (...args) {
logs += args.join(' ');
origLog(...args);
};
try {
await runBuildLambda(
path.join(__dirname, 'test-limit-exceeded-404-static-files')
);
} catch (err) {
console.error(err);
}
console.log = origLog;
expect(logs).toContain(
'Max serverless function size was exceeded for 1 function'
);
expect(logs).toContain(
'Max serverless function size of 50 MB compressed or 250 MB uncompressed reached'
);
expect(logs).toContain(`Serverless Function's page: api/hello.js`);
expect(logs).toMatch(
/Large Dependencies.*?Uncompressed size.*?Compressed size/
);
expect(logs).toMatch(/data\.txt/);
expect(logs).toMatch(/\.next\/server\/pages/);
});

View File

@@ -1,33 +0,0 @@
const fs = require('fs');
const assert = require('assert');
const locales = ['en'];
let charStart = 97;
let charEnd = 105;
// generate 81 random locales under en
for (let i = charStart; i <= charEnd; i++) {
const firstChar = String.fromCharCode(i);
for (let j = charStart; j <= charEnd; j++) {
const secondChar = String.fromCharCode(j);
locales.push(`en-${firstChar}${secondChar}`);
}
}
assert(
locales.length === 82,
`unexpected locale count, expected 82, received ${locales.length}`
);
// generate 100MB text file which will be traced in `/api/hello`
// which when combined with the 404 HTML files will push us over the 250MB
// uncompressed limit
fs.writeFileSync('data.txt', new Array(100 * 1000 * 1000).fill('a').join());
module.exports = {
i18n: {
locales,
defaultLocale: 'en',
},
};

View File

@@ -1,12 +0,0 @@
{
"name": "test-limit",
"version": "1.0.0",
"scripts": {
"build": "next build"
},
"dependencies": {
"next": "canary",
"react": "17.0.2",
"react-dom": "17.0.2"
}
}

View File

@@ -1,19 +0,0 @@
export default function Page(props) {
return (
<>
<p>404 | Page Not Found</p>
<p>{JSON.stringify(props)}</p>
</>
);
}
export function getStaticProps({ locale }) {
return {
props: {
locale,
// 1MB string which is duplicated in HTML totalling 2MB
// this will be generated for each locale as well
largeData: new Array(1 * 1000 * 1000).fill('a').join(''),
},
};
}

View File

@@ -1,16 +0,0 @@
/* eslint-disable */
import React from 'react';
if (typeof window === 'undefined') {
try {
const fs = require('fs');
const path = require('path');
fs.readdirSync(path.join(process.cwd(), 'public'));
fs.readdirSync(path.join(process.cwd(), 'node_modules/chrome-aws-lambda'));
fs.readdirSync(path.join(process.cwd(), 'node_modules/firebase'));
} catch (_) {}
}
export default function MyApp({ Component, pageProps }) {
return React.createElement(Component, pageProps);
}

View File

@@ -1,12 +0,0 @@
import fs from 'fs';
import path from 'path';
try {
fs.readFileSync(path.join(process.cwd(), 'data.txt'));
} catch (_) {
/**/
}
export default function handler(req, res) {
res.end('hello');
}

View File

@@ -1,3 +0,0 @@
export default function Home() {
return 'index page';
}

View File

@@ -1,9 +0,0 @@
{
"version": 2,
"builds": [
{
"src": "package.json",
"use": "@vercel/next"
}
]
}

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/node",
"version": "2.3.0",
"version": "2.3.2",
"license": "MIT",
"main": "./dist/index",
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/node-js",
@@ -32,10 +32,10 @@
"dependencies": {
"@types/node": "*",
"@vercel/build-utils": "4.2.0",
"@vercel/ncc": "0.24.0",
"@vercel/node-bridge": "3.0.0",
"@vercel/static-config": "2.0.1",
"edge-runtime": "1.0.1",
"esbuild": "0.14.47",
"exit-hook": "2.2.1",
"node-fetch": "2.6.1",
"ts-node": "8.9.1",
@@ -52,7 +52,8 @@
"@types/jest": "27.4.1",
"@types/node-fetch": "^2.6.1",
"@types/test-listen": "1.1.0",
"@vercel/nft": "0.19.1",
"@vercel/ncc": "0.24.0",
"@vercel/nft": "0.20.1",
"content-type": "1.0.4",
"cookie": "0.4.0",
"etag": "1.8.1",

View File

@@ -79,8 +79,9 @@ import exitHook from 'exit-hook';
import { EdgeRuntime, Primitives, runServer } from 'edge-runtime';
import { getConfig } from '@vercel/static-config';
import { Project } from 'ts-morph';
import ncc from '@vercel/ncc';
import esbuild from 'esbuild';
import fetch from 'node-fetch';
import { TextDecoder } from 'util';
function logError(error: Error) {
console.error(error.message);
@@ -149,10 +150,22 @@ async function serializeRequest(message: IncomingMessage) {
async function compileUserCode(entrypoint: string) {
try {
const buildResult = await ncc(entrypoint, {
target: 'es2022',
const result = await esbuild.build({
platform: 'node',
target: 'node14',
sourcemap: 'inline',
bundle: true,
entryPoints: [entrypoint],
write: false, // operate in memory
format: 'cjs',
});
const userCode = buildResult.code;
const compiledFile = result.outputFiles?.[0];
if (!compiledFile) {
throw new Error(`Compilation of ${entrypoint} produced no output files.`);
}
const userCode = new TextDecoder().decode(compiledFile.contents);
return `
${userCode};
@@ -200,7 +213,8 @@ async function compileUserCode(entrypoint: string) {
} catch (error) {
// We can't easily show a meaningful stack trace from ncc -> edge-runtime.
// So, stick with just the message for now.
console.log(`Failed to instantiate edge runtime: ${error.message}`);
console.error(`Failed to instantiate edge runtime.`);
logError(error);
return undefined;
}
}
@@ -231,7 +245,8 @@ async function createEdgeRuntime(userCode: string | undefined) {
} catch (error) {
// We can't easily show a meaningful stack trace from ncc -> edge-runtime.
// So, stick with just the message for now.
console.log(`Failed to instantiate edge runtime: ${error.message}`);
console.error('Failed to instantiate edge runtime.');
logError(error);
return undefined;
}
}

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/redwood",
"version": "1.0.2",
"version": "1.0.3",
"main": "./dist/index.js",
"license": "MIT",
"homepage": "https://vercel.com/docs",
@@ -20,7 +20,7 @@
"prepublishOnly": "node build.js"
},
"dependencies": {
"@vercel/nft": "0.19.1",
"@vercel/nft": "0.20.1",
"@vercel/routing-utils": "1.13.5",
"semver": "6.1.1"
},

View File

@@ -1,6 +1,6 @@
{
"name": "@vercel/remix",
"version": "1.0.2",
"version": "1.0.3",
"license": "MIT",
"main": "./dist/index.js",
"homepage": "https://vercel.com/docs",
@@ -21,7 +21,7 @@
"default-server.js"
],
"dependencies": {
"@vercel/nft": "0.19.1"
"@vercel/nft": "0.20.1"
},
"devDependencies": {
"@types/jest": "27.5.1",

View File

@@ -3042,10 +3042,10 @@
resolved "https://registry.yarnpkg.com/@vercel/ncc/-/ncc-0.24.0.tgz#a2e8783a185caa99b5d8961a57dfc9665de16296"
integrity sha512-crqItMcIwCkvdXY/V3/TzrHJQx6nbIaRqE1cOopJhgGX6izvNov40SmD//nS5flfEvdK54YGjwVVq+zG6crjOg==
"@vercel/nft@0.19.1":
version "0.19.1"
resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.19.1.tgz#dcd3c20d7ef14d2050244e7d5edcfecc7303dd46"
integrity sha512-klR5oN7S3WJsZz0r6Xsq7o8YlFEyU3/00VmlpZzIPVFzKfbcEjXo/sVR5lQBUqNKuOzhcbxaFtzW9aOyHjmPYA==
"@vercel/nft@0.20.1":
version "0.20.1"
resolved "https://registry.yarnpkg.com/@vercel/nft/-/nft-0.20.1.tgz#41e559af189405c526ac1f6709773bc99995b95b"
integrity sha512-hSLcr64KHOkcNiTAlv154K4p4faEFBwYIi2eIgu1QCDhB1qyQYvFuEhtw3eaapNjA4/7x/2jcclfCAjILua/ag==
dependencies:
"@mapbox/node-pre-gyp" "^1.0.5"
acorn "^8.6.0"
@@ -3055,7 +3055,6 @@
graceful-fs "^4.2.9"
micromatch "^4.0.2"
node-gyp-build "^4.2.2"
node-pre-gyp "^0.13.0"
resolve-from "^5.0.0"
rollup-pluginutils "^2.8.2"
@@ -4986,7 +4985,7 @@ debug@4, debug@4.1.1, debug@^4.1.0, debug@^4.1.1:
dependencies:
ms "^2.1.1"
debug@^3.0.0, debug@^3.1.0, debug@^3.2.6:
debug@^3.0.0, debug@^3.1.0:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
@@ -5175,7 +5174,7 @@ detect-indent@^5.0.0:
resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d"
integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50=
detect-libc@^1.0.2, detect-libc@^1.0.3:
detect-libc@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
@@ -5607,12 +5606,7 @@ esbuild@0.12.22:
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.12.22.tgz#6031a1257b8d0307d306bed673b79c3668607f51"
integrity sha512-yWCr9RoFehpqoe/+MwZXJpYOEIt7KOEvNnjIeMZpMSyQt+KCBASM3y7yViiN5dJRphf1wGdUz1+M4rTtWd/ulA==
esbuild@^0.11.20:
version "0.11.23"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.23.tgz#c42534f632e165120671d64db67883634333b4b8"
integrity sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==
esbuild@^0.14.25:
esbuild@0.14.47, esbuild@^0.14.25:
version "0.14.47"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.47.tgz#0d6415f6bd8eb9e73a58f7f9ae04c5276cda0e4d"
integrity sha512-wI4ZiIfFxpkuxB8ju4MHrGwGLyp1+awEHAHVpx6w7a+1pmYIq8T9FGEVVwFo0iFierDoMj++Xq69GXWYn2EiwA==
@@ -5638,6 +5632,11 @@ esbuild@^0.14.25:
esbuild-windows-64 "0.14.47"
esbuild-windows-arm64 "0.14.47"
esbuild@^0.11.20:
version "0.11.23"
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.11.23.tgz#c42534f632e165120671d64db67883634333b4b8"
integrity sha512-iaiZZ9vUF5wJV8ob1tl+5aJTrwDczlvGP0JoMmnpC2B0ppiMCu8n8gmy5ZTGl5bcG081XBVn+U+jP+mPFm5T5Q==
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -7077,7 +7076,7 @@ husky@7.0.4:
resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535"
integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ==
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13:
iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@~0.4.13:
version "0.4.24"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -9328,15 +9327,6 @@ ndjson@2.0.0:
split2 "^3.0.0"
through2 "^4.0.0"
needle@^2.2.1:
version "2.5.2"
resolved "https://registry.yarnpkg.com/needle/-/needle-2.5.2.tgz#cf1a8fce382b5a280108bba90a14993c00e4010a"
integrity sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==
dependencies:
debug "^3.2.6"
iconv-lite "^0.4.4"
sax "^1.2.4"
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
@@ -9403,22 +9393,6 @@ node-int64@^0.4.0:
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=
node-pre-gyp@^0.13.0:
version "0.13.0"
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz#df9ab7b68dd6498137717838e4f92a33fc9daa42"
integrity sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ==
dependencies:
detect-libc "^1.0.2"
mkdirp "^0.5.1"
needle "^2.2.1"
nopt "^4.0.1"
npm-packlist "^1.1.6"
npmlog "^4.0.2"
rc "^1.2.7"
rimraf "^2.6.1"
semver "^5.3.0"
tar "^4"
node-releases@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96"
@@ -9510,7 +9484,7 @@ npm-package-arg@6.1.0:
semver "^5.6.0"
validate-npm-package-name "^3.0.0"
npm-packlist@^1.1.6, npm-packlist@^1.4.4:
npm-packlist@^1.4.4:
version "1.4.8"
resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e"
integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==
@@ -9549,7 +9523,7 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
npmlog@^4.0.2, npmlog@^4.1.2:
npmlog@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==
@@ -10532,7 +10506,7 @@ rc9@1.2.0:
destr "^1.0.0"
flat "^5.0.0"
rc@^1.2.7, rc@^1.2.8:
rc@^1.2.8:
version "1.2.8"
resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==
@@ -10972,7 +10946,7 @@ rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
dependencies:
glob "^7.1.3"
rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3:
rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3:
version "2.7.1"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
@@ -11039,11 +11013,6 @@ safe-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
sax@^1.2.4:
version "1.2.4"
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
semver-compare@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc"
@@ -11063,7 +11032,7 @@ semver-diff@^3.1.1:
dependencies:
semver "^6.3.0"
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
"semver@2 || 3 || 4 || 5", "semver@2.x || 3.x || 4 || 5", semver@^5.0.3, semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0, semver@^5.7.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
@@ -11864,7 +11833,7 @@ tar@4.4.8:
safe-buffer "^5.1.2"
yallist "^3.0.2"
tar@^4, tar@^4.4.10, tar@^4.4.12, tar@^4.4.8:
tar@^4.4.10, tar@^4.4.12, tar@^4.4.8:
version "4.4.13"
resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525"
integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==