netlify-cli 9.4.1 → 9.5.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.
- package/npm-shrinkwrap.json +313 -87
- package/package.json +6 -6
- package/src/commands/dev/dev.js +53 -23
- package/src/commands/graph/graph-edit.js +7 -14
- package/src/commands/graph/graph-handler.js +69 -3
- package/src/lib/one-graph/cli-client.js +115 -15
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "netlify-cli",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.5.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "netlify-cli",
|
|
9
|
-
"version": "9.
|
|
9
|
+
"version": "9.5.0",
|
|
10
10
|
"hasInstallScript": true,
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@netlify/build": "^26.3.
|
|
14
|
-
"@netlify/config": "^17.0.
|
|
13
|
+
"@netlify/build": "^26.3.2",
|
|
14
|
+
"@netlify/config": "^17.0.9",
|
|
15
15
|
"@netlify/framework-info": "^9.0.0",
|
|
16
16
|
"@netlify/local-functions-proxy": "^1.1.1",
|
|
17
17
|
"@netlify/plugin-edge-handlers": "^3.0.6",
|
|
18
|
-
"@netlify/plugins-list": "^6.
|
|
18
|
+
"@netlify/plugins-list": "^6.11.0",
|
|
19
19
|
"@netlify/routing-local-proxy": "^0.34.1",
|
|
20
|
-
"@netlify/zip-it-and-ship-it": "^5.7.
|
|
20
|
+
"@netlify/zip-it-and-ship-it": "^5.7.5",
|
|
21
21
|
"@octokit/rest": "^18.0.0",
|
|
22
22
|
"@sindresorhus/slugify": "^1.1.0",
|
|
23
23
|
"ansi-escapes": "^5.0.0",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"minimist": "^1.2.5",
|
|
82
82
|
"multiparty": "^4.2.1",
|
|
83
83
|
"netlify": "^11.0.0",
|
|
84
|
-
"netlify-headers-parser": "^6.0.
|
|
84
|
+
"netlify-headers-parser": "^6.0.2",
|
|
85
85
|
"netlify-onegraph-internal": "0.0.50",
|
|
86
86
|
"netlify-redirect-parser": "^13.0.2",
|
|
87
87
|
"netlify-redirector": "^0.2.1",
|
|
@@ -2358,9 +2358,9 @@
|
|
|
2358
2358
|
}
|
|
2359
2359
|
},
|
|
2360
2360
|
"node_modules/@netlify/build": {
|
|
2361
|
-
"version": "26.3.
|
|
2362
|
-
"resolved": "https://registry.npmjs.org/@netlify/build/-/build-26.3.
|
|
2363
|
-
"integrity": "sha512-
|
|
2361
|
+
"version": "26.3.2",
|
|
2362
|
+
"resolved": "https://registry.npmjs.org/@netlify/build/-/build-26.3.2.tgz",
|
|
2363
|
+
"integrity": "sha512-EMgdZKf6Xa9ZQEdDEHl5s2Kj9xQw69mRPI4f7o5eVltatquxxUSL+pBnSqHauaEsGfPXlP8ymadTGTxaF0DxUA==",
|
|
2364
2364
|
"dependencies": {
|
|
2365
2365
|
"@bugsnag/js": "^7.0.0",
|
|
2366
2366
|
"@netlify/cache-utils": "^4.0.0",
|
|
@@ -2368,9 +2368,9 @@
|
|
|
2368
2368
|
"@netlify/functions-utils": "^4.0.0",
|
|
2369
2369
|
"@netlify/git-utils": "^4.0.0",
|
|
2370
2370
|
"@netlify/plugin-edge-handlers": "^3.0.6",
|
|
2371
|
-
"@netlify/plugins-list": "^6.10.
|
|
2371
|
+
"@netlify/plugins-list": "^6.10.2",
|
|
2372
2372
|
"@netlify/run-utils": "^4.0.0",
|
|
2373
|
-
"@netlify/zip-it-and-ship-it": "5.7.
|
|
2373
|
+
"@netlify/zip-it-and-ship-it": "5.7.5",
|
|
2374
2374
|
"@sindresorhus/slugify": "^2.0.0",
|
|
2375
2375
|
"@types/node": "^16.0.0",
|
|
2376
2376
|
"ansi-escapes": "^5.0.0",
|
|
@@ -2541,18 +2541,18 @@
|
|
|
2541
2541
|
}
|
|
2542
2542
|
},
|
|
2543
2543
|
"node_modules/@netlify/build/node_modules/execa": {
|
|
2544
|
-
"version": "6.
|
|
2545
|
-
"resolved": "https://registry.npmjs.org/execa/-/execa-6.
|
|
2546
|
-
"integrity": "sha512-
|
|
2544
|
+
"version": "6.1.0",
|
|
2545
|
+
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
|
2546
|
+
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
|
2547
2547
|
"dependencies": {
|
|
2548
2548
|
"cross-spawn": "^7.0.3",
|
|
2549
2549
|
"get-stream": "^6.0.1",
|
|
2550
2550
|
"human-signals": "^3.0.1",
|
|
2551
2551
|
"is-stream": "^3.0.0",
|
|
2552
2552
|
"merge-stream": "^2.0.0",
|
|
2553
|
-
"npm-run-path": "^5.0
|
|
2553
|
+
"npm-run-path": "^5.1.0",
|
|
2554
2554
|
"onetime": "^6.0.0",
|
|
2555
|
-
"signal-exit": "^3.0.
|
|
2555
|
+
"signal-exit": "^3.0.7",
|
|
2556
2556
|
"strip-final-newline": "^3.0.0"
|
|
2557
2557
|
},
|
|
2558
2558
|
"engines": {
|
|
@@ -3110,9 +3110,9 @@
|
|
|
3110
3110
|
}
|
|
3111
3111
|
},
|
|
3112
3112
|
"node_modules/@netlify/config": {
|
|
3113
|
-
"version": "17.0.
|
|
3114
|
-
"resolved": "https://registry.npmjs.org/@netlify/config/-/config-17.0.
|
|
3115
|
-
"integrity": "sha512-
|
|
3113
|
+
"version": "17.0.9",
|
|
3114
|
+
"resolved": "https://registry.npmjs.org/@netlify/config/-/config-17.0.9.tgz",
|
|
3115
|
+
"integrity": "sha512-qd7q2aiZVyO2Mou3ltR9sgSFckMU8E+YBwHOasyleH6EJjRIV3uuT/K4e3SSwB6k+f26MOHCjz+87ecN04/26A==",
|
|
3116
3116
|
"dependencies": {
|
|
3117
3117
|
"chalk": "^5.0.0",
|
|
3118
3118
|
"cron-parser": "^4.1.0",
|
|
@@ -3128,7 +3128,7 @@
|
|
|
3128
3128
|
"js-yaml": "^4.0.0",
|
|
3129
3129
|
"map-obj": "^5.0.0",
|
|
3130
3130
|
"netlify": "^11.0.0",
|
|
3131
|
-
"netlify-headers-parser": "^6.0.
|
|
3131
|
+
"netlify-headers-parser": "^6.0.2",
|
|
3132
3132
|
"netlify-redirect-parser": "^13.0.2",
|
|
3133
3133
|
"omit.js": "^2.0.2",
|
|
3134
3134
|
"p-locate": "^6.0.0",
|
|
@@ -3183,18 +3183,18 @@
|
|
|
3183
3183
|
}
|
|
3184
3184
|
},
|
|
3185
3185
|
"node_modules/@netlify/config/node_modules/execa": {
|
|
3186
|
-
"version": "6.
|
|
3187
|
-
"resolved": "https://registry.npmjs.org/execa/-/execa-6.
|
|
3188
|
-
"integrity": "sha512-
|
|
3186
|
+
"version": "6.1.0",
|
|
3187
|
+
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
|
3188
|
+
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
|
3189
3189
|
"dependencies": {
|
|
3190
3190
|
"cross-spawn": "^7.0.3",
|
|
3191
3191
|
"get-stream": "^6.0.1",
|
|
3192
3192
|
"human-signals": "^3.0.1",
|
|
3193
3193
|
"is-stream": "^3.0.0",
|
|
3194
3194
|
"merge-stream": "^2.0.0",
|
|
3195
|
-
"npm-run-path": "^5.0
|
|
3195
|
+
"npm-run-path": "^5.1.0",
|
|
3196
3196
|
"onetime": "^6.0.0",
|
|
3197
|
-
"signal-exit": "^3.0.
|
|
3197
|
+
"signal-exit": "^3.0.7",
|
|
3198
3198
|
"strip-final-newline": "^3.0.0"
|
|
3199
3199
|
},
|
|
3200
3200
|
"engines": {
|
|
@@ -3645,6 +3645,70 @@
|
|
|
3645
3645
|
"node": "^12.20.0 || ^14.14.0 || >=16.0.0"
|
|
3646
3646
|
}
|
|
3647
3647
|
},
|
|
3648
|
+
"node_modules/@netlify/functions-utils/node_modules/@babel/parser": {
|
|
3649
|
+
"version": "7.16.8",
|
|
3650
|
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz",
|
|
3651
|
+
"integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw==",
|
|
3652
|
+
"bin": {
|
|
3653
|
+
"parser": "bin/babel-parser.js"
|
|
3654
|
+
},
|
|
3655
|
+
"engines": {
|
|
3656
|
+
"node": ">=6.0.0"
|
|
3657
|
+
}
|
|
3658
|
+
},
|
|
3659
|
+
"node_modules/@netlify/functions-utils/node_modules/@netlify/zip-it-and-ship-it": {
|
|
3660
|
+
"version": "5.7.4",
|
|
3661
|
+
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.7.4.tgz",
|
|
3662
|
+
"integrity": "sha512-HMPf4pX561H5d59h8Y20Qjzo+5BbFkvpnTSWnzdSjQR85dhT8CVKeX9NdLKoKHG82+M75ErfOCY5Db7VsgKAWA==",
|
|
3663
|
+
"dependencies": {
|
|
3664
|
+
"@babel/parser": "7.16.8",
|
|
3665
|
+
"@netlify/esbuild": "^0.13.6",
|
|
3666
|
+
"@vercel/nft": "^0.17.0",
|
|
3667
|
+
"archiver": "^5.3.0",
|
|
3668
|
+
"common-path-prefix": "^3.0.0",
|
|
3669
|
+
"cp-file": "^9.0.0",
|
|
3670
|
+
"del": "^6.0.0",
|
|
3671
|
+
"elf-cam": "^0.1.1",
|
|
3672
|
+
"end-of-stream": "^1.4.4",
|
|
3673
|
+
"es-module-lexer": "^0.9.0",
|
|
3674
|
+
"execa": "^5.0.0",
|
|
3675
|
+
"filter-obj": "^2.0.1",
|
|
3676
|
+
"find-up": "^5.0.0",
|
|
3677
|
+
"glob": "^7.1.6",
|
|
3678
|
+
"is-builtin-module": "^3.1.0",
|
|
3679
|
+
"junk": "^3.1.0",
|
|
3680
|
+
"locate-path": "^6.0.0",
|
|
3681
|
+
"merge-options": "^3.0.4",
|
|
3682
|
+
"minimatch": "^3.0.4",
|
|
3683
|
+
"p-map": "^4.0.0",
|
|
3684
|
+
"path-exists": "^4.0.0",
|
|
3685
|
+
"pkg-dir": "^5.0.0",
|
|
3686
|
+
"precinct": "^8.2.0",
|
|
3687
|
+
"read-package-json-fast": "^2.0.2",
|
|
3688
|
+
"require-package-name": "^2.0.1",
|
|
3689
|
+
"resolve": "^2.0.0-next.1",
|
|
3690
|
+
"semver": "^7.0.0",
|
|
3691
|
+
"tmp-promise": "^3.0.2",
|
|
3692
|
+
"toml": "^3.0.0",
|
|
3693
|
+
"typescript": "^4.6.0-beta",
|
|
3694
|
+
"unixify": "^1.0.0",
|
|
3695
|
+
"yargs": "^16.0.0"
|
|
3696
|
+
},
|
|
3697
|
+
"bin": {
|
|
3698
|
+
"zip-it-and-ship-it": "dist/bin.js"
|
|
3699
|
+
},
|
|
3700
|
+
"engines": {
|
|
3701
|
+
"node": "^12.20.0 || ^14.14.0 || >=16.0.0"
|
|
3702
|
+
}
|
|
3703
|
+
},
|
|
3704
|
+
"node_modules/@netlify/functions-utils/node_modules/@netlify/zip-it-and-ship-it/node_modules/path-exists": {
|
|
3705
|
+
"version": "4.0.0",
|
|
3706
|
+
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
3707
|
+
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
|
|
3708
|
+
"engines": {
|
|
3709
|
+
"node": ">=8"
|
|
3710
|
+
}
|
|
3711
|
+
},
|
|
3648
3712
|
"node_modules/@netlify/functions-utils/node_modules/path-exists": {
|
|
3649
3713
|
"version": "5.0.0",
|
|
3650
3714
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
|
|
@@ -3653,6 +3717,35 @@
|
|
|
3653
3717
|
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
3654
3718
|
}
|
|
3655
3719
|
},
|
|
3720
|
+
"node_modules/@netlify/functions-utils/node_modules/typescript": {
|
|
3721
|
+
"version": "4.6.0-dev.20220211",
|
|
3722
|
+
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.0-dev.20220211.tgz",
|
|
3723
|
+
"integrity": "sha512-wMVJ7QGajX2OXpGrX8cphiTsyab79JS88F00azUMgO65ooUFgyFFQaXn2zOO8h8RluD6kHWzCM3WTa0Tc0Ui+g==",
|
|
3724
|
+
"bin": {
|
|
3725
|
+
"tsc": "bin/tsc",
|
|
3726
|
+
"tsserver": "bin/tsserver"
|
|
3727
|
+
},
|
|
3728
|
+
"engines": {
|
|
3729
|
+
"node": ">=4.2.0"
|
|
3730
|
+
}
|
|
3731
|
+
},
|
|
3732
|
+
"node_modules/@netlify/functions-utils/node_modules/yargs": {
|
|
3733
|
+
"version": "16.2.0",
|
|
3734
|
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
|
|
3735
|
+
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
|
|
3736
|
+
"dependencies": {
|
|
3737
|
+
"cliui": "^7.0.2",
|
|
3738
|
+
"escalade": "^3.1.1",
|
|
3739
|
+
"get-caller-file": "^2.0.5",
|
|
3740
|
+
"require-directory": "^2.1.1",
|
|
3741
|
+
"string-width": "^4.2.0",
|
|
3742
|
+
"y18n": "^5.0.5",
|
|
3743
|
+
"yargs-parser": "^20.2.2"
|
|
3744
|
+
},
|
|
3745
|
+
"engines": {
|
|
3746
|
+
"node": ">=10"
|
|
3747
|
+
}
|
|
3748
|
+
},
|
|
3656
3749
|
"node_modules/@netlify/git-utils": {
|
|
3657
3750
|
"version": "4.1.1",
|
|
3658
3751
|
"resolved": "https://registry.npmjs.org/@netlify/git-utils/-/git-utils-4.1.1.tgz",
|
|
@@ -4039,9 +4132,9 @@
|
|
|
4039
4132
|
}
|
|
4040
4133
|
},
|
|
4041
4134
|
"node_modules/@netlify/plugins-list": {
|
|
4042
|
-
"version": "6.
|
|
4043
|
-
"resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-6.
|
|
4044
|
-
"integrity": "sha512-
|
|
4135
|
+
"version": "6.11.0",
|
|
4136
|
+
"resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-6.11.0.tgz",
|
|
4137
|
+
"integrity": "sha512-b6+htKVooVnUPbq2zlCPUcWJSvR18a20cl1W3MS3EThEbXM/CCQWcCEqjwk+Q5VCH2hoJoaHlLhO/lIHpwn8Ig==",
|
|
4045
4138
|
"engines": {
|
|
4046
4139
|
"node": "^12.20.0 || ^14.14.0 || >=16.0.0"
|
|
4047
4140
|
}
|
|
@@ -4208,9 +4301,9 @@
|
|
|
4208
4301
|
}
|
|
4209
4302
|
},
|
|
4210
4303
|
"node_modules/@netlify/zip-it-and-ship-it": {
|
|
4211
|
-
"version": "5.7.
|
|
4212
|
-
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.7.
|
|
4213
|
-
"integrity": "sha512-
|
|
4304
|
+
"version": "5.7.5",
|
|
4305
|
+
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.7.5.tgz",
|
|
4306
|
+
"integrity": "sha512-v3buWIrlm0+lmDwI2qHRU4t7zR3LtfU0T2JYUPGIz0D8ezsnHihj0wbBf3lMZnQmHwrqQURQYL9nQTrpwH3YoA==",
|
|
4214
4307
|
"dependencies": {
|
|
4215
4308
|
"@babel/parser": "7.16.8",
|
|
4216
4309
|
"@netlify/esbuild": "^0.13.6",
|
|
@@ -4230,7 +4323,7 @@
|
|
|
4230
4323
|
"junk": "^3.1.0",
|
|
4231
4324
|
"locate-path": "^6.0.0",
|
|
4232
4325
|
"merge-options": "^3.0.4",
|
|
4233
|
-
"minimatch": "^
|
|
4326
|
+
"minimatch": "^4.0.0",
|
|
4234
4327
|
"p-map": "^4.0.0",
|
|
4235
4328
|
"path-exists": "^4.0.0",
|
|
4236
4329
|
"pkg-dir": "^5.0.0",
|
|
@@ -4241,7 +4334,6 @@
|
|
|
4241
4334
|
"semver": "^7.0.0",
|
|
4242
4335
|
"tmp-promise": "^3.0.2",
|
|
4243
4336
|
"toml": "^3.0.0",
|
|
4244
|
-
"typescript": "^4.6.0-beta",
|
|
4245
4337
|
"unixify": "^1.0.0",
|
|
4246
4338
|
"yargs": "^16.0.0"
|
|
4247
4339
|
},
|
|
@@ -4263,16 +4355,15 @@
|
|
|
4263
4355
|
"node": ">=6.0.0"
|
|
4264
4356
|
}
|
|
4265
4357
|
},
|
|
4266
|
-
"node_modules/@netlify/zip-it-and-ship-it/node_modules/
|
|
4267
|
-
"version": "4.
|
|
4268
|
-
"resolved": "https://registry.npmjs.org/
|
|
4269
|
-
"integrity": "sha512-
|
|
4270
|
-
"
|
|
4271
|
-
"
|
|
4272
|
-
"tsserver": "bin/tsserver"
|
|
4358
|
+
"node_modules/@netlify/zip-it-and-ship-it/node_modules/minimatch": {
|
|
4359
|
+
"version": "4.1.1",
|
|
4360
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.1.1.tgz",
|
|
4361
|
+
"integrity": "sha512-9ObkVPP8aM2KWHw1RMAaOoEzHjcqzE1dmEQHAOq9ySRhvVMru1VKqniUs/g6Us4KSwXKk0+uLko6caynDcWEWQ==",
|
|
4362
|
+
"dependencies": {
|
|
4363
|
+
"brace-expansion": "^1.1.7"
|
|
4273
4364
|
},
|
|
4274
4365
|
"engines": {
|
|
4275
|
-
"node": ">=
|
|
4366
|
+
"node": ">=10"
|
|
4276
4367
|
}
|
|
4277
4368
|
},
|
|
4278
4369
|
"node_modules/@netlify/zip-it-and-ship-it/node_modules/yargs": {
|
|
@@ -16674,20 +16765,61 @@
|
|
|
16674
16765
|
}
|
|
16675
16766
|
},
|
|
16676
16767
|
"node_modules/netlify-headers-parser": {
|
|
16677
|
-
"version": "6.0.
|
|
16678
|
-
"resolved": "https://registry.npmjs.org/netlify-headers-parser/-/netlify-headers-parser-6.0.
|
|
16679
|
-
"integrity": "sha512-
|
|
16768
|
+
"version": "6.0.2",
|
|
16769
|
+
"resolved": "https://registry.npmjs.org/netlify-headers-parser/-/netlify-headers-parser-6.0.2.tgz",
|
|
16770
|
+
"integrity": "sha512-ahDNi7R+Io4iMylyFrOfRUcBUELrXCT0hNVdqPKTHhH917NHiDCH69f6IhhqbzSaZ2/zGFPBrxA3FzJ48yXs3Q==",
|
|
16680
16771
|
"dependencies": {
|
|
16681
|
-
"escape-string-regexp": "^
|
|
16682
|
-
"is-plain-obj": "^
|
|
16683
|
-
"map-obj": "^
|
|
16684
|
-
"path-exists": "^
|
|
16772
|
+
"escape-string-regexp": "^5.0.0",
|
|
16773
|
+
"is-plain-obj": "^4.0.0",
|
|
16774
|
+
"map-obj": "^5.0.0",
|
|
16775
|
+
"path-exists": "^5.0.0",
|
|
16685
16776
|
"toml": "^3.0.0"
|
|
16686
16777
|
},
|
|
16687
16778
|
"engines": {
|
|
16688
16779
|
"node": "^12.20.0 || ^14.14.0 || >=16.0.0"
|
|
16689
16780
|
}
|
|
16690
16781
|
},
|
|
16782
|
+
"node_modules/netlify-headers-parser/node_modules/escape-string-regexp": {
|
|
16783
|
+
"version": "5.0.0",
|
|
16784
|
+
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
|
|
16785
|
+
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
|
|
16786
|
+
"engines": {
|
|
16787
|
+
"node": ">=12"
|
|
16788
|
+
},
|
|
16789
|
+
"funding": {
|
|
16790
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
16791
|
+
}
|
|
16792
|
+
},
|
|
16793
|
+
"node_modules/netlify-headers-parser/node_modules/is-plain-obj": {
|
|
16794
|
+
"version": "4.0.0",
|
|
16795
|
+
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz",
|
|
16796
|
+
"integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==",
|
|
16797
|
+
"engines": {
|
|
16798
|
+
"node": ">=12"
|
|
16799
|
+
},
|
|
16800
|
+
"funding": {
|
|
16801
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
16802
|
+
}
|
|
16803
|
+
},
|
|
16804
|
+
"node_modules/netlify-headers-parser/node_modules/map-obj": {
|
|
16805
|
+
"version": "5.0.0",
|
|
16806
|
+
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.0.tgz",
|
|
16807
|
+
"integrity": "sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA==",
|
|
16808
|
+
"engines": {
|
|
16809
|
+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
16810
|
+
},
|
|
16811
|
+
"funding": {
|
|
16812
|
+
"url": "https://github.com/sponsors/sindresorhus"
|
|
16813
|
+
}
|
|
16814
|
+
},
|
|
16815
|
+
"node_modules/netlify-headers-parser/node_modules/path-exists": {
|
|
16816
|
+
"version": "5.0.0",
|
|
16817
|
+
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
|
|
16818
|
+
"integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==",
|
|
16819
|
+
"engines": {
|
|
16820
|
+
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
|
16821
|
+
}
|
|
16822
|
+
},
|
|
16691
16823
|
"node_modules/netlify-onegraph-internal": {
|
|
16692
16824
|
"version": "0.0.50",
|
|
16693
16825
|
"resolved": "https://registry.npmjs.org/netlify-onegraph-internal/-/netlify-onegraph-internal-0.0.50.tgz",
|
|
@@ -25364,9 +25496,9 @@
|
|
|
25364
25496
|
}
|
|
25365
25497
|
},
|
|
25366
25498
|
"@netlify/build": {
|
|
25367
|
-
"version": "26.3.
|
|
25368
|
-
"resolved": "https://registry.npmjs.org/@netlify/build/-/build-26.3.
|
|
25369
|
-
"integrity": "sha512-
|
|
25499
|
+
"version": "26.3.2",
|
|
25500
|
+
"resolved": "https://registry.npmjs.org/@netlify/build/-/build-26.3.2.tgz",
|
|
25501
|
+
"integrity": "sha512-EMgdZKf6Xa9ZQEdDEHl5s2Kj9xQw69mRPI4f7o5eVltatquxxUSL+pBnSqHauaEsGfPXlP8ymadTGTxaF0DxUA==",
|
|
25370
25502
|
"requires": {
|
|
25371
25503
|
"@bugsnag/js": "^7.0.0",
|
|
25372
25504
|
"@netlify/cache-utils": "^4.0.0",
|
|
@@ -25374,9 +25506,9 @@
|
|
|
25374
25506
|
"@netlify/functions-utils": "^4.0.0",
|
|
25375
25507
|
"@netlify/git-utils": "^4.0.0",
|
|
25376
25508
|
"@netlify/plugin-edge-handlers": "^3.0.6",
|
|
25377
|
-
"@netlify/plugins-list": "^6.10.
|
|
25509
|
+
"@netlify/plugins-list": "^6.10.2",
|
|
25378
25510
|
"@netlify/run-utils": "^4.0.0",
|
|
25379
|
-
"@netlify/zip-it-and-ship-it": "5.7.
|
|
25511
|
+
"@netlify/zip-it-and-ship-it": "5.7.5",
|
|
25380
25512
|
"@sindresorhus/slugify": "^2.0.0",
|
|
25381
25513
|
"@types/node": "^16.0.0",
|
|
25382
25514
|
"ansi-escapes": "^5.0.0",
|
|
@@ -25493,18 +25625,18 @@
|
|
|
25493
25625
|
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
|
|
25494
25626
|
},
|
|
25495
25627
|
"execa": {
|
|
25496
|
-
"version": "6.
|
|
25497
|
-
"resolved": "https://registry.npmjs.org/execa/-/execa-6.
|
|
25498
|
-
"integrity": "sha512-
|
|
25628
|
+
"version": "6.1.0",
|
|
25629
|
+
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
|
25630
|
+
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
|
25499
25631
|
"requires": {
|
|
25500
25632
|
"cross-spawn": "^7.0.3",
|
|
25501
25633
|
"get-stream": "^6.0.1",
|
|
25502
25634
|
"human-signals": "^3.0.1",
|
|
25503
25635
|
"is-stream": "^3.0.0",
|
|
25504
25636
|
"merge-stream": "^2.0.0",
|
|
25505
|
-
"npm-run-path": "^5.0
|
|
25637
|
+
"npm-run-path": "^5.1.0",
|
|
25506
25638
|
"onetime": "^6.0.0",
|
|
25507
|
-
"signal-exit": "^3.0.
|
|
25639
|
+
"signal-exit": "^3.0.7",
|
|
25508
25640
|
"strip-final-newline": "^3.0.0"
|
|
25509
25641
|
}
|
|
25510
25642
|
},
|
|
@@ -25829,9 +25961,9 @@
|
|
|
25829
25961
|
}
|
|
25830
25962
|
},
|
|
25831
25963
|
"@netlify/config": {
|
|
25832
|
-
"version": "17.0.
|
|
25833
|
-
"resolved": "https://registry.npmjs.org/@netlify/config/-/config-17.0.
|
|
25834
|
-
"integrity": "sha512-
|
|
25964
|
+
"version": "17.0.9",
|
|
25965
|
+
"resolved": "https://registry.npmjs.org/@netlify/config/-/config-17.0.9.tgz",
|
|
25966
|
+
"integrity": "sha512-qd7q2aiZVyO2Mou3ltR9sgSFckMU8E+YBwHOasyleH6EJjRIV3uuT/K4e3SSwB6k+f26MOHCjz+87ecN04/26A==",
|
|
25835
25967
|
"requires": {
|
|
25836
25968
|
"chalk": "^5.0.0",
|
|
25837
25969
|
"cron-parser": "^4.1.0",
|
|
@@ -25847,7 +25979,7 @@
|
|
|
25847
25979
|
"js-yaml": "^4.0.0",
|
|
25848
25980
|
"map-obj": "^5.0.0",
|
|
25849
25981
|
"netlify": "^11.0.0",
|
|
25850
|
-
"netlify-headers-parser": "^6.0.
|
|
25982
|
+
"netlify-headers-parser": "^6.0.2",
|
|
25851
25983
|
"netlify-redirect-parser": "^13.0.2",
|
|
25852
25984
|
"omit.js": "^2.0.2",
|
|
25853
25985
|
"p-locate": "^6.0.0",
|
|
@@ -25878,18 +26010,18 @@
|
|
|
25878
26010
|
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
|
|
25879
26011
|
},
|
|
25880
26012
|
"execa": {
|
|
25881
|
-
"version": "6.
|
|
25882
|
-
"resolved": "https://registry.npmjs.org/execa/-/execa-6.
|
|
25883
|
-
"integrity": "sha512-
|
|
26013
|
+
"version": "6.1.0",
|
|
26014
|
+
"resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz",
|
|
26015
|
+
"integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==",
|
|
25884
26016
|
"requires": {
|
|
25885
26017
|
"cross-spawn": "^7.0.3",
|
|
25886
26018
|
"get-stream": "^6.0.1",
|
|
25887
26019
|
"human-signals": "^3.0.1",
|
|
25888
26020
|
"is-stream": "^3.0.0",
|
|
25889
26021
|
"merge-stream": "^2.0.0",
|
|
25890
|
-
"npm-run-path": "^5.0
|
|
26022
|
+
"npm-run-path": "^5.1.0",
|
|
25891
26023
|
"onetime": "^6.0.0",
|
|
25892
|
-
"signal-exit": "^3.0.
|
|
26024
|
+
"signal-exit": "^3.0.7",
|
|
25893
26025
|
"strip-final-newline": "^3.0.0"
|
|
25894
26026
|
}
|
|
25895
26027
|
},
|
|
@@ -26165,10 +26297,80 @@
|
|
|
26165
26297
|
"path-exists": "^5.0.0"
|
|
26166
26298
|
},
|
|
26167
26299
|
"dependencies": {
|
|
26300
|
+
"@babel/parser": {
|
|
26301
|
+
"version": "7.16.8",
|
|
26302
|
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz",
|
|
26303
|
+
"integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw=="
|
|
26304
|
+
},
|
|
26305
|
+
"@netlify/zip-it-and-ship-it": {
|
|
26306
|
+
"version": "5.7.4",
|
|
26307
|
+
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.7.4.tgz",
|
|
26308
|
+
"integrity": "sha512-HMPf4pX561H5d59h8Y20Qjzo+5BbFkvpnTSWnzdSjQR85dhT8CVKeX9NdLKoKHG82+M75ErfOCY5Db7VsgKAWA==",
|
|
26309
|
+
"requires": {
|
|
26310
|
+
"@babel/parser": "7.16.8",
|
|
26311
|
+
"@netlify/esbuild": "^0.13.6",
|
|
26312
|
+
"@vercel/nft": "^0.17.0",
|
|
26313
|
+
"archiver": "^5.3.0",
|
|
26314
|
+
"common-path-prefix": "^3.0.0",
|
|
26315
|
+
"cp-file": "^9.0.0",
|
|
26316
|
+
"del": "^6.0.0",
|
|
26317
|
+
"elf-cam": "^0.1.1",
|
|
26318
|
+
"end-of-stream": "^1.4.4",
|
|
26319
|
+
"es-module-lexer": "^0.9.0",
|
|
26320
|
+
"execa": "^5.0.0",
|
|
26321
|
+
"filter-obj": "^2.0.1",
|
|
26322
|
+
"find-up": "^5.0.0",
|
|
26323
|
+
"glob": "^7.1.6",
|
|
26324
|
+
"is-builtin-module": "^3.1.0",
|
|
26325
|
+
"junk": "^3.1.0",
|
|
26326
|
+
"locate-path": "^6.0.0",
|
|
26327
|
+
"merge-options": "^3.0.4",
|
|
26328
|
+
"minimatch": "^3.0.4",
|
|
26329
|
+
"p-map": "^4.0.0",
|
|
26330
|
+
"path-exists": "^4.0.0",
|
|
26331
|
+
"pkg-dir": "^5.0.0",
|
|
26332
|
+
"precinct": "^8.2.0",
|
|
26333
|
+
"read-package-json-fast": "^2.0.2",
|
|
26334
|
+
"require-package-name": "^2.0.1",
|
|
26335
|
+
"resolve": "^2.0.0-next.1",
|
|
26336
|
+
"semver": "^7.0.0",
|
|
26337
|
+
"tmp-promise": "^3.0.2",
|
|
26338
|
+
"toml": "^3.0.0",
|
|
26339
|
+
"typescript": "^4.6.0-beta",
|
|
26340
|
+
"unixify": "^1.0.0",
|
|
26341
|
+
"yargs": "^16.0.0"
|
|
26342
|
+
},
|
|
26343
|
+
"dependencies": {
|
|
26344
|
+
"path-exists": {
|
|
26345
|
+
"version": "4.0.0",
|
|
26346
|
+
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
|
26347
|
+
"integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
|
|
26348
|
+
}
|
|
26349
|
+
}
|
|
26350
|
+
},
|
|
26168
26351
|
"path-exists": {
|
|
26169
26352
|
"version": "5.0.0",
|
|
26170
26353
|
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
|
|
26171
26354
|
"integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="
|
|
26355
|
+
},
|
|
26356
|
+
"typescript": {
|
|
26357
|
+
"version": "4.6.0-dev.20220211",
|
|
26358
|
+
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.0-dev.20220211.tgz",
|
|
26359
|
+
"integrity": "sha512-wMVJ7QGajX2OXpGrX8cphiTsyab79JS88F00azUMgO65ooUFgyFFQaXn2zOO8h8RluD6kHWzCM3WTa0Tc0Ui+g=="
|
|
26360
|
+
},
|
|
26361
|
+
"yargs": {
|
|
26362
|
+
"version": "16.2.0",
|
|
26363
|
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
|
|
26364
|
+
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
|
|
26365
|
+
"requires": {
|
|
26366
|
+
"cliui": "^7.0.2",
|
|
26367
|
+
"escalade": "^3.1.1",
|
|
26368
|
+
"get-caller-file": "^2.0.5",
|
|
26369
|
+
"require-directory": "^2.1.1",
|
|
26370
|
+
"string-width": "^4.2.0",
|
|
26371
|
+
"y18n": "^5.0.5",
|
|
26372
|
+
"yargs-parser": "^20.2.2"
|
|
26373
|
+
}
|
|
26172
26374
|
}
|
|
26173
26375
|
}
|
|
26174
26376
|
},
|
|
@@ -26384,9 +26586,9 @@
|
|
|
26384
26586
|
}
|
|
26385
26587
|
},
|
|
26386
26588
|
"@netlify/plugins-list": {
|
|
26387
|
-
"version": "6.
|
|
26388
|
-
"resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-6.
|
|
26389
|
-
"integrity": "sha512-
|
|
26589
|
+
"version": "6.11.0",
|
|
26590
|
+
"resolved": "https://registry.npmjs.org/@netlify/plugins-list/-/plugins-list-6.11.0.tgz",
|
|
26591
|
+
"integrity": "sha512-b6+htKVooVnUPbq2zlCPUcWJSvR18a20cl1W3MS3EThEbXM/CCQWcCEqjwk+Q5VCH2hoJoaHlLhO/lIHpwn8Ig=="
|
|
26390
26592
|
},
|
|
26391
26593
|
"@netlify/routing-local-proxy": {
|
|
26392
26594
|
"version": "0.34.1",
|
|
@@ -26486,9 +26688,9 @@
|
|
|
26486
26688
|
}
|
|
26487
26689
|
},
|
|
26488
26690
|
"@netlify/zip-it-and-ship-it": {
|
|
26489
|
-
"version": "5.7.
|
|
26490
|
-
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.7.
|
|
26491
|
-
"integrity": "sha512-
|
|
26691
|
+
"version": "5.7.5",
|
|
26692
|
+
"resolved": "https://registry.npmjs.org/@netlify/zip-it-and-ship-it/-/zip-it-and-ship-it-5.7.5.tgz",
|
|
26693
|
+
"integrity": "sha512-v3buWIrlm0+lmDwI2qHRU4t7zR3LtfU0T2JYUPGIz0D8ezsnHihj0wbBf3lMZnQmHwrqQURQYL9nQTrpwH3YoA==",
|
|
26492
26694
|
"requires": {
|
|
26493
26695
|
"@babel/parser": "7.16.8",
|
|
26494
26696
|
"@netlify/esbuild": "^0.13.6",
|
|
@@ -26508,7 +26710,7 @@
|
|
|
26508
26710
|
"junk": "^3.1.0",
|
|
26509
26711
|
"locate-path": "^6.0.0",
|
|
26510
26712
|
"merge-options": "^3.0.4",
|
|
26511
|
-
"minimatch": "^
|
|
26713
|
+
"minimatch": "^4.0.0",
|
|
26512
26714
|
"p-map": "^4.0.0",
|
|
26513
26715
|
"path-exists": "^4.0.0",
|
|
26514
26716
|
"pkg-dir": "^5.0.0",
|
|
@@ -26519,7 +26721,6 @@
|
|
|
26519
26721
|
"semver": "^7.0.0",
|
|
26520
26722
|
"tmp-promise": "^3.0.2",
|
|
26521
26723
|
"toml": "^3.0.0",
|
|
26522
|
-
"typescript": "^4.6.0-beta",
|
|
26523
26724
|
"unixify": "^1.0.0",
|
|
26524
26725
|
"yargs": "^16.0.0"
|
|
26525
26726
|
},
|
|
@@ -26529,10 +26730,13 @@
|
|
|
26529
26730
|
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.8.tgz",
|
|
26530
26731
|
"integrity": "sha512-i7jDUfrVBWc+7OKcBzEe5n7fbv3i2fWtxKzzCvOjnzSxMfWMigAhtfJ7qzZNGFNMsCCd67+uz553dYKWXPvCKw=="
|
|
26531
26732
|
},
|
|
26532
|
-
"
|
|
26533
|
-
"version": "4.
|
|
26534
|
-
"resolved": "https://registry.npmjs.org/
|
|
26535
|
-
"integrity": "sha512-
|
|
26733
|
+
"minimatch": {
|
|
26734
|
+
"version": "4.1.1",
|
|
26735
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.1.1.tgz",
|
|
26736
|
+
"integrity": "sha512-9ObkVPP8aM2KWHw1RMAaOoEzHjcqzE1dmEQHAOq9ySRhvVMru1VKqniUs/g6Us4KSwXKk0+uLko6caynDcWEWQ==",
|
|
26737
|
+
"requires": {
|
|
26738
|
+
"brace-expansion": "^1.1.7"
|
|
26739
|
+
}
|
|
26536
26740
|
},
|
|
26537
26741
|
"yargs": {
|
|
26538
26742
|
"version": "16.2.0",
|
|
@@ -36025,15 +36229,37 @@
|
|
|
36025
36229
|
}
|
|
36026
36230
|
},
|
|
36027
36231
|
"netlify-headers-parser": {
|
|
36028
|
-
"version": "6.0.
|
|
36029
|
-
"resolved": "https://registry.npmjs.org/netlify-headers-parser/-/netlify-headers-parser-6.0.
|
|
36030
|
-
"integrity": "sha512-
|
|
36232
|
+
"version": "6.0.2",
|
|
36233
|
+
"resolved": "https://registry.npmjs.org/netlify-headers-parser/-/netlify-headers-parser-6.0.2.tgz",
|
|
36234
|
+
"integrity": "sha512-ahDNi7R+Io4iMylyFrOfRUcBUELrXCT0hNVdqPKTHhH917NHiDCH69f6IhhqbzSaZ2/zGFPBrxA3FzJ48yXs3Q==",
|
|
36031
36235
|
"requires": {
|
|
36032
|
-
"escape-string-regexp": "^
|
|
36033
|
-
"is-plain-obj": "^
|
|
36034
|
-
"map-obj": "^
|
|
36035
|
-
"path-exists": "^
|
|
36236
|
+
"escape-string-regexp": "^5.0.0",
|
|
36237
|
+
"is-plain-obj": "^4.0.0",
|
|
36238
|
+
"map-obj": "^5.0.0",
|
|
36239
|
+
"path-exists": "^5.0.0",
|
|
36036
36240
|
"toml": "^3.0.0"
|
|
36241
|
+
},
|
|
36242
|
+
"dependencies": {
|
|
36243
|
+
"escape-string-regexp": {
|
|
36244
|
+
"version": "5.0.0",
|
|
36245
|
+
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
|
|
36246
|
+
"integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
|
|
36247
|
+
},
|
|
36248
|
+
"is-plain-obj": {
|
|
36249
|
+
"version": "4.0.0",
|
|
36250
|
+
"resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz",
|
|
36251
|
+
"integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw=="
|
|
36252
|
+
},
|
|
36253
|
+
"map-obj": {
|
|
36254
|
+
"version": "5.0.0",
|
|
36255
|
+
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.0.tgz",
|
|
36256
|
+
"integrity": "sha512-2L3MIgJynYrZ3TYMriLDLWocz15okFakV6J12HXvMXDHui2x/zgChzg1u9mFFGbbGWE+GsLpQByt4POb9Or+uA=="
|
|
36257
|
+
},
|
|
36258
|
+
"path-exists": {
|
|
36259
|
+
"version": "5.0.0",
|
|
36260
|
+
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz",
|
|
36261
|
+
"integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="
|
|
36262
|
+
}
|
|
36037
36263
|
}
|
|
36038
36264
|
},
|
|
36039
36265
|
"netlify-onegraph-internal": {
|
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.5.0",
|
|
5
5
|
"author": "Netlify Inc.",
|
|
6
6
|
"contributors": [
|
|
7
7
|
"Abraham Schilling <AbrahamSchilling@gmail.com> (https://gitlab.com/n4bb12)",
|
|
@@ -199,14 +199,14 @@
|
|
|
199
199
|
"prettier": "--ignore-path .gitignore --loglevel=warn \"{src,tools,scripts,site,tests,.github}/**/*.{mjs,cjs,js,md,yml,json,html}\" \"*.{mjs,cjs,js,yml,json,html}\" \".*.{mjs,cjs,js,yml,json,html}\" \"!CHANGELOG.md\" \"!npm-shrinkwrap.json\" \"!site/package-lock.json\" \"!.github/**/*.md\""
|
|
200
200
|
},
|
|
201
201
|
"dependencies": {
|
|
202
|
-
"@netlify/build": "^26.3.
|
|
203
|
-
"@netlify/config": "^17.0.
|
|
202
|
+
"@netlify/build": "^26.3.2",
|
|
203
|
+
"@netlify/config": "^17.0.9",
|
|
204
204
|
"@netlify/framework-info": "^9.0.0",
|
|
205
205
|
"@netlify/local-functions-proxy": "^1.1.1",
|
|
206
206
|
"@netlify/plugin-edge-handlers": "^3.0.6",
|
|
207
|
-
"@netlify/plugins-list": "^6.
|
|
207
|
+
"@netlify/plugins-list": "^6.11.0",
|
|
208
208
|
"@netlify/routing-local-proxy": "^0.34.1",
|
|
209
|
-
"@netlify/zip-it-and-ship-it": "^5.7.
|
|
209
|
+
"@netlify/zip-it-and-ship-it": "^5.7.5",
|
|
210
210
|
"@octokit/rest": "^18.0.0",
|
|
211
211
|
"@sindresorhus/slugify": "^1.1.0",
|
|
212
212
|
"ansi-escapes": "^5.0.0",
|
|
@@ -270,7 +270,7 @@
|
|
|
270
270
|
"minimist": "^1.2.5",
|
|
271
271
|
"multiparty": "^4.2.1",
|
|
272
272
|
"netlify": "^11.0.0",
|
|
273
|
-
"netlify-headers-parser": "^6.0.
|
|
273
|
+
"netlify-headers-parser": "^6.0.2",
|
|
274
274
|
"netlify-onegraph-internal": "0.0.50",
|
|
275
275
|
"netlify-redirect-parser": "^13.0.2",
|
|
276
276
|
"netlify-redirector": "^0.2.1",
|
package/src/commands/dev/dev.js
CHANGED
|
@@ -14,6 +14,7 @@ const { startFunctionsServer } = require('../../lib/functions/server')
|
|
|
14
14
|
const {
|
|
15
15
|
OneGraphCliClient,
|
|
16
16
|
loadCLISession,
|
|
17
|
+
markCliSessionInactive,
|
|
17
18
|
persistNewOperationsDocForSession,
|
|
18
19
|
startOneGraphCLISession,
|
|
19
20
|
} = require('../../lib/one-graph/cli-client')
|
|
@@ -78,6 +79,30 @@ const isNonExistingCommandError = ({ command, error: commandError }) => {
|
|
|
78
79
|
)
|
|
79
80
|
}
|
|
80
81
|
|
|
82
|
+
/**
|
|
83
|
+
* @type {(() => Promise<void>)[]} - array of functions to run before the process exits
|
|
84
|
+
*/
|
|
85
|
+
const cleanupWork = []
|
|
86
|
+
|
|
87
|
+
let cleanupStarted = false
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* @param {object} input
|
|
91
|
+
* @param {number=} input.exitCode The exit code to return when exiting the process after cleanup
|
|
92
|
+
*/
|
|
93
|
+
const cleanupBeforeExit = async ({ exitCode }) => {
|
|
94
|
+
// If cleanup has started, then wherever started it will be responsible for exiting
|
|
95
|
+
if (!cleanupStarted) {
|
|
96
|
+
cleanupStarted = true
|
|
97
|
+
try {
|
|
98
|
+
// eslint-disable-next-line no-unused-vars
|
|
99
|
+
const cleanupFinished = await Promise.all(cleanupWork.map((cleanup) => cleanup()))
|
|
100
|
+
} finally {
|
|
101
|
+
process.exit(exitCode)
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
81
106
|
/**
|
|
82
107
|
* Run a command and pipe stdout, stderr and stdin
|
|
83
108
|
* @param {string} command
|
|
@@ -100,30 +125,29 @@ const runCommand = (command, env = {}) => {
|
|
|
100
125
|
|
|
101
126
|
// we can't try->await->catch since we don't want to block on the framework server which
|
|
102
127
|
// is a long running process
|
|
103
|
-
// eslint-disable-next-line promise/catch-or-return
|
|
104
|
-
commandProcess
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
process.on(signal, () => {
|
|
124
|
-
commandProcess.kill('SIGTERM', { forceKillAfterTimeout: 500 })
|
|
125
|
-
process.exit()
|
|
128
|
+
// eslint-disable-next-line promise/catch-or-return
|
|
129
|
+
commandProcess
|
|
130
|
+
// eslint-disable-next-line promise/prefer-await-to-then
|
|
131
|
+
.then(async () => {
|
|
132
|
+
const result = await commandProcess
|
|
133
|
+
const [commandWithoutArgs] = command.split(' ')
|
|
134
|
+
if (result.failed && isNonExistingCommandError({ command: commandWithoutArgs, error: result })) {
|
|
135
|
+
log(
|
|
136
|
+
NETLIFYDEVERR,
|
|
137
|
+
`Failed running command: ${command}. Please verify ${chalk.magenta(`'${commandWithoutArgs}'`)} exists`,
|
|
138
|
+
)
|
|
139
|
+
} else {
|
|
140
|
+
const errorMessage = result.failed
|
|
141
|
+
? `${NETLIFYDEVERR} ${result.shortMessage}`
|
|
142
|
+
: `${NETLIFYDEVWARN} "${command}" exited with code ${result.exitCode}`
|
|
143
|
+
|
|
144
|
+
log(`${errorMessage}. Shutting down Netlify Dev server`)
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
return await cleanupBeforeExit({ exitCode: 1 })
|
|
126
148
|
})
|
|
149
|
+
;['SIGINT', 'SIGTERM', 'SIGQUIT', 'SIGHUP', 'exit'].forEach((signal) => {
|
|
150
|
+
process.on(signal, async () => await cleanupBeforeExit({}))
|
|
127
151
|
})
|
|
128
152
|
|
|
129
153
|
return commandProcess
|
|
@@ -336,12 +360,18 @@ const dev = async (options, command) => {
|
|
|
336
360
|
const oneGraphSessionId = loadCLISession(state)
|
|
337
361
|
|
|
338
362
|
await persistNewOperationsDocForSession({
|
|
363
|
+
netlifyGraphConfig,
|
|
339
364
|
netlifyToken,
|
|
340
365
|
oneGraphSessionId,
|
|
341
366
|
operationsDoc: graphqlDocument,
|
|
342
367
|
siteId: site.id,
|
|
368
|
+
siteRoot: site.root,
|
|
343
369
|
})
|
|
344
370
|
|
|
371
|
+
const cleanupSession = () => markCliSessionInactive({ netlifyToken, sessionId: oneGraphSessionId, siteId: site.id })
|
|
372
|
+
|
|
373
|
+
cleanupWork.push(cleanupSession)
|
|
374
|
+
|
|
345
375
|
const graphEditUrl = getGraphEditUrlBySiteId({ siteId: site.id, oneGraphSessionId })
|
|
346
376
|
|
|
347
377
|
log(
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
// @ts-check
|
|
2
2
|
const gitRepoInfo = require('git-repo-info')
|
|
3
3
|
|
|
4
|
-
const {
|
|
5
|
-
OneGraphCliClient,
|
|
6
|
-
createCLISession,
|
|
7
|
-
generateSessionName,
|
|
8
|
-
loadCLISession,
|
|
9
|
-
upsertMergeCLISessionMetadata,
|
|
10
|
-
} = require('../../lib/one-graph/cli-client')
|
|
4
|
+
const { OneGraphCliClient, ensureCLISession, upsertMergeCLISessionMetadata } = require('../../lib/one-graph/cli-client')
|
|
11
5
|
const {
|
|
12
6
|
defaultExampleOperationsDoc,
|
|
13
7
|
getGraphEditUrlBySiteId,
|
|
@@ -48,13 +42,12 @@ const graphEdit = async (options, command) => {
|
|
|
48
42
|
|
|
49
43
|
await ensureAppForSite(netlifyToken, siteId)
|
|
50
44
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
state
|
|
56
|
-
|
|
57
|
-
}
|
|
45
|
+
const oneGraphSessionId = await ensureCLISession({
|
|
46
|
+
metadata: {},
|
|
47
|
+
netlifyToken,
|
|
48
|
+
site,
|
|
49
|
+
state,
|
|
50
|
+
})
|
|
58
51
|
|
|
59
52
|
const { branch } = gitRepoInfo()
|
|
60
53
|
const persistedDoc = await createPersistedQuery(netlifyToken, {
|
|
@@ -1,20 +1,28 @@
|
|
|
1
1
|
// @ts-check
|
|
2
|
+
const inquirer = require('inquirer')
|
|
3
|
+
const { GraphQL } = require('netlify-onegraph-internal')
|
|
4
|
+
|
|
2
5
|
const {
|
|
3
6
|
buildSchema,
|
|
7
|
+
defaultExampleOperationsDoc,
|
|
8
|
+
extractFunctionsFromOperationDoc,
|
|
4
9
|
generateHandlerByOperationName,
|
|
5
10
|
getNetlifyGraphConfig,
|
|
11
|
+
readGraphQLOperationsSourceFile,
|
|
6
12
|
readGraphQLSchemaFile,
|
|
7
13
|
} = require('../../lib/one-graph/cli-netlify-graph')
|
|
8
14
|
const { error, log } = require('../../utils')
|
|
9
15
|
|
|
16
|
+
const { parse } = GraphQL
|
|
17
|
+
|
|
10
18
|
/**
|
|
11
19
|
* Creates the `netlify graph:handler` command
|
|
12
|
-
* @param {string}
|
|
20
|
+
* @param {string} userOperationName
|
|
13
21
|
* @param {import('commander').OptionValues} options
|
|
14
22
|
* @param {import('../base-command').BaseCommand} command
|
|
15
23
|
* @returns
|
|
16
24
|
*/
|
|
17
|
-
const graphHandler = async (
|
|
25
|
+
const graphHandler = async (userOperationName, options, command) => {
|
|
18
26
|
const netlifyGraphConfig = await getNetlifyGraphConfig({ command, options })
|
|
19
27
|
|
|
20
28
|
const schemaString = readGraphQLSchemaFile(netlifyGraphConfig)
|
|
@@ -31,6 +39,64 @@ const graphHandler = async (operationName, options, command) => {
|
|
|
31
39
|
error(`Failed to parse Netlify GraphQL schema`)
|
|
32
40
|
}
|
|
33
41
|
|
|
42
|
+
let operationName
|
|
43
|
+
if (!userOperationName) {
|
|
44
|
+
try {
|
|
45
|
+
let currentOperationsDoc = readGraphQLOperationsSourceFile(netlifyGraphConfig)
|
|
46
|
+
if (currentOperationsDoc.trim().length === 0) {
|
|
47
|
+
currentOperationsDoc = defaultExampleOperationsDoc
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const parsedDoc = parse(currentOperationsDoc)
|
|
51
|
+
const { functions } = extractFunctionsFromOperationDoc(parsedDoc)
|
|
52
|
+
|
|
53
|
+
const sorted = Object.values(functions).sort((aItem, bItem) =>
|
|
54
|
+
aItem.operationName.localeCompare(bItem.operationName),
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
const perPage = 50
|
|
58
|
+
|
|
59
|
+
const allOperationChoices = sorted.map((operation) => ({
|
|
60
|
+
name: `${operation.operationName} (${operation.kind})`,
|
|
61
|
+
value: operation.operationName,
|
|
62
|
+
}))
|
|
63
|
+
|
|
64
|
+
const filterOperationNames = (operationChoices, input) =>
|
|
65
|
+
operationChoices.filter((operation) => operation.value.toLowerCase().match(input.toLowerCase()))
|
|
66
|
+
|
|
67
|
+
// eslint-disable-next-line node/global-require
|
|
68
|
+
const inquirerAutocompletePrompt = require('inquirer-autocomplete-prompt')
|
|
69
|
+
/** multiple matching detectors, make the user choose */
|
|
70
|
+
inquirer.registerPrompt('autocomplete', inquirerAutocompletePrompt)
|
|
71
|
+
|
|
72
|
+
const { selectedOperationName } = await inquirer.prompt({
|
|
73
|
+
name: 'selectedOperationName',
|
|
74
|
+
message: `For which operation would you like to generate a handler?`,
|
|
75
|
+
type: 'autocomplete',
|
|
76
|
+
pageSize: perPage,
|
|
77
|
+
source(_, input) {
|
|
78
|
+
if (!input || input === '') {
|
|
79
|
+
return allOperationChoices
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const filteredChoices = filterOperationNames(allOperationChoices, input)
|
|
83
|
+
// only show filtered results
|
|
84
|
+
return filteredChoices
|
|
85
|
+
},
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
if (selectedOperationName) {
|
|
89
|
+
operationName = selectedOperationName
|
|
90
|
+
}
|
|
91
|
+
} catch (parseError) {
|
|
92
|
+
parseError(`Error parsing operations library: ${parseError}`)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (!operationName) {
|
|
97
|
+
error(`No operation name provided`)
|
|
98
|
+
}
|
|
99
|
+
|
|
34
100
|
generateHandlerByOperationName({ logger: log, netlifyGraphConfig, schema, operationName, handlerOptions: {} })
|
|
35
101
|
}
|
|
36
102
|
|
|
@@ -42,7 +108,7 @@ const graphHandler = async (operationName, options, command) => {
|
|
|
42
108
|
const createGraphHandlerCommand = (program) =>
|
|
43
109
|
program
|
|
44
110
|
.command('graph:handler')
|
|
45
|
-
.argument('
|
|
111
|
+
.argument('[name]', 'Operation name')
|
|
46
112
|
.description(
|
|
47
113
|
'Generate a handler for a Graph operation given its name. See `graph:operations` for a list of operations.',
|
|
48
114
|
)
|
|
@@ -24,7 +24,13 @@ const {
|
|
|
24
24
|
|
|
25
25
|
const { parse } = GraphQL
|
|
26
26
|
const { defaultExampleOperationsDoc, extractFunctionsFromOperationDoc } = NetlifyGraph
|
|
27
|
-
const {
|
|
27
|
+
const {
|
|
28
|
+
createPersistedQuery,
|
|
29
|
+
ensureAppForSite,
|
|
30
|
+
executeMarkCliSessionActiveHeartbeat,
|
|
31
|
+
executeMarkCliSessionInactive,
|
|
32
|
+
updateCLISessionMetadata,
|
|
33
|
+
} = OneGraphClient
|
|
28
34
|
|
|
29
35
|
const internalConsole = {
|
|
30
36
|
log,
|
|
@@ -51,13 +57,31 @@ InternalConsole.registerConsole(internalConsole)
|
|
|
51
57
|
* @param {function} input.onEvents A function to call when CLI events are received and need to be processed
|
|
52
58
|
* @param {string} input.sessionId The session id to monitor CLI events for
|
|
53
59
|
* @param {StateConfig} input.state A function to call to set/get the current state of the local Netlify project
|
|
60
|
+
* @param {any} input.site The site object
|
|
54
61
|
* @returns
|
|
55
62
|
*/
|
|
56
63
|
const monitorCLISessionEvents = (input) => {
|
|
57
|
-
const { appId, netlifyGraphConfig, netlifyToken, onClose, onError, onEvents, sessionId, state } = input
|
|
64
|
+
const { appId, netlifyGraphConfig, netlifyToken, onClose, onError, onEvents, sessionId, site, state } = input
|
|
58
65
|
|
|
59
66
|
const frequency = 5000
|
|
67
|
+
// 30 minutes
|
|
68
|
+
const defaultHeartbeatFrequency = 1_800_000
|
|
60
69
|
let shouldClose = false
|
|
70
|
+
let nextMarkActiveHeartbeat = defaultHeartbeatFrequency
|
|
71
|
+
|
|
72
|
+
const markActiveHelper = async () => {
|
|
73
|
+
const fullSession = await OneGraphClient.fetchCliSession({ authToken: netlifyToken, appId, sessionId })
|
|
74
|
+
// @ts-ignore
|
|
75
|
+
const heartbeatIntervalms = fullSession.session.cliHeartbeatIntervalMs || defaultHeartbeatFrequency
|
|
76
|
+
nextMarkActiveHeartbeat = heartbeatIntervalms
|
|
77
|
+
const markCLISessionActiveResult = await executeMarkCliSessionActiveHeartbeat(netlifyToken, site.id, sessionId)
|
|
78
|
+
if (markCLISessionActiveResult.errors && markCLISessionActiveResult.errors.length !== 0) {
|
|
79
|
+
warn(`Failed to mark CLI session active: ${markCLISessionActiveResult.errors.join(', ')}`)
|
|
80
|
+
}
|
|
81
|
+
setTimeout(markActiveHelper, nextMarkActiveHeartbeat)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
setTimeout(markActiveHelper, nextMarkActiveHeartbeat)
|
|
61
85
|
|
|
62
86
|
const enabledServiceWatcher = async (innerNetlifyToken, siteId) => {
|
|
63
87
|
const enabledServices = state.get('oneGraphEnabledServices') || ['onegraph']
|
|
@@ -371,6 +395,7 @@ const upsertMergeCLISessionMetadata = async ({ netlifyToken, newMetadata, oneGra
|
|
|
371
395
|
|
|
372
396
|
const detectedMetadata = detectLocalCLISessionMetadata({ siteRoot })
|
|
373
397
|
|
|
398
|
+
// @ts-ignore
|
|
374
399
|
const finalMetadata = { ...metadata, ...detectedMetadata, ...newMetadata }
|
|
375
400
|
return OneGraphClient.updateCLISessionMetadata(netlifyToken, siteId, oneGraphSessionId, finalMetadata)
|
|
376
401
|
}
|
|
@@ -429,19 +454,13 @@ const loadCLISession = (state) => state.get('oneGraphSessionId')
|
|
|
429
454
|
const startOneGraphCLISession = async (input) => {
|
|
430
455
|
const { netlifyGraphConfig, netlifyToken, site, state } = input
|
|
431
456
|
OneGraphClient.ensureAppForSite(netlifyToken, site.id)
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
sessionName,
|
|
440
|
-
metadata: sessionMetadata,
|
|
441
|
-
})
|
|
442
|
-
state.set('oneGraphSessionId', oneGraphSession.id)
|
|
443
|
-
oneGraphSessionId = state.get('oneGraphSessionId')
|
|
444
|
-
}
|
|
457
|
+
|
|
458
|
+
const oneGraphSessionId = await ensureCLISession({
|
|
459
|
+
metadata: {},
|
|
460
|
+
netlifyToken,
|
|
461
|
+
site,
|
|
462
|
+
state,
|
|
463
|
+
})
|
|
445
464
|
|
|
446
465
|
const enabledServices = []
|
|
447
466
|
const schema = await OneGraphClient.fetchOneGraphSchema(site.id, enabledServices)
|
|
@@ -481,6 +500,7 @@ const startOneGraphCLISession = async (input) => {
|
|
|
481
500
|
netlifyToken,
|
|
482
501
|
netlifyGraphConfig,
|
|
483
502
|
sessionId: oneGraphSessionId,
|
|
503
|
+
site,
|
|
484
504
|
state,
|
|
485
505
|
onEvents: async (events) => {
|
|
486
506
|
for (const event of events) {
|
|
@@ -500,6 +520,20 @@ const startOneGraphCLISession = async (input) => {
|
|
|
500
520
|
})
|
|
501
521
|
}
|
|
502
522
|
|
|
523
|
+
/**
|
|
524
|
+
* Mark a session as inactive so it doesn't show up in any UI lists, and potentially becomes available to GC later
|
|
525
|
+
* @param {object} input
|
|
526
|
+
* @param {string} input.netlifyToken The (typically netlify) access token that is used for authentication, if any
|
|
527
|
+
* @param {string} input.siteId A function to call to set/get the current state of the local Netlify project
|
|
528
|
+
* @param {string} input.sessionId The session id to monitor CLI events for
|
|
529
|
+
*/
|
|
530
|
+
const markCliSessionInactive = async ({ netlifyToken, sessionId, siteId }) => {
|
|
531
|
+
const result = await executeMarkCliSessionInactive(netlifyToken, siteId, sessionId)
|
|
532
|
+
if (result.errors) {
|
|
533
|
+
warn(`Unable to mark CLI session ${sessionId} inactive: ${JSON.stringify(result.errors, null, 2)}`)
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
503
537
|
/**
|
|
504
538
|
* Generate a session name that can be identified as belonging to the current checkout
|
|
505
539
|
* @returns {string} The name of the session to create
|
|
@@ -511,6 +545,70 @@ const generateSessionName = () => {
|
|
|
511
545
|
return sessionName
|
|
512
546
|
}
|
|
513
547
|
|
|
548
|
+
/**
|
|
549
|
+
* Ensures a cli session exists for the current checkout, or errors out if it doesn't and cannot create one.
|
|
550
|
+
*/
|
|
551
|
+
const ensureCLISession = async ({ metadata, netlifyToken, site, state }) => {
|
|
552
|
+
let oneGraphSessionId = loadCLISession(state)
|
|
553
|
+
let parentCliSessionId = null
|
|
554
|
+
|
|
555
|
+
// Validate that session still exists and we can access it
|
|
556
|
+
try {
|
|
557
|
+
if (oneGraphSessionId) {
|
|
558
|
+
const sessionEvents = await OneGraphClient.fetchCliSessionEvents({
|
|
559
|
+
appId: site.id,
|
|
560
|
+
authToken: netlifyToken,
|
|
561
|
+
sessionId: oneGraphSessionId,
|
|
562
|
+
})
|
|
563
|
+
if (sessionEvents.errors) {
|
|
564
|
+
warn(`Unable to fetch cli session: ${JSON.stringify(sessionEvents.errors, null, 2)}`)
|
|
565
|
+
log(`Creating new cli session`)
|
|
566
|
+
parentCliSessionId = oneGraphSessionId
|
|
567
|
+
oneGraphSessionId = null
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
} catch (fetchSessionError) {
|
|
571
|
+
warn(`Unable to fetch cli session events: ${JSON.stringify(fetchSessionError, null, 2)}`)
|
|
572
|
+
oneGraphSessionId = null
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
if (!oneGraphSessionId) {
|
|
576
|
+
// If we can't access the session in the state.json or it doesn't exist, create a new one
|
|
577
|
+
const sessionName = generateSessionName()
|
|
578
|
+
const detectedMetadata = detectLocalCLISessionMetadata({ siteRoot: site.root })
|
|
579
|
+
const newSessionMetadata = parentCliSessionId ? { parentCliSessionId } : {}
|
|
580
|
+
const sessionMetadata = {
|
|
581
|
+
...detectedMetadata,
|
|
582
|
+
...newSessionMetadata,
|
|
583
|
+
...metadata,
|
|
584
|
+
}
|
|
585
|
+
const oneGraphSession = await createCLISession({
|
|
586
|
+
netlifyToken,
|
|
587
|
+
siteId: site.id,
|
|
588
|
+
sessionName,
|
|
589
|
+
metadata: sessionMetadata,
|
|
590
|
+
})
|
|
591
|
+
state.set('oneGraphSessionId', oneGraphSession.id)
|
|
592
|
+
oneGraphSessionId = state.get('oneGraphSessionId')
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
if (!oneGraphSessionId) {
|
|
596
|
+
error('Unable to create or access Netlify Graph CLI session')
|
|
597
|
+
}
|
|
598
|
+
|
|
599
|
+
const { errors: markCLISessionActiveErrors } = await executeMarkCliSessionActiveHeartbeat(
|
|
600
|
+
netlifyToken,
|
|
601
|
+
site.id,
|
|
602
|
+
oneGraphSessionId,
|
|
603
|
+
)
|
|
604
|
+
|
|
605
|
+
if (markCLISessionActiveErrors) {
|
|
606
|
+
warn(`Unable to mark cli session active: ${JSON.stringify(markCLISessionActiveErrors, null, 2)}`)
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
return oneGraphSessionId
|
|
610
|
+
}
|
|
611
|
+
|
|
514
612
|
const OneGraphCliClient = {
|
|
515
613
|
ackCLISessionEvents: OneGraphClient.ackCLISessionEvents,
|
|
516
614
|
createPersistedQuery,
|
|
@@ -522,10 +620,12 @@ const OneGraphCliClient = {
|
|
|
522
620
|
module.exports = {
|
|
523
621
|
OneGraphCliClient,
|
|
524
622
|
createCLISession,
|
|
623
|
+
ensureCLISession,
|
|
525
624
|
extractFunctionsFromOperationDoc,
|
|
526
625
|
handleCliSessionEvent,
|
|
527
626
|
generateSessionName,
|
|
528
627
|
loadCLISession,
|
|
628
|
+
markCliSessionInactive,
|
|
529
629
|
monitorCLISessionEvents,
|
|
530
630
|
persistNewOperationsDocForSession,
|
|
531
631
|
refetchAndGenerateFromOneGraph,
|