netlify-cli 17.26.2 → 17.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,9 +10,10 @@ interface InspectSettings {
10
10
  address?: string;
11
11
  }
12
12
  export declare const generateInspectSettings: (edgeInspect: boolean | string, edgeInspectBrk: boolean | string) => InspectSettings;
13
- export declare const startProxyServer: ({ accountId, addonsUrls, blobsContext, command, config, configPath, debug, disableEdgeFunctions, env, functionsRegistry, geoCountry, geolocationMode, getUpdatedConfig, inspectSettings, offline, projectDir, repositoryRoot, settings, site, siteInfo, state, }: {
13
+ export declare const startProxyServer: ({ accountId, addonsUrls, api, blobsContext, command, config, configPath, debug, disableEdgeFunctions, env, functionsRegistry, geoCountry, geolocationMode, getUpdatedConfig, inspectSettings, offline, projectDir, repositoryRoot, settings, site, siteInfo, state, }: {
14
14
  accountId: string;
15
15
  addonsUrls: $TSFixMe;
16
+ api?: (import("netlify").NetlifyAPI & Record<string, (...args: any) => Promise<any>>) | undefined;
16
17
  blobsContext?: BlobsContextWithEdgeAccess | undefined;
17
18
  command: BaseCommand;
18
19
  config: NetlifyOptions['config'];
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../src/utils/proxy-server.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAIhE,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,UAAU,eAAe;IAEvB,OAAO,EAAE,OAAO,CAAA;IAEhB,KAAK,EAAE,OAAO,CAAA;IAEd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,uBAAuB,gBACrB,OAAO,GAAG,MAAM,kBACb,OAAO,GAAG,MAAM,KAC/B,eAiBF,CAAA;AAED,eAAO,MAAM,gBAAgB;eAuBhB,MAAM;gBACL,QAAQ;;aAEX,WAAW;YACZ,cAAc,CAAC,QAAQ,CAAC;;WAGzB,OAAO;0BACQ,OAAO;SACxB,cAAc,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;qBACzB,eAAe;sBACd,MAAM,QAAQ,MAAM,CAAC;qBACtB,MAAM;gBACX,MAAM;cACR,cAAc;aACf,OAAO;UACV,QAAQ;cACJ,QAAQ;gBACN,MAAM;;WAEX,WAAW;;qBA+BnB,CAAA"}
1
+ {"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../src/utils/proxy-server.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,6BAA6B,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAIhE,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,UAAU,eAAe;IAEvB,OAAO,EAAE,OAAO,CAAA;IAEhB,KAAK,EAAE,OAAO,CAAA;IAEd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,uBAAuB,gBACrB,OAAO,GAAG,MAAM,kBACb,OAAO,GAAG,MAAM,KAC/B,eAiBF,CAAA;AAED,eAAO,MAAM,gBAAgB;eAwBhB,MAAM;gBACL,QAAQ;;;aAGX,WAAW;YACZ,cAAc,CAAC,QAAQ,CAAC;;WAGzB,OAAO;0BACQ,OAAO;SACxB,cAAc,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;qBACzB,eAAe;sBACd,MAAM,QAAQ,MAAM,CAAC;qBACtB,MAAM;gBACX,MAAM;cACR,cAAc;aACf,OAAO;UACV,QAAQ;cACJ,QAAQ;gBACN,MAAM;;WAEX,WAAW;;qBAgCnB,CAAA"}
@@ -17,7 +17,7 @@ export const generateInspectSettings = (edgeInspect, edgeInspectBrk) => {
17
17
  address: getAddress(),
18
18
  };
19
19
  };
20
- export const startProxyServer = async ({ accountId, addonsUrls, blobsContext, command, config, configPath, debug, disableEdgeFunctions, env, functionsRegistry, geoCountry, geolocationMode, getUpdatedConfig, inspectSettings, offline, projectDir, repositoryRoot, settings, site, siteInfo, state, }) => {
20
+ export const startProxyServer = async ({ accountId, addonsUrls, api, blobsContext, command, config, configPath, debug, disableEdgeFunctions, env, functionsRegistry, geoCountry, geolocationMode, getUpdatedConfig, inspectSettings, offline, projectDir, repositoryRoot, settings, site, siteInfo, state, }) => {
21
21
  const url = await startProxy({
22
22
  addonsUrls,
23
23
  blobsContext,
@@ -39,6 +39,7 @@ export const startProxyServer = async ({ accountId, addonsUrls, blobsContext, co
39
39
  siteInfo,
40
40
  accountId,
41
41
  repositoryRoot,
42
+ api,
42
43
  });
43
44
  if (!url) {
44
45
  log(NETLIFYDEVERR, `Unable to start proxy server on port '${settings.port}'`);
@@ -2,7 +2,7 @@ import { BaseCommand } from '../commands/index.js';
2
2
  import { $TSFixMe } from '../commands/types.js';
3
3
  import { ServerSettings } from './types.js';
4
4
  export declare const getProxyUrl: (settings: Pick<ServerSettings, 'https' | 'port'>) => string;
5
- export declare const startProxy: ({ accountId, addonsUrls, blobsContext, command, config, configPath, debug, disableEdgeFunctions, env, functionsRegistry, geoCountry, geolocationMode, getUpdatedConfig, inspectSettings, offline, projectDir, repositoryRoot, settings, siteInfo, state, }: {
5
+ export declare const startProxy: ({ accountId, addonsUrls, api, blobsContext, command, config, configPath, debug, disableEdgeFunctions, env, functionsRegistry, geoCountry, geolocationMode, getUpdatedConfig, inspectSettings, offline, projectDir, repositoryRoot, settings, siteInfo, state, }: {
6
6
  command: BaseCommand;
7
7
  settings: ServerSettings;
8
8
  disableEdgeFunctions: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/utils/proxy.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAkB,MAAM,sBAAsB,CAAA;AAkB/D,OAAO,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAywB9D,eAAO,MAAM,WAAW,aAAuB,KAAK,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,WAGpF,CAAA;AAID,eAAO,MAAM,UAAU;aAqBT,WAAW;cAAY,cAAc;0BAAwB,OAAO;2CA2GjF,CAAA"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/utils/proxy.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAkB,MAAM,sBAAsB,CAAA;AAkB/D,OAAO,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAqxB9D,eAAO,MAAM,WAAW,aAAuB,KAAK,cAAc,EAAE,OAAO,GAAG,MAAM,CAAC,WAGpF,CAAA;AAID,eAAO,MAAM,UAAU;aAsBT,WAAW;cAAY,cAAc;0BAAwB,OAAO;2CA4GjF,CAAA"}
@@ -5,6 +5,7 @@ import http from 'http';
5
5
  import https from 'https';
6
6
  import { isIPv6 } from 'net';
7
7
  import path from 'path';
8
+ import process from 'process';
8
9
  import util from 'util';
9
10
  import zlib from 'zlib';
10
11
  // @ts-expect-error TS(7016) FIXME: Could not find a declaration file for module 'cont... Remove this comment to see the full error message
@@ -21,6 +22,7 @@ import { jwtDecode } from 'jwt-decode';
21
22
  import { locatePath } from 'locate-path';
22
23
  import pFilter from 'p-filter';
23
24
  import toReadableStream from 'to-readable-stream';
25
+ import throttle from 'lodash/throttle.js';
24
26
  import { handleProxyRequest, initializeProxy as initializeEdgeFunctionsProxy, isEdgeFunctionsRequest, } from '../lib/edge-functions/proxy.js';
25
27
  import { fileExistsAsync, isFileAsync } from '../lib/fs.js';
26
28
  import { getFormHandler } from '../lib/functions/form-submissions-handler.js';
@@ -176,6 +178,12 @@ const alternativePathsFor = function (url) {
176
178
  }
177
179
  return paths;
178
180
  };
181
+ const notifyActivity = throttle((api, siteId, devServerId) => {
182
+ // eslint-disable-next-line promise/prefer-await-to-callbacks, promise/prefer-await-to-then
183
+ api.markDevServerActivity({ siteId, devServerId }).catch((error) => {
184
+ console.error(`${NETLIFYDEVWARN} Failed to notify activity`, error);
185
+ });
186
+ }, 30 * 1000);
179
187
  const serveRedirect = async function ({ env, functionsRegistry, imageProxy, match, options, proxy, req, res, siteInfo, }) {
180
188
  if (!match)
181
189
  return proxy.web(req, res, options);
@@ -552,7 +560,7 @@ const initializeProxy = async function ({ config, configPath, distDir, env, host
552
560
  };
553
561
  return handlers;
554
562
  };
555
- const onRequest = async ({ addonsUrls, edgeFunctionsProxy, env, functionsRegistry, functionsServer, imageProxy, proxy, rewriter, settings, siteInfo, }, req, res) => {
563
+ const onRequest = async ({ addonsUrls, api, edgeFunctionsProxy, env, functionsRegistry, functionsServer, imageProxy, proxy, rewriter, settings, siteInfo, }, req, res) => {
556
564
  req.originalBody =
557
565
  req.method && ['GET', 'OPTIONS', 'HEAD'].includes(req.method) ? null : await createStreamPromise(req, BYTES_LIMIT);
558
566
  if (isImageRequest(req)) {
@@ -594,6 +602,9 @@ const onRequest = async ({ addonsUrls, edgeFunctionsProxy, env, functionsRegistr
594
602
  jwtRolePath: settings.jwtRolePath,
595
603
  framework: settings.framework,
596
604
  };
605
+ if (api && process.env.NETLIFY_DEV_SERVER_ID) {
606
+ notifyActivity(api, siteInfo.id, process.env.NETLIFY_DEV_SERVER_ID);
607
+ }
597
608
  if (match) {
598
609
  // We don't want to generate an ETag for 3xx redirects.
599
610
  // @ts-expect-error TS(7031) FIXME: Binding element 'statusCode' implicitly has an 'an... Remove this comment to see the full error message
@@ -620,7 +631,7 @@ export const getProxyUrl = function (settings) {
620
631
  const scheme = settings.https ? 'https' : 'http';
621
632
  return `${scheme}://localhost:${settings.port}`;
622
633
  };
623
- export const startProxy = async function ({ accountId, addonsUrls, blobsContext, command, config, configPath, debug, disableEdgeFunctions, env, functionsRegistry, geoCountry, geolocationMode, getUpdatedConfig, inspectSettings, offline, projectDir, repositoryRoot, settings, siteInfo, state, }) {
634
+ export const startProxy = async function ({ accountId, addonsUrls, api, blobsContext, command, config, configPath, debug, disableEdgeFunctions, env, functionsRegistry, geoCountry, geolocationMode, getUpdatedConfig, inspectSettings, offline, projectDir, repositoryRoot, settings, siteInfo, state, }) {
624
635
  const secondaryServerPort = settings.https ? await getAvailablePort() : null;
625
636
  const functionsServer = settings.functionsPort ? `http://127.0.0.1:${settings.functionsPort}` : null;
626
637
  let edgeFunctionsProxy;
@@ -685,6 +696,7 @@ export const startProxy = async function ({ accountId, addonsUrls, blobsContext,
685
696
  imageProxy,
686
697
  siteInfo,
687
698
  env,
699
+ api,
688
700
  });
689
701
  const primaryServer = settings.https
690
702
  ? https.createServer({ cert: settings.https.cert, key: settings.https.key }, onRequestWithOptions)
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "netlify-cli",
3
- "version": "17.26.2",
3
+ "version": "17.27.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "netlify-cli",
9
- "version": "17.26.2",
9
+ "version": "17.27.0",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
13
  "@bugsnag/js": "7.23.0",
14
14
  "@fastify/static": "7.0.4",
15
15
  "@netlify/blobs": "7.3.0",
16
- "@netlify/build": "29.47.1",
16
+ "@netlify/build": "29.47.2",
17
17
  "@netlify/build-info": "7.13.2",
18
- "@netlify/config": "20.15.1",
18
+ "@netlify/config": "20.15.2",
19
19
  "@netlify/edge-bundler": "12.0.1",
20
20
  "@netlify/edge-functions": "2.8.1",
21
21
  "@netlify/local-functions-proxy": "1.1.1",
@@ -1144,14 +1144,14 @@
1144
1144
  }
1145
1145
  },
1146
1146
  "node_modules/@netlify/build": {
1147
- "version": "29.47.1",
1148
- "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.47.1.tgz",
1149
- "integrity": "sha512-11OKuvYzrchJF7kmFSspjIKfomHBMkmOrVEphHGt5wFa7l3WgxUabsv5AMgOLfIS3TAtWJnpOoRBtfsPzsQdfQ==",
1147
+ "version": "29.47.2",
1148
+ "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.47.2.tgz",
1149
+ "integrity": "sha512-k72FGXoCdeVybvqoZSYPjU0PX0P05isHGKGnvvbrqY7jCKhzHdqt8ePOs20uCmK5k9AcNqbnbg/oNY/OO+LYwQ==",
1150
1150
  "dependencies": {
1151
1151
  "@bugsnag/js": "^7.0.0",
1152
1152
  "@netlify/blobs": "^7.3.0",
1153
1153
  "@netlify/cache-utils": "^5.1.5",
1154
- "@netlify/config": "^20.15.1",
1154
+ "@netlify/config": "^20.15.2",
1155
1155
  "@netlify/edge-bundler": "12.0.1",
1156
1156
  "@netlify/framework-info": "^9.8.13",
1157
1157
  "@netlify/functions-utils": "^5.2.63",
@@ -1696,9 +1696,9 @@
1696
1696
  }
1697
1697
  },
1698
1698
  "node_modules/@netlify/config": {
1699
- "version": "20.15.1",
1700
- "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.15.1.tgz",
1701
- "integrity": "sha512-xz8wN8rXLpEGtGQI4zfg3SvTUjvLaMJtLxFYqg7kgfYOPuGKUh06gEEXgChg6n32TJsIoHqwsYaKJBaFS+Z2YA==",
1699
+ "version": "20.15.2",
1700
+ "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.15.2.tgz",
1701
+ "integrity": "sha512-nPakZuXLiQ6b5OshwB7Jmbjirj15E3/yMlBqx6VUrSln8cE/aohtmH157ZZdw9RKqk5Fd71kDFZmhAhmarhvmg==",
1702
1702
  "dependencies": {
1703
1703
  "@iarna/toml": "^2.2.5",
1704
1704
  "chalk": "^5.0.0",
@@ -16372,14 +16372,14 @@
16372
16372
  "integrity": "sha512-wN/kNTZo4xjlUM/C0WILOkJbe8p4AFquSGkZEIoIcgnsx5ikp2GyqGiq1WMLee7QdbnqeIV2g2hn/PjT324E5w=="
16373
16373
  },
16374
16374
  "@netlify/build": {
16375
- "version": "29.47.1",
16376
- "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.47.1.tgz",
16377
- "integrity": "sha512-11OKuvYzrchJF7kmFSspjIKfomHBMkmOrVEphHGt5wFa7l3WgxUabsv5AMgOLfIS3TAtWJnpOoRBtfsPzsQdfQ==",
16375
+ "version": "29.47.2",
16376
+ "resolved": "https://registry.npmjs.org/@netlify/build/-/build-29.47.2.tgz",
16377
+ "integrity": "sha512-k72FGXoCdeVybvqoZSYPjU0PX0P05isHGKGnvvbrqY7jCKhzHdqt8ePOs20uCmK5k9AcNqbnbg/oNY/OO+LYwQ==",
16378
16378
  "requires": {
16379
16379
  "@bugsnag/js": "^7.0.0",
16380
16380
  "@netlify/blobs": "^7.3.0",
16381
16381
  "@netlify/cache-utils": "^5.1.5",
16382
- "@netlify/config": "^20.15.1",
16382
+ "@netlify/config": "^20.15.2",
16383
16383
  "@netlify/edge-bundler": "12.0.1",
16384
16384
  "@netlify/framework-info": "^9.8.13",
16385
16385
  "@netlify/functions-utils": "^5.2.63",
@@ -16728,9 +16728,9 @@
16728
16728
  }
16729
16729
  },
16730
16730
  "@netlify/config": {
16731
- "version": "20.15.1",
16732
- "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.15.1.tgz",
16733
- "integrity": "sha512-xz8wN8rXLpEGtGQI4zfg3SvTUjvLaMJtLxFYqg7kgfYOPuGKUh06gEEXgChg6n32TJsIoHqwsYaKJBaFS+Z2YA==",
16731
+ "version": "20.15.2",
16732
+ "resolved": "https://registry.npmjs.org/@netlify/config/-/config-20.15.2.tgz",
16733
+ "integrity": "sha512-nPakZuXLiQ6b5OshwB7Jmbjirj15E3/yMlBqx6VUrSln8cE/aohtmH157ZZdw9RKqk5Fd71kDFZmhAhmarhvmg==",
16734
16734
  "requires": {
16735
16735
  "@iarna/toml": "^2.2.5",
16736
16736
  "chalk": "^5.0.0",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "netlify-cli",
3
3
  "description": "Netlify command line tool",
4
- "version": "17.26.2",
4
+ "version": "17.27.0",
5
5
  "author": "Netlify Inc.",
6
6
  "type": "module",
7
7
  "engines": {
@@ -38,9 +38,9 @@
38
38
  "@bugsnag/js": "7.23.0",
39
39
  "@fastify/static": "7.0.4",
40
40
  "@netlify/blobs": "7.3.0",
41
- "@netlify/build": "29.47.1",
41
+ "@netlify/build": "29.47.2",
42
42
  "@netlify/build-info": "7.13.2",
43
- "@netlify/config": "20.15.1",
43
+ "@netlify/config": "20.15.2",
44
44
  "@netlify/edge-bundler": "12.0.1",
45
45
  "@netlify/edge-functions": "2.8.1",
46
46
  "@netlify/local-functions-proxy": "1.1.1",