netlify-cli 10.1.0 → 10.2.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.
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "netlify-cli",
3
- "version": "10.1.0",
3
+ "version": "10.2.0",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "netlify-cli",
9
- "version": "10.1.0",
9
+ "version": "10.2.0",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "dependencies": {
13
13
  "@netlify/build": "^27.0.1",
14
14
  "@netlify/config": "^18.0.0",
15
- "@netlify/edge-bundler": "^0.12.0",
15
+ "@netlify/edge-bundler": "^1.0.0",
16
16
  "@netlify/framework-info": "^9.0.2",
17
17
  "@netlify/local-functions-proxy": "^1.1.1",
18
18
  "@netlify/plugins-list": "^6.19.0",
@@ -1132,6 +1132,12 @@
1132
1132
  "node": ">=6.0.0"
1133
1133
  }
1134
1134
  },
1135
+ "node_modules/@jridgewell/sourcemap-codec": {
1136
+ "version": "1.4.11",
1137
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
1138
+ "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==",
1139
+ "dev": true
1140
+ },
1135
1141
  "node_modules/@jridgewell/trace-mapping": {
1136
1142
  "version": "0.2.5",
1137
1143
  "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.2.5.tgz",
@@ -1239,6 +1245,27 @@
1239
1245
  "node": "^12.20.0 || ^14.14.0 || >=16.0.0"
1240
1246
  }
1241
1247
  },
1248
+ "node_modules/@netlify/build/node_modules/@netlify/edge-bundler": {
1249
+ "version": "0.12.0",
1250
+ "resolved": "https://registry.npmjs.org/@netlify/edge-bundler/-/edge-bundler-0.12.0.tgz",
1251
+ "integrity": "sha512-4AB3GSVeg5Qyh3A47oySKfRTNPNelI7UPgOONhOG4dCNr1fcVUJH0Fdm4rljRnaoQ1Vfy1dPVvMAT5dQVjK77w==",
1252
+ "dependencies": {
1253
+ "common-path-prefix": "^3.0.0",
1254
+ "del": "^6.0.0",
1255
+ "env-paths": "^3.0.0",
1256
+ "execa": "^6.0.0",
1257
+ "glob-to-regexp": "^0.4.1",
1258
+ "node-fetch": "^3.1.1",
1259
+ "node-stream-zip": "^1.15.0",
1260
+ "p-wait-for": "^4.1.0",
1261
+ "semver": "^7.3.5",
1262
+ "tmp-promise": "^3.0.3",
1263
+ "uuid": "^8.3.2"
1264
+ },
1265
+ "engines": {
1266
+ "node": "^12.20.0 || ^14.14.0 || >=16.0.0"
1267
+ }
1268
+ },
1242
1269
  "node_modules/@netlify/build/node_modules/@sindresorhus/is": {
1243
1270
  "version": "2.1.1",
1244
1271
  "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz",
@@ -1345,6 +1372,17 @@
1345
1372
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1346
1373
  "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
1347
1374
  },
1375
+ "node_modules/@netlify/build/node_modules/env-paths": {
1376
+ "version": "3.0.0",
1377
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz",
1378
+ "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==",
1379
+ "engines": {
1380
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1381
+ },
1382
+ "funding": {
1383
+ "url": "https://github.com/sponsors/sindresorhus"
1384
+ }
1385
+ },
1348
1386
  "node_modules/@netlify/build/node_modules/escape-string-regexp": {
1349
1387
  "version": "5.0.0",
1350
1388
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
@@ -1419,6 +1457,11 @@
1419
1457
  "url": "https://github.com/sponsors/sindresorhus"
1420
1458
  }
1421
1459
  },
1460
+ "node_modules/@netlify/build/node_modules/glob-to-regexp": {
1461
+ "version": "0.4.1",
1462
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
1463
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
1464
+ },
1422
1465
  "node_modules/@netlify/build/node_modules/got": {
1423
1466
  "version": "10.7.0",
1424
1467
  "resolved": "https://registry.npmjs.org/got/-/got-10.7.0.tgz",
@@ -1574,6 +1617,23 @@
1574
1617
  "url": "https://github.com/sponsors/sindresorhus"
1575
1618
  }
1576
1619
  },
