mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Merge branch 'master' into fix/remove-hotbar-name-from-status-bar
This commit is contained in:
commit
5c49f3a643
20
.eslintrc.js
20
.eslintrc.js
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const packageJson = require("./package.json");
|
const packageJson = require("./package.json");
|
||||||
|
|||||||
1
.idea/inspectionProfiles/Project_Default.xml
generated
1
.idea/inspectionProfiles/Project_Default.xml
generated
@ -1,6 +1,7 @@
|
|||||||
<component name="InspectionProjectProfileManager">
|
<component name="InspectionProjectProfileManager">
|
||||||
<profile version="1.0">
|
<profile version="1.0">
|
||||||
<option name="myName" value="Project Default" />
|
<option name="myName" value="Project Default" />
|
||||||
|
<inspection_tool class="ES6PreferShortImport" enabled="true" level="INFORMATION" enabled_by_default="true" />
|
||||||
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
<inspection_tool class="Eslint" enabled="true" level="WARNING" enabled_by_default="true" />
|
||||||
</profile>
|
</profile>
|
||||||
</component>
|
</component>
|
||||||
3
.idea/lens.iml
generated
3
.idea/lens.iml
generated
@ -12,6 +12,9 @@
|
|||||||
<excludeFolder url="file://$MODULE_DIR$/extensions/pod-menu/node_modules" />
|
<excludeFolder url="file://$MODULE_DIR$/extensions/pod-menu/node_modules" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/static/build" />
|
<excludeFolder url="file://$MODULE_DIR$/static/build" />
|
||||||
<excludeFolder url="file://$MODULE_DIR$/src/extensions/npm/extensions/dist" />
|
<excludeFolder url="file://$MODULE_DIR$/src/extensions/npm/extensions/dist" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/dist" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||||
|
<excludeFolder url="file://$MODULE_DIR$/binaries" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
|||||||
7
__mocks__/electron-updater.ts
Normal file
7
__mocks__/electron-updater.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// This mock exists because library causes criminal side-effect on import
|
||||||
|
export const autoUpdater = {};
|
||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
export default {
|
export default {
|
||||||
require: jest.fn(),
|
require: jest.fn(),
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export default {};
|
export default {};
|
||||||
|
|||||||
7
__mocks__/node-pty.ts
Normal file
7
__mocks__/node-pty.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// This mock exists because library causes criminal side-effect on import
|
||||||
|
export default {};
|
||||||
@ -1,21 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
export default {};
|
export default {};
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import fs from "fs-extra";
|
import fs from "fs-extra";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import sharp from "sharp";
|
import sharp from "sharp";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import packageInfo from "../package.json";
|
import packageInfo from "../package.json";
|
||||||
import { isWindows } from "../src/common/vars";
|
import { isWindows } from "../src/common/vars";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import packageInfo from "../package.json";
|
import packageInfo from "../package.json";
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
const { notarize } = require("electron-notarize");
|
const { notarize } = require("electron-notarize");
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import * as fse from "fs-extra";
|
import * as fse from "fs-extra";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import * as fs from "fs";
|
import * as fs from "fs";
|
||||||
import * as path from "path";
|
import * as path from "path";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Renderer } from "@k8slens/extensions";
|
import { Renderer } from "@k8slens/extensions";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Renderer } from "@k8slens/extensions";
|
import { Renderer } from "@k8slens/extensions";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Renderer, Common } from "@k8slens/extensions";
|
import { Renderer, Common } from "@k8slens/extensions";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Common, Renderer } from "@k8slens/extensions";
|
import { Common, Renderer } from "@k8slens/extensions";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Renderer } from "@k8slens/extensions";
|
import { Renderer } from "@k8slens/extensions";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Renderer } from "@k8slens/extensions";
|
import { Renderer } from "@k8slens/extensions";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -370,9 +354,8 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => {
|
|||||||
}
|
}
|
||||||
}, 10*60*1000);
|
}, 10*60*1000);
|
||||||
|
|
||||||
|
// TODO: Make re-rendering of KubeObjectListLayout not cause namespaceSelector to be closed
|
||||||
|
xit("show logs and highlight the log search entries", async () => {
|
||||||
it("show logs and highlight the log search entries", async () => {
|
|
||||||
await frame.click(`a[href="/workloads"]`);
|
await frame.click(`a[href="/workloads"]`);
|
||||||
await frame.click(`a[href="/pods"]`);
|
await frame.click(`a[href="/pods"]`);
|
||||||
|
|
||||||
@ -417,7 +400,8 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => {
|
|||||||
await frame.waitForSelector("div.TableCell >> text='kube-system'");
|
await frame.waitForSelector("div.TableCell >> text='kube-system'");
|
||||||
}, 10*60*1000);
|
}, 10*60*1000);
|
||||||
|
|
||||||
it(`should create the ${TEST_NAMESPACE} and a pod in the namespace`, async () => {
|
// TODO: Make re-rendering of KubeObjectListLayout not cause namespaceSelector to be closed
|
||||||
|
xit(`should create the ${TEST_NAMESPACE} and a pod in the namespace`, async () => {
|
||||||
await frame.click('a[href="/namespaces"]');
|
await frame.click('a[href="/namespaces"]');
|
||||||
await frame.click("button.add-button");
|
await frame.click("button.add-button");
|
||||||
await frame.waitForSelector("div.AddNamespaceDialog >> text='Create Namespace'");
|
await frame.waitForSelector("div.AddNamespaceDialog >> text='Create Namespace'");
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { ElectronApplication, Page } from "playwright";
|
import type { ElectronApplication, Page } from "playwright";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import { spawnSync } from "child_process";
|
import { spawnSync } from "child_process";
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import { createHash } from "crypto";
|
import { createHash } from "crypto";
|
||||||
import { mkdirp, remove } from "fs-extra";
|
import { mkdirp, remove } from "fs-extra";
|
||||||
|
|||||||
@ -1,22 +1,4 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -195,8 +195,8 @@
|
|||||||
"@hapi/call": "^8.0.1",
|
"@hapi/call": "^8.0.1",
|
||||||
"@hapi/subtext": "^7.0.3",
|
"@hapi/subtext": "^7.0.3",
|
||||||
"@kubernetes/client-node": "^0.16.1",
|
"@kubernetes/client-node": "^0.16.1",
|
||||||
"@ogre-tools/injectable": "2.0.0",
|
"@ogre-tools/injectable": "3.1.1",
|
||||||
"@ogre-tools/injectable-react": "2.0.0",
|
"@ogre-tools/injectable-react": "3.1.1",
|
||||||
"@sentry/electron": "^2.5.4",
|
"@sentry/electron": "^2.5.4",
|
||||||
"@sentry/integrations": "^6.15.0",
|
"@sentry/integrations": "^6.15.0",
|
||||||
"@types/circular-dependency-plugin": "5.0.4",
|
"@types/circular-dependency-plugin": "5.0.4",
|
||||||
@ -225,7 +225,7 @@
|
|||||||
"jsonpath": "^1.1.1",
|
"jsonpath": "^1.1.1",
|
||||||
"lodash": "^4.17.15",
|
"lodash": "^4.17.15",
|
||||||
"mac-ca": "^1.0.6",
|
"mac-ca": "^1.0.6",
|
||||||
"marked": "^2.1.3",
|
"marked": "^4.0.10",
|
||||||
"md5-file": "^5.0.0",
|
"md5-file": "^5.0.0",
|
||||||
"mobx": "^6.3.7",
|
"mobx": "^6.3.7",
|
||||||
"mobx-observable-history": "^2.0.3",
|
"mobx-observable-history": "^2.0.3",
|
||||||
@ -290,7 +290,7 @@
|
|||||||
"@types/jsdom": "^16.2.13",
|
"@types/jsdom": "^16.2.13",
|
||||||
"@types/jsonpath": "^0.2.0",
|
"@types/jsonpath": "^0.2.0",
|
||||||
"@types/lodash": "^4.14.177",
|
"@types/lodash": "^4.14.177",
|
||||||
"@types/marked": "^2.0.5",
|
"@types/marked": "^4.0.1",
|
||||||
"@types/md5-file": "^4.0.2",
|
"@types/md5-file": "^4.0.2",
|
||||||
"@types/mini-css-extract-plugin": "^0.9.1",
|
"@types/mini-css-extract-plugin": "^0.9.1",
|
||||||
"@types/mock-fs": "^4.13.1",
|
"@types/mock-fs": "^4.13.1",
|
||||||
|
|||||||
@ -1,48 +1,21 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import mockFs from "mock-fs";
|
import mockFs from "mock-fs";
|
||||||
import { AppPaths } from "../app-paths";
|
|
||||||
import { BaseStore } from "../base-store";
|
import { BaseStore } from "../base-store";
|
||||||
import { action, comparer, makeObservable, observable, toJS } from "mobx";
|
import { action, comparer, makeObservable, observable, toJS } from "mobx";
|
||||||
import { readFileSync } from "fs";
|
import { readFileSync } from "fs";
|
||||||
|
import { getDisForUnitTesting } from "../../test-utils/get-dis-for-unit-testing";
|
||||||
|
|
||||||
AppPaths.init();
|
import directoryForUserDataInjectable
|
||||||
|
from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
|
||||||
jest.mock("electron", () => ({
|
jest.mock("electron", () => ({
|
||||||
app: {
|
|
||||||
getVersion: () => "99.99.99",
|
|
||||||
getName: () => "lens",
|
|
||||||
setName: jest.fn(),
|
|
||||||
setPath: jest.fn(),
|
|
||||||
getPath: () => "tmp",
|
|
||||||
getLocale: () => "en",
|
|
||||||
setLoginItemSettings: jest.fn(),
|
|
||||||
},
|
|
||||||
ipcMain: {
|
ipcMain: {
|
||||||
handle: jest.fn(),
|
|
||||||
on: jest.fn(),
|
on: jest.fn(),
|
||||||
removeAllListeners: jest.fn(),
|
|
||||||
off: jest.fn(),
|
off: jest.fn(),
|
||||||
send: jest.fn(),
|
|
||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -105,10 +78,17 @@ describe("BaseStore", () => {
|
|||||||
let store: TestStore;
|
let store: TestStore;
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
|
const dis = getDisForUnitTesting({ doGeneralOverrides: true });
|
||||||
|
|
||||||
|
dis.mainDi.override(directoryForUserDataInjectable, () => "some-user-data-directory");
|
||||||
|
|
||||||
|
await dis.runSetups();
|
||||||
|
|
||||||
store = undefined;
|
store = undefined;
|
||||||
TestStore.resetInstance();
|
TestStore.resetInstance();
|
||||||
|
|
||||||
const mockOpts = {
|
const mockOpts = {
|
||||||
"tmp": {
|
"some-user-data-directory": {
|
||||||
"test-store.json": JSON.stringify({}),
|
"test-store.json": JSON.stringify({}),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@ -130,7 +110,7 @@ describe("BaseStore", () => {
|
|||||||
a: "foo", b: "bar", c: "hello",
|
a: "foo", b: "bar", c: "hello",
|
||||||
});
|
});
|
||||||
|
|
||||||
const data = JSON.parse(readFileSync("tmp/test-store.json").toString());
|
const data = JSON.parse(readFileSync("some-user-data-directory/test-store.json").toString());
|
||||||
|
|
||||||
expect(data).toEqual({ a: "foo", b: "bar", c: "hello" });
|
expect(data).toEqual({ a: "foo", b: "bar", c: "hello" });
|
||||||
});
|
});
|
||||||
@ -153,7 +133,7 @@ describe("BaseStore", () => {
|
|||||||
|
|
||||||
expect(fileSpy).toHaveBeenCalledTimes(2);
|
expect(fileSpy).toHaveBeenCalledTimes(2);
|
||||||
|
|
||||||
const data = JSON.parse(readFileSync("tmp/test-store.json").toString());
|
const data = JSON.parse(readFileSync("some-user-data-directory/test-store.json").toString());
|
||||||
|
|
||||||
expect(data).toEqual({ a: "a", b: "b", c: "" });
|
expect(data).toEqual({ a: "a", b: "b", c: "" });
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { CatalogCategory, CatalogCategoryRegistry, CatalogCategorySpec } from "../catalog";
|
import { CatalogCategory, CatalogCategoryRegistry, CatalogCategorySpec } from "../catalog";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import fs from "fs";
|
import fs from "fs";
|
||||||
@ -24,17 +8,29 @@ import mockFs from "mock-fs";
|
|||||||
import yaml from "js-yaml";
|
import yaml from "js-yaml";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import fse from "fs-extra";
|
import fse from "fs-extra";
|
||||||
import { Cluster } from "../../main/cluster";
|
import type { Cluster } from "../cluster/cluster";
|
||||||
import { ClusterStore } from "../cluster-store";
|
import { ClusterStore } from "../cluster-store/cluster-store";
|
||||||
import { Console } from "console";
|
import { Console } from "console";
|
||||||
import { stdout, stderr } from "process";
|
import { stdout, stderr } from "process";
|
||||||
import type { ClusterId } from "../cluster-types";
|
import getCustomKubeConfigDirectoryInjectable from "../app-paths/get-custom-kube-config-directory/get-custom-kube-config-directory.injectable";
|
||||||
import { getCustomKubeConfigPath } from "../utils";
|
import clusterStoreInjectable from "../cluster-store/cluster-store.injectable";
|
||||||
import { AppPaths } from "../app-paths";
|
import type { ClusterModel } from "../cluster-types";
|
||||||
|
import type {
|
||||||
|
DependencyInjectionContainer,
|
||||||
|
} from "@ogre-tools/injectable";
|
||||||
|
|
||||||
|
|
||||||
|
import { getDisForUnitTesting } from "../../test-utils/get-dis-for-unit-testing";
|
||||||
|
import { createClusterInjectionToken } from "../cluster/create-cluster-injection-token";
|
||||||
|
|
||||||
|
import directoryForUserDataInjectable
|
||||||
|
from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
|
||||||
console = new Console(stdout, stderr);
|
console = new Console(stdout, stderr);
|
||||||
|
|
||||||
const testDataIcon = fs.readFileSync("test-data/cluster-store-migration-icon.png");
|
const testDataIcon = fs.readFileSync(
|
||||||
|
"test-data/cluster-store-migration-icon.png",
|
||||||
|
);
|
||||||
const kubeconfig = `
|
const kubeconfig = `
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
clusters:
|
clusters:
|
||||||
@ -59,25 +55,17 @@ users:
|
|||||||
token: kubeconfig-user-q4lm4:xxxyyyy
|
token: kubeconfig-user-q4lm4:xxxyyyy
|
||||||
`;
|
`;
|
||||||
|
|
||||||
function embed(clusterId: ClusterId, contents: any): string {
|
const embed = (directoryName: string, contents: any): string => {
|
||||||
const absPath = getCustomKubeConfigPath(clusterId);
|
fse.ensureDirSync(path.dirname(directoryName));
|
||||||
|
fse.writeFileSync(directoryName, contents, {
|
||||||
|
encoding: "utf-8",
|
||||||
|
mode: 0o600,
|
||||||
|
});
|
||||||
|
|
||||||
fse.ensureDirSync(path.dirname(absPath));
|
return directoryName;
|
||||||
fse.writeFileSync(absPath, contents, { encoding: "utf-8", mode: 0o600 });
|
};
|
||||||
|
|
||||||
return absPath;
|
|
||||||
}
|
|
||||||
|
|
||||||
jest.mock("electron", () => ({
|
jest.mock("electron", () => ({
|
||||||
app: {
|
|
||||||
getVersion: () => "99.99.99",
|
|
||||||
getName: () => "lens",
|
|
||||||
setName: jest.fn(),
|
|
||||||
setPath: jest.fn(),
|
|
||||||
getPath: () => "tmp",
|
|
||||||
getLocale: () => "en",
|
|
||||||
setLoginItemSettings: jest.fn(),
|
|
||||||
},
|
|
||||||
ipcMain: {
|
ipcMain: {
|
||||||
handle: jest.fn(),
|
handle: jest.fn(),
|
||||||
on: jest.fn(),
|
on: jest.fn(),
|
||||||
@ -87,157 +75,198 @@ jest.mock("electron", () => ({
|
|||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
AppPaths.init();
|
describe("cluster-store", () => {
|
||||||
|
let mainDi: DependencyInjectionContainer;
|
||||||
|
let clusterStore: ClusterStore;
|
||||||
|
let createCluster: (model: ClusterModel) => Cluster;
|
||||||
|
|
||||||
describe("empty config", () => {
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
ClusterStore.getInstance(false)?.unregisterIpcListener();
|
const dis = getDisForUnitTesting({ doGeneralOverrides: true });
|
||||||
ClusterStore.resetInstance();
|
|
||||||
const mockOpts = {
|
|
||||||
"tmp": {
|
|
||||||
"lens-cluster-store.json": JSON.stringify({}),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
mockFs(mockOpts);
|
mockFs();
|
||||||
|
|
||||||
ClusterStore.createInstance();
|
mainDi = dis.mainDi;
|
||||||
|
|
||||||
|
mainDi.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
|
||||||
|
|
||||||
|
await dis.runSetups();
|
||||||
|
|
||||||
|
createCluster = mainDi.inject(createClusterInjectionToken);
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
mockFs.restore();
|
mockFs.restore();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("with foo cluster added", () => {
|
describe("empty config", () => {
|
||||||
beforeEach(() => {
|
let getCustomKubeConfigDirectory: (directoryName: string) => string;
|
||||||
ClusterStore.getInstance().addCluster(
|
|
||||||
new Cluster({
|
beforeEach(async () => {
|
||||||
|
getCustomKubeConfigDirectory = mainDi.inject(
|
||||||
|
getCustomKubeConfigDirectoryInjectable,
|
||||||
|
);
|
||||||
|
|
||||||
|
// TODO: Remove these by removing Singleton base-class from BaseStore
|
||||||
|
ClusterStore.getInstance(false)?.unregisterIpcListener();
|
||||||
|
ClusterStore.resetInstance();
|
||||||
|
|
||||||
|
const mockOpts = {
|
||||||
|
"some-directory-for-user-data": {
|
||||||
|
"lens-cluster-store.json": JSON.stringify({}),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
mockFs(mockOpts);
|
||||||
|
|
||||||
|
clusterStore = mainDi.inject(clusterStoreInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
mockFs.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("with foo cluster added", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
const cluster = createCluster({
|
||||||
id: "foo",
|
id: "foo",
|
||||||
contextName: "foo",
|
contextName: "foo",
|
||||||
preferences: {
|
preferences: {
|
||||||
terminalCWD: "/tmp",
|
terminalCWD: "/some-directory-for-user-data",
|
||||||
icon: "data:image/jpeg;base64, iVBORw0KGgoAAAANSUhEUgAAA1wAAAKoCAYAAABjkf5",
|
icon: "data:image/jpeg;base64, iVBORw0KGgoAAAANSUhEUgAAA1wAAAKoCAYAAABjkf5",
|
||||||
clusterName: "minikube",
|
clusterName: "minikube",
|
||||||
},
|
},
|
||||||
kubeConfigPath: embed("foo", kubeconfig),
|
kubeConfigPath: embed(
|
||||||
}),
|
getCustomKubeConfigDirectory("foo"),
|
||||||
);
|
kubeconfig,
|
||||||
});
|
),
|
||||||
|
});
|
||||||
|
|
||||||
it("adds new cluster to store", async () => {
|
clusterStore.addCluster(cluster);
|
||||||
const storedCluster = ClusterStore.getInstance().getById("foo");
|
|
||||||
|
|
||||||
expect(storedCluster.id).toBe("foo");
|
|
||||||
expect(storedCluster.preferences.terminalCWD).toBe("/tmp");
|
|
||||||
expect(storedCluster.preferences.icon).toBe("data:image/jpeg;base64, iVBORw0KGgoAAAANSUhEUgAAA1wAAAKoCAYAAABjkf5");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("with prod and dev clusters added", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
const store = ClusterStore.getInstance();
|
|
||||||
|
|
||||||
store.addCluster({
|
|
||||||
id: "prod",
|
|
||||||
contextName: "foo",
|
|
||||||
preferences: {
|
|
||||||
clusterName: "prod",
|
|
||||||
},
|
|
||||||
kubeConfigPath: embed("prod", kubeconfig),
|
|
||||||
});
|
});
|
||||||
store.addCluster({
|
|
||||||
id: "dev",
|
it("adds new cluster to store", async () => {
|
||||||
contextName: "foo2",
|
const storedCluster = clusterStore.getById("foo");
|
||||||
preferences: {
|
|
||||||
clusterName: "dev",
|
expect(storedCluster.id).toBe("foo");
|
||||||
},
|
expect(storedCluster.preferences.terminalCWD).toBe("/some-directory-for-user-data");
|
||||||
kubeConfigPath: embed("dev", kubeconfig),
|
expect(storedCluster.preferences.icon).toBe(
|
||||||
|
"data:image/jpeg;base64, iVBORw0KGgoAAAANSUhEUgAAA1wAAAKoCAYAAABjkf5",
|
||||||
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("check if store can contain multiple clusters", () => {
|
describe("with prod and dev clusters added", () => {
|
||||||
expect(ClusterStore.getInstance().hasClusters()).toBeTruthy();
|
beforeEach(() => {
|
||||||
expect(ClusterStore.getInstance().clusters.size).toBe(2);
|
const store = clusterStore;
|
||||||
});
|
|
||||||
|
|
||||||
it("check if cluster's kubeconfig file saved", () => {
|
store.addCluster({
|
||||||
const file = embed("boo", "kubeconfig");
|
id: "prod",
|
||||||
|
contextName: "foo",
|
||||||
expect(fs.readFileSync(file, "utf8")).toBe("kubeconfig");
|
preferences: {
|
||||||
});
|
clusterName: "prod",
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("config with existing clusters", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
ClusterStore.resetInstance();
|
|
||||||
const mockOpts = {
|
|
||||||
"temp-kube-config": kubeconfig,
|
|
||||||
"tmp": {
|
|
||||||
"lens-cluster-store.json": JSON.stringify({
|
|
||||||
__internal__: {
|
|
||||||
migrations: {
|
|
||||||
version: "99.99.99",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
clusters: [
|
kubeConfigPath: embed(
|
||||||
{
|
getCustomKubeConfigDirectory("prod"),
|
||||||
id: "cluster1",
|
kubeconfig,
|
||||||
kubeConfigPath: "./temp-kube-config",
|
),
|
||||||
contextName: "foo",
|
});
|
||||||
preferences: { terminalCWD: "/foo" },
|
store.addCluster({
|
||||||
workspace: "default",
|
id: "dev",
|
||||||
|
contextName: "foo2",
|
||||||
|
preferences: {
|
||||||
|
clusterName: "dev",
|
||||||
|
},
|
||||||
|
kubeConfigPath: embed(
|
||||||
|
getCustomKubeConfigDirectory("dev"),
|
||||||
|
kubeconfig,
|
||||||
|
),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("check if store can contain multiple clusters", () => {
|
||||||
|
expect(clusterStore.hasClusters()).toBeTruthy();
|
||||||
|
expect(clusterStore.clusters.size).toBe(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("check if cluster's kubeconfig file saved", () => {
|
||||||
|
const file = embed(getCustomKubeConfigDirectory("boo"), "kubeconfig");
|
||||||
|
|
||||||
|
expect(fs.readFileSync(file, "utf8")).toBe("kubeconfig");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("config with existing clusters", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ClusterStore.resetInstance();
|
||||||
|
|
||||||
|
const mockOpts = {
|
||||||
|
"temp-kube-config": kubeconfig,
|
||||||
|
"some-directory-for-user-data": {
|
||||||
|
"lens-cluster-store.json": JSON.stringify({
|
||||||
|
__internal__: {
|
||||||
|
migrations: {
|
||||||
|
version: "99.99.99",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
clusters: [
|
||||||
id: "cluster2",
|
{
|
||||||
kubeConfigPath: "./temp-kube-config",
|
id: "cluster1",
|
||||||
contextName: "foo2",
|
kubeConfigPath: "./temp-kube-config",
|
||||||
preferences: { terminalCWD: "/foo2" },
|
contextName: "foo",
|
||||||
},
|
preferences: { terminalCWD: "/foo" },
|
||||||
{
|
workspace: "default",
|
||||||
id: "cluster3",
|
},
|
||||||
kubeConfigPath: "./temp-kube-config",
|
{
|
||||||
contextName: "foo",
|
id: "cluster2",
|
||||||
preferences: { terminalCWD: "/foo" },
|
kubeConfigPath: "./temp-kube-config",
|
||||||
workspace: "foo",
|
contextName: "foo2",
|
||||||
ownerRef: "foo",
|
preferences: { terminalCWD: "/foo2" },
|
||||||
},
|
},
|
||||||
],
|
{
|
||||||
}),
|
id: "cluster3",
|
||||||
},
|
kubeConfigPath: "./temp-kube-config",
|
||||||
};
|
contextName: "foo",
|
||||||
|
preferences: { terminalCWD: "/foo" },
|
||||||
|
workspace: "foo",
|
||||||
|
ownerRef: "foo",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
mockFs(mockOpts);
|
mockFs(mockOpts);
|
||||||
|
|
||||||
return ClusterStore.createInstance();
|
clusterStore = mainDi.inject(clusterStoreInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
mockFs.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("allows to retrieve a cluster", () => {
|
||||||
|
const storedCluster = clusterStore.getById("cluster1");
|
||||||
|
|
||||||
|
expect(storedCluster.id).toBe("cluster1");
|
||||||
|
expect(storedCluster.preferences.terminalCWD).toBe("/foo");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("allows getting all of the clusters", async () => {
|
||||||
|
const storedClusters = clusterStore.clustersList;
|
||||||
|
|
||||||
|
expect(storedClusters.length).toBe(3);
|
||||||
|
expect(storedClusters[0].id).toBe("cluster1");
|
||||||
|
expect(storedClusters[0].preferences.terminalCWD).toBe("/foo");
|
||||||
|
expect(storedClusters[1].id).toBe("cluster2");
|
||||||
|
expect(storedClusters[1].preferences.terminalCWD).toBe("/foo2");
|
||||||
|
expect(storedClusters[2].id).toBe("cluster3");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
describe("config with invalid cluster kubeconfig", () => {
|
||||||
mockFs.restore();
|
beforeEach(() => {
|
||||||
});
|
const invalidKubeconfig = `
|
||||||
|
|
||||||
it("allows to retrieve a cluster", () => {
|
|
||||||
const storedCluster = ClusterStore.getInstance().getById("cluster1");
|
|
||||||
|
|
||||||
expect(storedCluster.id).toBe("cluster1");
|
|
||||||
expect(storedCluster.preferences.terminalCWD).toBe("/foo");
|
|
||||||
});
|
|
||||||
|
|
||||||
it("allows getting all of the clusters", async () => {
|
|
||||||
const storedClusters = ClusterStore.getInstance().clustersList;
|
|
||||||
|
|
||||||
expect(storedClusters.length).toBe(3);
|
|
||||||
expect(storedClusters[0].id).toBe("cluster1");
|
|
||||||
expect(storedClusters[0].preferences.terminalCWD).toBe("/foo");
|
|
||||||
expect(storedClusters[1].id).toBe("cluster2");
|
|
||||||
expect(storedClusters[1].preferences.terminalCWD).toBe("/foo2");
|
|
||||||
expect(storedClusters[2].id).toBe("cluster3");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("config with invalid cluster kubeconfig", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
const invalidKubeconfig = `
|
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
clusters:
|
clusters:
|
||||||
- cluster:
|
- cluster:
|
||||||
@ -257,302 +286,285 @@ users:
|
|||||||
token: kubeconfig-user-q4lm4:xxxyyyy
|
token: kubeconfig-user-q4lm4:xxxyyyy
|
||||||
`;
|
`;
|
||||||
|
|
||||||
ClusterStore.resetInstance();
|
ClusterStore.resetInstance();
|
||||||
const mockOpts = {
|
|
||||||
"invalid-kube-config": invalidKubeconfig,
|
|
||||||
"valid-kube-config": kubeconfig,
|
|
||||||
"tmp": {
|
|
||||||
"lens-cluster-store.json": JSON.stringify({
|
|
||||||
__internal__: {
|
|
||||||
migrations: {
|
|
||||||
version: "99.99.99",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
clusters: [
|
|
||||||
{
|
|
||||||
id: "cluster1",
|
|
||||||
kubeConfigPath: "./invalid-kube-config",
|
|
||||||
contextName: "test",
|
|
||||||
preferences: { terminalCWD: "/foo" },
|
|
||||||
workspace: "foo",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "cluster2",
|
|
||||||
kubeConfigPath: "./valid-kube-config",
|
|
||||||
contextName: "foo",
|
|
||||||
preferences: { terminalCWD: "/foo" },
|
|
||||||
workspace: "default",
|
|
||||||
},
|
|
||||||
|
|
||||||
],
|
const mockOpts = {
|
||||||
}),
|
"invalid-kube-config": invalidKubeconfig,
|
||||||
},
|
"valid-kube-config": kubeconfig,
|
||||||
};
|
"some-directory-for-user-data": {
|
||||||
|
"lens-cluster-store.json": JSON.stringify({
|
||||||
|
__internal__: {
|
||||||
|
migrations: {
|
||||||
|
version: "99.99.99",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
clusters: [
|
||||||
|
{
|
||||||
|
id: "cluster1",
|
||||||
|
kubeConfigPath: "./invalid-kube-config",
|
||||||
|
contextName: "test",
|
||||||
|
preferences: { terminalCWD: "/foo" },
|
||||||
|
workspace: "foo",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: "cluster2",
|
||||||
|
kubeConfigPath: "./valid-kube-config",
|
||||||
|
contextName: "foo",
|
||||||
|
preferences: { terminalCWD: "/foo" },
|
||||||
|
workspace: "default",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
mockFs(mockOpts);
|
mockFs(mockOpts);
|
||||||
|
|
||||||
return ClusterStore.createInstance();
|
clusterStore = mainDi.inject(clusterStoreInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
mockFs.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not enable clusters with invalid kubeconfig", () => {
|
||||||
|
const storedClusters = clusterStore.clustersList;
|
||||||
|
|
||||||
|
expect(storedClusters.length).toBe(1);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
describe("pre 2.0 config with an existing cluster", () => {
|
||||||
mockFs.restore();
|
beforeEach(() => {
|
||||||
|
ClusterStore.resetInstance();
|
||||||
|
|
||||||
|
const mockOpts = {
|
||||||
|
"some-directory-for-user-data": {
|
||||||
|
"lens-cluster-store.json": JSON.stringify({
|
||||||
|
__internal__: {
|
||||||
|
migrations: {
|
||||||
|
version: "1.0.0",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cluster1: minimalValidKubeConfig,
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
mockFs(mockOpts);
|
||||||
|
|
||||||
|
clusterStore = mainDi.inject(clusterStoreInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
mockFs.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("migrates to modern format with kubeconfig in a file", async () => {
|
||||||
|
const config = clusterStore.clustersList[0].kubeConfigPath;
|
||||||
|
|
||||||
|
expect(fs.readFileSync(config, "utf8")).toContain(`"contexts":[`);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("does not enable clusters with invalid kubeconfig", () => {
|
describe("pre 2.6.0 config with a cluster that has arrays in auth config", () => {
|
||||||
const storedClusters = ClusterStore.getInstance().clustersList;
|
beforeEach(() => {
|
||||||
|
ClusterStore.resetInstance();
|
||||||
|
const mockOpts = {
|
||||||
|
"some-directory-for-user-data": {
|
||||||
|
"lens-cluster-store.json": JSON.stringify({
|
||||||
|
__internal__: {
|
||||||
|
migrations: {
|
||||||
|
version: "2.4.1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cluster1: {
|
||||||
|
kubeConfig: JSON.stringify({
|
||||||
|
apiVersion: "v1",
|
||||||
|
clusters: [
|
||||||
|
{
|
||||||
|
cluster: {
|
||||||
|
server: "https://10.211.55.6:8443",
|
||||||
|
},
|
||||||
|
name: "minikube",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
contexts: [
|
||||||
|
{
|
||||||
|
context: {
|
||||||
|
cluster: "minikube",
|
||||||
|
user: "minikube",
|
||||||
|
name: "minikube",
|
||||||
|
},
|
||||||
|
name: "minikube",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"current-context": "minikube",
|
||||||
|
kind: "Config",
|
||||||
|
preferences: {},
|
||||||
|
users: [
|
||||||
|
{
|
||||||
|
name: "minikube",
|
||||||
|
user: {
|
||||||
|
"client-certificate": "/Users/foo/.minikube/client.crt",
|
||||||
|
"client-key": "/Users/foo/.minikube/client.key",
|
||||||
|
"auth-provider": {
|
||||||
|
config: {
|
||||||
|
"access-token": ["should be string"],
|
||||||
|
expiry: ["should be string"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
expect(storedClusters.length).toBe(1);
|
mockFs(mockOpts);
|
||||||
|
|
||||||
|
clusterStore = mainDi.inject(clusterStoreInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
mockFs.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("replaces array format access token and expiry into string", async () => {
|
||||||
|
const file = clusterStore.clustersList[0].kubeConfigPath;
|
||||||
|
const config = fs.readFileSync(file, "utf8");
|
||||||
|
const kc = yaml.load(config) as Record<string, any>;
|
||||||
|
|
||||||
|
expect(kc.users[0].user["auth-provider"].config["access-token"]).toBe(
|
||||||
|
"should be string",
|
||||||
|
);
|
||||||
|
expect(kc.users[0].user["auth-provider"].config["expiry"]).toBe(
|
||||||
|
"should be string",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("pre 2.6.0 config with a cluster icon", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ClusterStore.resetInstance();
|
||||||
|
const mockOpts = {
|
||||||
|
"some-directory-for-user-data": {
|
||||||
|
"lens-cluster-store.json": JSON.stringify({
|
||||||
|
__internal__: {
|
||||||
|
migrations: {
|
||||||
|
version: "2.4.1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cluster1: {
|
||||||
|
kubeConfig: minimalValidKubeConfig,
|
||||||
|
icon: "icon_path",
|
||||||
|
preferences: {
|
||||||
|
terminalCWD: "/some-directory-for-user-data",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
icon_path: testDataIcon,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
mockFs(mockOpts);
|
||||||
|
|
||||||
|
clusterStore = mainDi.inject(clusterStoreInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
mockFs.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("moves the icon into preferences", async () => {
|
||||||
|
const storedClusterData = clusterStore.clustersList[0];
|
||||||
|
|
||||||
|
expect(Object.prototype.hasOwnProperty.call(storedClusterData, "icon")).toBe(false);
|
||||||
|
expect(Object.prototype.hasOwnProperty.call(storedClusterData.preferences, "icon")).toBe(true);
|
||||||
|
expect(storedClusterData.preferences.icon.startsWith("data:;base64,")).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("pre 3.6.0-beta.1 config with an existing cluster", () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
ClusterStore.resetInstance();
|
||||||
|
const mockOpts = {
|
||||||
|
"some-directory-for-user-data": {
|
||||||
|
"lens-cluster-store.json": JSON.stringify({
|
||||||
|
__internal__: {
|
||||||
|
migrations: {
|
||||||
|
version: "3.5.0",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
clusters: [
|
||||||
|
{
|
||||||
|
id: "cluster1",
|
||||||
|
kubeConfig: minimalValidKubeConfig,
|
||||||
|
contextName: "cluster",
|
||||||
|
preferences: {
|
||||||
|
icon: "store://icon_path",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
icon_path: testDataIcon,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
mockFs(mockOpts);
|
||||||
|
|
||||||
|
clusterStore = mainDi.inject(clusterStoreInjectable);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
mockFs.restore();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("migrates to modern format with kubeconfig in a file", async () => {
|
||||||
|
const config = clusterStore.clustersList[0].kubeConfigPath;
|
||||||
|
|
||||||
|
expect(fs.readFileSync(config, "utf8")).toBe(minimalValidKubeConfig);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("migrates to modern format with icon not in file", async () => {
|
||||||
|
const { icon } = clusterStore.clustersList[0].preferences;
|
||||||
|
|
||||||
|
expect(icon.startsWith("data:;base64,")).toBe(true);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
const minimalValidKubeConfig = JSON.stringify({
|
const minimalValidKubeConfig = JSON.stringify({
|
||||||
apiVersion: "v1",
|
apiVersion: "v1",
|
||||||
clusters: [{
|
clusters: [
|
||||||
name: "minikube",
|
{
|
||||||
cluster: {
|
name: "minikube",
|
||||||
server: "https://192.168.64.3:8443",
|
cluster: {
|
||||||
|
server: "https://192.168.64.3:8443",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}],
|
],
|
||||||
"current-context": "minikube",
|
"current-context": "minikube",
|
||||||
contexts: [{
|
contexts: [
|
||||||
context: {
|
{
|
||||||
cluster: "minikube",
|
context: {
|
||||||
user: "minikube",
|
cluster: "minikube",
|
||||||
|
user: "minikube",
|
||||||
|
},
|
||||||
|
name: "minikube",
|
||||||
},
|
},
|
||||||
name: "minikube",
|
],
|
||||||
}],
|
users: [
|
||||||
users: [{
|
{
|
||||||
name: "minikube",
|
name: "minikube",
|
||||||
user: {
|
user: {
|
||||||
"client-certificate": "/Users/foo/.minikube/client.crt",
|
"client-certificate": "/Users/foo/.minikube/client.crt",
|
||||||
"client-key": "/Users/foo/.minikube/client.key",
|
"client-key": "/Users/foo/.minikube/client.key",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}],
|
],
|
||||||
kind: "Config",
|
kind: "Config",
|
||||||
preferences: {},
|
preferences: {},
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("pre 2.0 config with an existing cluster", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
ClusterStore.resetInstance();
|
|
||||||
const mockOpts = {
|
|
||||||
"tmp": {
|
|
||||||
"lens-cluster-store.json": JSON.stringify({
|
|
||||||
__internal__: {
|
|
||||||
migrations: {
|
|
||||||
version: "1.0.0",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cluster1: minimalValidKubeConfig,
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
mockFs(mockOpts);
|
|
||||||
|
|
||||||
return ClusterStore.createInstance();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
mockFs.restore();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("migrates to modern format with kubeconfig in a file", async () => {
|
|
||||||
const config = ClusterStore.getInstance().clustersList[0].kubeConfigPath;
|
|
||||||
|
|
||||||
expect(fs.readFileSync(config, "utf8")).toContain(`"contexts":[`);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("pre 2.6.0 config with a cluster that has arrays in auth config", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
ClusterStore.resetInstance();
|
|
||||||
const mockOpts = {
|
|
||||||
"tmp": {
|
|
||||||
"lens-cluster-store.json": JSON.stringify({
|
|
||||||
__internal__: {
|
|
||||||
migrations: {
|
|
||||||
version: "2.4.1",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cluster1: {
|
|
||||||
kubeConfig: JSON.stringify({
|
|
||||||
apiVersion: "v1",
|
|
||||||
clusters: [{
|
|
||||||
cluster: {
|
|
||||||
server: "https://10.211.55.6:8443",
|
|
||||||
},
|
|
||||||
name: "minikube",
|
|
||||||
}],
|
|
||||||
contexts: [{
|
|
||||||
context: {
|
|
||||||
cluster: "minikube",
|
|
||||||
user: "minikube",
|
|
||||||
name: "minikube",
|
|
||||||
},
|
|
||||||
name: "minikube",
|
|
||||||
}],
|
|
||||||
"current-context": "minikube",
|
|
||||||
kind: "Config",
|
|
||||||
preferences: {},
|
|
||||||
users: [{
|
|
||||||
name: "minikube",
|
|
||||||
user: {
|
|
||||||
"client-certificate": "/Users/foo/.minikube/client.crt",
|
|
||||||
"client-key": "/Users/foo/.minikube/client.key",
|
|
||||||
"auth-provider": {
|
|
||||||
config: {
|
|
||||||
"access-token": [
|
|
||||||
"should be string",
|
|
||||||
],
|
|
||||||
expiry: [
|
|
||||||
"should be string",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}],
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
mockFs(mockOpts);
|
|
||||||
|
|
||||||
return ClusterStore.createInstance();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
mockFs.restore();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("replaces array format access token and expiry into string", async () => {
|
|
||||||
const file = ClusterStore.getInstance().clustersList[0].kubeConfigPath;
|
|
||||||
const config = fs.readFileSync(file, "utf8");
|
|
||||||
const kc = yaml.load(config) as Record<string, any>;
|
|
||||||
|
|
||||||
expect(kc.users[0].user["auth-provider"].config["access-token"]).toBe("should be string");
|
|
||||||
expect(kc.users[0].user["auth-provider"].config["expiry"]).toBe("should be string");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("pre 2.6.0 config with a cluster icon", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
ClusterStore.resetInstance();
|
|
||||||
const mockOpts = {
|
|
||||||
"tmp": {
|
|
||||||
"lens-cluster-store.json": JSON.stringify({
|
|
||||||
__internal__: {
|
|
||||||
migrations: {
|
|
||||||
version: "2.4.1",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cluster1: {
|
|
||||||
kubeConfig: minimalValidKubeConfig,
|
|
||||||
icon: "icon_path",
|
|
||||||
preferences: {
|
|
||||||
terminalCWD: "/tmp",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
"icon_path": testDataIcon,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
mockFs(mockOpts);
|
|
||||||
|
|
||||||
return ClusterStore.createInstance();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
mockFs.restore();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("moves the icon into preferences", async () => {
|
|
||||||
const storedClusterData = ClusterStore.getInstance().clustersList[0];
|
|
||||||
|
|
||||||
expect(Object.prototype.hasOwnProperty.call(storedClusterData, "icon")).toBe(false);
|
|
||||||
expect(Object.prototype.hasOwnProperty.call(storedClusterData.preferences, "icon")).toBe(true);
|
|
||||||
expect(storedClusterData.preferences.icon.startsWith("data:;base64,")).toBe(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("for a pre 2.7.0-beta.0 config without a workspace", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
ClusterStore.resetInstance();
|
|
||||||
const mockOpts = {
|
|
||||||
"tmp": {
|
|
||||||
"lens-cluster-store.json": JSON.stringify({
|
|
||||||
__internal__: {
|
|
||||||
migrations: {
|
|
||||||
version: "2.6.6",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
cluster1: {
|
|
||||||
kubeConfig: minimalValidKubeConfig,
|
|
||||||
preferences: {
|
|
||||||
terminalCWD: "/tmp",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
mockFs(mockOpts);
|
|
||||||
|
|
||||||
return ClusterStore.createInstance();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
mockFs.restore();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe("pre 3.6.0-beta.1 config with an existing cluster", () => {
|
|
||||||
beforeEach(() => {
|
|
||||||
ClusterStore.resetInstance();
|
|
||||||
const mockOpts = {
|
|
||||||
"tmp": {
|
|
||||||
"lens-cluster-store.json": JSON.stringify({
|
|
||||||
__internal__: {
|
|
||||||
migrations: {
|
|
||||||
version: "3.5.0",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
clusters: [
|
|
||||||
{
|
|
||||||
id: "cluster1",
|
|
||||||
kubeConfig: minimalValidKubeConfig,
|
|
||||||
contextName: "cluster",
|
|
||||||
preferences: {
|
|
||||||
icon: "store://icon_path",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
"icon_path": testDataIcon,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
mockFs(mockOpts);
|
|
||||||
|
|
||||||
return ClusterStore.createInstance();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
mockFs.restore();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("migrates to modern format with kubeconfig in a file", async () => {
|
|
||||||
const config = ClusterStore.getInstance().clustersList[0].kubeConfigPath;
|
|
||||||
|
|
||||||
expect(fs.readFileSync(config, "utf8")).toBe(minimalValidKubeConfig);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("migrates to modern format with icon not in file", async () => {
|
|
||||||
const { icon } = ClusterStore.getInstance().clustersList[0].preferences;
|
|
||||||
|
|
||||||
expect(icon.startsWith("data:;base64,")).toBe(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|||||||
@ -1,25 +1,9 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { appEventBus, AppEvent } from "../event-bus";
|
import { appEventBus, AppEvent } from "../app-event-bus/event-bus";
|
||||||
import { Console } from "console";
|
import { Console } from "console";
|
||||||
import { stdout, stderr } from "process";
|
import { stdout, stderr } from "process";
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { EventEmitter } from "../event-emitter";
|
import { EventEmitter } from "../event-emitter";
|
||||||
|
|||||||
@ -1,32 +1,17 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { anyObject } from "jest-mock-extended";
|
import { anyObject } from "jest-mock-extended";
|
||||||
import { merge } from "lodash";
|
import { merge } from "lodash";
|
||||||
import mockFs from "mock-fs";
|
import mockFs from "mock-fs";
|
||||||
import logger from "../../main/logger";
|
import logger from "../../main/logger";
|
||||||
import { AppPaths } from "../app-paths";
|
|
||||||
import type { CatalogEntity, CatalogEntityData, CatalogEntityKindData } from "../catalog";
|
import type { CatalogEntity, CatalogEntityData, CatalogEntityKindData } from "../catalog";
|
||||||
import { ClusterStore } from "../cluster-store";
|
|
||||||
import { HotbarStore } from "../hotbar-store";
|
import { HotbarStore } from "../hotbar-store";
|
||||||
|
import { getDiForUnitTesting } from "../../main/getDiForUnitTesting";
|
||||||
|
import directoryForUserDataInjectable
|
||||||
|
from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
|
||||||
jest.mock("../../main/catalog/catalog-entity-registry", () => ({
|
jest.mock("../../main/catalog/catalog-entity-registry", () => ({
|
||||||
catalogEntityRegistry: {
|
catalogEntityRegistry: {
|
||||||
@ -109,37 +94,24 @@ const awsCluster = getMockCatalogEntity({
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
jest.mock("electron", () => ({
|
|
||||||
app: {
|
|
||||||
getVersion: () => "99.99.99",
|
|
||||||
getName: () => "lens",
|
|
||||||
setName: jest.fn(),
|
|
||||||
setPath: jest.fn(),
|
|
||||||
getPath: () => "tmp",
|
|
||||||
getLocale: () => "en",
|
|
||||||
setLoginItemSettings: jest.fn(),
|
|
||||||
},
|
|
||||||
ipcMain: {
|
|
||||||
on: jest.fn(),
|
|
||||||
handle: jest.fn(),
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
|
|
||||||
AppPaths.init();
|
|
||||||
|
|
||||||
describe("HotbarStore", () => {
|
describe("HotbarStore", () => {
|
||||||
beforeEach(() => {
|
beforeEach(async () => {
|
||||||
|
const di = getDiForUnitTesting({ doGeneralOverrides: true });
|
||||||
|
|
||||||
|
di.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
|
||||||
|
|
||||||
|
await di.runSetups();
|
||||||
|
|
||||||
mockFs({
|
mockFs({
|
||||||
"tmp": {
|
"some-directory-for-user-data": {
|
||||||
"lens-hotbar-store.json": JSON.stringify({}),
|
"lens-hotbar-store.json": JSON.stringify({}),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
ClusterStore.createInstance();
|
|
||||||
HotbarStore.createInstance();
|
HotbarStore.createInstance();
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
ClusterStore.resetInstance();
|
|
||||||
HotbarStore.resetInstance();
|
HotbarStore.resetInstance();
|
||||||
mockFs.restore();
|
mockFs.restore();
|
||||||
});
|
});
|
||||||
@ -339,7 +311,7 @@ describe("HotbarStore", () => {
|
|||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
HotbarStore.resetInstance();
|
HotbarStore.resetInstance();
|
||||||
const mockOpts = {
|
const mockOpts = {
|
||||||
"tmp": {
|
"some-directory-for-user-data": {
|
||||||
"lens-hotbar-store.json": JSON.stringify({
|
"lens-hotbar-store.json": JSON.stringify({
|
||||||
__internal__: {
|
__internal__: {
|
||||||
migrations: {
|
migrations: {
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { KubeConfig } from "@kubernetes/client-node";
|
import { KubeConfig } from "@kubernetes/client-node";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import https from "https";
|
import https from "https";
|
||||||
import os from "os";
|
import os from "os";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import mockFs from "mock-fs";
|
import mockFs from "mock-fs";
|
||||||
@ -42,19 +26,40 @@ import { Console } from "console";
|
|||||||
import { SemVer } from "semver";
|
import { SemVer } from "semver";
|
||||||
import electron from "electron";
|
import electron from "electron";
|
||||||
import { stdout, stderr } from "process";
|
import { stdout, stderr } from "process";
|
||||||
import type { ClusterStoreModel } from "../cluster-store";
|
import { getDisForUnitTesting } from "../../test-utils/get-dis-for-unit-testing";
|
||||||
import { AppPaths } from "../app-paths";
|
import userStoreInjectable from "../user-store/user-store.injectable";
|
||||||
|
import type { DependencyInjectionContainer } from "@ogre-tools/injectable";
|
||||||
|
import directoryForUserDataInjectable from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
import type { ClusterStoreModel } from "../cluster-store/cluster-store";
|
||||||
import { defaultTheme } from "../vars";
|
import { defaultTheme } from "../vars";
|
||||||
|
|
||||||
console = new Console(stdout, stderr);
|
console = new Console(stdout, stderr);
|
||||||
AppPaths.init();
|
|
||||||
|
|
||||||
describe("user store tests", () => {
|
describe("user store tests", () => {
|
||||||
|
let userStore: UserStore;
|
||||||
|
let mainDi: DependencyInjectionContainer;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
const dis = getDisForUnitTesting({ doGeneralOverrides: true });
|
||||||
|
|
||||||
|
mockFs();
|
||||||
|
|
||||||
|
mainDi = dis.mainDi;
|
||||||
|
|
||||||
|
mainDi.override(directoryForUserDataInjectable, () => "some-directory-for-user-data");
|
||||||
|
|
||||||
|
await dis.runSetups();
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
mockFs.restore();
|
||||||
|
});
|
||||||
|
|
||||||
describe("for an empty config", () => {
|
describe("for an empty config", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
mockFs({ tmp: { "config.json": "{}", "kube_config": "{}" }});
|
mockFs({ "some-directory-for-user-data": { "config.json": "{}", "kube_config": "{}" }});
|
||||||
|
|
||||||
(UserStore.createInstance() as any).refreshNewContexts = jest.fn(() => Promise.resolve());
|
userStore = mainDi.inject(userStoreInjectable);
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
@ -63,46 +68,38 @@ describe("user store tests", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("allows setting and retrieving lastSeenAppVersion", () => {
|
it("allows setting and retrieving lastSeenAppVersion", () => {
|
||||||
const us = UserStore.getInstance();
|
userStore.lastSeenAppVersion = "1.2.3";
|
||||||
|
expect(userStore.lastSeenAppVersion).toBe("1.2.3");
|
||||||
us.lastSeenAppVersion = "1.2.3";
|
|
||||||
expect(us.lastSeenAppVersion).toBe("1.2.3");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("allows setting and getting preferences", () => {
|
it("allows setting and getting preferences", () => {
|
||||||
const us = UserStore.getInstance();
|
userStore.httpsProxy = "abcd://defg";
|
||||||
|
|
||||||
us.httpsProxy = "abcd://defg";
|
expect(userStore.httpsProxy).toBe("abcd://defg");
|
||||||
|
expect(userStore.colorTheme).toBe(defaultTheme);
|
||||||
|
|
||||||
expect(us.httpsProxy).toBe("abcd://defg");
|
userStore.colorTheme = "light";
|
||||||
expect(us.colorTheme).toBe(defaultTheme);
|
expect(userStore.colorTheme).toBe("light");
|
||||||
|
|
||||||
us.colorTheme = "light";
|
|
||||||
expect(us.colorTheme).toBe("light");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("correctly resets theme to default value", async () => {
|
it("correctly resets theme to default value", async () => {
|
||||||
const us = UserStore.getInstance();
|
userStore.colorTheme = "some other theme";
|
||||||
|
userStore.resetTheme();
|
||||||
us.colorTheme = "some other theme";
|
expect(userStore.colorTheme).toBe(defaultTheme);
|
||||||
us.resetTheme();
|
|
||||||
expect(us.colorTheme).toBe(defaultTheme);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("correctly calculates if the last seen version is an old release", () => {
|
it("correctly calculates if the last seen version is an old release", () => {
|
||||||
const us = UserStore.getInstance();
|
expect(userStore.isNewVersion).toBe(true);
|
||||||
|
|
||||||
expect(us.isNewVersion).toBe(true);
|
userStore.lastSeenAppVersion = (new SemVer(electron.app.getVersion())).inc("major").format();
|
||||||
|
expect(userStore.isNewVersion).toBe(false);
|
||||||
us.lastSeenAppVersion = (new SemVer(electron.app.getVersion())).inc("major").format();
|
|
||||||
expect(us.isNewVersion).toBe(false);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("migrations", () => {
|
describe("migrations", () => {
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
mockFs({
|
mockFs({
|
||||||
"tmp": {
|
"some-directory-for-user-data": {
|
||||||
"config.json": JSON.stringify({
|
"config.json": JSON.stringify({
|
||||||
user: { username: "foobar" },
|
user: { username: "foobar" },
|
||||||
preferences: { colorTheme: "light" },
|
preferences: { colorTheme: "light" },
|
||||||
@ -112,7 +109,7 @@ describe("user store tests", () => {
|
|||||||
clusters: [
|
clusters: [
|
||||||
{
|
{
|
||||||
id: "foobar",
|
id: "foobar",
|
||||||
kubeConfigPath: "tmp/extension_data/foo/bar",
|
kubeConfigPath: "some-directory-for-user-data/extension_data/foo/bar",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "barfoo",
|
id: "barfoo",
|
||||||
@ -129,7 +126,7 @@ describe("user store tests", () => {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
UserStore.createInstance();
|
userStore = mainDi.inject(userStoreInjectable);
|
||||||
});
|
});
|
||||||
|
|
||||||
afterEach(() => {
|
afterEach(() => {
|
||||||
@ -138,16 +135,12 @@ describe("user store tests", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("sets last seen app version to 0.0.0", () => {
|
it("sets last seen app version to 0.0.0", () => {
|
||||||
const us = UserStore.getInstance();
|
expect(userStore.lastSeenAppVersion).toBe("0.0.0");
|
||||||
|
|
||||||
expect(us.lastSeenAppVersion).toBe("0.0.0");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it.only("skips clusters for adding to kube-sync with files under extension_data/", () => {
|
it.only("skips clusters for adding to kube-sync with files under extension_data/", () => {
|
||||||
const us = UserStore.getInstance();
|
expect(userStore.syncKubeconfigEntries.has("some-directory-for-user-data/extension_data/foo/bar")).toBe(false);
|
||||||
|
expect(userStore.syncKubeconfigEntries.has("some/other/path")).toBe(true);
|
||||||
expect(us.syncKubeconfigEntries.has("tmp/extension_data/foo/bar")).toBe(false);
|
|
||||||
expect(us.syncKubeconfigEntries.has("some/other/path")).toBe(true);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
13
src/common/app-event-bus/app-event-bus.injectable.ts
Normal file
13
src/common/app-event-bus/app-event-bus.injectable.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import { appEventBus } from "./event-bus";
|
||||||
|
|
||||||
|
const appEventBusInjectable = getInjectable({
|
||||||
|
instantiate: () => appEventBus,
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default appEventBusInjectable;
|
||||||
14
src/common/app-event-bus/event-bus.ts
Normal file
14
src/common/app-event-bus/event-bus.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { EventEmitter } from "../event-emitter";
|
||||||
|
|
||||||
|
export type AppEvent = {
|
||||||
|
name: string;
|
||||||
|
action: string;
|
||||||
|
params?: object;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const appEventBus = new EventEmitter<[AppEvent]>();
|
||||||
@ -1,128 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { app, ipcMain, ipcRenderer } from "electron";
|
|
||||||
import { observable, when } from "mobx";
|
|
||||||
import path from "path";
|
|
||||||
import logger from "./logger";
|
|
||||||
import { fromEntries } from "./utils/objects";
|
|
||||||
import { toJS } from "./utils/toJS";
|
|
||||||
import { isWindows } from "./vars";
|
|
||||||
|
|
||||||
export type PathName = Parameters<typeof app["getPath"]>[0];
|
|
||||||
|
|
||||||
const pathNames: PathName[] = [
|
|
||||||
"home",
|
|
||||||
"appData",
|
|
||||||
"userData",
|
|
||||||
"cache",
|
|
||||||
"temp",
|
|
||||||
"exe",
|
|
||||||
"module",
|
|
||||||
"desktop",
|
|
||||||
"documents",
|
|
||||||
"downloads",
|
|
||||||
"music",
|
|
||||||
"pictures",
|
|
||||||
"videos",
|
|
||||||
"logs",
|
|
||||||
"crashDumps",
|
|
||||||
];
|
|
||||||
|
|
||||||
if (isWindows) {
|
|
||||||
pathNames.push("recent");
|
|
||||||
}
|
|
||||||
|
|
||||||
export class AppPaths {
|
|
||||||
private static paths = observable.box<Record<PathName, string> | undefined>();
|
|
||||||
private static readonly ipcChannel = "get-app-paths";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the local copy of the paths from electron.
|
|
||||||
*/
|
|
||||||
static async init(): Promise<void> {
|
|
||||||
logger.info(`[APP-PATHS]: initializing`);
|
|
||||||
|
|
||||||
if (AppPaths.paths.get()) {
|
|
||||||
return void logger.error("[APP-PATHS]: init called more than once");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ipcMain) {
|
|
||||||
AppPaths.initMain();
|
|
||||||
} else {
|
|
||||||
await AppPaths.initRenderer();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static initMain(): void {
|
|
||||||
if (process.env.CICD) {
|
|
||||||
app.setPath("appData", process.env.CICD);
|
|
||||||
}
|
|
||||||
|
|
||||||
app.setPath("userData", path.join(app.getPath("appData"), app.getName()));
|
|
||||||
|
|
||||||
const getPath = (pathName: PathName) => {
|
|
||||||
try {
|
|
||||||
return app.getPath(pathName);
|
|
||||||
} catch {
|
|
||||||
logger.debug(`[APP-PATHS] No path found for ${pathName}`);
|
|
||||||
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
AppPaths.paths.set(fromEntries(pathNames.map(pathName => [pathName, getPath(pathName)] as const).filter(([, path]) => path)));
|
|
||||||
ipcMain.handle(AppPaths.ipcChannel, () => toJS(AppPaths.paths.get()));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static async initRenderer(): Promise<void> {
|
|
||||||
const paths = await ipcRenderer.invoke(AppPaths.ipcChannel);
|
|
||||||
|
|
||||||
if (!paths || typeof paths !== "object") {
|
|
||||||
throw Object.assign(new Error("[APP-PATHS]: ipc handler returned unexpected data"), { data: paths });
|
|
||||||
}
|
|
||||||
|
|
||||||
AppPaths.paths.set(paths);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An alternative to `app.getPath()` for use in renderer and common.
|
|
||||||
* This function throws if called before initialization.
|
|
||||||
* @param name The name of the path field
|
|
||||||
*/
|
|
||||||
static get(name: PathName): string {
|
|
||||||
if (!AppPaths.paths.get()) {
|
|
||||||
throw new Error("AppPaths.init() has not been called");
|
|
||||||
}
|
|
||||||
|
|
||||||
return AppPaths.paths.get()[name];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An async version of `AppPaths.get()` which waits for `AppPaths.init()` to
|
|
||||||
* be called before returning
|
|
||||||
*/
|
|
||||||
static async getAsync(name: PathName): Promise<string> {
|
|
||||||
await when(() => Boolean(AppPaths.paths.get()));
|
|
||||||
|
|
||||||
return AppPaths.paths.get()[name];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
15
src/common/app-paths/app-path-injection-token.ts
Normal file
15
src/common/app-paths/app-path-injection-token.ts
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectionToken } from "@ogre-tools/injectable";
|
||||||
|
import type { PathName } from "./app-path-names";
|
||||||
|
import { createChannel } from "../ipc-channel/create-channel/create-channel";
|
||||||
|
|
||||||
|
export type AppPaths = Record<PathName, string>;
|
||||||
|
|
||||||
|
export const appPathsInjectionToken = getInjectionToken<AppPaths>();
|
||||||
|
|
||||||
|
export const appPathsIpcChannel = createChannel<AppPaths>("app-paths");
|
||||||
|
|
||||||
|
|
||||||
26
src/common/app-paths/app-path-names.ts
Normal file
26
src/common/app-paths/app-path-names.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import type { app as electronApp } from "electron";
|
||||||
|
|
||||||
|
export type PathName = Parameters<typeof electronApp["getPath"]>[0];
|
||||||
|
|
||||||
|
export const pathNames: PathName[] = [
|
||||||
|
"home",
|
||||||
|
"appData",
|
||||||
|
"userData",
|
||||||
|
"cache",
|
||||||
|
"temp",
|
||||||
|
"exe",
|
||||||
|
"module",
|
||||||
|
"desktop",
|
||||||
|
"documents",
|
||||||
|
"downloads",
|
||||||
|
"music",
|
||||||
|
"pictures",
|
||||||
|
"videos",
|
||||||
|
"logs",
|
||||||
|
"crashDumps",
|
||||||
|
"recent",
|
||||||
|
];
|
||||||
144
src/common/app-paths/app-paths.test.ts
Normal file
144
src/common/app-paths/app-paths.test.ts
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import type { DependencyInjectionContainer } from "@ogre-tools/injectable";
|
||||||
|
import { AppPaths, appPathsInjectionToken } from "./app-path-injection-token";
|
||||||
|
import getElectronAppPathInjectable from "../../main/app-paths/get-electron-app-path/get-electron-app-path.injectable";
|
||||||
|
import { getDisForUnitTesting } from "../../test-utils/get-dis-for-unit-testing";
|
||||||
|
import type { PathName } from "./app-path-names";
|
||||||
|
import setElectronAppPathInjectable from "../../main/app-paths/set-electron-app-path/set-electron-app-path.injectable";
|
||||||
|
import appNameInjectable from "../../main/app-paths/app-name/app-name.injectable";
|
||||||
|
import directoryForIntegrationTestingInjectable from "../../main/app-paths/directory-for-integration-testing/directory-for-integration-testing.injectable";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
describe("app-paths", () => {
|
||||||
|
let mainDi: DependencyInjectionContainer;
|
||||||
|
let rendererDi: DependencyInjectionContainer;
|
||||||
|
let runSetups: () => Promise<void[]>;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
const dis = getDisForUnitTesting({ doGeneralOverrides: true });
|
||||||
|
|
||||||
|
mainDi = dis.mainDi;
|
||||||
|
rendererDi = dis.rendererDi;
|
||||||
|
runSetups = dis.runSetups;
|
||||||
|
|
||||||
|
const defaultAppPathsStub: AppPaths = {
|
||||||
|
appData: "some-app-data",
|
||||||
|
cache: "some-cache",
|
||||||
|
crashDumps: "some-crash-dumps",
|
||||||
|
desktop: "some-desktop",
|
||||||
|
documents: "some-documents",
|
||||||
|
downloads: "some-downloads",
|
||||||
|
exe: "some-exe",
|
||||||
|
home: "some-home-path",
|
||||||
|
logs: "some-logs",
|
||||||
|
module: "some-module",
|
||||||
|
music: "some-music",
|
||||||
|
pictures: "some-pictures",
|
||||||
|
recent: "some-recent",
|
||||||
|
temp: "some-temp",
|
||||||
|
videos: "some-videos",
|
||||||
|
userData: "some-irrelevant",
|
||||||
|
};
|
||||||
|
|
||||||
|
mainDi.override(
|
||||||
|
getElectronAppPathInjectable,
|
||||||
|
() =>
|
||||||
|
(key: PathName): string | null =>
|
||||||
|
defaultAppPathsStub[key],
|
||||||
|
);
|
||||||
|
|
||||||
|
mainDi.override(
|
||||||
|
setElectronAppPathInjectable,
|
||||||
|
() =>
|
||||||
|
(key: PathName, path: string): void => {
|
||||||
|
defaultAppPathsStub[key] = path;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
mainDi.override(appNameInjectable, () => "some-app-name");
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("normally", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
await runSetups();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("given in renderer, when injecting app paths, returns application specific app paths", () => {
|
||||||
|
const actual = rendererDi.inject(appPathsInjectionToken);
|
||||||
|
|
||||||
|
expect(actual).toEqual({
|
||||||
|
appData: "some-app-data",
|
||||||
|
cache: "some-cache",
|
||||||
|
crashDumps: "some-crash-dumps",
|
||||||
|
desktop: "some-desktop",
|
||||||
|
documents: "some-documents",
|
||||||
|
downloads: "some-downloads",
|
||||||
|
exe: "some-exe",
|
||||||
|
home: "some-home-path",
|
||||||
|
logs: "some-logs",
|
||||||
|
module: "some-module",
|
||||||
|
music: "some-music",
|
||||||
|
pictures: "some-pictures",
|
||||||
|
recent: "some-recent",
|
||||||
|
temp: "some-temp",
|
||||||
|
videos: "some-videos",
|
||||||
|
userData: `some-app-data${path.sep}some-app-name`,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("given in main, when injecting app paths, returns application specific app paths", () => {
|
||||||
|
const actual = mainDi.inject(appPathsInjectionToken);
|
||||||
|
|
||||||
|
expect(actual).toEqual({
|
||||||
|
appData: "some-app-data",
|
||||||
|
cache: "some-cache",
|
||||||
|
crashDumps: "some-crash-dumps",
|
||||||
|
desktop: "some-desktop",
|
||||||
|
documents: "some-documents",
|
||||||
|
downloads: "some-downloads",
|
||||||
|
exe: "some-exe",
|
||||||
|
home: "some-home-path",
|
||||||
|
logs: "some-logs",
|
||||||
|
module: "some-module",
|
||||||
|
music: "some-music",
|
||||||
|
pictures: "some-pictures",
|
||||||
|
recent: "some-recent",
|
||||||
|
temp: "some-temp",
|
||||||
|
videos: "some-videos",
|
||||||
|
userData: `some-app-data${path.sep}some-app-name`,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("when running integration tests", () => {
|
||||||
|
beforeEach(async () => {
|
||||||
|
mainDi.override(
|
||||||
|
directoryForIntegrationTestingInjectable,
|
||||||
|
() => "some-integration-testing-app-data",
|
||||||
|
);
|
||||||
|
|
||||||
|
await runSetups();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("given in renderer, when injecting path for app data, has integration specific app data path", () => {
|
||||||
|
const { appData, userData } = rendererDi.inject(appPathsInjectionToken);
|
||||||
|
|
||||||
|
expect({ appData, userData }).toEqual({
|
||||||
|
appData: "some-integration-testing-app-data",
|
||||||
|
userData: `some-integration-testing-app-data${path.sep}some-app-name`,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("given in main, when injecting path for app data, has integration specific app data path", () => {
|
||||||
|
const { appData, userData } = rendererDi.inject(appPathsInjectionToken);
|
||||||
|
|
||||||
|
expect({ appData, userData }).toEqual({
|
||||||
|
appData: "some-integration-testing-app-data",
|
||||||
|
userData: `some-integration-testing-app-data${path.sep}some-app-name`,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import path from "path";
|
||||||
|
import directoryForUserDataInjectable from "../directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
|
||||||
|
const directoryForBinariesInjectable = getInjectable({
|
||||||
|
instantiate: (di) =>
|
||||||
|
path.join(di.inject(directoryForUserDataInjectable), "binaries"),
|
||||||
|
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default directoryForBinariesInjectable;
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import { appPathsInjectionToken } from "../app-path-injection-token";
|
||||||
|
|
||||||
|
const directoryForDownloadsInjectable = getInjectable({
|
||||||
|
instantiate: (di) => di.inject(appPathsInjectionToken).downloads,
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default directoryForDownloadsInjectable;
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import { appPathsInjectionToken } from "../app-path-injection-token";
|
||||||
|
|
||||||
|
const directoryForExesInjectable = getInjectable({
|
||||||
|
instantiate: (di) => di.inject(appPathsInjectionToken).exe,
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default directoryForExesInjectable;
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import directoryForUserDataInjectable from "../directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
const directoryForKubeConfigsInjectable = getInjectable({
|
||||||
|
instantiate: (di) =>
|
||||||
|
path.resolve(di.inject(directoryForUserDataInjectable), "kubeconfigs"),
|
||||||
|
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default directoryForKubeConfigsInjectable;
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import { appPathsInjectionToken } from "../app-path-injection-token";
|
||||||
|
|
||||||
|
const directoryForTempInjectable = getInjectable({
|
||||||
|
instantiate: (di) => di.inject(appPathsInjectionToken).temp,
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default directoryForTempInjectable;
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import { appPathsInjectionToken } from "../app-path-injection-token";
|
||||||
|
|
||||||
|
const directoryForUserDataInjectable = getInjectable({
|
||||||
|
instantiate: (di) => di.inject(appPathsInjectionToken).userData,
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default directoryForUserDataInjectable;
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import path from "path";
|
||||||
|
import directoryForKubeConfigsInjectable from "../directory-for-kube-configs/directory-for-kube-configs.injectable";
|
||||||
|
|
||||||
|
const getCustomKubeConfigDirectoryInjectable = getInjectable({
|
||||||
|
instantiate: (di) => (directoryName: string) => {
|
||||||
|
const directoryForKubeConfigs = di.inject(directoryForKubeConfigsInjectable);
|
||||||
|
|
||||||
|
return path.resolve(
|
||||||
|
directoryForKubeConfigs,
|
||||||
|
directoryName,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default getCustomKubeConfigDirectoryInjectable;
|
||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import path from "path";
|
import path from "path";
|
||||||
@ -30,7 +14,9 @@ import { broadcastMessage, ipcMainOn, ipcRendererOn } from "./ipc";
|
|||||||
import isEqual from "lodash/isEqual";
|
import isEqual from "lodash/isEqual";
|
||||||
import { isTestEnv } from "./vars";
|
import { isTestEnv } from "./vars";
|
||||||
import { kebabCase } from "lodash";
|
import { kebabCase } from "lodash";
|
||||||
import { AppPaths } from "./app-paths";
|
import { getLegacyGlobalDiForExtensionApi } from "../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api";
|
||||||
|
import directoryForUserDataInjectable
|
||||||
|
from "./app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
|
||||||
export interface BaseStoreParams<T> extends ConfOptions<T> {
|
export interface BaseStoreParams<T> extends ConfOptions<T> {
|
||||||
syncOptions?: {
|
syncOptions?: {
|
||||||
@ -102,7 +88,9 @@ export abstract class BaseStore<T> extends Singleton {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected cwd() {
|
protected cwd() {
|
||||||
return AppPaths.get("userData");
|
const di = getLegacyGlobalDiForExtensionApi();
|
||||||
|
|
||||||
|
return di.inject(directoryForUserDataInjectable);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected saveToFile(model: T) {
|
protected saveToFile(model: T) {
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import { kubernetesClusterCategory } from "../kubernetes-cluster";
|
import { kubernetesClusterCategory } from "../kubernetes-cluster";
|
||||||
|
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { navigate } from "../../renderer/navigation";
|
import { navigate } from "../../renderer/navigation";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export * from "./general";
|
export * from "./general";
|
||||||
|
|||||||
@ -1,28 +1,12 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { catalogCategoryRegistry } from "../catalog/catalog-category-registry";
|
import { catalogCategoryRegistry } from "../catalog/catalog-category-registry";
|
||||||
import { CatalogEntity, CatalogEntityActionContext, CatalogEntityContextMenuContext, CatalogEntityMetadata, CatalogEntityStatus, CatalogCategory, CatalogCategorySpec } from "../catalog";
|
import { CatalogEntity, CatalogEntityActionContext, CatalogEntityContextMenuContext, CatalogEntityMetadata, CatalogEntityStatus, CatalogCategory, CatalogCategorySpec } from "../catalog";
|
||||||
import { clusterActivateHandler, clusterDisconnectHandler } from "../cluster-ipc";
|
import { clusterActivateHandler, clusterDisconnectHandler } from "../cluster-ipc";
|
||||||
import { ClusterStore } from "../cluster-store";
|
import { ClusterStore } from "../cluster-store/cluster-store";
|
||||||
import { broadcastMessage, requestMain } from "../ipc";
|
import { broadcastMessage, requestMain } from "../ipc";
|
||||||
import { app } from "electron";
|
import { app } from "electron";
|
||||||
import type { CatalogEntitySpec } from "../catalog/catalog-entity";
|
import type { CatalogEntitySpec } from "../catalog/catalog-entity";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { CatalogCategory, CatalogEntity, CatalogEntityContextMenuContext, CatalogEntityMetadata, CatalogEntityStatus } from "../catalog";
|
import { CatalogCategory, CatalogEntity, CatalogEntityContextMenuContext, CatalogEntityMetadata, CatalogEntityStatus } from "../catalog";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { action, computed, observable, makeObservable } from "mobx";
|
import { action, computed, observable, makeObservable } from "mobx";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import EventEmitter from "events";
|
import EventEmitter from "events";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { CatalogEntity } from "../catalog";
|
import type { CatalogEntity } from "../catalog";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export * from "./catalog-category-registry";
|
export * from "./catalog-category-registry";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { observable } from "mobx";
|
import { observable } from "mobx";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const clusterActivateHandler = "cluster:activate";
|
export const clusterActivateHandler = "cluster:activate";
|
||||||
|
|||||||
18
src/common/cluster-store/cluster-store.injectable.ts
Normal file
18
src/common/cluster-store/cluster-store.injectable.ts
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import { ClusterStore } from "./cluster-store";
|
||||||
|
import { createClusterInjectionToken } from "../cluster/create-cluster-injection-token";
|
||||||
|
|
||||||
|
const clusterStoreInjectable = getInjectable({
|
||||||
|
instantiate: (di) =>
|
||||||
|
ClusterStore.createInstance({
|
||||||
|
createCluster: di.inject(createClusterInjectionToken),
|
||||||
|
}),
|
||||||
|
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default clusterStoreInjectable;
|
||||||
@ -1,34 +1,19 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
import { ipcMain, ipcRenderer, webFrame } from "electron";
|
import { ipcMain, ipcRenderer, webFrame } from "electron";
|
||||||
import { action, comparer, computed, makeObservable, observable, reaction } from "mobx";
|
import { action, comparer, computed, makeObservable, observable, reaction } from "mobx";
|
||||||
import { BaseStore } from "./base-store";
|
import { BaseStore } from "../base-store";
|
||||||
import { Cluster } from "../main/cluster";
|
import { Cluster } from "../cluster/cluster";
|
||||||
import migrations from "../migrations/cluster-store";
|
import migrations from "../../migrations/cluster-store";
|
||||||
import logger from "../main/logger";
|
import logger from "../../main/logger";
|
||||||
import { appEventBus } from "./event-bus";
|
import { appEventBus } from "../app-event-bus/event-bus";
|
||||||
import { ipcMainHandle, requestMain } from "./ipc";
|
import { ipcMainHandle, requestMain } from "../ipc";
|
||||||
import { disposer, toJS } from "./utils";
|
import { disposer, toJS } from "../utils";
|
||||||
import type { ClusterModel, ClusterId, ClusterState } from "./cluster-types";
|
import type { ClusterModel, ClusterId, ClusterState } from "../cluster-types";
|
||||||
|
|
||||||
export interface ClusterStoreModel {
|
export interface ClusterStoreModel {
|
||||||
clusters?: ClusterModel[];
|
clusters?: ClusterModel[];
|
||||||
@ -36,13 +21,17 @@ export interface ClusterStoreModel {
|
|||||||
|
|
||||||
const initialStates = "cluster:states";
|
const initialStates = "cluster:states";
|
||||||
|
|
||||||
|
interface Dependencies {
|
||||||
|
createCluster: (model: ClusterModel) => Cluster
|
||||||
|
}
|
||||||
|
|
||||||
export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
||||||
readonly displayName = "ClusterStore";
|
readonly displayName = "ClusterStore";
|
||||||
clusters = observable.map<ClusterId, Cluster>();
|
clusters = observable.map<ClusterId, Cluster>();
|
||||||
|
|
||||||
protected disposer = disposer();
|
protected disposer = disposer();
|
||||||
|
|
||||||
constructor() {
|
constructor(private dependencies: Dependencies) {
|
||||||
super({
|
super({
|
||||||
configName: "lens-cluster-store",
|
configName: "lens-cluster-store",
|
||||||
accessPropertiesByDotNotation: false, // To make dots safe in cluster context names
|
accessPropertiesByDotNotation: false, // To make dots safe in cluster context names
|
||||||
@ -123,7 +112,7 @@ export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
|||||||
|
|
||||||
const cluster = clusterOrModel instanceof Cluster
|
const cluster = clusterOrModel instanceof Cluster
|
||||||
? clusterOrModel
|
? clusterOrModel
|
||||||
: new Cluster(clusterOrModel);
|
: this.dependencies.createCluster(clusterOrModel);
|
||||||
|
|
||||||
this.clusters.set(cluster.id, cluster);
|
this.clusters.set(cluster.id, cluster);
|
||||||
|
|
||||||
@ -143,7 +132,7 @@ export class ClusterStore extends BaseStore<ClusterStoreModel> {
|
|||||||
if (cluster) {
|
if (cluster) {
|
||||||
cluster.updateModel(clusterModel);
|
cluster.updateModel(clusterModel);
|
||||||
} else {
|
} else {
|
||||||
cluster = new Cluster(clusterModel);
|
cluster = this.dependencies.createCluster(clusterModel);
|
||||||
}
|
}
|
||||||
newClusters.set(clusterModel.id, cluster);
|
newClusters.set(clusterModel.id, cluster);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import { getHostedClusterId } from "../../utils";
|
||||||
|
import clusterStoreInjectable from "../cluster-store.injectable";
|
||||||
|
|
||||||
|
const hostedClusterInjectable = getInjectable({
|
||||||
|
instantiate: (di) => {
|
||||||
|
const hostedClusterId = getHostedClusterId();
|
||||||
|
|
||||||
|
return di.inject(clusterStoreInjectable).getById(hostedClusterId);
|
||||||
|
},
|
||||||
|
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default hostedClusterInjectable;
|
||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,42 +1,33 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { ipcMain } from "electron";
|
import { ipcMain } from "electron";
|
||||||
import { action, comparer, computed, makeObservable, observable, reaction, when } from "mobx";
|
import { action, comparer, computed, makeObservable, observable, reaction, when } from "mobx";
|
||||||
import { broadcastMessage, ClusterListNamespaceForbiddenChannel } from "../common/ipc";
|
import { broadcastMessage, ClusterListNamespaceForbiddenChannel } from "../ipc";
|
||||||
import { ContextHandler } from "./context-handler";
|
import type { ContextHandler } from "../../main/context-handler/context-handler";
|
||||||
import { AuthorizationV1Api, CoreV1Api, HttpError, KubeConfig, V1ResourceAttributes } from "@kubernetes/client-node";
|
import { AuthorizationV1Api, CoreV1Api, HttpError, KubeConfig, V1ResourceAttributes } from "@kubernetes/client-node";
|
||||||
import { Kubectl } from "./kubectl";
|
import type { Kubectl } from "../../main/kubectl/kubectl";
|
||||||
import { KubeconfigManager } from "./kubeconfig-manager";
|
import type { KubeconfigManager } from "../../main/kubeconfig-manager/kubeconfig-manager";
|
||||||
import { loadConfigFromFile, loadConfigFromFileSync, validateKubeConfig } from "../common/kube-helpers";
|
import { loadConfigFromFile, loadConfigFromFileSync, validateKubeConfig } from "../kube-helpers";
|
||||||
import { apiResourceRecord, apiResources, KubeApiResource, KubeResource } from "../common/rbac";
|
import { apiResourceRecord, apiResources, KubeApiResource, KubeResource } from "../rbac";
|
||||||
import logger from "./logger";
|
import logger from "../../main/logger";
|
||||||
import { VersionDetector } from "./cluster-detectors/version-detector";
|
import { VersionDetector } from "../../main/cluster-detectors/version-detector";
|
||||||
import { DetectorRegistry } from "./cluster-detectors/detector-registry";
|
import { DetectorRegistry } from "../../main/cluster-detectors/detector-registry";
|
||||||
import plimit from "p-limit";
|
import plimit from "p-limit";
|
||||||
import type { ClusterState, ClusterRefreshOptions, ClusterMetricsResourceType, ClusterId, ClusterMetadata, ClusterModel, ClusterPreferences, ClusterPrometheusPreferences, UpdateClusterModel, KubeAuthUpdate } from "../common/cluster-types";
|
import type { ClusterState, ClusterRefreshOptions, ClusterMetricsResourceType, ClusterId, ClusterMetadata, ClusterModel, ClusterPreferences, ClusterPrometheusPreferences, UpdateClusterModel, KubeAuthUpdate } from "../cluster-types";
|
||||||
import { ClusterMetadataKey, initialNodeShellImage, ClusterStatus } from "../common/cluster-types";
|
import { ClusterMetadataKey, initialNodeShellImage, ClusterStatus } from "../cluster-types";
|
||||||
import { disposer, storedKubeConfigFolder, toJS } from "../common/utils";
|
import { disposer, toJS } from "../utils";
|
||||||
import type { Response } from "request";
|
import type { Response } from "request";
|
||||||
|
|
||||||
|
interface Dependencies {
|
||||||
|
directoryForKubeConfigs: string,
|
||||||
|
createKubeconfigManager: (cluster: Cluster) => KubeconfigManager,
|
||||||
|
createContextHandler: (cluster: Cluster) => ContextHandler,
|
||||||
|
createKubectl: (clusterVersion: string) => Kubectl
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cluster
|
* Cluster
|
||||||
*
|
*
|
||||||
@ -221,7 +212,7 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
return this.preferences.defaultNamespace;
|
return this.preferences.defaultNamespace;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(model: ClusterModel) {
|
constructor(private dependencies: Dependencies, model: ClusterModel) {
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
this.id = model.id;
|
this.id = model.id;
|
||||||
this.updateModel(model);
|
this.updateModel(model);
|
||||||
@ -237,8 +228,8 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
|
|
||||||
if (ipcMain) {
|
if (ipcMain) {
|
||||||
// for the time being, until renderer gets its own cluster type
|
// for the time being, until renderer gets its own cluster type
|
||||||
this.contextHandler = new ContextHandler(this);
|
this.contextHandler = this.dependencies.createContextHandler(this);
|
||||||
this.proxyKubeconfigManager = new KubeconfigManager(this, this.contextHandler);
|
this.proxyKubeconfigManager = this.dependencies.createKubeconfigManager(this);
|
||||||
|
|
||||||
logger.debug(`[CLUSTER]: Cluster init success`, {
|
logger.debug(`[CLUSTER]: Cluster init success`, {
|
||||||
id: this.id,
|
id: this.id,
|
||||||
@ -362,7 +353,7 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
* @internal
|
* @internal
|
||||||
*/
|
*/
|
||||||
async ensureKubectl() {
|
async ensureKubectl() {
|
||||||
this.kubeCtl ??= new Kubectl(this.version);
|
this.kubeCtl ??= this.dependencies.createKubectl(this.version);
|
||||||
|
|
||||||
await this.kubeCtl.ensureKubectl();
|
await this.kubeCtl.ensureKubectl();
|
||||||
|
|
||||||
@ -719,6 +710,6 @@ export class Cluster implements ClusterModel, ClusterState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
isInLocalKubeconfig() {
|
isInLocalKubeconfig() {
|
||||||
return this.kubeConfigPath.startsWith(storedKubeConfigFolder());
|
return this.kubeConfigPath.startsWith(this.dependencies.directoryForKubeConfigs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
10
src/common/cluster/create-cluster-injection-token.ts
Normal file
10
src/common/cluster/create-cluster-injection-token.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectionToken } from "@ogre-tools/injectable";
|
||||||
|
import type { ClusterModel } from "../cluster-types";
|
||||||
|
import type { Cluster } from "./cluster";
|
||||||
|
|
||||||
|
export const createClusterInjectionToken =
|
||||||
|
getInjectionToken<(model: ClusterModel) => Cluster>();
|
||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as Mobx from "mobx";
|
import * as Mobx from "mobx";
|
||||||
|
|||||||
@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import path from "path";
|
||||||
|
import directoryForUserDataInjectable from "../app-paths/directory-for-user-data/directory-for-user-data.injectable";
|
||||||
|
|
||||||
|
const directoryForLensLocalStorageInjectable = getInjectable({
|
||||||
|
instantiate: (di) =>
|
||||||
|
path.resolve(
|
||||||
|
di.inject(directoryForUserDataInjectable),
|
||||||
|
"lens-local-storage",
|
||||||
|
),
|
||||||
|
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default directoryForLensLocalStorageInjectable;
|
||||||
@ -1,30 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
|
||||||
*
|
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { EventEmitter } from "./event-emitter";
|
|
||||||
|
|
||||||
export type AppEvent = {
|
|
||||||
name: string;
|
|
||||||
action: string;
|
|
||||||
params?: object;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const appEventBus = new EventEmitter<[AppEvent]>();
|
|
||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Custom event emitter
|
// Custom event emitter
|
||||||
@ -45,7 +29,7 @@ export class EventEmitter<D extends [...any[]]> {
|
|||||||
this.listeners.length = 0;
|
this.listeners.length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit(...data: D) {
|
emit = (...data: D) => {
|
||||||
for (const [callback, { once }] of this.listeners) {
|
for (const [callback, { once }] of this.listeners) {
|
||||||
if (once) {
|
if (once) {
|
||||||
this.removeListener(callback);
|
this.removeListener(callback);
|
||||||
@ -55,5 +39,5 @@ export class EventEmitter<D extends [...any[]]> {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
14
src/common/fs/fs.injectable.ts
Normal file
14
src/common/fs/fs.injectable.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import fse from "fs-extra";
|
||||||
|
|
||||||
|
const fsInjectable = getInjectable({
|
||||||
|
instantiate: () => fse,
|
||||||
|
causesSideEffects: true,
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default fsInjectable;
|
||||||
17
src/common/fs/read-json-file/read-json-file.injectable.ts
Normal file
17
src/common/fs/read-json-file/read-json-file.injectable.ts
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { readJsonFile } from "./read-json-file";
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import fsInjectable from "../fs.injectable";
|
||||||
|
|
||||||
|
const readJsonFileInjectable = getInjectable({
|
||||||
|
instantiate: (di) => readJsonFile({
|
||||||
|
fs: di.inject(fsInjectable),
|
||||||
|
}),
|
||||||
|
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default readJsonFileInjectable;
|
||||||
16
src/common/fs/read-json-file/read-json-file.ts
Normal file
16
src/common/fs/read-json-file/read-json-file.ts
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import type { JsonObject } from "type-fest";
|
||||||
|
|
||||||
|
interface Dependencies {
|
||||||
|
fs: {
|
||||||
|
readJson: (filePath: string) => Promise<JsonObject>;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export const readJsonFile =
|
||||||
|
({ fs }: Dependencies) =>
|
||||||
|
(filePath: string) =>
|
||||||
|
fs.readJson(filePath);
|
||||||
14
src/common/fs/write-json-file/write-json-file.injectable.ts
Normal file
14
src/common/fs/write-json-file/write-json-file.injectable.ts
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
|
import { writeJsonFile } from "./write-json-file";
|
||||||
|
import fsInjectable from "../fs.injectable";
|
||||||
|
|
||||||
|
const writeJsonFileInjectable = getInjectable({
|
||||||
|
instantiate: (di) => writeJsonFile({ fs: di.inject(fsInjectable) }),
|
||||||
|
lifecycle: lifecycleEnum.singleton,
|
||||||
|
});
|
||||||
|
|
||||||
|
export default writeJsonFileInjectable;
|
||||||
31
src/common/fs/write-json-file/write-json-file.ts
Normal file
31
src/common/fs/write-json-file/write-json-file.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import path from "path";
|
||||||
|
import type { JsonObject } from "type-fest";
|
||||||
|
|
||||||
|
interface Dependencies {
|
||||||
|
fs: {
|
||||||
|
ensureDir: (
|
||||||
|
directoryName: string,
|
||||||
|
options: { mode: number }
|
||||||
|
) => Promise<void>;
|
||||||
|
|
||||||
|
writeJson: (
|
||||||
|
filePath: string,
|
||||||
|
contentObject: JsonObject,
|
||||||
|
options: { spaces: number }
|
||||||
|
) => Promise<void>;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export const writeJsonFile =
|
||||||
|
({ fs }: Dependencies) =>
|
||||||
|
async (filePath: string, contentObject: JsonObject) => {
|
||||||
|
const directoryName = path.dirname(filePath);
|
||||||
|
|
||||||
|
await fs.ensureDir(directoryName, { mode: 0o755 });
|
||||||
|
|
||||||
|
await fs.writeJson(filePath, contentObject, { spaces: 2 });
|
||||||
|
};
|
||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import esbuild from "esbuild";
|
import esbuild from "esbuild";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
||||||
import { HotbarStore } from "./hotbar-store";
|
import { HotbarStore } from "./hotbar-store";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { action, comparer, observable, makeObservable, computed } from "mobx";
|
import { action, comparer, observable, makeObservable, computed } from "mobx";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import * as uuid from "uuid";
|
import * as uuid from "uuid";
|
||||||
|
|||||||
8
src/common/ipc-channel/channel.d.ts
vendored
Normal file
8
src/common/ipc-channel/channel.d.ts
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
export interface Channel<TInstance> {
|
||||||
|
name: string;
|
||||||
|
_template: TInstance;
|
||||||
|
}
|
||||||
10
src/common/ipc-channel/create-channel/create-channel.ts
Normal file
10
src/common/ipc-channel/create-channel/create-channel.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import type { Channel } from "../channel";
|
||||||
|
|
||||||
|
export const createChannel = <TInstance>(name: string): Channel<TInstance> => ({
|
||||||
|
name,
|
||||||
|
_template: null,
|
||||||
|
});
|
||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { EventEmitter } from "events";
|
import { EventEmitter } from "events";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export enum CatalogIpcEvents {
|
export enum CatalogIpcEvents {
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,21 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
export const BundledExtensionsLoaded = "extension-loader:bundled-extensions-loaded";
|
export const BundledExtensionsLoaded = "extension-loader:bundled-extensions-loaded";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const HotbarTooManyItems = "hotbar:too-many-items";
|
export const HotbarTooManyItems = "hotbar:too-many-items";
|
||||||
|
|||||||
@ -1,22 +1,6 @@
|
|||||||
/**
|
/**
|
||||||
* Copyright (c) 2021 OpenLens Authors
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
*
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
||||||
* this software and associated documentation files (the "Software"), to deal in
|
|
||||||
* the Software without restriction, including without limitation the rights to
|
|
||||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
||||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
|
||||||
* subject to the following conditions:
|
|
||||||
*
|
|
||||||
* The above copyright notice and this permission notice shall be included in all
|
|
||||||
* copies or substantial portions of the Software.
|
|
||||||
*
|
|
||||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
||||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
||||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export const dialogShowOpenDialogHandler = "dialog:show-open-dialog";
|
export const dialogShowOpenDialogHandler = "dialog:show-open-dialog";
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user