1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Attempt upgrade to @kubernetes/client-node@1.0.0-rc.1

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2023-03-27 14:52:38 -04:00
parent 4f2ba5df48
commit c7218fd909
11 changed files with 405 additions and 210 deletions

389
package-lock.json generated
View File

@ -4620,37 +4620,6 @@
"resolved": "packages/infrastructure/webpack", "resolved": "packages/infrastructure/webpack",
"link": true "link": true
}, },
"node_modules/@kubernetes/client-node": {
"version": "0.18.1",
"resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-0.18.1.tgz",
"integrity": "sha512-F3JiK9iZnbh81O/da1tD0h8fQMi/MDttWc/JydyUVnjPEom55wVfnpl4zQ/sWD4uKB8FlxYRPiLwV2ZXB+xPKw==",
"dependencies": {
"@types/js-yaml": "^4.0.1",
"@types/node": "^18.11.17",
"@types/request": "^2.47.1",
"@types/ws": "^8.5.3",
"byline": "^5.0.0",
"isomorphic-ws": "^5.0.0",
"js-yaml": "^4.1.0",
"jsonpath-plus": "^7.2.0",
"request": "^2.88.0",
"rfc4648": "^1.3.0",
"stream-buffers": "^3.0.2",
"tar": "^6.1.11",
"tmp-promise": "^3.0.2",
"tslib": "^2.4.1",
"underscore": "^1.13.6",
"ws": "^8.11.0"
},
"optionalDependencies": {
"openid-client": "^5.3.0"
}
},
"node_modules/@kubernetes/client-node/node_modules/underscore": {
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"node_modules/@leichtgewicht/ip-codec": { "node_modules/@leichtgewicht/ip-codec": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz",
@ -6039,6 +6008,14 @@
"lodash": "^4.17.21" "lodash": "^4.17.21"
} }
}, },
"node_modules/@panva/asn1.js": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@panva/asn1.js/-/asn1.js-1.0.0.tgz",
"integrity": "sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw==",
"engines": {
"node": ">=10.13.0"
}
},
"node_modules/@parcel/watcher": { "node_modules/@parcel/watcher": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz",
@ -7686,11 +7663,18 @@
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
"integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==" "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw=="
}, },
"node_modules/@types/stream-buffers": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/stream-buffers/-/stream-buffers-3.0.4.tgz",
"integrity": "sha512-qU/K1tb2yUdhXkLIATzsIPwbtX6BpZk0l3dPW6xqWyhfzzM1ECaQ/8faEnu3CNraLiQ9LHyQQPBGp7N9Fbs25w==",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/tar": { "node_modules/@types/tar": {
"version": "6.1.4", "version": "6.1.4",
"resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.4.tgz", "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.4.tgz",
"integrity": "sha512-Cp4oxpfIzWt7mr2pbhHT2OTXGMAL0szYCzuf8lRWyIMCgsx6/Hfc3ubztuhvzXHXgraTQxyOCmmg7TDGIMIJJQ==", "integrity": "sha512-Cp4oxpfIzWt7mr2pbhHT2OTXGMAL0szYCzuf8lRWyIMCgsx6/Hfc3ubztuhvzXHXgraTQxyOCmmg7TDGIMIJJQ==",
"dev": true,
"dependencies": { "dependencies": {
"@types/node": "*", "@types/node": "*",
"minipass": "^4.0.0" "minipass": "^4.0.0"
@ -7744,6 +7728,11 @@
"integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==", "integrity": "sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==",
"dev": true "dev": true
}, },
"node_modules/@types/underscore": {
"version": "1.11.4",
"resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz",
"integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg=="
},
"node_modules/@types/url-parse": { "node_modules/@types/url-parse": {
"version": "1.4.8", "version": "1.4.8",
"resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.8.tgz", "resolved": "https://registry.npmjs.org/@types/url-parse/-/url-parse-1.4.8.tgz",
@ -7803,6 +7792,7 @@
"version": "8.5.4", "version": "8.5.4",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
"integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
"dev": true,
"dependencies": { "dependencies": {
"@types/node": "*" "@types/node": "*"
} }
@ -12915,7 +12905,6 @@
"version": "0.1.13", "version": "0.1.13",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"dev": true,
"optional": true, "optional": true,
"dependencies": { "dependencies": {
"iconv-lite": "^0.6.2" "iconv-lite": "^0.6.2"
@ -17623,14 +17612,6 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/isomorphic-ws": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz",
"integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==",
"peerDependencies": {
"ws": "*"
}
},
"node_modules/isstream": { "node_modules/isstream": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
@ -20664,15 +20645,6 @@
"resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz",
"integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ=="
}, },
"node_modules/jose": {
"version": "4.13.1",
"resolved": "https://registry.npmjs.org/jose/-/jose-4.13.1.tgz",
"integrity": "sha512-MSJQC5vXco5Br38mzaQKiq9mwt7lwj2eXpgpRyQYNHYt2lq1PjkWa7DLXX0WVcQLE9HhMh3jPiufS7fhJf+CLQ==",
"optional": true,
"funding": {
"url": "https://github.com/sponsors/panva"
}
},
"node_modules/joycon": { "node_modules/joycon": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz",
@ -20866,14 +20838,6 @@
"node >= 0.2.0" "node >= 0.2.0"
] ]
}, },
"node_modules/jsonpath-plus": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-7.2.0.tgz",
"integrity": "sha512-zBfiUPM5nD0YZSBT/o/fbCUlCcepMIdP0CJZxM1+KgA4f2T206f6VAg9e7mX35+KlMaIc5qXW34f3BnwJ3w+RA==",
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/JSONStream": { "node_modules/JSONStream": {
"version": "1.3.5", "version": "1.3.5",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
@ -26764,7 +26728,6 @@
"version": "2.2.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz",
"integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==",
"optional": true,
"engines": { "engines": {
"node": ">= 6" "node": ">= 6"
} }
@ -26896,7 +26859,6 @@
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz", "resolved": "https://registry.npmjs.org/oidc-token-hash/-/oidc-token-hash-5.0.1.tgz",
"integrity": "sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ==", "integrity": "sha512-EvoOtz6FIEBzE+9q253HsLCVRiK/0doEJ2HCvvqMQb3dHZrP3WlJKYtJ55CRTw4jmYomzH4wkPuCj/I3ZvpKxQ==",
"optional": true,
"engines": { "engines": {
"node": "^10.13.0 || >=12.0.0" "node": "^10.13.0 || >=12.0.0"
} }
@ -26997,39 +26959,6 @@
"resolved": "packages/open-lens", "resolved": "packages/open-lens",
"link": true "link": true
}, },
"node_modules/openid-client": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.4.0.tgz",
"integrity": "sha512-hgJa2aQKcM2hn3eyVtN12tEA45ECjTJPXCgUh5YzTzy9qwapCvmDTVPWOcWVL0d34zeQoQ/hbG9lJhl3AYxJlQ==",
"optional": true,
"dependencies": {
"jose": "^4.10.0",
"lru-cache": "^6.0.0",
"object-hash": "^2.0.1",
"oidc-token-hash": "^5.0.1"
},
"funding": {
"url": "https://github.com/sponsors/panva"
}
},
"node_modules/openid-client/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"optional": true,
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/openid-client/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"optional": true
},
"node_modules/optionator": { "node_modules/optionator": {
"version": "0.9.1", "version": "0.9.1",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
@ -30571,6 +30500,41 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/shelljs": {
"version": "0.8.5",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
"integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
"dependencies": {
"glob": "^7.0.0",
"interpret": "^1.0.0",
"rechoir": "^0.6.2"
},
"bin": {
"shjs": "bin/shjs"
},
"engines": {
"node": ">=4"
}
},
"node_modules/shelljs/node_modules/interpret": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"engines": {
"node": ">= 0.10"
}
},
"node_modules/shelljs/node_modules/rechoir": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
"integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
"dependencies": {
"resolve": "^1.1.6"
},
"engines": {
"node": ">= 0.10"
}
},
"node_modules/shiki": { "node_modules/shiki": {
"version": "0.14.1", "version": "0.14.1",
"resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz", "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz",
@ -34175,7 +34139,7 @@
"@hapi/subtext": "^7.1.0", "@hapi/subtext": "^7.1.0",
"@k8slens/cluster-settings": "^6.5.0-alpha.1", "@k8slens/cluster-settings": "^6.5.0-alpha.1",
"@k8slens/node-fetch": "^6.5.0-alpha.1", "@k8slens/node-fetch": "^6.5.0-alpha.1",
"@kubernetes/client-node": "^0.18.1", "@kubernetes/client-node": "^1.0.0-rc1",
"@material-ui/styles": "^4.11.5", "@material-ui/styles": "^4.11.5",
"@ogre-tools/fp": "^15.1.2", "@ogre-tools/fp": "^15.1.2",
"@ogre-tools/injectable": "^15.1.2", "@ogre-tools/injectable": "^15.1.2",
@ -34407,11 +34371,244 @@
"xterm-addon-fit": "^0.5.0" "xterm-addon-fit": "^0.5.0"
} }
}, },
"packages/core/node_modules/@kubernetes/client-node": {
"version": "1.0.0-rc1",
"resolved": "https://registry.npmjs.org/@kubernetes/client-node/-/client-node-1.0.0-rc1.tgz",
"integrity": "sha512-d4PY7hk0+uJN9heEt2ntzbJtfJSJ/Rndfb7hw3KBGVSJoVFSwk6NXih9Nz8gfQB/v4cFzPzajjXWqoW3PvH4lQ==",
"dependencies": {
"@types/js-yaml": "^4.0.1",
"@types/node": "^10.12.0",
"@types/request": "^2.47.1",
"@types/stream-buffers": "^3.0.3",
"@types/tar": "^6.1.1",
"@types/underscore": "^1.8.9",
"@types/ws": "^6.0.1",
"abort-controller": "^3.0.0",
"byline": "^5.0.0",
"execa": "5.0.0",
"isomorphic-ws": "^4.0.1",
"js-yaml": "^4.1.0",
"jsonpath-plus": "^0.19.0",
"node-fetch": "^2.6.0",
"openid-client": "^4.1.1",
"request": "^2.88.0",
"rfc4648": "^1.3.0",
"shelljs": "^0.8.5",
"stream-buffers": "^3.0.2",
"tar": "^6.1.11",
"tmp-promise": "^3.0.2",
"tslib": "^1.9.3",
"underscore": "^1.9.1",
"url-parse": "^1.4.3",
"ws": "^7.3.1"
}
},
"packages/core/node_modules/@kubernetes/client-node/node_modules/@types/node": {
"version": "10.17.60",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz",
"integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw=="
},
"packages/core/node_modules/@kubernetes/client-node/node_modules/isomorphic-ws": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz",
"integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==",
"peerDependencies": {
"ws": "*"
}
},
"packages/core/node_modules/@kubernetes/client-node/node_modules/ws": {
"version": "7.5.9",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz",
"integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==",
"engines": {
"node": ">=8.3.0"
},
"peerDependencies": {
"bufferutil": "^4.0.1",
"utf-8-validate": "^5.0.2"
},
"peerDependenciesMeta": {
"bufferutil": {
"optional": true
},
"utf-8-validate": {
"optional": true
}
}
},
"packages/core/node_modules/@types/node": { "packages/core/node_modules/@types/node": {
"version": "16.18.16", "version": "16.18.16",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.16.tgz",
"integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA==", "integrity": "sha512-ZOzvDRWp8dCVBmgnkIqYCArgdFOO9YzocZp8Ra25N/RStKiWvMOXHMz+GjSeVNe5TstaTmTWPucGJkDw0XXJWA=="
"dev": true },
"packages/core/node_modules/@types/ws": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-6.0.4.tgz",
"integrity": "sha512-PpPrX7SZW9re6+Ha8ojZG4Se8AZXgf0GK6zmfqEuCsY49LFDNXO3SByp44X3dFEqtB73lkCDAdUazhAjVPiNwg==",
"dependencies": {
"@types/node": "*"
}
},
"packages/core/node_modules/execa": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
"integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
"dependencies": {
"cross-spawn": "^7.0.3",
"get-stream": "^6.0.0",
"human-signals": "^2.1.0",
"is-stream": "^2.0.0",
"merge-stream": "^2.0.0",
"npm-run-path": "^4.0.1",
"onetime": "^5.1.2",
"signal-exit": "^3.0.3",
"strip-final-newline": "^2.0.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sindresorhus/execa?sponsor=1"
}
},
"packages/core/node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
"integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"packages/core/node_modules/is-stream": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"engines": {
"node": ">=8"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"packages/core/node_modules/jose": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/jose/-/jose-2.0.6.tgz",
"integrity": "sha512-FVoPY7SflDodE4lknJmbAHSUjLCzE2H1F6MS0RYKMQ8SR+lNccpMf8R4eqkNYyyUjR5qZReOzZo5C5YiHOCjjg==",
"dependencies": {
"@panva/asn1.js": "^1.0.0"
},
"engines": {
"node": ">=10.13.0 < 13 || >=13.7.0"
},
"funding": {
"url": "https://github.com/sponsors/panva"
}
},
"packages/core/node_modules/jsonpath-plus": {
"version": "0.19.0",
"resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-0.19.0.tgz",
"integrity": "sha512-GSVwsrzW9LsA5lzsqe4CkuZ9wp+kxBb2GwNniaWzI2YFn5Ig42rSW8ZxVpWXaAfakXNrx5pgY5AbQq7kzX29kg==",
"engines": {
"node": ">=6.0"
}
},
"packages/core/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"packages/core/node_modules/node-fetch": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz",
"integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==",
"dependencies": {
"whatwg-url": "^5.0.0"
},
"engines": {
"node": "4.x || >=6.0.0"
},
"peerDependencies": {
"encoding": "^0.1.0"
},
"peerDependenciesMeta": {
"encoding": {
"optional": true
}
}
},
"packages/core/node_modules/npm-run-path": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
"integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
"dependencies": {
"path-key": "^3.0.0"
},
"engines": {
"node": ">=8"
}
},
"packages/core/node_modules/openid-client": {
"version": "4.9.1",
"resolved": "https://registry.npmjs.org/openid-client/-/openid-client-4.9.1.tgz",
"integrity": "sha512-DYUF07AHjI3QDKqKbn2F7RqozT4hyi4JvmpodLrq0HHoNP7t/AjeG/uqiBK1/N2PZSAQEThVjDLHSmJN4iqu/w==",
"dependencies": {
"aggregate-error": "^3.1.0",
"got": "^11.8.0",
"jose": "^2.0.5",
"lru-cache": "^6.0.0",
"make-error": "^1.3.6",
"object-hash": "^2.0.1",
"oidc-token-hash": "^5.0.1"
},
"engines": {
"node": "^10.19.0 || >=12.0.0 < 13 || >=13.7.0 < 14 || >= 14.2.0"
},
"funding": {
"url": "https://github.com/sponsors/panva"
}
},
"packages/core/node_modules/tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
"packages/core/node_modules/tslib": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
"packages/core/node_modules/underscore": {
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"packages/core/node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
},
"packages/core/node_modules/whatwg-url": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
"dependencies": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"packages/core/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}, },
"packages/ensure-binaries": { "packages/ensure-binaries": {
"name": "@k8slens/ensure-binaries", "name": "@k8slens/ensure-binaries",

View File

@ -122,7 +122,7 @@
"@hapi/subtext": "^7.1.0", "@hapi/subtext": "^7.1.0",
"@k8slens/cluster-settings": "^6.5.0-alpha.1", "@k8slens/cluster-settings": "^6.5.0-alpha.1",
"@k8slens/node-fetch": "^6.5.0-alpha.1", "@k8slens/node-fetch": "^6.5.0-alpha.1",
"@kubernetes/client-node": "^0.18.1", "@kubernetes/client-node": "^1.0.0-rc1",
"@material-ui/styles": "^4.11.5", "@material-ui/styles": "^4.11.5",
"@ogre-tools/fp": "^15.1.2", "@ogre-tools/fp": "^15.1.2",
"@ogre-tools/injectable": "^15.1.2", "@ogre-tools/injectable": "^15.1.2",

View File

@ -23,13 +23,15 @@ const createCanIInjectable = getInjectable({
return (api) => async (resourceAttributes: V1ResourceAttributes): Promise<boolean> => { return (api) => async (resourceAttributes: V1ResourceAttributes): Promise<boolean> => {
try { try {
const { body } = await api.createSelfSubjectAccessReview({ const review = await api.createSelfSubjectAccessReview({
apiVersion: "authorization.k8s.io/v1", body: {
kind: "SelfSubjectAccessReview", apiVersion: "authorization.k8s.io/v1",
spec: { resourceAttributes }, kind: "SelfSubjectAccessReview",
spec: { resourceAttributes },
},
}); });
return body.status?.allowed ?? false; return review.status?.allowed ?? false;
} catch (error) { } catch (error) {
logger.error(`[AUTHORIZATION-REVIEW]: failed to create access review: ${error}`, { resourceAttributes }); logger.error(`[AUTHORIZATION-REVIEW]: failed to create access review: ${error}`, { resourceAttributes });

View File

@ -25,10 +25,12 @@ const createRequestNamespaceListPermissionsInjectable = getInjectable({
return (api) => async (namespace) => { return (api) => async (namespace) => {
try { try {
const { body: { status }} = await api.createSelfSubjectRulesReview({ const { status } = await api.createSelfSubjectRulesReview({
apiVersion: "authorization.k8s.io/v1", body: {
kind: "SelfSubjectRulesReview", apiVersion: "authorization.k8s.io/v1",
spec: { namespace }, kind: "SelfSubjectRulesReview",
spec: { namespace },
},
}); });
if (!status || status.incomplete) { if (!status || status.incomplete) {

View File

@ -12,7 +12,7 @@ export type CreateListNamespaces = (api: CoreV1Api) => ListNamespaces;
const createListNamespacesInjectable = getInjectable({ const createListNamespacesInjectable = getInjectable({
id: "create-list-namespaces", id: "create-list-namespaces",
instantiate: (): CreateListNamespaces => (api) => async () => { instantiate: (): CreateListNamespaces => (api) => async () => {
const { body: { items }} = await api.listNamespace(); const { items } = await api.listNamespace();
return items return items
.map(ns => ns.metadata?.name) .map(ns => ns.metadata?.name)

View File

@ -7,7 +7,6 @@ import type { AsyncFnMock } from "@async-fn/jest";
import asyncFn from "@async-fn/jest"; import asyncFn from "@async-fn/jest";
import type { AuthorizationV1Api, V1SubjectRulesReviewStatus } from "@kubernetes/client-node"; import type { AuthorizationV1Api, V1SubjectRulesReviewStatus } from "@kubernetes/client-node";
import type { DiContainer } from "@ogre-tools/injectable"; import type { DiContainer } from "@ogre-tools/injectable";
import type { IncomingMessage } from "http";
import { anyObject } from "jest-mock-extended"; import { anyObject } from "jest-mock-extended";
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting"; import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
import { cast } from "../../test-utils/cast"; import { cast } from "../../test-utils/cast";
@ -46,11 +45,13 @@ describe("requestNamespaceListPermissions", () => {
}); });
it("should request the creation of a SelfSubjectRulesReview", () => { it("should request the creation of a SelfSubjectRulesReview", () => {
expect(createSelfSubjectRulesReviewMock).toBeCalledWith(anyObject({ expect(createSelfSubjectRulesReviewMock).toBeCalledWith({
spec: { body: anyObject({
namespace: "irrelevant-namespace", spec: {
}, namespace: "irrelevant-namespace",
})); },
}),
});
}); });
([ ([
@ -189,11 +190,8 @@ describe("requestNamespaceListPermissions", () => {
describe(`when api returns ${description}`, () => { describe(`when api returns ${description}`, () => {
beforeEach(async () => { beforeEach(async () => {
await createSelfSubjectRulesReviewMock.resolve({ await createSelfSubjectRulesReviewMock.resolve({
body: { status,
status, spec: {},
spec: {},
},
response: null as unknown as IncomingMessage,
}); });
}); });

View File

@ -5,7 +5,7 @@
import type { AsyncFnMock } from "@async-fn/jest"; import type { AsyncFnMock } from "@async-fn/jest";
import asyncFn from "@async-fn/jest"; import asyncFn from "@async-fn/jest";
import type { AuthorizationV1Api, CoreV1Api, V1APIGroupList, V1APIVersions, V1NamespaceList, V1SelfSubjectAccessReview, V1SelfSubjectRulesReview } from "@kubernetes/client-node"; import type { AuthorizationV1Api, CoreV1Api, V1APIGroupList, V1APIVersions, V1SelfSubjectAccessReview, V1SelfSubjectRulesReview } from "@kubernetes/client-node";
import clusterStoreInjectable from "../../common/cluster-store/cluster-store.injectable"; import clusterStoreInjectable from "../../common/cluster-store/cluster-store.injectable";
import type { Cluster } from "../../common/cluster/cluster"; import type { Cluster } from "../../common/cluster/cluster";
import createAuthorizationApiInjectable from "../../common/cluster/create-authorization-api.injectable"; import createAuthorizationApiInjectable from "../../common/cluster/create-authorization-api.injectable";
@ -479,20 +479,18 @@ const nonCoreApiResponse = {
} as V1APIGroupList; } as V1APIGroupList;
const listNamespaceResponse = { const listNamespaceResponse = {
body: { items: [
items: [ {
{ metadata: {
metadata: { name: "default",
name: "default",
},
}, },
{ },
metadata: { {
name: "my-namespace", metadata: {
}, name: "my-namespace",
}, },
], },
} as PartialDeep<V1NamespaceList>, ],
} as Awaited<ReturnType<CoreV1Api["listNamespace"]>>; } as Awaited<ReturnType<CoreV1Api["listNamespace"]>>;
const coreApiKindsResponse = { const coreApiKindsResponse = {
@ -587,51 +585,41 @@ const discoveryK8sIoKindsResponse = {
], ],
}; };
type CreateSelfSubjectRulesReviewRes = Awaited<ReturnType<AuthorizationV1Api["createSelfSubjectRulesReview"]>>;
const defaultIncompletePermissions = { const defaultIncompletePermissions = {
body: { status: {
status: { incomplete: true,
incomplete: true, },
}, } as V1SelfSubjectRulesReview;
} as PartialDeep<V1SelfSubjectRulesReview>,
} as CreateSelfSubjectRulesReviewRes;
const emptyPermissions = { const emptyPermissions = {
body: { status: {
status: { resourceRules: [],
resourceRules: [], },
}, } as PartialDeep<V1SelfSubjectRulesReview> as V1SelfSubjectRulesReview;
} as PartialDeep<V1SelfSubjectRulesReview>,
} as CreateSelfSubjectRulesReviewRes;
const defaultSingleListPermissions = { const defaultSingleListPermissions = {
body: { status: {
status: { resourceRules: [{
resourceRules: [{ apiGroups: [""],
resources: ["pods"],
verbs: ["list"],
}],
},
} as V1SelfSubjectRulesReview;
const defaultMultipleListPermissions = {
status: {
resourceRules: [
{
apiGroups: [""],
resources: ["pods"],
verbs: ["get"],
},
{
apiGroups: [""], apiGroups: [""],
resources: ["pods"], resources: ["pods"],
verbs: ["list"], verbs: ["list"],
}], },
}, ],
} as PartialDeep<V1SelfSubjectRulesReview>, },
} as CreateSelfSubjectRulesReviewRes; } as V1SelfSubjectRulesReview;
const defaultMultipleListPermissions = {
body: {
status: {
resourceRules: [
{
apiGroups: [""],
resources: ["pods"],
verbs: ["get"],
},
{
apiGroups: [""],
resources: ["pods"],
verbs: ["list"],
},
],
},
} as PartialDeep<V1SelfSubjectRulesReview>,
} as CreateSelfSubjectRulesReviewRes;

View File

@ -3,7 +3,8 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import { type KubeConfig, HttpError } from "@kubernetes/client-node"; import type { KubeConfig } from "@kubernetes/client-node";
import { ApiException } from "@kubernetes/client-node";
import { reaction, comparer, runInAction } from "mobx"; import { reaction, comparer, runInAction } from "mobx";
import { ClusterStatus } from "../../common/cluster-types"; import { ClusterStatus } from "../../common/cluster-types";
import type { CreateListNamespaces } from "../../common/cluster/list-namespaces.injectable"; import type { CreateListNamespaces } from "../../common/cluster/list-namespaces.injectable";
@ -375,10 +376,8 @@ class ClusterConnection {
const ctx = proxyConfig.getContextObject(this.cluster.contextName.get()); const ctx = proxyConfig.getContextObject(this.cluster.contextName.get());
const namespaceList = [ctx?.namespace].filter(isDefined); const namespaceList = [ctx?.namespace].filter(isDefined);
if (namespaceList.length === 0 && error instanceof HttpError && error.statusCode === 403) { if (namespaceList.length === 0 && error instanceof ApiException && error.code === 403) {
const { response } = error as HttpError & { response: Response }; this.dependencies.logger.info("[CLUSTER]: listing namespaces is forbidden, broadcasting", { clusterId: this.cluster.id, error: error.body || error.message });
this.dependencies.logger.info("[CLUSTER]: listing namespaces is forbidden, broadcasting", { clusterId: this.cluster.id, error: response.body });
this.dependencies.broadcastMessage(clusterListNamespaceForbiddenChannel, this.cluster.id); this.dependencies.broadcastMessage(clusterListNamespaceForbiddenChannel, this.cluster.id);
} }

View File

@ -52,7 +52,9 @@ export const createPrometheusProvider = ({ getService, ...opts }: CreatePromethe
export async function findFirstNamespacedService(client: CoreV1Api, ...selectors: string[]): Promise<PrometheusServiceInfo> { export async function findFirstNamespacedService(client: CoreV1Api, ...selectors: string[]): Promise<PrometheusServiceInfo> {
try { try {
for (const selector of selectors) { for (const selector of selectors) {
const { body: { items: [service] }} = await client.listServiceForAllNamespaces(undefined, undefined, undefined, selector); const { items: [service] } = await client.listServiceForAllNamespaces({
labelSelector: selector,
});
if (service?.metadata?.namespace && service.metadata.name && service.spec?.ports) { if (service?.metadata?.namespace && service.metadata.name && service.spec?.ports) {
return { return {
@ -71,7 +73,7 @@ export async function findFirstNamespacedService(client: CoreV1Api, ...selectors
export async function findNamespacedService(client: CoreV1Api, name: string, namespace: string): Promise<PrometheusServiceInfo> { export async function findNamespacedService(client: CoreV1Api, name: string, namespace: string): Promise<PrometheusServiceInfo> {
try { try {
const { body: service } = await client.readNamespacedService(name, namespace); const service = await client.readNamespacedService({ name, namespace });
if (!service.metadata?.namespace || !service.metadata.name || !service.spec?.ports) { if (!service.metadata?.namespace || !service.metadata.name || !service.spec?.ports) {
throw new Error(`Service found in namespace="${namespace}" did not have required information`); throw new Error(`Service found in namespace="${namespace}" did not have required information`);

View File

@ -18,16 +18,17 @@ const getServiceAccountRouteInjectable = getRouteInjectable({
instantiate: (di) => clusterRoute({ instantiate: (di) => clusterRoute({
method: "get", method: "get",
path: `${apiPrefix}/kubeconfig/service-account/{namespace}/{account}`, path: `${apiPrefix}/kubeconfig/service-account/{namespace}/{account}`,
})(async ({ params, cluster }) => { })(async (args) => {
const { params: { account, namespace }, cluster } = args;
const loadProxyKubeconfig = di.inject(loadProxyKubeconfigInjectable, cluster); const loadProxyKubeconfig = di.inject(loadProxyKubeconfigInjectable, cluster);
const proxyKubeconfig = await loadProxyKubeconfig(); const proxyKubeconfig = await loadProxyKubeconfig();
const client = proxyKubeconfig.makeApiClient(CoreV1Api); const client = proxyKubeconfig.makeApiClient(CoreV1Api);
const secretList = await client.listNamespacedSecret(params.namespace); const { items } = await client.listNamespacedSecret({ namespace });
const secret = secretList.body.items.find(secret => { const secret = items.find(secret => {
const { annotations } = secret.metadata ?? {}; const { annotations } = secret.metadata ?? {};
return annotations?.["kubernetes.io/service-account.name"] === params.account; return annotations?.["kubernetes.io/service-account.name"] === account;
}); });
if (!secret) { if (!secret) {
@ -37,7 +38,7 @@ const getServiceAccountRouteInjectable = getRouteInjectable({
}; };
} }
const kubeconfig = generateKubeConfig(params.account, secret, cluster); const kubeconfig = generateKubeConfig(account, secret, cluster);
if (!kubeconfig) { if (!kubeconfig) {
return { return {

View File

@ -44,7 +44,10 @@ export class NodeShellSession extends ShellSession {
const cleanup = once(() => { const cleanup = once(() => {
coreApi coreApi
.deleteNamespacedPod(this.podName, "kube-system") .deleteNamespacedPod({
name: this.podName,
namespace: "kube-system",
})
.catch(error => this.dependencies.logger.warn(`[NODE-SHELL]: failed to remove pod shell`, error)); .catch(error => this.dependencies.logger.warn(`[NODE-SHELL]: failed to remove pod shell`, error));
}); });
@ -110,32 +113,35 @@ export class NodeShellSession extends ShellSession {
: undefined; : undefined;
return coreApi return coreApi
.createNamespacedPod("kube-system", { .createNamespacedPod({
metadata: { namespace: "kube-system",
name: this.podName, body: {
namespace: "kube-system", metadata: {
}, name: this.podName,
spec: { namespace: "kube-system",
nodeName: this.nodeName, },
restartPolicy: "Never", spec: {
terminationGracePeriodSeconds: 0, nodeName: this.nodeName,
hostPID: true, restartPolicy: "Never",
hostIPC: true, terminationGracePeriodSeconds: 0,
hostNetwork: true, hostPID: true,
tolerations: [{ hostIPC: true,
operator: "Exists", hostNetwork: true,
}], tolerations: [{
priorityClassName: "system-node-critical", operator: "Exists",
containers: [{ }],
name: "shell", priorityClassName: "system-node-critical",
image: nodeShellImage || initialNodeShellImage, containers: [{
securityContext: { name: "shell",
privileged: true, image: nodeShellImage || initialNodeShellImage,
}, securityContext: {
command: ["nsenter"], privileged: true,
args: ["-t", "1", "-m", "-u", "-i", "-n", "sleep", "14000"], },
}], command: ["nsenter"],
imagePullSecrets, args: ["-t", "1", "-m", "-u", "-i", "-n", "sleep", "14000"],
}],
imagePullSecrets,
},
}, },
}); });
} }