1620
+ "node_modules/@netlify/build/node_modules/node-fetch": {
1621
+ "version": "3.2.4",
1622
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.4.tgz",
1623
+ "integrity": "sha512-WvYJRN7mMyOLurFR2YpysQGuwYrJN+qrrpHjJDuKMcSPdfFccRUla/kng2mz6HWSBxJcqPbvatS6Gb4RhOzCJw==",
1624
+ "dependencies": {
1625
+ "data-uri-to-buffer": "^4.0.0",
1626
+ "fetch-blob": "^3.1.4",
1627
+ "formdata-polyfill": "^4.0.10"
1628
+ },
1629
+ "engines": {
1630
+ "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
1631
+ },
1632
+ "funding": {
1633
+ "type": "opencollective",
1634
+ "url": "https://opencollective.com/node-fetch"
1635
+ }
1636
+ },
1577
1637
  "node_modules/@netlify/build/node_modules/npm-run-path": {
1578
1638
  "version": "5.1.0",
1579
1639
  "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
@@ -1683,6 +1743,20 @@
1683
1743
  "url": "https://github.com/sponsors/sindresorhus"
1684
1744
  }
1685
1745
  },
1746
+ "node_modules/@netlify/build/node_modules/p-wait-for": {
1747
+ "version": "4.1.0",
1748
+ "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-4.1.0.tgz",
1749
+ "integrity": "sha512-i8nE5q++9h8oaQHWltS1Tnnv4IoMDOlqN7C0KFG2OdbK0iFJIt6CROZ8wfBM+K4Pxqfnq4C4lkkpXqTEpB5DZw==",
1750
+ "dependencies": {
1751
+ "p-timeout": "^5.0.0"
1752
+ },
1753
+ "engines": {
1754
+ "node": ">=12"
1755
+ },
1756
+ "funding": {
1757
+ "url": "https://github.com/sponsors/sindresorhus"
1758
+ }
1759
+ },
1686
1760
  "node_modules/@netlify/build/node_modules/path-exists": {
1687
1761
  "version": "5.0.0",
1688
1762
  "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
@@ -2298,9 +2372,9 @@
2298
2372
  }
2299
2373
  },
2300
2374
  "node_modules/@netlify/edge-bundler": {
2301
- "version": "0.12.0",
2302
- "resolved": "https://registry.npmjs.org/@netlify/edge-bundler/-/edge-bundler-0.12.0.tgz",
2303
- "integrity": "sha512-4AB3GSVeg5Qyh3A47oySKfRTNPNelI7UPgOONhOG4dCNr1fcVUJH0Fdm4rljRnaoQ1Vfy1dPVvMAT5dQVjK77w==",
2375
+ "version": "1.0.0",
2376
+ "resolved": "https://registry.npmjs.org/@netlify/edge-bundler/-/edge-bundler-1.0.0.tgz",
2377
+ "integrity": "sha512-9pVyU0yXqdGG3LFEwtRBzUpGyplPE7hCGEvkxZpGvKjbiC0/jj6x/b6g7Ecjd3wzb6u1QpPq6XQhI+ZIl/PI3Q==",
2304
2378
  "dependencies": {
2305
2379
  "common-path-prefix": "^3.0.0",
2306
2380
  "del": "^6.0.0",
@@ -5827,23 +5901,23 @@
5827
5901
  }
5828
5902
  },
5829
5903
  "node_modules/c8": {
5830
- "version": "7.11.0",
5831
- "resolved": "https://registry.npmjs.org/c8/-/c8-7.11.0.tgz",
5832
- "integrity": "sha512-XqPyj1uvlHMr+Y1IeRndC2X5P7iJzJlEJwBpCdBbq2JocXOgJfr+JVfJkyNMGROke5LfKrhSFXGFXnwnRJAUJw==",
5904
+ "version": "7.11.2",
5905
+ "resolved": "https://registry.npmjs.org/c8/-/c8-7.11.2.tgz",
5906
+ "integrity": "sha512-6ahJSrhS6TqSghHm+HnWt/8Y2+z0hM/FQyB1ybKhAR30+NYL9CTQ1uwHxuWw6U7BHlHv6wvhgOrH81I+lfCkxg==",
5833
5907
  "dev": true,
5834
5908
  "dependencies": {
5835
5909
  "@bcoe/v8-coverage": "^0.2.3",
5836
- "@istanbuljs/schema": "^0.1.2",
5910
+ "@istanbuljs/schema": "^0.1.3",
5837
5911
  "find-up": "^5.0.0",
5838
5912
  "foreground-child": "^2.0.0",
5839
- "istanbul-lib-coverage": "^3.0.1",
5913
+ "istanbul-lib-coverage": "^3.2.0",
5840
5914
  "istanbul-lib-report": "^3.0.0",
5841
- "istanbul-reports": "^3.0.2",
5842
- "rimraf": "^3.0.0",
5915
+ "istanbul-reports": "^3.1.4",
5916
+ "rimraf": "^3.0.2",
5843
5917
  "test-exclude": "^6.0.0",
5844
- "v8-to-istanbul": "^8.0.0",
5918
+ "v8-to-istanbul": "^9.0.0",
5845
5919
  "yargs": "^16.2.0",
5846
- "yargs-parser": "^20.2.7"
5920
+ "yargs-parser": "^20.2.9"
5847
5921
  },
5848
5922
  "bin": {
5849
5923
  "c8": "bin/c8.js"
@@ -12228,9 +12302,9 @@
12228
12302
  }
12229
12303
  },
