netlify-cli 9.5.0 → 9.6.3
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/npm-shrinkwrap.json +604 -9
- package/package.json +2 -2
- package/src/commands/base-command.js +27 -0
- package/src/commands/dev/dev.js +75 -17
- package/src/commands/graph/graph-handler.js +2 -2
- package/src/functions-templates/javascript/scheduled-function/package.json +1 -1
- package/src/functions-templates/typescript/hello-world/package-lock.json +8 -8
- package/src/functions-templates/typescript/hello-world/package.json +1 -1
- package/src/functions-templates/typescript/scheduled-function/package.json +1 -1
- package/src/lib/functions/registry.js +1 -2
- package/src/lib/functions/server.js +1 -45
- package/src/lib/one-graph/cli-client.js +10 -8
- package/src/lib/one-graph/cli-netlify-graph.js +1 -2
- package/src/utils/command-helpers.js +33 -0
- package/src/lib/functions/watcher.js +0 -35
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "netlify-cli",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.6.3",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "netlify-cli",
|
|
9
|
-
"version": "9.
|
|
9
|
+
"version": "9.6.3",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"@netlify/plugin-edge-handlers": "^3.0.6",
|
|
18
18
|
"@netlify/plugins-list": "^6.11.0",
|
|
19
19
|
"@netlify/routing-local-proxy": "^0.34.1",
|
|
20
|
-
"@netlify/zip-it-and-ship-it": "^5.
|
|
20
|
+
"@netlify/zip-it-and-ship-it": "^5.8.0",
|
|
21
21
|
"@octokit/rest": "^18.0.0",
|
|
22
22
|
"@sindresorhus/slugify": "^1.1.0",
|
|
23
23
|
"ansi-escapes": "^5.0.0",
|
|
@@ -2423,6 +2423,342 @@
|
|
|
2423
2423
|
"node": "^12.20.0 || ^14.14.0 || >=16.0.0"
|
|
2424
2424
|
}
|
|
2425
2425
|
},
|
|
2426
|
+
"node_modules/@netlify/build/node_modules/@babel/parser": {
|
|
2427
|
+
"version": "7.16.8",
|
|
2428
|
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz",
|
|
2429
|
+
"integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==",
|
|
2430
|
+
"bin": {
|
|
2431
|
+
"parser": "bin/babel-parser.js"
|
|
2432
|
+
},
|
|
2433
|
+
"engines": {
|
|
2434
|
+
"node": ">=6.0.0"
|
|
2435
|
+
}
|
|
2436
|
+
},
|
|
2437
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it": {
|
|
2438
|
+
"version": "5.7.5",
|
|
2439
|
+
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.7.5.tgz",
|
|
2440
|
+
"integrity": "sha512-v3buWIrlm0+lmDwI2qHRU4t7zR3LtfU0T2JYUPGIz0D8ezsnHihj0wbBf3lMZnQmHwrqQURQYL9nQTrpwH3YoA==",
|
|
2441
|
+
"dependencies": {
|
|
2442
|
+
"@babel/parser": "7.16.8",
|
|
2443
|
+
"@netlify/esbuild": "^0.13.6",
|
|
2444
|
+
"@vercel/nft": "^0.17.0",
|
|
2445
|
+
"archiver": "^5.3.0",
|
|
2446
|
+
"common-path-prefix": "^3.0.0",
|
|
2447
|
+
"cp-file": "^9.0.0",
|
|
2448
|
+
"del": "^6.0.0",
|
|
2449
|
+
"elf-cam": "^0.1.1",
|
|
2450
|
+
"end-of-stream": "^1.4.4",
|
|
2451
|
+
"es-module-lexer": "^0.9.0",
|
|
2452
|
+
"execa": "^5.0.0",
|
|
2453
|
+
"filter-obj": "^2.0.1",
|
|
2454
|
+
"find-up": "^5.0.0",
|
|
2455
|
+
"glob": "^7.1.6",
|
|
2456
|
+
"is-builtin-module": "^3.1.0",
|
|
2457
|
+
"junk": "^3.1.0",
|
|
2458
|
+
"locate-path": "^6.0.0",
|
|
2459
|
+
"merge-options": "^3.0.4",
|
|
2460
|
+
"minimatch": "^4.0.0",
|
|
2461
|
+
"p-map": "^4.0.0",
|
|
2462
|
+
"path-exists": "^4.0.0",
|
|
2463
|
+
"pkg-dir": "^5.0.0",
|
|
2464
|
+
"precinct": "^8.2.0",
|
|
2465
|
+
"read-package-json-fast": "^2.0.2",
|
|
2466
|
+
"require-package-name": "^2.0.1",
|
|
2467
|
+
"resolve": "^2.0.0-next.1",
|
|
2468
|
+
"semver": "^7.0.0",
|
|
2469
|
+
"tmp-promise": "^3.0.2",
|
|
2470
|
+
"toml": "^3.0.0",
|
|
2471
|
+
"unixify": "^1.0.0",
|
|
2472
|
+
"yargs": "^16.0.0"
|
|
2473
|
+
},
|
|
2474
|
+
"bin": {
|
|
2475
|
+
"zip-it-and-ship-it": "dist/bin.js"
|
|
2476
|
+
},
|
|
2477
|
+
"engines": {
|
|
2478
|
+
"node": "^12.20.0 || ^14.14.0 || >=16.0.0"
|
|
2479
|
+
}
|
|
2480
|
+
},
|
|
2481
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/aggregate-error": {
|
|
2482
|
+
"version": "3.1.0",
|
|
2483
|
+
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
|
|
2484
|
+
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
|
|
2485
|
+
"dependencies": {
|
|
2486
|
+
"clean-stack": "^2.0.0",
|
|
2487
|
+
"indent-string": "^4.0.0"
|
|
2488
|
+
},
|
|
2489
|
+
"engines": {
|
|
2490
|
+
"node": ">=8"
|
|
2491
|
+
}
|
|
2492
|
+
},
|
|
2493
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/ansi-regex": {
|
|
2494
|
+
"version": "5.0.1",
|
|
2495
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
|
2496
|
+
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
|
2497
|
+
"engines": {
|
|
2498
|
+
"node": ">=8"
|
|
2499
|
+
}
|
|
2500
|
+
},
|
|
2501
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/clean-stack": {
|
|
2502
|
+
"version": "2.2.0",
|
|
2503
|
+
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
|
|
2504
|
+
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
|
|
2505
|
+
"engines": {
|
|
2506
|
+
"node": ">=6"
|
|
2507
|
+
}
|
|
2508
|
+
},
|
|
2509
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/emoji-regex": {
|
|
2510
|
+
"version": "8.0.0",
|
|
2511
|
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
|
2512
|
+
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
|
2513
|
+
},
|
|
2514
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/execa": {
|
|
2515
|
+
"version": "5.1.1",
|
|
2516
|
+
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
|
|
2517
|
+
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
|
|
2518
|
+
"dependencies": {
|
|
2519
|
+
"cross-spawn": "^7.0.3",
|
|
2520
|
+
"get-stream": "^6.0.0",
|
|
2521
|
+
"human-signals": "^2.1.0",
|
|
2522
|
+
"is-stream": "^2.0.0",
|
|
2523
|
+
"merge-stream": "^2.0.0",
|
|
2524
|
+
"npm-run-path": "^4.0.1",
|
|
2525
|
+
"onetime": "^5.1.2",
|
|
2526
|
+
"signal-exit": "^3.0.3",
|
|
2527
|
+
"strip-final-newline": "^2.0.0"
|
|
2528
|
+
},
|
|
2529
|
+
"engines": {
|
|
2530
|
+
"node": ">=10"
|
|
2531
|
+
},
|
|
2532
|
+
"funding": {
|
|
2533
|
+
"url": "https://github.com/sindresorhus/execa?sponsor=1"
|
|
2534
|
+
}
|
|
2535
|
+
},
|
|
2536
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/filter-obj": {
|
|
2537
|
+
"version": "2.0.2",
|
|
2538
|
+
"resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz",
|
|
2539
|
+
"integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg==",
|
|
2540
|
+
"engines": {
|
|
2541
|
+
"node": ">=8"
|
|
2542
|
+
}
|
|
2543
|
+
},
|
|
2544
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/find-up": {
|
|
2545
|
+
"version": "5.0.0",
|
|
2546
|
+
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
|
2547
|
+
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
|
2548
|
+
"dependencies": {
|
|
2549
|
+
"locate-path": "^6.0.0",
|
|
2550
|
+
"path-exists": "^4.0.0"
|
|
2551
|
+
},
|
|
2552
|
+
"engines": {
|
|
2553
|
+
"node": ">=10"
|
|
2554
|
+
},
|
|
2555
|
+
"funding": {
|
|
2556
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2557
|
+
}
|
|
2558
|
+
},
|
|
2559
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/human-signals": {
|
|
2560
|
+
"version": "2.1.0",
|
|
2561
|
+
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
|
2562
|
+
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
|
2563
|
+
"engines": {
|
|
2564
|
+
"node": ">=10.17.0"
|
|
2565
|
+
}
|
|
2566
|
+
},
|
|
2567
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/indent-string": {
|
|
2568
|
+
"version": "4.0.0",
|
|
2569
|
+
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
|
2570
|
+
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
|
|
2571
|
+
"engines": {
|
|
2572
|
+
"node": ">=8"
|
|
2573
|
+
}
|
|
2574
|
+
},
|
|
2575
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/is-stream": {
|
|
2576
|
+
"version": "2.0.1",
|
|
2577
|
+
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
|
2578
|
+
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
|
2579
|
+
"engines": {
|
|
2580
|
+
"node": ">=8"
|
|
2581
|
+
},
|
|
2582
|
+
"funding": {
|
|
2583
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2584
|
+
}
|
|
2585
|
+
},
|
|
2586
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/locate-path": {
|
|
2587
|
+
"version": "6.0.0",
|
|
2588
|
+
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
|
2589
|
+
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
|
2590
|
+
"dependencies": {
|
|
2591
|
+
"p-locate": "^5.0.0"
|
|
2592
|
+
},
|
|
2593
|
+
"engines": {
|
|
2594
|
+
"node": ">=10"
|
|
2595
|
+
},
|
|
2596
|
+
"funding": {
|
|
2597
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2598
|
+
}
|
|
2599
|
+
},
|
|
2600
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/mimic-fn": {
|
|
2601
|
+
"version": "2.1.0",
|
|
2602
|
+
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
|
2603
|
+
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
|
|
2604
|
+
"engines": {
|
|
2605
|
+
"node": ">=6"
|
|
2606
|
+
}
|
|
2607
|
+
},
|
|
2608
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/npm-run-path": {
|
|
2609
|
+
"version": "4.0.1",
|
|
2610
|
+
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
|
2611
|
+
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
|
|
2612
|
+
"dependencies": {
|
|
2613
|
+
"path-key": "^3.0.0"
|
|
2614
|
+
},
|
|
2615
|
+
"engines": {
|
|
2616
|
+
"node": ">=8"
|
|
2617
|
+
}
|
|
2618
|
+
},
|
|
2619
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/onetime": {
|
|
2620
|
+
"version": "5.1.2",
|
|
2621
|
+
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
|
2622
|
+
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
|
2623
|
+
"dependencies": {
|
|
2624
|
+
"mimic-fn": "^2.1.0"
|
|
2625
|
+
},
|
|
2626
|
+
"engines": {
|
|
2627
|
+
"node": ">=6"
|
|
2628
|
+
},
|
|
2629
|
+
"funding": {
|
|
2630
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2631
|
+
}
|
|
2632
|
+
},
|
|
2633
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/p-limit": {
|
|
2634
|
+
"version": "3.1.0",
|
|
2635
|
+
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
|
2636
|
+
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
|
2637
|
+
"dependencies": {
|
|
2638
|
+
"yocto-queue": "^0.1.0"
|
|
2639
|
+
},
|
|
2640
|
+
"engines": {
|
|
2641
|
+
"node": ">=10"
|
|
2642
|
+
},
|
|
2643
|
+
"funding": {
|
|
2644
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2645
|
+
}
|
|
2646
|
+
},
|
|
2647
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/p-locate": {
|
|
2648
|
+
"version": "5.0.0",
|
|
2649
|
+
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
|
|
2650
|
+
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
|
2651
|
+
"dependencies": {
|
|
2652
|
+
"p-limit": "^3.0.2"
|
|
2653
|
+
},
|
|
2654
|
+
"engines": {
|
|
2655
|
+
"node": ">=10"
|
|
2656
|
+
},
|
|
2657
|
+
"funding": {
|
|
2658
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2659
|
+
}
|
|
2660
|
+
},
|
|
2661
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/p-map": {
|
|
2662
|
+
"version": "4.0.0",
|
|
2663
|
+
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
|
|
2664
|
+
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
|
|
2665
|
+
"dependencies": {
|
|
2666
|
+
"aggregate-error": "^3.0.0"
|
|
2667
|
+
},
|
|
2668
|
+
"engines": {
|
|
2669
|
+
"node": ">=10"
|
|
2670
|
+
},
|
|
2671
|
+
"funding": {
|
|
2672
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2673
|
+
}
|
|
2674
|
+
},
|
|
2675
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/path-exists": {
|
|
2676
|
+
"version": "4.0.0",
|
|
2677
|
+
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
2678
|
+
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
|
|
2679
|
+
"engines": {
|
|
2680
|
+
"node": ">=8"
|
|
2681
|
+
}
|
|
2682
|
+
},
|
|
2683
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/path-key": {
|
|
2684
|
+
"version": "3.1.1",
|
|
2685
|
+
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
|
2686
|
+
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
|
|
2687
|
+
"engines": {
|
|
2688
|
+
"node": ">=8"
|
|
2689
|
+
}
|
|
2690
|
+
},
|
|
2691
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/pkg-dir": {
|
|
2692
|
+
"version": "5.0.0",
|
|
2693
|
+
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
|
|
2694
|
+
"integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
|
|
2695
|
+
"dependencies": {
|
|
2696
|
+
"find-up": "^5.0.0"
|
|
2697
|
+
},
|
|
2698
|
+
"engines": {
|
|
2699
|
+
"node": ">=10"
|
|
2700
|
+
}
|
|
2701
|
+
},
|
|
2702
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/string-width": {
|
|
2703
|
+
"version": "4.2.3",
|
|
2704
|
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
|
2705
|
+
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
|
2706
|
+
"dependencies": {
|
|
2707
|
+
"emoji-regex": "^8.0.0",
|
|
2708
|
+
"is-fullwidth-code-point": "^3.0.0",
|
|
2709
|
+
"strip-ansi": "^6.0.1"
|
|
2710
|
+
},
|
|
2711
|
+
"engines": {
|
|
2712
|
+
"node": ">=8"
|
|
2713
|
+
}
|
|
2714
|
+
},
|
|
2715
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/strip-ansi": {
|
|
2716
|
+
"version": "6.0.1",
|
|
2717
|
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
2718
|
+
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
|
2719
|
+
"dependencies": {
|
|
2720
|
+
"ansi-regex": "^5.0.1"
|
|
2721
|
+
},
|
|
2722
|
+
"engines": {
|
|
2723
|
+
"node": ">=8"
|
|
2724
|
+
}
|
|
2725
|
+
},
|
|
2726
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/strip-final-newline": {
|
|
2727
|
+
"version": "2.0.0",
|
|
2728
|
+
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
|
|
2729
|
+
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
|
|
2730
|
+
"engines": {
|
|
2731
|
+
"node": ">=6"
|
|
2732
|
+
}
|
|
2733
|
+
},
|
|
2734
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/yargs": {
|
|
2735
|
+
"version": "16.2.0",
|
|
2736
|
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
|
|
2737
|
+
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
|
|
2738
|
+
"dependencies": {
|
|
2739
|
+
"cliui": "^7.0.2",
|
|
2740
|
+
"escalade": "^3.1.1",
|
|
2741
|
+
"get-caller-file": "^2.0.5",
|
|
2742
|
+
"require-directory": "^2.1.1",
|
|
2743
|
+
"string-width": "^4.2.0",
|
|
2744
|
+
"y18n": "^5.0.5",
|
|
2745
|
+
"yargs-parser": "^20.2.2"
|
|
2746
|
+
},
|
|
2747
|
+
"engines": {
|
|
2748
|
+
"node": ">=10"
|
|
2749
|
+
}
|
|
2750
|
+
},
|
|
2751
|
+
"node_modules/@netlify/build/node_modules/@netlify/zip-it-and-ship-it/node_modules/yocto-queue": {
|
|
2752
|
+
"version": "0.1.0",
|
|
2753
|
+
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
|
2754
|
+
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
|
|
2755
|
+
"engines": {
|
|
2756
|
+
"node": ">=10"
|
|
2757
|
+
},
|
|
2758
|
+
"funding": {
|
|
2759
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
2760
|
+
}
|
|
2761
|
+
},
|
|
2426
2762
|
"node_modules/@netlify/build/node_modules/@sindresorhus/is": {
|
|
2427
2763
|
"version": "2.1.1",
|
|
2428
2764
|
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz",
|
|
@@ -2689,6 +3025,14 @@
|
|
|
2689
3025
|
"url": "https://github.com/sponsors/sindresorhus"
|
|
2690
3026
|
}
|
|
2691
3027
|
},
|
|
3028
|
+
"node_modules/@netlify/build/node_modules/is-fullwidth-code-point": {
|
|
3029
|
+
"version": "3.0.0",
|
|
3030
|
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
|
3031
|
+
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
|
3032
|
+
"engines": {
|
|
3033
|
+
"node": ">=8"
|
|
3034
|
+
}
|
|
3035
|
+
},
|
|
2692
3036
|
"node_modules/@netlify/build/node_modules/is-plain-obj": {
|
|
2693
3037
|
"version": "4.0.0",
|
|
2694
3038
|
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz",
|
|
@@ -2758,6 +3102,17 @@
|
|
|
2758
3102
|
"url": "https://github.com/sponsors/sindresorhus"
|
|
2759
3103
|
}
|
|
2760
3104
|
},
|
|
3105
|
+
"node_modules/@netlify/build/node_modules/minimatch": {
|
|
3106
|
+
"version": "4.1.1",
|
|
3107
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.1.1.tgz",
|
|
3108
|
+
"integrity": "sha512-9ObkVPP8aM2KWHw1RMAaOoEzHjcqzE1dmEQHAOq9ySRhvVMru1VKqniUs/g6Us4KSwXKk0+uLko6caynDcWEWQ==",
|
|
3109
|
+
"dependencies": {
|
|
3110
|
+
"brace-expansion": "^1.1.7"
|
|
3111
|
+
},
|
|
3112
|
+
"engines": {
|
|
3113
|
+
"node": ">=10"
|
|
3114
|
+
}
|
|
3115
|
+
},
|
|
2761
3116
|
"node_modules/@netlify/build/node_modules/npm-run-path": {
|
|
2762
3117
|
"version": "5.1.0",
|
|
2763
3118
|
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
|
|
@@ -4301,9 +4656,9 @@
|
|
|
4301
4656
|
}
|
|
4302
4657
|
},
|
|
4303
4658
|
"node_modules/@netlify/zip-it-and-ship-it": {
|
|
4304
|
-
"version": "5.
|
|
4305
|
-
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.
|
|
4306
|
-
"integrity": "sha512-
|
|
4659
|
+
"version": "5.8.0",
|
|
4660
|
+
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.8.0.tgz",
|
|
4661
|
+
"integrity": "sha512-Tr6/x19us7xCuHHHdZxKzAyR2jPLBCgHwmNvRsv1WWyptElm+srd0Xku5RzK1P/FdOySkub2d5iy+NHeSrbLLQ==",
|
|
4307
4662
|
"dependencies": {
|
|
4308
4663
|
"@babel/parser": "7.16.8",
|
|
4309
4664
|
"@netlify/esbuild": "^0.13.6",
|
|
@@ -25555,6 +25910,233 @@
|
|
|
25555
25910
|
"yargs": "^17.3.1"
|
|
25556
25911
|
},
|
|
25557
25912
|
"dependencies": {
|
|
25913
|
+
"@babel/parser": {
|
|
25914
|
+
"version": "7.16.8",
|
|
25915
|
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz",
|
|
25916
|
+
"integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw=="
|
|
25917
|
+
},
|
|
25918
|
+
"@netlify/zip-it-and-ship-it": {
|
|
25919
|
+
"version": "5.7.5",
|
|
25920
|
+
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.7.5.tgz",
|
|
25921
|
+
"integrity": "sha512-v3buWIrlm0+lmDwI2qHRU4t7zR3LtfU0T2JYUPGIz0D8ezsnHihj0wbBf3lMZnQmHwrqQURQYL9nQTrpwH3YoA==",
|
|
25922
|
+
"requires": {
|
|
25923
|
+
"@babel/parser": "7.16.8",
|
|
25924
|
+
"@netlify/esbuild": "^0.13.6",
|
|
25925
|
+
"@vercel/nft": "^0.17.0",
|
|
25926
|
+
"archiver": "^5.3.0",
|
|
25927
|
+
"common-path-prefix": "^3.0.0",
|
|
25928
|
+
"cp-file": "^9.0.0",
|
|
25929
|
+
"del": "^6.0.0",
|
|
25930
|
+
"elf-cam": "^0.1.1",
|
|
25931
|
+
"end-of-stream": "^1.4.4",
|
|
25932
|
+
"es-module-lexer": "^0.9.0",
|
|
25933
|
+
"execa": "^5.0.0",
|
|
25934
|
+
"filter-obj": "^2.0.1",
|
|
25935
|
+
"find-up": "^5.0.0",
|
|
25936
|
+
"glob": "^7.1.6",
|
|
25937
|
+
"is-builtin-module": "^3.1.0",
|
|
25938
|
+
"junk": "^3.1.0",
|
|
25939
|
+
"locate-path": "^6.0.0",
|
|
25940
|
+
"merge-options": "^3.0.4",
|
|
25941
|
+
"minimatch": "^4.0.0",
|
|
25942
|
+
"p-map": "^4.0.0",
|
|
25943
|
+
"path-exists": "^4.0.0",
|
|
25944
|
+
"pkg-dir": "^5.0.0",
|
|
25945
|
+
"precinct": "^8.2.0",
|
|
25946
|
+
"read-package-json-fast": "^2.0.2",
|
|
25947
|
+
"require-package-name": "^2.0.1",
|
|
25948
|
+
"resolve": "^2.0.0-next.1",
|
|
25949
|
+
"semver": "^7.0.0",
|
|
25950
|
+
"tmp-promise": "^3.0.2",
|
|
25951
|
+
"toml": "^3.0.0",
|
|
25952
|
+
"unixify": "^1.0.0",
|
|
25953
|
+
"yargs": "^16.0.0"
|
|
25954
|
+
},
|
|
25955
|
+
"dependencies": {
|
|
25956
|
+
"aggregate-error": {
|
|
25957
|
+
"version": "3.1.0",
|
|
25958
|
+
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
|
|
25959
|
+
"integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
|
|
25960
|
+
"requires": {
|
|
25961
|
+
"clean-stack": "^2.0.0",
|
|
25962
|
+
"indent-string": "^4.0.0"
|
|
25963
|
+
}
|
|
25964
|
+
},
|
|
25965
|
+
"ansi-regex": {
|
|
25966
|
+
"version": "5.0.1",
|
|
25967
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
|
25968
|
+
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
|
|
25969
|
+
},
|
|
25970
|
+
"clean-stack": {
|
|
25971
|
+
"version": "2.2.0",
|
|
25972
|
+
"resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
|
|
25973
|
+
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="
|
|
25974
|
+
},
|
|
25975
|
+
"emoji-regex": {
|
|
25976
|
+
"version": "8.0.0",
|
|
25977
|
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
|
25978
|
+
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
|
|
25979
|
+
},
|
|
25980
|
+
"execa": {
|
|
25981
|
+
"version": "5.1.1",
|
|
25982
|
+
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
|
|
25983
|
+
"integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
|
|
25984
|
+
"requires": {
|
|
25985
|
+
"cross-spawn": "^7.0.3",
|
|
25986
|
+
"get-stream": "^6.0.0",
|
|
25987
|
+
"human-signals": "^2.1.0",
|
|
25988
|
+
"is-stream": "^2.0.0",
|
|
25989
|
+
"merge-stream": "^2.0.0",
|
|
25990
|
+
"npm-run-path": "^4.0.1",
|
|
25991
|
+
"onetime": "^5.1.2",
|
|
25992
|
+
"signal-exit": "^3.0.3",
|
|
25993
|
+
"strip-final-newline": "^2.0.0"
|
|
25994
|
+
}
|
|
25995
|
+
},
|
|
25996
|
+
"filter-obj": {
|
|
25997
|
+
"version": "2.0.2",
|
|
25998
|
+
"resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-2.0.2.tgz",
|
|
25999
|
+
"integrity": "sha512-lO3ttPjHZRfjMcxWKb1j1eDhTFsu4meeR3lnMcnBFhk6RuLhvEiuALu2TlfL310ph4lCYYwgF/ElIjdP739tdg=="
|
|
26000
|
+
},
|
|
26001
|
+
"find-up": {
|
|
26002
|
+
"version": "5.0.0",
|
|
26003
|
+
"resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
|
|
26004
|
+
"integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
|
|
26005
|
+
"requires": {
|
|
26006
|
+
"locate-path": "^6.0.0",
|
|
26007
|
+
"path-exists": "^4.0.0"
|
|
26008
|
+
}
|
|
26009
|
+
},
|
|
26010
|
+
"human-signals": {
|
|
26011
|
+
"version": "2.1.0",
|
|
26012
|
+
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
|
26013
|
+
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
|
|
26014
|
+
},
|
|
26015
|
+
"indent-string": {
|
|
26016
|
+
"version": "4.0.0",
|
|
26017
|
+
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
|
|
26018
|
+
"integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg=="
|
|
26019
|
+
},
|
|
26020
|
+
"is-stream": {
|
|
26021
|
+
"version": "2.0.1",
|
|
26022
|
+
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
|
26023
|
+
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="
|
|
26024
|
+
},
|
|
26025
|
+
"locate-path": {
|
|
26026
|
+
"version": "6.0.0",
|
|
26027
|
+
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
|
26028
|
+
"integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
|
|
26029
|
+
"requires": {
|
|
26030
|
+
"p-locate": "^5.0.0"
|
|
26031
|
+
}
|
|
26032
|
+
},
|
|
26033
|
+
"mimic-fn": {
|
|
26034
|
+
"version": "2.1.0",
|
|
26035
|
+
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
|
26036
|
+
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
|
|
26037
|
+
},
|
|
26038
|
+
"npm-run-path": {
|
|
26039
|
+
"version": "4.0.1",
|
|
26040
|
+
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
|
|
26041
|
+
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
|
|
26042
|
+
"requires": {
|
|
26043
|
+
"path-key": "^3.0.0"
|
|
26044
|
+
}
|
|
26045
|
+
},
|
|
26046
|
+
"onetime": {
|
|
26047
|
+
"version": "5.1.2",
|
|
26048
|
+
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
|
|
26049
|
+
"integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
|
|
26050
|
+
"requires": {
|
|
26051
|
+
"mimic-fn": "^2.1.0"
|
|
26052
|
+
}
|
|
26053
|
+
},
|
|
26054
|
+
"p-limit": {
|
|
26055
|
+
"version": "3.1.0",
|
|
26056
|
+
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
|
|
26057
|
+
"integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
|
|
26058
|
+
"requires": {
|
|
26059
|
+
"yocto-queue": "^0.1.0"
|
|
26060
|
+
}
|
|
26061
|
+
},
|
|
26062
|
+
"p-locate": {
|
|
26063
|
+
"version": "5.0.0",
|
|
26064
|
+
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
|
|
26065
|
+
"integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
|
|
26066
|
+
"requires": {
|
|
26067
|
+
"p-limit": "^3.0.2"
|
|
26068
|
+
}
|
|
26069
|
+
},
|
|
26070
|
+
"p-map": {
|
|
26071
|
+
"version": "4.0.0",
|
|
26072
|
+
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
|
|
26073
|
+
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
|
|
26074
|
+
"requires": {
|
|
26075
|
+
"aggregate-error": "^3.0.0"
|
|
26076
|
+
}
|
|
26077
|
+
},
|
|
26078
|
+
"path-exists": {
|
|
26079
|
+
"version": "4.0.0",
|
|
26080
|
+
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
26081
|
+
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
|
26082
|
+
},
|
|
26083
|
+
"path-key": {
|
|
26084
|
+
"version": "3.1.1",
|
|
26085
|
+
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
|
|
26086
|
+
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
|
|
26087
|
+
},
|
|
26088
|
+
"pkg-dir": {
|
|
26089
|
+
"version": "5.0.0",
|
|
26090
|
+
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz",
|
|
26091
|
+
"integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==",
|
|
26092
|
+
"requires": {
|
|
26093
|
+
"find-up": "^5.0.0"
|
|
26094
|
+
}
|
|
26095
|
+
},
|
|
26096
|
+
"string-width": {
|
|
26097
|
+
"version": "4.2.3",
|
|
26098
|
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
|
26099
|
+
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
|
26100
|
+
"requires": {
|
|
26101
|
+
"emoji-regex": "^8.0.0",
|
|
26102
|
+
"is-fullwidth-code-point": "^3.0.0",
|
|
26103
|
+
"strip-ansi": "^6.0.1"
|
|
26104
|
+
}
|
|
26105
|
+
},
|
|
26106
|
+
"strip-ansi": {
|
|
26107
|
+
"version": "6.0.1",
|
|
26108
|
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
26109
|
+
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
|
26110
|
+
"requires": {
|
|
26111
|
+
"ansi-regex": "^5.0.1"
|
|
26112
|
+
}
|
|
26113
|
+
},
|
|
26114
|
+
"strip-final-newline": {
|
|
26115
|
+
"version": "2.0.0",
|
|
26116
|
+
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
|
|
26117
|
+
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
|
|
26118
|
+
},
|
|
26119
|
+
"yargs": {
|
|
26120
|
+
"version": "16.2.0",
|
|
26121
|
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
|
|
26122
|
+
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
|
|
26123
|
+
"requires": {
|
|
26124
|
+
"cliui": "^7.0.2",
|
|
26125
|
+
"escalade": "^3.1.1",
|
|
26126
|
+
"get-caller-file": "^2.0.5",
|
|
26127
|
+
"require-directory": "^2.1.1",
|
|
26128
|
+
"string-width": "^4.2.0",
|
|
26129
|
+
"y18n": "^5.0.5",
|
|
26130
|
+
"yargs-parser": "^20.2.2"
|
|
26131
|
+
}
|
|
26132
|
+
},
|
|
26133
|
+
"yocto-queue": {
|
|
26134
|
+
"version": "0.1.0",
|
|
26135
|
+
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
|
|
26136
|
+
"integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
|
|
26137
|
+
}
|
|
26138
|
+
}
|
|
26139
|
+
},
|
|
25558
26140
|
"@sindresorhus/is": {
|
|
25559
26141
|
"version": "2.1.1",
|
|
25560
26142
|
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz",
|
|
@@ -25721,6 +26303,11 @@
|
|
|
25721
26303
|
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz",
|
|
25722
26304
|
"integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg=="
|
|
25723
26305
|
},
|
|
26306
|
+
"is-fullwidth-code-point": {
|
|
26307
|
+
"version": "3.0.0",
|
|
26308
|
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
|
26309
|
+
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
|
|
26310
|
+
},
|
|
25724
26311
|
"is-plain-obj": {
|
|
25725
26312
|
"version": "4.0.0",
|
|
25726
26313
|
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz",
|
|
@@ -25754,6 +26341,14 @@
|
|
|
25754
26341
|
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz",
|
|
25755
26342
|
"integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA=="
|
|
25756
26343
|
},
|
|
26344
|
+
"minimatch": {
|
|
26345
|
+
"version": "4.1.1",
|
|
26346
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.1.1.tgz",
|
|
26347
|
+
"integrity": "sha512-9ObkVPP8aM2KWHw1RMAaOoEzHjcqzE1dmEQHAOq9ySRhvVMru1VKqniUs/g6Us4KSwXKk0+uLko6caynDcWEWQ==",
|
|
26348
|
+
"requires": {
|
|
26349
|
+
"brace-expansion": "^1.1.7"
|
|
26350
|
+
}
|
|
26351
|
+
},
|
|
25757
26352
|
"npm-run-path": {
|
|
25758
26353
|
"version": "5.1.0",
|
|
25759
26354
|
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz",
|
|
@@ -26688,9 +27283,9 @@
|
|
|
26688
27283
|
}
|
|
26689
27284
|
},
|
|
26690
27285
|
"@netlify/zip-it-and-ship-it": {
|
|
26691
|
-
"version": "5.
|
|
26692
|
-
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.
|
|
26693
|
-
"integrity": "sha512-
|
|
27286
|
+
"version": "5.8.0",
|
|
27287
|
+
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.8.0.tgz",
|
|
27288
|
+
"integrity": "sha512-Tr6/x19us7xCuHHHdZxKzAyR2jPLBCgHwmNvRsv1WWyptElm+srd0Xku5RzK1P/FdOySkub2d5iy+NHeSrbLLQ==",
|
|
26694
27289
|
"requires": {
|
|
26695
27290
|
"@babel/parser": "7.16.8",
|
|
26696
27291
|
"@netlify/esbuild": "^0.13.6",
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "netlify-cli",
|
|
3
3
|
"description": "Netlify command line tool",
|
|
4
|
-
"version": "9.
|
|
4
|
+
"version": "9.6.3",
|
|
5
5
|
"author": "Netlify Inc.",
|
|
6
6
|
"contributors": [
|
|
7
7
|
"Abraham Schilling <AbrahamSchilling@gmail.com> (https://gitlab.com/n4bb12)",
|
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
"@netlify/plugin-edge-handlers": "^3.0.6",
|
|
207
207
|
"@netlify/plugins-list": "^6.11.0",
|
|
208
208
|
"@netlify/routing-local-proxy": "^0.34.1",
|
|
209
|
-
"@netlify/zip-it-and-ship-it": "^5.
|
|
209
|
+
"@netlify/zip-it-and-ship-it": "^5.8.0",
|
|
210
210
|
"@octokit/rest": "^18.0.0",
|
|
211
211
|
"@sindresorhus/slugify": "^1.1.0",
|
|
212
212
|
"ansi-escapes": "^5.0.0",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// @ts-check
|
|
2
|
+
const events = require('events')
|
|
2
3
|
const process = require('process')
|
|
3
4
|
const { format } = require('util')
|
|
4
5
|
|
|
@@ -28,6 +29,7 @@ const {
|
|
|
28
29
|
pollForToken,
|
|
29
30
|
sortOptions,
|
|
30
31
|
track,
|
|
32
|
+
watchDebounced,
|
|
31
33
|
} = require('../utils')
|
|
32
34
|
|
|
33
35
|
// Netlify CLI client id. Lives in bot@netlify.com
|
|
@@ -119,6 +121,11 @@ class BaseCommand extends Command {
|
|
|
119
121
|
await this.init(actionCommand)
|
|
120
122
|
debug(`${name}:preAction`)('end')
|
|
121
123
|
})
|
|
124
|
+
.hook('postAction', async () => {
|
|
125
|
+
if (this.configWatcherHandle) {
|
|
126
|
+
await this.configWatcherHandle.close()
|
|
127
|
+
}
|
|
128
|
+
})
|
|
122
129
|
)
|
|
123
130
|
}
|
|
124
131
|
|
|
@@ -430,6 +437,24 @@ class BaseCommand extends Command {
|
|
|
430
437
|
const globalConfig = await getGlobalConfig()
|
|
431
438
|
const { NetlifyAPI } = await jsClient
|
|
432
439
|
|
|
440
|
+
const configWatcher = new events.EventEmitter()
|
|
441
|
+
|
|
442
|
+
// Only set up a watcher if we know the config path.
|
|
443
|
+
if (configPath) {
|
|
444
|
+
const configWatcherHandle = await watchDebounced(configPath, {
|
|
445
|
+
depth: 1,
|
|
446
|
+
onChange: async () => {
|
|
447
|
+
const { config: newConfig } = await actionCommand.getConfig({ cwd, state, token, ...apiUrlOpts })
|
|
448
|
+
|
|
449
|
+
const normalizedNewConfig = normalizeConfig(newConfig)
|
|
450
|
+
configWatcher.emit('change', normalizedNewConfig)
|
|
451
|
+
},
|
|
452
|
+
})
|
|
453
|
+
|
|
454
|
+
// chokidar handler
|
|
455
|
+
this.configWatcherHandle = configWatcherHandle
|
|
456
|
+
}
|
|
457
|
+
|
|
433
458
|
actionCommand.netlify = {
|
|
434
459
|
// api methods
|
|
435
460
|
api: new NetlifyAPI(token || '', apiOpts),
|
|
@@ -455,6 +480,8 @@ class BaseCommand extends Command {
|
|
|
455
480
|
globalConfig,
|
|
456
481
|
// state of current site dir
|
|
457
482
|
state,
|
|
483
|
+
// netlify.toml file watcher
|
|
484
|
+
configWatcher,
|
|
458
485
|
}
|
|
459
486
|
debug(`${this.name()}:init`)('end')
|
|
460
487
|
}
|
package/src/commands/dev/dev.js
CHANGED
|
@@ -33,6 +33,7 @@ const {
|
|
|
33
33
|
detectServerSettings,
|
|
34
34
|
error,
|
|
35
35
|
exit,
|
|
36
|
+
generateNetlifyGraphJWT,
|
|
36
37
|
getSiteInformation,
|
|
37
38
|
injectEnvVariables,
|
|
38
39
|
log,
|
|
@@ -262,6 +263,44 @@ const printBanner = ({ url }) => {
|
|
|
262
263
|
)
|
|
263
264
|
}
|
|
264
265
|
|
|
266
|
+
const startPollingForAPIAuthentication = async function (options) {
|
|
267
|
+
const { api, command, config, site, siteInfo } = options
|
|
268
|
+
const frequency = 5000
|
|
269
|
+
|
|
270
|
+
const helper = async (maybeSiteData) => {
|
|
271
|
+
const siteData = await (maybeSiteData || api.getSite({ siteId: site.id }))
|
|
272
|
+
const authlifyTokenId = siteData && siteData.authlify_token_id
|
|
273
|
+
|
|
274
|
+
const existingAuthlifyTokenId = config && config.netlifyGraphConfig && config.netlifyGraphConfig.authlifyTokenId
|
|
275
|
+
if (authlifyTokenId && authlifyTokenId !== existingAuthlifyTokenId) {
|
|
276
|
+
const netlifyToken = await command.authenticate()
|
|
277
|
+
// Only inject the authlify config if a token ID exists. This prevents
|
|
278
|
+
// calling command.authenticate() (which opens a browser window) if the
|
|
279
|
+
// user hasn't enabled API Authentication
|
|
280
|
+
const netlifyGraphConfig = {
|
|
281
|
+
netlifyToken,
|
|
282
|
+
authlifyTokenId: siteData.authlify_token_id,
|
|
283
|
+
siteId: site.id,
|
|
284
|
+
}
|
|
285
|
+
config.netlifyGraphConfig = netlifyGraphConfig
|
|
286
|
+
|
|
287
|
+
const netlifyGraphJWT = generateNetlifyGraphJWT(netlifyGraphConfig)
|
|
288
|
+
|
|
289
|
+
if (netlifyGraphJWT != null) {
|
|
290
|
+
// XXX(anmonteiro): this name is deprecated. Delete after 3/31/2022
|
|
291
|
+
process.env.ONEGRAPH_AUTHLIFY_TOKEN = netlifyGraphJWT
|
|
292
|
+
process.env.NETLIFY_GRAPH_TOKEN = netlifyGraphJWT
|
|
293
|
+
}
|
|
294
|
+
} else {
|
|
295
|
+
delete config.netlifyGraphConfig
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
setTimeout(helper, frequency)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
await helper(siteInfo)
|
|
302
|
+
}
|
|
303
|
+
|
|
265
304
|
/**
|
|
266
305
|
* The dev command
|
|
267
306
|
* @param {import('commander').OptionValues} options
|
|
@@ -287,7 +326,6 @@ const dev = async (options, command) => {
|
|
|
287
326
|
)
|
|
288
327
|
}
|
|
289
328
|
|
|
290
|
-
const startNetlifyGraphWatcher = Boolean(options.graph)
|
|
291
329
|
await injectEnvVariables({ env: command.netlify.cachedConfig.env, site })
|
|
292
330
|
|
|
293
331
|
const { addonsUrls, capabilities, siteUrl, timeouts } = await getSiteInformation({
|
|
@@ -309,11 +347,15 @@ const dev = async (options, command) => {
|
|
|
309
347
|
|
|
310
348
|
command.setAnalyticsPayload({ projectType: settings.framework || 'custom', live: options.live })
|
|
311
349
|
|
|
350
|
+
const startNetlifyGraphWatcher = Boolean(options.graph)
|
|
351
|
+
if (startNetlifyGraphWatcher) {
|
|
352
|
+
startPollingForAPIAuthentication({ api, command, config, site, siteInfo })
|
|
353
|
+
}
|
|
354
|
+
|
|
312
355
|
await startFunctionsServer({
|
|
313
356
|
api,
|
|
314
357
|
command,
|
|
315
358
|
config,
|
|
316
|
-
isGraphEnabled: startNetlifyGraphWatcher,
|
|
317
359
|
settings,
|
|
318
360
|
site,
|
|
319
361
|
siteInfo,
|
|
@@ -346,28 +388,44 @@ const dev = async (options, command) => {
|
|
|
346
388
|
} else if (startNetlifyGraphWatcher) {
|
|
347
389
|
const netlifyToken = await command.authenticate()
|
|
348
390
|
await OneGraphCliClient.ensureAppForSite(netlifyToken, site.id)
|
|
349
|
-
const netlifyGraphConfig = await getNetlifyGraphConfig({ command, options, settings })
|
|
350
391
|
|
|
351
|
-
let
|
|
392
|
+
let stopWatchingCLISessions
|
|
352
393
|
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
}
|
|
394
|
+
const createOrResumeSession = async function () {
|
|
395
|
+
const netlifyGraphConfig = await getNetlifyGraphConfig({ command, options, settings })
|
|
356
396
|
|
|
357
|
-
|
|
397
|
+
let graphqlDocument = readGraphQLOperationsSourceFile(netlifyGraphConfig)
|
|
358
398
|
|
|
359
|
-
|
|
360
|
-
|
|
399
|
+
if (!graphqlDocument || graphqlDocument.trim().length === 0) {
|
|
400
|
+
graphqlDocument = defaultExampleOperationsDoc
|
|
401
|
+
}
|
|
361
402
|
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
oneGraphSessionId
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
403
|
+
stopWatchingCLISessions = await startOneGraphCLISession({ netlifyGraphConfig, netlifyToken, site, state })
|
|
404
|
+
|
|
405
|
+
// Should be created by startOneGraphCLISession
|
|
406
|
+
const oneGraphSessionId = loadCLISession(state)
|
|
407
|
+
|
|
408
|
+
await persistNewOperationsDocForSession({
|
|
409
|
+
netlifyGraphConfig,
|
|
410
|
+
netlifyToken,
|
|
411
|
+
oneGraphSessionId,
|
|
412
|
+
operationsDoc: graphqlDocument,
|
|
413
|
+
siteId: site.id,
|
|
414
|
+
siteRoot: site.root,
|
|
415
|
+
})
|
|
416
|
+
|
|
417
|
+
return oneGraphSessionId
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
//
|
|
421
|
+
// Set up a handler for config changes.
|
|
422
|
+
command.netlify.configWatcher.on('change', (newConfig) => {
|
|
423
|
+
command.netlify.config = newConfig
|
|
424
|
+
stopWatchingCLISessions()
|
|
425
|
+
createOrResumeSession()
|
|
369
426
|
})
|
|
370
427
|
|
|
428
|
+
const oneGraphSessionId = await createOrResumeSession()
|
|
371
429
|
const cleanupSession = () => markCliSessionInactive({ netlifyToken, sessionId: oneGraphSessionId, siteId: site.id })
|
|
372
430
|
|
|
373
431
|
cleanupWork.push(cleanupSession)
|
|
@@ -39,8 +39,8 @@ const graphHandler = async (userOperationName, options, command) => {
|
|
|
39
39
|
error(`Failed to parse Netlify GraphQL schema`)
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
let operationName
|
|
43
|
-
if (!
|
|
42
|
+
let operationName = userOperationName
|
|
43
|
+
if (!operationName) {
|
|
44
44
|
try {
|
|
45
45
|
let currentOperationsDoc = readGraphQLOperationsSourceFile(netlifyGraphConfig)
|
|
46
46
|
if (currentOperationsDoc.trim().length === 0) {
|
|
@@ -9,15 +9,15 @@
|
|
|
9
9
|
"version": "1.0.0",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@netlify/functions": "^0.
|
|
13
|
-
"@types/node": "^14.
|
|
12
|
+
"@netlify/functions": "^1.0.0",
|
|
13
|
+
"@types/node": "^14.0.0",
|
|
14
14
|
"typescript": "^4.0.0"
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
17
|
"node_modules/@netlify/functions": {
|
|
18
|
-
"version": "0.
|
|
19
|
-
"resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-0.
|
|
20
|
-
"integrity": "sha512
|
|
18
|
+
"version": "1.0.0",
|
|
19
|
+
"resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.0.0.tgz",
|
|
20
|
+
"integrity": "sha512-7fnJv3vr8uyyyOYPChwoec6MjzsCw1CoRUO2DhQ1BD6bOyJRlD4DUaOOGlMILB2LCT8P24p5LexEGx8AJb7xdA==",
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"is-promise": "^4.0.0"
|
|
23
23
|
},
|
|
@@ -50,9 +50,9 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@netlify/functions": {
|
|
53
|
-
"version": "0.
|
|
54
|
-
"resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-0.
|
|
55
|
-
"integrity": "sha512
|
|
53
|
+
"version": "1.0.0",
|
|
54
|
+
"resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.0.0.tgz",
|
|
55
|
+
"integrity": "sha512-7fnJv3vr8uyyyOYPChwoec6MjzsCw1CoRUO2DhQ1BD6bOyJRlD4DUaOOGlMILB2LCT8P24p5LexEGx8AJb7xdA==",
|
|
56
56
|
"requires": {
|
|
57
57
|
"is-promise": "^4.0.0"
|
|
58
58
|
}
|
|
@@ -5,12 +5,11 @@ const { env } = require('process')
|
|
|
5
5
|
|
|
6
6
|
const terminalLink = require('terminal-link')
|
|
7
7
|
|
|
8
|
-
const { NETLIFYDEVERR, NETLIFYDEVLOG, NETLIFYDEVWARN, chalk, log, warn } = require('../../utils')
|
|
8
|
+
const { NETLIFYDEVERR, NETLIFYDEVLOG, NETLIFYDEVWARN, chalk, log, warn, watchDebounced } = require('../../utils')
|
|
9
9
|
const { getLogMessage } = require('../log')
|
|
10
10
|
|
|
11
11
|
const { NetlifyFunction } = require('./netlify-function')
|
|
12
12
|
const runtimes = require('./runtimes')
|
|
13
|
-
const { watchDebounced } = require('./watcher')
|
|
14
13
|
|
|
15
14
|
const ZIP_EXTENSION = '.zip'
|
|
16
15
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
// @ts-check
|
|
2
|
-
const process = require('process')
|
|
3
|
-
|
|
4
2
|
const jwtDecode = require('jwt-decode')
|
|
5
3
|
|
|
6
4
|
const {
|
|
@@ -47,51 +45,9 @@ const buildClientContext = function (headers) {
|
|
|
47
45
|
}
|
|
48
46
|
}
|
|
49
47
|
|
|
50
|
-
const startPollingForAPIAuthentication = async function (options) {
|
|
51
|
-
const { api, command, config, site, siteInfo } = options
|
|
52
|
-
const frequency = 5000
|
|
53
|
-
|
|
54
|
-
const helper = async (maybeSiteData) => {
|
|
55
|
-
const siteData = await (maybeSiteData || api.getSite({ siteId: site.id }))
|
|
56
|
-
const authlifyTokenId = siteData && siteData.authlify_token_id
|
|
57
|
-
|
|
58
|
-
const existingAuthlifyTokenId = config && config.netlifyGraphConfig && config.netlifyGraphConfig.authlifyTokenId
|
|
59
|
-
if (authlifyTokenId && authlifyTokenId !== existingAuthlifyTokenId) {
|
|
60
|
-
const netlifyToken = await command.authenticate()
|
|
61
|
-
// Only inject the authlify config if a token ID exists. This prevents
|
|
62
|
-
// calling command.authenticate() (which opens a browser window) if the
|
|
63
|
-
// user hasn't enabled API Authentication
|
|
64
|
-
const netlifyGraphConfig = {
|
|
65
|
-
netlifyToken,
|
|
66
|
-
authlifyTokenId: siteData.authlify_token_id,
|
|
67
|
-
siteId: site.id,
|
|
68
|
-
}
|
|
69
|
-
config.netlifyGraphConfig = netlifyGraphConfig
|
|
70
|
-
|
|
71
|
-
const netlifyGraphJWT = generateNetlifyGraphJWT(netlifyGraphConfig)
|
|
72
|
-
|
|
73
|
-
if (netlifyGraphJWT != null) {
|
|
74
|
-
// XXX(anmonteiro): this name is deprecated. Delete after 3/31/2022
|
|
75
|
-
process.env.ONEGRAPH_AUTHLIFY_TOKEN = netlifyGraphJWT
|
|
76
|
-
process.env.NETLIFY_GRAPH_TOKEN = netlifyGraphJWT
|
|
77
|
-
}
|
|
78
|
-
} else {
|
|
79
|
-
delete config.authlify
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
setTimeout(helper, frequency)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
await helper(siteInfo)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
48
|
const createHandler = function (options) {
|
|
89
49
|
const { config, functionsRegistry } = options
|
|
90
50
|
|
|
91
|
-
if (options.isGraphEnabled) {
|
|
92
|
-
startPollingForAPIAuthentication(options)
|
|
93
|
-
}
|
|
94
|
-
|
|
95
51
|
return async function handler(request, response) {
|
|
96
52
|
// handle proxies without path re-writes (http-servr)
|
|
97
53
|
const cleanPath = request.path.replace(/^\/.netlify\/(functions|builders)/, '')
|
|
@@ -152,7 +108,7 @@ const createHandler = function (options) {
|
|
|
152
108
|
rawQuery,
|
|
153
109
|
}
|
|
154
110
|
|
|
155
|
-
if (config && config.
|
|
111
|
+
if (config && config.netlifyGraphConfig && config.netlifyGraphConfig.authlifyTokenId != null) {
|
|
156
112
|
// XXX(anmonteiro): this name is deprecated. Delete after 3/31/2022
|
|
157
113
|
const jwt = generateNetlifyGraphJWT(config.netlifyGraphConfig)
|
|
158
114
|
event.authlifyToken = jwt
|
|
@@ -10,8 +10,7 @@ const { GraphQL, InternalConsole, OneGraphClient } = require('netlify-onegraph-i
|
|
|
10
10
|
const { NetlifyGraph } = require('netlify-onegraph-internal')
|
|
11
11
|
|
|
12
12
|
// eslint-disable-next-line no-unused-vars
|
|
13
|
-
const { StateConfig, USER_AGENT, chalk, error, log, warn } = require('../../utils')
|
|
14
|
-
const { watchDebounced } = require('../functions/watcher')
|
|
13
|
+
const { StateConfig, USER_AGENT, chalk, error, log, warn, watchDebounced } = require('../../utils')
|
|
15
14
|
|
|
16
15
|
const {
|
|
17
16
|
generateFunctionsFile,
|
|
@@ -114,7 +113,7 @@ const monitorCLISessionEvents = (input) => {
|
|
|
114
113
|
const helper = async () => {
|
|
115
114
|
if (shouldClose) {
|
|
116
115
|
clearTimeout(handle)
|
|
117
|
-
onClose()
|
|
116
|
+
onClose && onClose()
|
|
118
117
|
}
|
|
119
118
|
|
|
120
119
|
const next = await OneGraphClient.fetchCliSessionEvents({ appId, authToken: netlifyToken, sessionId })
|
|
@@ -465,7 +464,7 @@ const startOneGraphCLISession = async (input) => {
|
|
|
465
464
|
const enabledServices = []
|
|
466
465
|
const schema = await OneGraphClient.fetchOneGraphSchema(site.id, enabledServices)
|
|
467
466
|
|
|
468
|
-
monitorOperationFile({
|
|
467
|
+
const opsFileWatcher = monitorOperationFile({
|
|
469
468
|
netlifyGraphConfig,
|
|
470
469
|
onChange: async (filePath) => {
|
|
471
470
|
log('NetlifyGraph operation file changed at', filePath, 'updating function library...')
|
|
@@ -495,7 +494,7 @@ const startOneGraphCLISession = async (input) => {
|
|
|
495
494
|
},
|
|
496
495
|
})
|
|
497
496
|
|
|
498
|
-
monitorCLISessionEvents({
|
|
497
|
+
const cliEventsCloseFn = monitorCLISessionEvents({
|
|
499
498
|
appId: site.id,
|
|
500
499
|
netlifyToken,
|
|
501
500
|
netlifyGraphConfig,
|
|
@@ -514,10 +513,13 @@ const startOneGraphCLISession = async (input) => {
|
|
|
514
513
|
onError: (fetchEventError) => {
|
|
515
514
|
error(`Netlify Graph upstream error: ${fetchEventError}`)
|
|
516
515
|
},
|
|
517
|
-
onClose: () => {
|
|
518
|
-
log('Netlify Graph upstream closed')
|
|
519
|
-
},
|
|
520
516
|
})
|
|
517
|
+
|
|
518
|
+
return async function unregisterWatchers() {
|
|
519
|
+
const watcher = await opsFileWatcher
|
|
520
|
+
watcher.close()
|
|
521
|
+
cliEventsCloseFn()
|
|
522
|
+
}
|
|
521
523
|
}
|
|
522
524
|
|
|
523
525
|
/**
|
|
@@ -217,8 +217,7 @@ const getNetlifyGraphConfig = async ({ command, options, settings }) => {
|
|
|
217
217
|
const moduleType =
|
|
218
218
|
(userSpecifiedConfig.moduleType && userSpecifiedConfig.moduleType.split(path.sep)) ||
|
|
219
219
|
defaultFrameworkConfig.moduleType
|
|
220
|
-
const language =
|
|
221
|
-
(userSpecifiedConfig.language && userSpecifiedConfig.language.split(path.sep)) || autodetectedLanguage
|
|
220
|
+
const language = userSpecifiedConfig.language || autodetectedLanguage
|
|
222
221
|
const webhookBasePath =
|
|
223
222
|
(userSpecifiedConfig.webhookBasePath && userSpecifiedConfig.webhookBasePath.split(path.sep)) ||
|
|
224
223
|
defaultFrameworkConfig.webhookBasePath
|
|
@@ -4,8 +4,12 @@ const process = require('process')
|
|
|
4
4
|
const { format, inspect } = require('util')
|
|
5
5
|
|
|
6
6
|
const { Instance: ChalkInstance } = require('chalk')
|
|
7
|
+
const chokidar = require('chokidar')
|
|
8
|
+
const decache = require('decache')
|
|
7
9
|
const WSL = require('is-wsl')
|
|
10
|
+
const debounce = require('lodash/debounce')
|
|
8
11
|
const { default: omit } = require('omit.js')
|
|
12
|
+
const pEvent = require('p-event')
|
|
9
13
|
|
|
10
14
|
const { name, version } = require('../../package.json')
|
|
11
15
|
const { clearSpinner, startSpinner } = require('../lib/spinner')
|
|
@@ -198,6 +202,34 @@ const normalizeConfig = (config) =>
|
|
|
198
202
|
? { ...config, build: omit(config.build, ['publish', 'publishOrigin']) }
|
|
199
203
|
: config
|
|
200
204
|
|
|
205
|
+
const DEBOUNCE_WAIT = 100
|
|
206
|
+
|
|
207
|
+
const watchDebounced = async (target, { depth, onAdd = () => {}, onChange = () => {}, onUnlink = () => {} }) => {
|
|
208
|
+
const watcher = chokidar.watch(target, { depth, ignored: /node_modules/, ignoreInitial: true })
|
|
209
|
+
|
|
210
|
+
await pEvent(watcher, 'ready')
|
|
211
|
+
|
|
212
|
+
const debouncedOnChange = debounce(onChange, DEBOUNCE_WAIT)
|
|
213
|
+
const debouncedOnUnlink = debounce(onUnlink, DEBOUNCE_WAIT)
|
|
214
|
+
const debouncedOnAdd = debounce(onAdd, DEBOUNCE_WAIT)
|
|
215
|
+
|
|
216
|
+
watcher
|
|
217
|
+
.on('change', (path) => {
|
|
218
|
+
decache(path)
|
|
219
|
+
debouncedOnChange(path)
|
|
220
|
+
})
|
|
221
|
+
.on('unlink', (path) => {
|
|
222
|
+
decache(path)
|
|
223
|
+
debouncedOnUnlink(path)
|
|
224
|
+
})
|
|
225
|
+
.on('add', (path) => {
|
|
226
|
+
decache(path)
|
|
227
|
+
debouncedOnAdd(path)
|
|
228
|
+
})
|
|
229
|
+
|
|
230
|
+
return watcher
|
|
231
|
+
}
|
|
232
|
+
|
|
201
233
|
module.exports = {
|
|
202
234
|
BANG,
|
|
203
235
|
chalk,
|
|
@@ -217,4 +249,5 @@ module.exports = {
|
|
|
217
249
|
sortOptions,
|
|
218
250
|
USER_AGENT,
|
|
219
251
|
warn,
|
|
252
|
+
watchDebounced,
|
|
220
253
|
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
// @ts-check
|
|
2
|
-
const chokidar = require('chokidar')
|
|
3
|
-
const decache = require('decache')
|
|
4
|
-
const debounce = require('lodash/debounce')
|
|
5
|
-
const pEvent = require('p-event')
|
|
6
|
-
|
|
7
|
-
const DEBOUNCE_WAIT = 100
|
|
8
|
-
|
|
9
|
-
const watchDebounced = async (target, { depth, onAdd = () => {}, onChange = () => {}, onUnlink = () => {} }) => {
|
|
10
|
-
const watcher = chokidar.watch(target, { depth, ignored: /node_modules/, ignoreInitial: true })
|
|
11
|
-
|
|
12
|
-
await pEvent(watcher, 'ready')
|
|
13
|
-
|
|
14
|
-
const debouncedOnChange = debounce(onChange, DEBOUNCE_WAIT)
|
|
15
|
-
const debouncedOnUnlink = debounce(onUnlink, DEBOUNCE_WAIT)
|
|
16
|
-
const debouncedOnAdd = debounce(onAdd, DEBOUNCE_WAIT)
|
|
17
|
-
|
|
18
|
-
watcher
|
|
19
|
-
.on('change', (path) => {
|
|
20
|
-
decache(path)
|
|
21
|
-
debouncedOnChange(path)
|
|
22
|
-
})
|
|
23
|
-
.on('unlink', (path) => {
|
|
24
|
-
decache(path)
|
|
25
|
-
debouncedOnUnlink(path)
|
|
26
|
-
})
|
|
27
|
-
.on('add', (path) => {
|
|
28
|
-
decache(path)
|
|
29
|
-
debouncedOnAdd(path)
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
return watcher
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
module.exports = { watchDebounced }
|