@vercel/next 4.3.21 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/___get-nextjs-edge-function.js +1 -1
- package/dist/index.js +40 -17
- package/dist/server-launcher.js +45 -7
- package/package.json +3 -3
@@ -1 +1 @@
|
|
1
|
-
module.exports = "var
|
1
|
+
module.exports = "var b=Object.create;var p=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var h=e=>p(e,\"__esModule\",{value:!0});var _=(e,n)=>{h(e);for(var t in n)p(e,t,{get:n[t],enumerable:!0})},U=(e,n,t)=>{if(n&&typeof n==\"object\"||typeof n==\"function\")for(let i of T(n))!L.call(e,i)&&i!==\"default\"&&p(e,i,{get:()=>n[i],enumerable:!(t=w(n,i))||t.enumerable});return e},A=e=>U(h(p(e!=null?b(P(e)):{},\"default\",e&&e.__esModule&&\"default\"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);_(exports,{default:()=>N});var R=A(require(\"async_hooks\")),S=\"@next/request-context\",f=Symbol.for(S),C=Symbol.for(\"internal.storage\");function O(){let e=globalThis;if(!e[f]){let n=new R.AsyncLocalStorage,t={get:()=>n.getStore(),[C]:n};e[f]=t}return e[f]}var q=O();function m(e,n){return q[C].run(e,n)}function y(e){let n={};return e&&e.forEach((t,i)=>{n[i]=t,i.toLowerCase()===\"set-cookie\"&&(n[i]=M(t))}),n}function M(e){let n=[],t=0,i,a,g,o,r;function x(){for(;t<e.length&&/\\s/.test(e.charAt(t));)t+=1;return t<e.length}function s(){return a=e.charAt(t),a!==\"=\"&&a!==\";\"&&a!==\",\"}for(;t<e.length;){for(i=t,r=!1;x();)if(a=e.charAt(t),a===\",\"){for(g=t,t+=1,x(),o=t;t<e.length&&s();)t+=1;t<e.length&&e.charAt(t)===\"=\"?(r=!0,t=o,n.push(e.substring(i,g)),i=t):t=g+1}else t+=1;(!r||t>=e.length)&&n.push(e.substring(i,e.length))}return n}function N(e){let n=e.staticRoutes.map(i=>({regexp:new RegExp(i.namedRegex),page:i.page})),t=e.dynamicRoutes?.map(i=>({regexp:new RegExp(i.namedRegex),page:i.page}))||[];return async function(a,g){let o=new URL(a.url).pathname,r={};if(e.nextConfig?.basePath&&o.startsWith(e.nextConfig.basePath)&&(o=o.replace(e.nextConfig.basePath,\"\")||\"/\"),e.nextConfig?.i18n)for(let s of e.nextConfig.i18n.locales){let u=new RegExp(`^/${s}($|/)`,\"i\");if(o.match(u)){o=o.replace(u,\"/\")||\"/\";break}}for(let s of n)if(s.regexp.exec(o)){r.name=s.page;break}if(!r.name){let s=E(o);for(let u of t||[]){if(s&&!E(u.page))continue;let d=u.regexp.exec(o);if(d){r={name:u.page,params:d.groups};break}}}let x=await m({waitUntil:g.waitUntil},()=>_ENTRIES[`middleware_${e.name}`].default.call({},{request:{url:a.url,method:a.method,headers:y(a.headers),ip:c(a.headers,l.Ip),geo:{city:c(a.headers,l.City,!0),country:c(a.headers,l.Country,!0),latitude:c(a.headers,l.Latitude),longitude:c(a.headers,l.Longitude),region:c(a.headers,l.Region,!0)},nextConfig:e.nextConfig,page:r,body:a.body}}));return x.waitUntil&&g.waitUntil(x.waitUntil),x.response}}function c(e,n,t=!1){let i=e.get(n)||void 0;return t&&i?decodeURIComponent(i):i}function E(e){return e===\"/api\"||e.startsWith(\"/api/\")}var l;(function(o){o.City=\"x-vercel-ip-city\",o.Country=\"x-vercel-ip-country\",o.Ip=\"x-real-ip\",o.Latitude=\"x-vercel-ip-latitude\",o.Longitude=\"x-vercel-ip-longitude\",o.Region=\"x-vercel-ip-country-region\"})(l||(l={}));\n"
|
package/dist/index.js
CHANGED
@@ -1185,9 +1185,9 @@ var require_find_up = __commonJS({
|
|
1185
1185
|
}
|
1186
1186
|
});
|
1187
1187
|
|
1188
|
-
// ../../node_modules/.pnpm/universalify@2.0.
|
1188
|
+
// ../../node_modules/.pnpm/universalify@2.0.1/node_modules/universalify/index.js
|
1189
1189
|
var require_universalify = __commonJS({
|
1190
|
-
"../../node_modules/.pnpm/universalify@2.0.
|
1190
|
+
"../../node_modules/.pnpm/universalify@2.0.1/node_modules/universalify/index.js"(exports) {
|
1191
1191
|
"use strict";
|
1192
1192
|
exports.fromCallback = function(fn) {
|
1193
1193
|
return Object.defineProperty(function(...args) {
|
@@ -1195,11 +1195,8 @@ var require_universalify = __commonJS({
|
|
1195
1195
|
fn.apply(this, args);
|
1196
1196
|
else {
|
1197
1197
|
return new Promise((resolve, reject) => {
|
1198
|
-
|
1199
|
-
|
1200
|
-
...args,
|
1201
|
-
(err, res) => err != null ? reject(err) : resolve(res)
|
1202
|
-
);
|
1198
|
+
args.push((err, res) => err != null ? reject(err) : resolve(res));
|
1199
|
+
fn.apply(this, args);
|
1203
1200
|
});
|
1204
1201
|
}
|
1205
1202
|
}, "name", { value: fn.name });
|
@@ -1209,8 +1206,10 @@ var require_universalify = __commonJS({
|
|
1209
1206
|
const cb = args[args.length - 1];
|
1210
1207
|
if (typeof cb !== "function")
|
1211
1208
|
return fn.apply(this, args);
|
1212
|
-
else
|
1213
|
-
|
1209
|
+
else {
|
1210
|
+
args.pop();
|
1211
|
+
fn.apply(this, args).then((r) => cb(null, r), cb);
|
1212
|
+
}
|
1214
1213
|
}, "name", { value: fn.name });
|
1215
1214
|
};
|
1216
1215
|
}
|
@@ -10244,7 +10243,7 @@ var require_bytes = __commonJS({
|
|
10244
10243
|
var require_get_nextjs_edge_function = __commonJS({
|
10245
10244
|
"dist/___get-nextjs-edge-function.js"(exports, module2) {
|
10246
10245
|
"use strict";
|
10247
|
-
module2.exports = 'var
|
10246
|
+
module2.exports = 'var b=Object.create;var p=Object.defineProperty;var w=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var h=e=>p(e,"__esModule",{value:!0});var _=(e,n)=>{h(e);for(var t in n)p(e,t,{get:n[t],enumerable:!0})},U=(e,n,t)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of T(n))!L.call(e,i)&&i!=="default"&&p(e,i,{get:()=>n[i],enumerable:!(t=w(n,i))||t.enumerable});return e},A=e=>U(h(p(e!=null?b(P(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);_(exports,{default:()=>N});var R=A(require("async_hooks")),S="@next/request-context",f=Symbol.for(S),C=Symbol.for("internal.storage");function O(){let e=globalThis;if(!e[f]){let n=new R.AsyncLocalStorage,t={get:()=>n.getStore(),[C]:n};e[f]=t}return e[f]}var q=O();function m(e,n){return q[C].run(e,n)}function y(e){let n={};return e&&e.forEach((t,i)=>{n[i]=t,i.toLowerCase()==="set-cookie"&&(n[i]=M(t))}),n}function M(e){let n=[],t=0,i,a,g,o,r;function x(){for(;t<e.length&&/\\s/.test(e.charAt(t));)t+=1;return t<e.length}function s(){return a=e.charAt(t),a!=="="&&a!==";"&&a!==","}for(;t<e.length;){for(i=t,r=!1;x();)if(a=e.charAt(t),a===","){for(g=t,t+=1,x(),o=t;t<e.length&&s();)t+=1;t<e.length&&e.charAt(t)==="="?(r=!0,t=o,n.push(e.substring(i,g)),i=t):t=g+1}else t+=1;(!r||t>=e.length)&&n.push(e.substring(i,e.length))}return n}function N(e){let n=e.staticRoutes.map(i=>({regexp:new RegExp(i.namedRegex),page:i.page})),t=e.dynamicRoutes?.map(i=>({regexp:new RegExp(i.namedRegex),page:i.page}))||[];return async function(a,g){let o=new URL(a.url).pathname,r={};if(e.nextConfig?.basePath&&o.startsWith(e.nextConfig.basePath)&&(o=o.replace(e.nextConfig.basePath,"")||"/"),e.nextConfig?.i18n)for(let s of e.nextConfig.i18n.locales){let u=new RegExp(`^/${s}($|/)`,"i");if(o.match(u)){o=o.replace(u,"/")||"/";break}}for(let s of n)if(s.regexp.exec(o)){r.name=s.page;break}if(!r.name){let s=E(o);for(let u of t||[]){if(s&&!E(u.page))continue;let d=u.regexp.exec(o);if(d){r={name:u.page,params:d.groups};break}}}let x=await m({waitUntil:g.waitUntil},()=>_ENTRIES[`middleware_${e.name}`].default.call({},{request:{url:a.url,method:a.method,headers:y(a.headers),ip:c(a.headers,l.Ip),geo:{city:c(a.headers,l.City,!0),country:c(a.headers,l.Country,!0),latitude:c(a.headers,l.Latitude),longitude:c(a.headers,l.Longitude),region:c(a.headers,l.Region,!0)},nextConfig:e.nextConfig,page:r,body:a.body}}));return x.waitUntil&&g.waitUntil(x.waitUntil),x.response}}function c(e,n,t=!1){let i=e.get(n)||void 0;return t&&i?decodeURIComponent(i):i}function E(e){return e==="/api"||e.startsWith("/api/")}var l;(function(o){o.City="x-vercel-ip-city",o.Country="x-vercel-ip-country",o.Ip="x-real-ip",o.Latitude="x-vercel-ip-latitude",o.Longitude="x-vercel-ip-longitude",o.Region="x-vercel-ip-country-region"})(l||(l={}));\n';
|
10248
10247
|
}
|
10249
10248
|
});
|
10250
10249
|
|
@@ -10622,6 +10621,7 @@ function getImagesConfig(imagesManifest) {
|
|
10622
10621
|
return imagesManifest?.images?.loader === "default" && imagesManifest.images?.unoptimized !== true ? {
|
10623
10622
|
domains: imagesManifest.images.domains,
|
10624
10623
|
sizes: imagesManifest.images.sizes,
|
10624
|
+
qualities: imagesManifest.images.qualities,
|
10625
10625
|
remotePatterns: imagesManifest.images.remotePatterns,
|
10626
10626
|
localPatterns: imagesManifest.images.localPatterns,
|
10627
10627
|
minimumCacheTTL: imagesManifest.images.minimumCacheTTL,
|
@@ -11200,7 +11200,9 @@ async function getPrerenderManifest(entryPath, outputDirectory) {
|
|
11200
11200
|
let fallbackHeaders;
|
11201
11201
|
let renderingMode = "STATIC" /* STATIC */;
|
11202
11202
|
let fallbackRevalidate;
|
11203
|
+
let fallbackRootParams;
|
11203
11204
|
let allowHeader;
|
11205
|
+
let fallbackSourceRoute;
|
11204
11206
|
if (manifest.version === 4) {
|
11205
11207
|
experimentalBypassFor = manifest.dynamicRoutes[lazyRoute].experimentalBypassFor;
|
11206
11208
|
prefetchDataRoute = manifest.dynamicRoutes[lazyRoute].prefetchDataRoute;
|
@@ -11211,7 +11213,9 @@ async function getPrerenderManifest(entryPath, outputDirectory) {
|
|
11211
11213
|
// using the `experimentalPPR` flag.
|
11212
11214
|
(manifest.dynamicRoutes[lazyRoute].experimentalPPR ? "PARTIALLY_STATIC" /* PARTIALLY_STATIC */ : "STATIC" /* STATIC */);
|
11213
11215
|
fallbackRevalidate = manifest.dynamicRoutes[lazyRoute].fallbackRevalidate;
|
11216
|
+
fallbackRootParams = manifest.dynamicRoutes[lazyRoute].fallbackRootParams;
|
11214
11217
|
allowHeader = manifest.dynamicRoutes[lazyRoute].allowHeader;
|
11218
|
+
fallbackSourceRoute = manifest.dynamicRoutes[lazyRoute].fallbackSourceRoute;
|
11215
11219
|
}
|
11216
11220
|
if (typeof fallback === "string") {
|
11217
11221
|
ret.fallbackRoutes[lazyRoute] = {
|
@@ -11225,6 +11229,8 @@ async function getPrerenderManifest(entryPath, outputDirectory) {
|
|
11225
11229
|
prefetchDataRoute,
|
11226
11230
|
prefetchDataRouteRegex,
|
11227
11231
|
fallbackRevalidate,
|
11232
|
+
fallbackRootParams,
|
11233
|
+
fallbackSourceRoute,
|
11228
11234
|
renderingMode,
|
11229
11235
|
allowHeader
|
11230
11236
|
};
|
@@ -11737,13 +11743,21 @@ var onPrerenderRoute = (prerenderRouteArgs) => async (routeKey, {
|
|
11737
11743
|
if (appDir && renderingMode === "PARTIALLY_STATIC" /* PARTIALLY_STATIC */) {
|
11738
11744
|
isAppPathRoute = true;
|
11739
11745
|
if (isFallback) {
|
11740
|
-
const {
|
11746
|
+
const {
|
11747
|
+
fallbackStatus,
|
11748
|
+
fallbackHeaders,
|
11749
|
+
fallbackRevalidate,
|
11750
|
+
fallbackSourceRoute
|
11751
|
+
} = prerenderManifest.fallbackRoutes[routeKey];
|
11741
11752
|
if (fallbackStatus) {
|
11742
11753
|
initialStatus = fallbackStatus;
|
11743
11754
|
}
|
11744
11755
|
if (fallbackHeaders) {
|
11745
11756
|
initialHeaders = fallbackHeaders;
|
11746
11757
|
}
|
11758
|
+
if (fallbackSourceRoute) {
|
11759
|
+
srcRoute = fallbackSourceRoute;
|
11760
|
+
}
|
11747
11761
|
if (renderingMode === "PARTIALLY_STATIC" /* PARTIALLY_STATIC */ && typeof fallbackRevalidate !== "undefined") {
|
11748
11762
|
initialRevalidate = fallbackRevalidate;
|
11749
11763
|
}
|
@@ -11982,7 +11996,8 @@ var onPrerenderRoute = (prerenderRouteArgs) => async (routeKey, {
|
|
11982
11996
|
}
|
11983
11997
|
let htmlAllowQuery = allowQuery;
|
11984
11998
|
if (renderingMode === "PARTIALLY_STATIC" /* PARTIALLY_STATIC */ && isFallback) {
|
11985
|
-
|
11999
|
+
const { fallbackRootParams } = prerenderManifest.fallbackRoutes[routeKey];
|
12000
|
+
htmlAllowQuery = fallbackRootParams ?? [];
|
11986
12001
|
}
|
11987
12002
|
prerenders[outputPathPage] = new import_build_utils.Prerender({
|
11988
12003
|
expiration: initialRevalidate,
|
@@ -13520,7 +13535,7 @@ async function serverBuild({
|
|
13520
13535
|
"utf8"
|
13521
13536
|
);
|
13522
13537
|
let launcher = launcherData.replace(
|
13523
|
-
|
13538
|
+
/(?:var|const) conf = __NEXT_CONFIG__/,
|
13524
13539
|
`const conf = ${JSON.stringify({
|
13525
13540
|
...requiredServerFilesManifest.config,
|
13526
13541
|
distDir: import_path4.default.relative(
|
@@ -14677,7 +14692,7 @@ ${JSON.stringify(
|
|
14677
14692
|
...denormalizeNextDataRoute(),
|
14678
14693
|
...isNextDataServerResolving ? dataRoutes.filter((route) => {
|
14679
14694
|
const { pathname } = new URL(route.dest || "/", "http://n");
|
14680
|
-
return !isDynamicRoute(pathname.replace(
|
14695
|
+
return !isDynamicRoute(pathname.replace(/(\\)?\.json$/, ""));
|
14681
14696
|
}) : [],
|
14682
14697
|
// /_next/data routes for getServerProps/getStaticProps pages
|
14683
14698
|
...isNextDataServerResolving ? (
|
@@ -15011,7 +15026,8 @@ var build = async (buildOptions) => {
|
|
15011
15026
|
cliType,
|
15012
15027
|
lockfileVersion,
|
15013
15028
|
packageJsonPackageManager,
|
15014
|
-
turboSupportsCorepackHome
|
15029
|
+
turboSupportsCorepackHome,
|
15030
|
+
detectedLockfile
|
15015
15031
|
} = await (0, import_build_utils3.scanParentDirs)(entryPath, true);
|
15016
15032
|
spawnOpts.env = (0, import_build_utils3.getEnvForPackageManager)({
|
15017
15033
|
cliType,
|
@@ -15019,7 +15035,8 @@ var build = async (buildOptions) => {
|
|
15019
15035
|
packageJsonPackageManager,
|
15020
15036
|
nodeVersion,
|
15021
15037
|
env: spawnOpts.env || {},
|
15022
|
-
turboSupportsCorepackHome
|
15038
|
+
turboSupportsCorepackHome,
|
15039
|
+
detectedLockfile
|
15023
15040
|
});
|
15024
15041
|
const nowJsonPath = await (0, import_find_up.default)(["now.json", "vercel.json"], {
|
15025
15042
|
cwd: entryPath
|
@@ -15403,6 +15420,12 @@ More info: http://err.sh/vercel/vercel/next-functions-config-optimized-lambdas`
|
|
15403
15420
|
message: 'image-manifest.json "images.minimumCacheTTL" must be an integer. Contact support if this continues to happen.'
|
15404
15421
|
});
|
15405
15422
|
}
|
15423
|
+
if (images.qualities && !Array.isArray(images.qualities)) {
|
15424
|
+
throw new import_build_utils3.NowBuildError({
|
15425
|
+
code: "NEXT_IMAGES_QUALITIES",
|
15426
|
+
message: 'image-manifest.json "images.qualities" must be an array. Contact support if this continues to happen.'
|
15427
|
+
});
|
15428
|
+
}
|
15406
15429
|
if (typeof images.dangerouslyAllowSVG !== "undefined" && typeof images.dangerouslyAllowSVG !== "boolean") {
|
15407
15430
|
throw new import_build_utils3.NowBuildError({
|
15408
15431
|
code: "NEXT_IMAGES_DANGEROUSLYALLOWSVG",
|
@@ -15777,7 +15800,7 @@ More info: http://err.sh/vercel/vercel/next-functions-config-optimized-lambdas`
|
|
15777
15800
|
);
|
15778
15801
|
}
|
15779
15802
|
if (dataRoute.page === "/") {
|
15780
|
-
route.src = route.src.replace(/\/index
|
15803
|
+
route.src = route.src.replace(/\/index(\\)?\.json/, ".json");
|
15781
15804
|
}
|
15782
15805
|
if (ssgDataRoute) {
|
15783
15806
|
route.dest = route.dest.replace(
|
package/dist/server-launcher.js
CHANGED
@@ -1,6 +1,38 @@
|
|
1
1
|
"use strict";
|
2
|
+
|
3
|
+
// src/vercel-request-context.ts
|
4
|
+
var SYMBOL_FOR_REQ_CONTEXT = Symbol.for("@vercel/request-context");
|
5
|
+
function getContext() {
|
6
|
+
const fromSymbol = globalThis;
|
7
|
+
return fromSymbol[SYMBOL_FOR_REQ_CONTEXT]?.get?.() ?? {};
|
8
|
+
}
|
9
|
+
|
10
|
+
// src/next-request-context.ts
|
11
|
+
var import_async_hooks = require("async_hooks");
|
12
|
+
var name = "@next/request-context";
|
13
|
+
var NEXT_REQUEST_CONTEXT_SYMBOL = Symbol.for(name);
|
14
|
+
var INTERNAL_STORAGE_FIELD_SYMBOL = Symbol.for("internal.storage");
|
15
|
+
function getOrCreateContextSingleton() {
|
16
|
+
const _globalThis = globalThis;
|
17
|
+
if (!_globalThis[NEXT_REQUEST_CONTEXT_SYMBOL]) {
|
18
|
+
const storage = new import_async_hooks.AsyncLocalStorage();
|
19
|
+
const Context = {
|
20
|
+
get: () => storage.getStore(),
|
21
|
+
[INTERNAL_STORAGE_FIELD_SYMBOL]: storage
|
22
|
+
};
|
23
|
+
_globalThis[NEXT_REQUEST_CONTEXT_SYMBOL] = Context;
|
24
|
+
}
|
25
|
+
return _globalThis[NEXT_REQUEST_CONTEXT_SYMBOL];
|
26
|
+
}
|
27
|
+
var NextRequestContext = getOrCreateContextSingleton();
|
28
|
+
function withNextRequestContext(value, callback) {
|
29
|
+
const storage = NextRequestContext[INTERNAL_STORAGE_FIELD_SYMBOL];
|
30
|
+
return storage.run(value, callback);
|
31
|
+
}
|
32
|
+
|
33
|
+
// src/server-launcher.ts
|
2
34
|
process.chdir(__dirname);
|
3
|
-
|
35
|
+
var region = process.env.VERCEL_REGION || process.env.NOW_REGION;
|
4
36
|
if (!process.env.NODE_ENV) {
|
5
37
|
process.env.NODE_ENV = region === "dev1" ? "development" : "production";
|
6
38
|
}
|
@@ -11,19 +43,25 @@ if (process.env.NODE_ENV !== "production" && region !== "dev1") {
|
|
11
43
|
process.env.NODE_ENV = "production";
|
12
44
|
}
|
13
45
|
// @preserve pre-next-server-target
|
14
|
-
|
46
|
+
var NextServer = require("__NEXT_SERVER_PATH__").default;
|
15
47
|
// @preserve next-server-preload-target
|
16
|
-
|
17
|
-
|
48
|
+
var conf = __NEXT_CONFIG__;
|
49
|
+
var nextServer = new NextServer({
|
18
50
|
conf,
|
19
51
|
dir: ".",
|
20
52
|
minimalMode: true,
|
21
53
|
customServer: false
|
22
54
|
});
|
23
|
-
|
55
|
+
var serve = (handler) => async (req, res) => {
|
24
56
|
try {
|
25
|
-
|
26
|
-
await
|
57
|
+
const vercelContext = getContext();
|
58
|
+
await withNextRequestContext(
|
59
|
+
{ waitUntil: vercelContext.waitUntil },
|
60
|
+
() => {
|
61
|
+
// @preserve entryDirectory handler
|
62
|
+
return handler(req, res);
|
63
|
+
}
|
64
|
+
);
|
27
65
|
} catch (err) {
|
28
66
|
console.error(err);
|
29
67
|
process.exit(1);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vercel/next",
|
3
|
-
"version": "4.
|
3
|
+
"version": "4.4.1",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"main": "./dist/index",
|
6
6
|
"homepage": "https://vercel.com/docs/runtimes#official-runtimes/next-js",
|
@@ -30,8 +30,8 @@
|
|
30
30
|
"@types/semver": "6.0.0",
|
31
31
|
"@types/text-table": "0.2.1",
|
32
32
|
"@types/webpack-sources": "3.2.0",
|
33
|
-
"@vercel/build-utils": "
|
34
|
-
"@vercel/routing-utils": "
|
33
|
+
"@vercel/build-utils": "9.0.0",
|
34
|
+
"@vercel/routing-utils": "5.0.0",
|
35
35
|
"async-sema": "3.0.1",
|
36
36
|
"buffer-crc32": "0.2.13",
|
37
37
|
"bytes": "3.1.2",
|