12230
12304
  "node_modules/http-proxy-middleware": {
12231
- "version": "2.0.4",
12232
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz",
12233
- "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==",
12305
+ "version": "2.0.6",
12306
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
12307
+ "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
12234
12308
  "dependencies": {
12235
12309
  "@types/http-proxy": "^1.17.8",
12236
12310
  "http-proxy": "^1.18.1",
@@ -13342,9 +13416,9 @@
13342
13416
  }
13343
13417
  },
13344
13418
  "node_modules/istanbul-reports": {
13345
- "version": "3.1.3",
13346
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz",
13347
- "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==",
13419
+ "version": "3.1.4",
13420
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
13421
+ "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
13348
13422
  "dev": true,
13349
13423
  "dependencies": {
13350
13424
  "html-escaper": "^2.0.0",
@@ -14551,13 +14625,14 @@
14551
14625
  }
14552
14626
  },
14553
14627
  "node_modules/log-update": {
14554
- "version": "5.0.0",
14555
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.0.tgz",
14556
- "integrity": "sha512-HovF3knyZX9sleS0OkSJ6f53JEpbzcbomC6/WJ3iuGK8i6CRb6WZ542gO2F3pdQK8hwlijddDefVFhlMpwkOSQ==",
14628
+ "version": "5.0.1",
14629
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz",
14630
+ "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==",
14557
14631
  "dependencies": {
14558
14632
  "ansi-escapes": "^5.0.0",
14559
14633
  "cli-cursor": "^4.0.0",
14560
14634
  "slice-ansi": "^5.0.0",
14635
+ "strip-ansi": "^7.0.1",
14561
14636
  "wrap-ansi": "^8.0.1"
14562
14637
  },
14563
14638
  "engines": {
@@ -14624,9 +14699,9 @@
14624
14699
  }
14625
14700
  },
14626
14701
  "node_modules/log-update/node_modules/string-width": {
14627
- "version": "5.1.0",
14628
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz",
14629
- "integrity": "sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ==",
14702
+ "version": "5.1.2",
14703
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
14704
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
14630
14705
  "dependencies": {
14631
14706
  "eastasianwidth": "^0.2.0",
14632
14707
  "emoji-regex": "^9.2.2",
@@ -21890,26 +21965,27 @@
21890
21965
  "dev": true
21891
21966
  },
21892
21967
  "node_modules/v8-to-istanbul": {
21893
- "version": "8.1.1",
21894
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
21895
- "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
21968
+ "version": "9.0.0",
21969
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz",
21970
+ "integrity": "sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==",
21896
21971
  "dev": true,
21897
21972
  "dependencies": {
21973
+ "@jridgewell/trace-mapping": "^0.3.7",
21898
21974
  "@types/istanbul-lib-coverage": "^2.0.1",
21899
- "convert-source-map": "^1.6.0",
21900
- "source-map": "^0.7.3"
21975
+ "convert-source-map": "^1.6.0"
21901
21976
  },
21902
21977
  "engines": {
21903
21978
  "node": ">=10.12.0"
21904
21979
  }
21905
21980
  },
21906
- "node_modules/v8-to-istanbul/node_modules/source-map": {
21907
- "version": "0.7.3",
21908
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
21909
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
21981
+ "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": {
21982
+ "version": "0.3.9",
21983
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
21984
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
21910
21985
  "dev": true,
21911
- "engines": {
21912
- "node": ">= 8"
21986
+ "dependencies": {
21987
+ "@jridgewell/resolve-uri": "^3.0.3",
21988
+ "@jridgewell/sourcemap-codec": "^1.4.10"
21913
21989
  }
21914
21990
  },
21915
21991
  "node_modules/validate-npm-package-license": {
@@ -23673,6 +23749,12 @@
23673
23749
  "integrity": "sha512-cz8HFjOFfUBtvN+NXYSFMHYRdxZMaEl0XypVrhzxBgadKIXhIkRd8aMeHhmF56Sl7SuS8OnUpQ73/k9LE4VnLg==",
23674
23750
  "dev": true
23675
23751
  },
23752
+ "@jridgewell/sourcemap-codec": {
23753
+ "version": "1.4.11",
23754
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz",
23755
+ "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==",
23756
+ "dev": true
23757
+ },
23676
23758
  "@jridgewell/trace-mapping": {
23677
23759
  "version": "0.2.5",
23678
23760
  "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.2.5.tgz",
@@ -23768,6 +23850,24 @@
23768
23850
  "yargs": "^17.3.1"
23769
23851
  },
23770
23852
  "dependencies": {
23853
+ "@netlify/edge-bundler": {
23854
+ "version": "0.12.0",
23855
+ "resolved": "https://registry.npmjs.org/@netlify/edge-bundler/-/edge-bundler-0.12.0.tgz",
23856
+ "integrity": "sha512-4AB3GSVeg5Qyh3A47oySKfRTNPNelI7UPgOONhOG4dCNr1fcVUJH0Fdm4rljRnaoQ1Vfy1dPVvMAT5dQVjK77w==",
23857
+ "requires": {
23858
+ "common-path-prefix": "^3.0.0",
23859
+ "del": "^6.0.0",
23860
+ "env-paths": "^3.0.0",
23861
+ "execa": "^6.0.0",
23862
+ "glob-to-regexp": "^0.4.1",
23863
+ "node-fetch": "^3.1.1",
23864
+ "node-stream-zip": "^1.15.0",
23865
+ "p-wait-for": "^4.1.0",
23866
+ "semver": "^7.3.5",
23867
+ "tmp-promise": "^3.0.3",
23868
+ "uuid": "^8.3.2"
23869
+ }
23870
+ },
23771
23871
  "@sindresorhus/is": {
23772
23872
  "version": "2.1.1",
23773
23873
  "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz",
@@ -23832,6 +23932,11 @@
23832
23932
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
23833
23933
  "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
23834
23934
  },
23935
+ "env-paths": {
23936
+ "version": "3.0.0",
23937
+ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz",
23938
+ "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="
23939
+ },
23835
23940
  "escape-string-regexp": {
23836
23941
  "version": "5.0.0",
23837
23942
  "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
@@ -23876,6 +23981,11 @@
23876
23981
  "path-exists": "^5.0.0"
23877
23982
  }
23878
23983
  },
23984
+ "glob-to-regexp": {
23985
+ "version": "0.4.1",
23986
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
23987
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
23988
+ },
23879
23989
  "got": {
23880
23990
  "version": "10.7.0",
23881
23991
  "resolved": "https://registry.npmjs.org/got/-/got-10.7.0.tgz",
@@ -23967,6 +24077,16 @@
23967
24077
  "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
23968
24078
  "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
23969
24079
  },
24080
+ "node-fetch": {
24081
+ "version": "3.2.4",
24082
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.4.tgz",
24083
+ "integrity": "sha512-WvYJRN7mMyOLurFR2YpysQGuwYrJN+qrrpHjJDuKMcSPdfFccRUla/kng2mz6HWSBxJcqPbvatS6Gb4RhOzCJw==",
24084
+ "requires": {
24085
+ "data-uri-to-buffer": "^4.0.0",
24086
+ "fetch-blob": "^3.1.4",
24087
+ "formdata-polyfill": "^4.0.10"
24088
+ }
24089
+ },
23970
24090
  "npm-run-path": {
23971
24091
  "version": "5.1.0",
23972
24092
  "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
@@ -24028,6 +24148,14 @@
24028
24148
  "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.0.2.tgz",
24029
24149
  "integrity": "sha512-sEmji9Yaq+Tw+STwsGAE56hf7gMy9p0tQfJojIAamB7WHJYJKf1qlsg9jqBWG8q9VCxKPhZaP/AcXwEoBcYQhQ=="
24030
24150
  },
24151
+ "p-wait-for": {
24152
+ "version": "4.1.0",
24153
+ "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-4.1.0.tgz",
24154
+ "integrity": "sha512-i8nE5q++9h8oaQHWltS1Tnnv4IoMDOlqN7C0KFG2OdbK0iFJIt6CROZ8wfBM+K4Pxqfnq4C4lkkpXqTEpB5DZw==",
24155
+ "requires": {
24156
+ "p-timeout": "^5.0.0"
24157
+ }
24158
+ },
24031
24159
  "path-exists": {
24032
24160
  "version": "5.0.0",
24033
24161
  "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
@@ -24386,9 +24514,9 @@
24386
24514
  }
24387
24515
  },
24388
24516
  "@netlify/edge-bundler": {
24389
- "version": "0.12.0",
24390
- "resolved": "https://registry.npmjs.org/@netlify/edge-bundler/-/edge-bundler-0.12.0.tgz",
24391
- "integrity": "sha512-4AB3GSVeg5Qyh3A47oySKfRTNPNelI7UPgOONhOG4dCNr1fcVUJH0Fdm4rljRnaoQ1Vfy1dPVvMAT5dQVjK77w==",
24517
+ "version": "1.0.0",
24518
+ "resolved": "https://registry.npmjs.org/@netlify/edge-bundler/-/edge-bundler-1.0.0.tgz",
24519
+ "integrity": "sha512-9pVyU0yXqdGG3LFEwtRBzUpGyplPE7hCGEvkxZpGvKjbiC0/jj6x/b6g7Ecjd3wzb6u1QpPq6XQhI+ZIl/PI3Q==",
24392
24520
  "requires": {
24393
24521
  "common-path-prefix": "^3.0.0",
24394
24522
  "del": "^6.0.0",
@@ -26937,23 +27065,23 @@
26937
27065
  "dev": true
26938
27066
  },
26939
27067
  "c8": {
26940
- "version": "7.11.0",
26941
- "resolved": "https://registry.npmjs.org/c8/-/c8-7.11.0.tgz",
26942
- "integrity": "sha512-XqPyj1uvlHMr+Y1IeRndC2X5P7iJzJlEJwBpCdBbq2JocXOgJfr+JVfJkyNMGROke5LfKrhSFXGFXnwnRJAUJw==",
27068
+ "version": "7.11.2",
27069
+ "resolved": "https://registry.npmjs.org/c8/-/c8-7.11.2.tgz",
27070
+ "integrity": "sha512-6ahJSrhS6TqSghHm+HnWt/8Y2+z0hM/FQyB1ybKhAR30+NYL9CTQ1uwHxuWw6U7BHlHv6wvhgOrH81I+lfCkxg==",
26943
27071
  "dev": true,
26944
27072
  "requires": {
26945
27073
  "@bcoe/v8-coverage": "^0.2.3",
26946
- "@istanbuljs/schema": "^0.1.2",
27074
+ "@istanbuljs/schema": "^0.1.3",
26947
27075
  "find-up": "^5.0.0",
26948
27076
  "foreground-child": "^2.0.0",
26949
- "istanbul-lib-coverage": "^3.0.1",
27077
+ "istanbul-lib-coverage": "^3.2.0",
26950
27078
  "istanbul-lib-report": "^3.0.0",
26951
- "istanbul-reports": "^3.0.2",
26952
- "rimraf": "^3.0.0",
27079
+ "istanbul-reports": "^3.1.4",
27080
+ "rimraf": "^3.0.2",
26953
27081
  "test-exclude": "^6.0.0",
26954
- "v8-to-istanbul": "^8.0.0",
27082
+ "v8-to-istanbul": "^9.0.0",
26955
27083
  "yargs": "^16.2.0",
26956
- "yargs-parser": "^20.2.7"
27084
+ "yargs-parser": "^20.2.9"
26957
27085
  },
26958
27086
  "dependencies": {
26959
27087
  "yargs": {
@@ -31846,9 +31974,9 @@
31846
31974
  }
31847
31975
  },
31848
31976
  "http-proxy-middleware": {
31849
- "version": "2.0.4",
31850
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.4.tgz",
31851
- "integrity": "sha512-m/4FxX17SUvz4lJ5WPXOHDUuCwIqXLfLHs1s0uZ3oYjhoXlx9csYxaOa0ElDEJ+h8Q4iJ1s+lTMbiCa4EXIJqg==",
31977
+ "version": "2.0.6",
31978
+ "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz",
31979
+ "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==",
31852
31980
  "requires": {
31853
31981
  "@types/http-proxy": "^1.17.8",
31854
31982
  "http-proxy": "^1.18.1",
@@ -32611,9 +32739,9 @@
32611
32739
  }
32612
32740
  },
32613
32741
  "istanbul-reports": {
32614
- "version": "3.1.3",
32615
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz",
32616
- "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==",
32742
+ "version": "3.1.4",
32743
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz",
32744
+ "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==",
32617
32745
  "dev": true,
32618
32746
  "requires": {
32619
32747
  "html-escaper": "^2.0.0",
@@ -33555,13 +33683,14 @@
33555
33683
  }
33556
33684
  },
33557
33685
  "log-update": {
33558
- "version": "5.0.0",
33559
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.0.tgz",
33560
- "integrity": "sha512-HovF3knyZX9sleS0OkSJ6f53JEpbzcbomC6/WJ3iuGK8i6CRb6WZ542gO2F3pdQK8hwlijddDefVFhlMpwkOSQ==",
33686
+ "version": "5.0.1",
33687
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz",
33688
+ "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==",
33561
33689
  "requires": {
33562
33690
  "ansi-escapes": "^5.0.0",
33563
33691
  "cli-cursor": "^4.0.0",
33564
33692
  "slice-ansi": "^5.0.0",
33693
+ "strip-ansi": "^7.0.1",
33565
33694
  "wrap-ansi": "^8.0.1"
33566
33695
  },
33567
33696
  "dependencies": {
@@ -33598,9 +33727,9 @@
33598
33727
  }
33599
33728
  },
33600
33729
  "string-width": {
33601
- "version": "5.1.0",
33602
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz",
33603
- "integrity": "sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ==",
33730
+ "version": "5.1.2",
33731
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
33732
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
33604
33733
  "requires": {
33605
33734
  "eastasianwidth": "^0.2.0",
33606
33735
  "emoji-regex": "^9.2.2",
@@ -39198,21 +39327,25 @@
39198
39327
  "dev": true
39199
39328
  },
39200
39329
  "v8-to-istanbul": {
39201
- "version": "8.1.1",
39202
- "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz",
39203
- "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==",
39330
+ "version": "9.0.0",
39331
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.0.tgz",
39332
+ "integrity": "sha512-HcvgY/xaRm7isYmyx+lFKA4uQmfUbN0J4M0nNItvzTvH/iQ9kW5j/t4YSR+Ge323/lrgDAWJoF46tzGQHwBHFw==",
39204
39333
  "dev": true,
39205
39334
  "requires": {
39335
+ "@jridgewell/trace-mapping": "^0.3.7",
39206
39336
  "@types/istanbul-lib-coverage": "^2.0.1",
39207
- "convert-source-map": "^1.6.0",
39208
- "source-map": "^0.7.3"
39337
+ "convert-source-map": "^1.6.0"
39209
39338
  },
39210
39339
  "dependencies": {
39211
- "source-map": {
39212
- "version": "0.7.3",
39213
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
39214
- "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==",
39215
- "dev": true
39340
+ "@jridgewell/trace-mapping": {
39341
+ "version": "0.3.9",
39342
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
39343
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
39344
+ "dev": true,
39345
+ "requires": {
39346
+ "@jridgewell/resolve-uri": "^3.0.3",
39347
+ "@jridgewell/sourcemap-codec": "^1.4.10"
39348
+ }
39216
39349
  }
39217
39350
  }
39218
39351
  },
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "netlify-cli",
3
3
  "description": "Netlify command line tool",
4
- "version": "10.1.0",
4
+ "version": "10.2.0",
5
5
  "author": "Netlify Inc.",
6
6
  "contributors": [
7
7
  "Abraham Schilling <AbrahamSchilling@gmail.com> (https://gitlab.com/n4bb12)",
@@ -184,7 +184,7 @@
184
184
  "format:check-fix:prettier": "run-e format:check:prettier format:fix:prettier",
185
185
  "format:check:prettier": "cross-env-shell prettier --check $npm_package_config_prettier",
186
186
  "format:fix:prettier": "cross-env-shell prettier --write $npm_package_config_prettier",
187
- "test:dev": "run-s test:init:* test:dev:*",
187
+ "test:dev": "run-s certs test:init:* test:dev:*",
188
188
  "test:init": "run-s test:init:*",
189
189
  "test:init:cli-version": "npm run start -- --version",
190
190
  "test:init:cli-help": "npm run start -- --help",
@@ -200,7 +200,8 @@
200
200
  "site:build": "run-s site:build:*",
201
201
  "site:build:install": "cd site && npm ci --no-audit",
202
202
  "site:build:assets": "cd site && npm run build",
203
- "postinstall": "node ./scripts/postinstall.js"
203
+ "postinstall": "node ./scripts/postinstall.js",
204
+ "certs": "openssl req -x509 -out localhost.crt -keyout localhost.key -newkey rsa:2048 -nodes -sha256 -subj \"/CN=localhost\" -extensions EXT -config certconf"
204
205
  },
205
206
  "config": {
206
207
  "eslint": "--ignore-path .gitignore --cache --format=codeframe --max-warnings=0 \"{src,scripts,site,tests,.github}/**/*.{mjs,cjs,js,md,html}\" \"*.{mjs,cjs,js,md,html}\" \".*.{mjs,cjs,js,md,html}\"",
@@ -209,7 +210,7 @@
209
210
  "dependencies": {
210
211
  "@netlify/build": "^27.0.1",
211
212
  "@netlify/config": "^18.0.0",
212
- "@netlify/edge-bundler": "^0.12.0",
213
+ "@netlify/edge-bundler": "^1.0.0",
213
214
  "@netlify/framework-info": "^9.0.2",
214
215
  "@netlify/local-functions-proxy": "^1.1.1",
215
216
  "@netlify/plugins-list": "^6.19.0",
@@ -1,7 +1,8 @@
1
1
  module.exports = {
2
+ ForwardedHost: 'x-forwarded-host',
3
+ ForwardedProtocol: 'x-forwarded-proto',
2
4
  Functions: 'x-deno-functions',
3
5
  Geo: 'x-nf-geo',
4
- PassHost: 'X-NF-Pass-Host',
5
6
  Passthrough: 'x-deno-pass',
6
7
  RequestID: 'X-NF-Request-ID',
7
8
  }
@@ -42,7 +42,16 @@ const handleProxyRequest = (req, proxyReq) => {
42
42
  })
43
43
  }
44
44
 
45
- const initializeProxy = async ({ config, configPath, geolocationMode, getUpdatedConfig, offline, settings, state }) => {
45
+ const initializeProxy = async ({
46
+ config,
47
+ configPath,
48
+ geolocationMode,
49
+ getUpdatedConfig,
50
+ offline,
51
+ projectDir,
52
+ settings,
53
+ state,
54
+ }) => {
46
55
  const { functions: internalFunctions, importMap, path: internalFunctionsPath } = await getInternalFunctions()
47
56
  const { port: mainPort } = settings
48
57
  const userFunctionsPath = config.build.edge_functions
@@ -52,6 +61,7 @@ const initializeProxy = async ({ config, configPath, geolocationMode, getUpdated
52
61
  // the network if needed. We don't want to wait for that to be completed, or
53
62
  // the command will be left hanging.
54
63
  const server = prepareServer({
64
+ certificatePath: settings.https ? settings.https.certFilePath : undefined,
55
65
  config,
56
66
  configPath,
57
67
  directories: [internalFunctionsPath, userFunctionsPath].filter(Boolean),
@@ -59,6 +69,7 @@ const initializeProxy = async ({ config, configPath, geolocationMode, getUpdated
59
69
  importMaps: [importMap].filter(Boolean),
60
70
  internalFunctions,
61
71
  port: isolatePort,
72
+ projectDir,
62
73
  })
63
74
  const hasEdgeFunctions = userFunctionsPath !== undefined || internalFunctions.length !== 0
64
75
 
@@ -100,11 +111,15 @@ const initializeProxy = async ({ config, configPath, geolocationMode, getUpdated
100
111
 
101
112
  req[headersSymbol] = {
102
113
  [headers.Functions]: functionNames.join(','),
103
- [headers.PassHost]: `${LOCAL_HOST}:${mainPort}`,
114
+ [headers.ForwardedHost]: `localhost:${mainPort}`,
104
115
  [headers.Passthrough]: 'passthrough',
105
116
  [headers.RequestID]: generateUUID(),
106
117
  }
107
118
 
119
+ if (settings.https) {
120
+ req[headersSymbol][headers.ForwardedProtocol] = 'https'
121
+ }
122
+
108
123
  return `http://${LOCAL_HOST}:${isolatePort}`
109
124
  }
110
125
  }
@@ -112,6 +127,7 @@ const initializeProxy = async ({ config, configPath, geolocationMode, getUpdated
112
127
  const isEdgeFunctionsRequest = (req) => req[headersSymbol] !== undefined
113
128
 
114
129
  const prepareServer = async ({
130
+ certificatePath,
115
131
  config,
116
132
  configPath,
117
133
  directories,
@@ -119,11 +135,13 @@ const prepareServer = async ({
119
135
  importMaps,
120
136
  internalFunctions,
121
137
  port,
138
+ projectDir,
122
139
  }) => {
123
140
  const bundler = await import('@netlify/edge-bundler')
124
141
  const distImportMapPath = getPathInProject([DIST_IMPORT_MAP_PATH])
125
142
  const runIsolate = await bundler.serve({
126
143
  ...getDownloadUpdateFunctions(),
144
+ certificatePath,
127
145
  debug: env.NETLIFY_DENO_DEBUG === 'true',
128
146
  distImportMapPath,
129
147
  formatExportTypeError: (name) =>
@@ -141,6 +159,7 @@ const prepareServer = async ({
141
159
  directories,
142
160
  getUpdatedConfig,
143
161
  internalFunctions,
162
+ projectDir,
144
163
  runIsolate,
145
164
  })
146
165
 
@@ -1,4 +1,6 @@
1
1
  // @ts-check
2
+ const { fileURLToPath } = require('url')
3
+
2
4
  const { NETLIFYDEVERR, NETLIFYDEVLOG, chalk, log, warn, watchDebounced } = require('../../utils/command-helpers')
3
5
 
4
6
  /**
@@ -24,9 +26,19 @@ class EdgeFunctionsRegistry {
24
26
  * @param {string[]} opts.directories
25
27
  * @param {() => Promise<object>} opts.getUpdatedConfig
26
28
  * @param {EdgeFunction[]} opts.internalFunctions
29
+ * @param {string} opts.projectDir
27
30
  * @param {(functions: EdgeFunction[]) => Promise<object>} opts.runIsolate
28
31
  */
29
- constructor({ bundler, config, configPath, directories, getUpdatedConfig, internalFunctions, runIsolate }) {
32
+ constructor({
33
+ bundler,
34
+ config,
35
+ configPath,
36
+ directories,
37
+ getUpdatedConfig,
38
+ internalFunctions,
39
+ projectDir,
40
+ runIsolate,
41
+ }) {
30
42
  /**
31
43
  * @type {import('@netlify/edge-bundler')}
32
44
  */
@@ -87,7 +99,7 @@ class EdgeFunctionsRegistry {
87
99
  */
88
100
  this.initialScan = this.scan(directories)
89
101
 
90
- this.setupWatchers()
102
+ this.setupWatchers({ projectDir })
91
103
  }
92
104
 
93
105
  /**
@@ -283,7 +295,12 @@ class EdgeFunctionsRegistry {
283
295
  const dependencyPaths = new Map()
284
296
 
285
297
  graph.modules.forEach(({ dependencies = [], specifier }) => {
286
- const functionMatch = functionPaths.get(specifier)
298
+ if (!specifier.startsWith('file://')) {
299
+ return
300
+ }
301
+
302
+ const path = fileURLToPath(specifier)
303
+ const functionMatch = functionPaths.get(path)
287
304
 
288
305
  if (!functionMatch) {
289
306
  return
@@ -301,9 +318,10 @@ class EdgeFunctionsRegistry {
301
318
  }
302
319
 
303
320
  const { specifier: dependencyURL } = dependency.code
304
- const functions = dependencyPaths.get(dependencyURL) || []
321
+ const dependencyPath = fileURLToPath(dependencyURL)
322
+ const functions = dependencyPaths.get(dependencyPath) || []
305
323
 
306
- dependencyPaths.set(dependencyURL, [...functions, functionMatch])
324
+ dependencyPaths.set(dependencyPath, [...functions, functionMatch])
307
325
  })
308
326
  })
309
327
 
@@ -323,7 +341,7 @@ class EdgeFunctionsRegistry {
323
341
  return functions
324
342
  }
325
343
 
326
- async setupWatchers() {
344
+ async setupWatchers({ projectDir }) {
327
345
  // Creating a watcher for the config file. When it changes, we update the
328
346
  // declarations and see if we need to register or unregister any functions.
329
347
  this.configWatcher = await watchDebounced(this.configPath, {
@@ -336,8 +354,11 @@ class EdgeFunctionsRegistry {
336
354
  },
337
355
  })
338
356
 
339
- // Creating a watcher for each source directory.
340
- await Promise.all(this.directories.map((directory) => this.setupWatcherForDirectory(directory)))
357
+ // While functions are guaranteed to be inside one of the configured
358
+ // directories, they might be importing files that are located in
359
+ // parent directories. So we watch the entire project directory for
360
+ // changes.
361
+ await this.setupWatcherForDirectory(projectDir)
341
362
  }
342
363
 
343
364
  async setupWatcherForDirectory(directory) {
@@ -46,7 +46,7 @@ const readHttpsSettings = async (options) => {
46
46
  throw new Error(`Error reading certificate file: ${certError.message}`)
47
47
  }
48
48
 
49
- return { key, cert }
49
+ return { key, cert, keyFilePath: path.resolve(keyFile), certFilePath: path.resolve(certFile) }
50
50
  }
51
51
 
52
52
  const validateStringProperty = ({ devConfig, property }) => {
@@ -479,6 +479,7 @@ const startProxy = async function ({
479
479
  geolocationMode,
480
480
  getUpdatedConfig,
481
481
  offline,
482
+ projectDir,
482
483
  settings,
483
484
  state,
484
485
  })