freelens-eso-extension 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/README.md +48 -34
  2. package/out/main/_virtual/_global-external_@freelensapp/extensions.js +8 -0
  3. package/out/main/index.js +11 -0
  4. package/out/main/index.js.map +1 -0
  5. package/out/renderer/_virtual/_global-external_@freelensapp/extensions.js +9 -0
  6. package/out/renderer/_virtual/_global-external_mobx-react.js +58 -0
  7. package/out/renderer/_virtual/_global-external_react/jsx-runtime.js +10 -0
  8. package/out/renderer/_virtual/_global-external_react.js +32 -0
  9. package/out/renderer/_virtual/_rolldown/runtime.js +13 -0
  10. package/out/renderer/api/clustersecretstore/clustersecretstore-v1.js +61 -0
  11. package/out/renderer/api/clustersecretstore/clustersecretstore-v1.js.map +1 -0
  12. package/out/renderer/api/externalsecret/externalsecret-v1.js +97 -0
  13. package/out/renderer/api/externalsecret/externalsecret-v1.js.map +1 -0
  14. package/out/renderer/api/secretstore/secretstore-v1.js +61 -0
  15. package/out/renderer/api/secretstore/secretstore-v1.js.map +1 -0
  16. package/out/renderer/api/store-helpers.js +53 -0
  17. package/out/renderer/api/store-helpers.js.map +1 -0
  18. package/out/renderer/components/available-version.js +77 -0
  19. package/out/renderer/components/available-version.js.map +1 -0
  20. package/out/renderer/components/available-version.module.js +22 -0
  21. package/out/renderer/components/available-version.module.js.map +1 -0
  22. package/out/renderer/components/available-version2.module.js +6 -0
  23. package/out/renderer/components/available-version2.module.js.map +1 -0
  24. package/out/renderer/components/error-boundary.js +105 -0
  25. package/out/renderer/components/error-boundary.js.map +1 -0
  26. package/out/renderer/components/error-page.js +20 -0
  27. package/out/renderer/components/error-page.js.map +1 -0
  28. package/out/renderer/components/error-page.module.js +13 -0
  29. package/out/renderer/components/error-page.module.js.map +1 -0
  30. package/out/renderer/components/error-page2.module.js +6 -0
  31. package/out/renderer/components/error-page2.module.js.map +1 -0
  32. package/out/renderer/details/cluster-secret-store-details.js +60 -0
  33. package/out/renderer/details/cluster-secret-store-details.js.map +1 -0
  34. package/out/renderer/details/external-secret-details.js +68 -0
  35. package/out/renderer/details/external-secret-details.js.map +1 -0
  36. package/out/renderer/details/secret-store-details.js +60 -0
  37. package/out/renderer/details/secret-store-details.js.map +1 -0
  38. package/out/renderer/freelens-eso-extension.css +2 -0
  39. package/out/renderer/icons/external-secrets.js +6 -0
  40. package/out/renderer/icons/external-secrets.js.map +1 -0
  41. package/out/renderer/icons/external-secrets2.js +19 -0
  42. package/out/renderer/icons/external-secrets2.js.map +1 -0
  43. package/out/renderer/icons/index.js +2 -0
  44. package/out/renderer/index.js +119 -0
  45. package/out/renderer/index.js.map +1 -0
  46. package/out/renderer/menus/external-secret-force-sync-menu-item.js +32 -0
  47. package/out/renderer/menus/external-secret-force-sync-menu-item.js.map +1 -0
  48. package/out/renderer/pages/cluster-secret-stores-page.js +76 -0
  49. package/out/renderer/pages/cluster-secret-stores-page.js.map +1 -0
  50. package/out/renderer/pages/eso-pages.module.js +37 -0
  51. package/out/renderer/pages/eso-pages.module.js.map +1 -0
  52. package/out/renderer/pages/eso-pages2.module.js +6 -0
  53. package/out/renderer/pages/eso-pages2.module.js.map +1 -0
  54. package/out/renderer/pages/external-secrets-page.js +96 -0
  55. package/out/renderer/pages/external-secrets-page.js.map +1 -0
  56. package/out/renderer/pages/secret-stores-page.js +82 -0
  57. package/out/renderer/pages/secret-stores-page.js.map +1 -0
  58. package/package.json +36 -43
  59. package/dist/main.js +0 -16
  60. package/dist/main.js.map +0 -1
  61. package/dist/renderer.css +0 -78
  62. package/dist/renderer.js +0 -981
  63. package/dist/renderer.js.map +0 -1
package/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  # freelens-eso-extension
2
2
 
3
- Extensão Freelens para o **External Secrets Operator (ESO)**. Projeto criado a partir do
4
- template oficial [`freelensapp/freelens-example-extension`](https://github.com/freelensapp/freelens-example-extension)
5
- (Freelens >= 2.0.0, extension API v2).
3
+ Extensão Freelens para o **External Secrets Operator (ESO)**. Portado da extension API v2
4
+ para a **API v1 (Freelens 1.x, `engines.freelens: ^1.8.0`)**, seguindo o layout de build da
5
+ extensão oficial [`freelensapp/freelens-fluxcd-extension`](https://github.com/freelensapp/freelens-fluxcd-extension)
6
+ v5.3.1 (electron-vite, `out/`, bundles CommonJS).
6
7
 
7
8
  Repositório: <https://github.com/nidiodolfini/freelens-eso-extension> · Pacote npm:
8
9
  [`freelens-eso-extension`](https://www.npmjs.com/package/freelens-eso-extension)
@@ -31,7 +32,7 @@ annotation muda. SecretStore e ClusterSecretStore não têm essa ação.
31
32
 
32
33
  ## Requisitos
33
34
 
34
- - Freelens 2.x (extension API v2).
35
+ - Freelens 1.10.x (extension API v1; `engines.freelens` exige `^1.8.0`).
35
36
  - Um cluster com o External Secrets Operator instalado (`external-secrets.io/v1`).
36
37
 
37
38
  ## Pré-requisitos deste ambiente
@@ -57,23 +58,24 @@ node .tools\patch-vite.mjs # patch idempotente do vite p/ o san
57
58
  Caches ficam dentro do workspace: `.pnpm-store`, `.pnpm-cache`, `.pnpm-state`,
58
59
  `.npm-cache` (ver `.npmrc` e `pnpm-workspace.yaml`).
59
60
 
60
- > O patch aplica duas correções de ambiente em `node_modules/vite` (o sandbox DSH
61
- > bloqueia spawn com stdio em pipe): `net use` do realpath (try/catch) e uso do
62
- > compilador Sass JS puro (`sass`) em vez do `sass-embedded`, que spawna o binário
63
- > Dart Sass. Rode o script novamente após qualquer `pnpm install` que recrie o vite.
61
+ > O patch aplica três correções de ambiente (o sandbox DSH bloqueia spawn com
62
+ > stdio em pipe): o `net use` do realpath (try/catch), o uso do compilador Sass
63
+ > JS puro (`sass`) em vez do `sass-embedded` (que spawna o binário Dart Sass) e,
64
+ > no electron-vite, a transpilação do config por TypeScript in-process em vez do
65
+ > serviço esbuild (que spawna um binário). Rode o script novamente após qualquer
66
+ > `pnpm install` que recrie as dependências.
64
67
 
65
68
  ## Comandos de desenvolvimento
66
69
 
67
70
  ```powershell
68
- pnpm type:check # todos os programas (sources, tests, tooling, environments)
71
+ pnpm type:check # tsc -p tsconfig.json (um programa único, como no fluxcd)
69
72
  pnpm test:unit # vitest
70
- pnpm build # vite build (renderer) + vite build --mode main → dist/
71
- pnpm dev # watch do renderer e do main (instalação por diretório)
73
+ pnpm build # electron-vite build → out/main e out/renderer (CommonJS)
72
74
  pnpm biome:fix # formatação/lint (TypeScript, TSX, JSON, CSS, HTML)
73
75
  pnpm biome:check
74
76
  pnpm knip:check # arquivos e dependências não usados (requer download via pnpm dlx)
75
77
  pnpm pack:dev # bump prerelease + build + .tgz para instalar no Freelens
76
- pnpm clean # remove dist/
78
+ pnpm clean # remove out/
77
79
  ```
78
80
 
79
81
  > `biome:*` e `knip:*` rodam via `pnpm dlx`, cujo cache padrão fica em
@@ -125,23 +127,26 @@ condition `Ready=SecretSynced` depois do primeiro sync (o provider `fake` serve
125
127
  ## Estrutura
126
128
 
127
129
  ```text
130
+ electron.vite.config.js # config do electron-vite (main + renderer em preload)
131
+ build/global-externals.js # plugin: react/mobx/... → globals do host (v1)
128
132
  src/
129
- main/index.ts # entry main (sem estado)
130
- renderer/index.tsx # registros: 3 páginas, details, menu
131
- renderer/api/types.ts # tipos do spec/status do ESO
132
- renderer/api/store-helpers.ts # helpers puros de status dos stores
133
- renderer/api/externalsecret/externalsecret-v1.ts # modelo ExternalSecret (+ Api/Store, teste)
134
- renderer/api/secretstore/secretstore-v1.ts # modelo SecretStore (+ Api/Store, teste)
135
- renderer/api/clustersecretstore/clustersecretstore-v1.ts # modelo ClusterSecretStore (+ Api/Store, teste)
136
- renderer/pages/ # 3 páginas + CSS module
137
- renderer/details/ # 3 painéis de detalhes
138
- renderer/menus/ # Force Sync (ExternalSecret)
139
- renderer/icons/ # ícone cadeado + seta de refresh
140
- renderer/components/ # createAvailableVersionPage, error boundaries
141
- examples/eso/ # objetos de teste (kubectl apply -f)
133
+ main/index.ts # entry main (sem estado)
134
+ renderer/index.tsx # registros v1: apiManager, 3 páginas, details, menu
135
+ renderer/api/types.ts # tipos do spec/status do ESO
136
+ renderer/api/store-helpers.ts # helpers puros de status dos stores
137
+ renderer/api/externalsecret/externalsecret-v1.ts # modelo ExternalSecret (+ Api/Store consts, teste)
138
+ renderer/api/secretstore/secretstore-v1.ts # modelo SecretStore (+ Api/Store consts, teste)
139
+ renderer/api/clustersecretstore/clustersecretstore-v1.ts # modelo ClusterSecretStore (+ Api/Store consts, teste)
140
+ renderer/pages/ # 3 páginas + CSS module
141
+ renderer/details/ # 3 painéis de detalhes
142
+ renderer/menus/ # Force Sync (ExternalSecret)
143
+ renderer/icons/ # ícone cadeado + seta de refresh
144
+ renderer/components/ # createAvailableVersionPage, error boundaries
145
+ examples/eso/ # objetos de teste (kubectl apply -f)
142
146
  ```
143
147
 
144
- Build em `dist/main.js`, `dist/renderer.js` e `dist/renderer.css`.
148
+ Build em `out/main/index.js` e `out/renderer/index.js` (bundles CommonJS, como as extensões
149
+ Freelens 1.x); `package.json` aponta `main`/`renderer` para esses arquivos.
145
150
 
146
151
  ## Versões da API
147
152
 
@@ -153,11 +158,20 @@ liste as duas em `createAvailableVersionPage`, da mais nova para a mais antiga.
153
158
  ## Desvios do template
154
159
 
155
160
  - `packageManager` = `pnpm@11.28.6` (pnpm 12 exige lock em `%LOCALAPPDATA%`, negado no sandbox).
156
- - `nodeLinker: hoisted` em `pnpm-workspace.yaml` (resolução do pacote nativo do `typescript@7` no Windows).
157
- - `build/vite-plugin-standard-decorators.mjs` usa Babel (`@babel/core`,
158
- `@babel/preset-typescript`, `@babel/plugin-proposal-decorators` 2023-11) como
159
- fallback do esbuild (que spawna binário com pipe, bloqueado no sandbox).
160
- - `sass@1.105.2` adicionado como devDependency (usado pelo patch acima).
161
- - Sem preferências/ExtensionStore: `src/common/store/` não existe e o main é uma classe mínima.
162
- - Sem testes de integração: `integration/`, `vitest.integration.config.ts` e o workflow
163
- `integration-tests.yaml` foram removidos, junto com a devDependency `playwright`.
161
+ - `nodeLinker: hoisted` em `pnpm-workspace.yaml`.
162
+ - O build usa electron-vite (`electron.vite.config.js` + `build/global-externals.js`, espelhando
163
+ o fluxcd v5.3.1): `react`/`react-dom`/`mobx`/`mobx-react`/`@freelensapp/extensions` são
164
+ fornecidos pelo host v1 via `global.*` e ficam externos; main e renderer saem como CommonJS.
165
+ - A seção `preload` do electron-vite compila o renderer (sem HTML de entrada) para `out/renderer`.
166
+ - CSS dos módulos entra nas páginas via `?inline` + `<style>` (padrão do fluxcd v1), porque o
167
+ build com `preserveModules` não garante um único `renderer.css` carregado pelo host.
168
+ - O config do electron-vite **não** usa `@vitejs/plugin-react` (ao contrário do fluxcd): o
169
+ carregador CommonJS do config não consegue `require()` o grafo ESM do plugin (tem
170
+ top-level `await`) e o sandbox não executa o bundler esbuild do electron-vite; o JSX do
171
+ renderer usa o transform automático nativo do Vite (`react/jsx-runtime` → global do host).
172
+ O plugin permanece como devDependency (espelho do fluxcd) e o knip o ignora.
173
+ - `test:unit` usa `--pool=threads` porque o pool forks do vitest spawna processos filhos,
174
+ bloqueados no sandbox.
175
+ - `knip:check` usa `&&` em vez do padrão regex `pnpm "/^...$/"` (sintaxe de aspas quebra no
176
+ `cmd.exe` do Windows).
177
+ - Sem preferências/ExtensionStore e sem testes de integração (o main é uma classe mínima).
@@ -0,0 +1,8 @@
1
+ //#region \0global-external:@freelensapp/extensions
2
+ var __m = global.LensExtensions;
3
+ __m.Common;
4
+ var Main = __m.Main;
5
+ __m.Renderer;
6
+ //#endregion
7
+ exports.Main = Main;
8
+ exports.default = __m;
@@ -0,0 +1,11 @@
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_extensions = require("./_virtual/_global-external_@freelensapp/extensions.js");
6
+ //#region src/main/index.ts
7
+ var EsoMain = class extends require_extensions.Main.LensExtension {};
8
+ //#endregion
9
+ exports.default = EsoMain;
10
+
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["Main"],"sources":["../../src/main/index.ts"],"sourcesContent":["import { Main } from \"@freelensapp/extensions\";\n\nexport default class EsoMain extends Main.LensExtension {}\n"],"mappings":";;;;;;AAEA,IAAqB,UAArB,cAAqCA,mBAAAA,KAAK,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ //#region \0global-external:@freelensapp/extensions
2
+ var __m = global.LensExtensions;
3
+ var Common = __m.Common;
4
+ __m.Main;
5
+ var Renderer = __m.Renderer;
6
+ //#endregion
7
+ exports.Common = Common;
8
+ exports.Renderer = Renderer;
9
+ exports.default = __m;
@@ -0,0 +1,58 @@
1
+ //#region \0global-external:mobx-react
2
+ var _global_external_mobx_react_exports = /* @__PURE__ */ require("./_rolldown/runtime.js").__exportAll({
3
+ MobXProviderContext: () => MobXProviderContext,
4
+ Observer: () => Observer,
5
+ PropTypes: () => PropTypes,
6
+ Provider: () => Provider,
7
+ default: () => __m,
8
+ disposeOnUnmount: () => disposeOnUnmount,
9
+ enableStaticRendering: () => enableStaticRendering,
10
+ inject: () => inject,
11
+ isUsingStaticRendering: () => isUsingStaticRendering,
12
+ observer: () => observer,
13
+ observerBatching: () => observerBatching,
14
+ useAsObservableSource: () => useAsObservableSource,
15
+ useLocalObservable: () => useLocalObservable,
16
+ useLocalStore: () => useLocalStore,
17
+ useObserver: () => useObserver,
18
+ useStaticRendering: () => useStaticRendering
19
+ });
20
+ var __m = global.MobxReact;
21
+ var Observer = __m.Observer;
22
+ var enableStaticRendering = __m.enableStaticRendering;
23
+ var isUsingStaticRendering = __m.isUsingStaticRendering;
24
+ var observerBatching = __m.observerBatching;
25
+ var useAsObservableSource = __m.useAsObservableSource;
26
+ var useLocalObservable = __m.useLocalObservable;
27
+ var useLocalStore = __m.useLocalStore;
28
+ var useObserver = __m.useObserver;
29
+ var useStaticRendering = __m.useStaticRendering;
30
+ var MobXProviderContext = __m.MobXProviderContext;
31
+ var PropTypes = __m.PropTypes;
32
+ var Provider = __m.Provider;
33
+ var disposeOnUnmount = __m.disposeOnUnmount;
34
+ var inject = __m.inject;
35
+ var observer = __m.observer;
36
+ //#endregion
37
+ exports.MobXProviderContext = MobXProviderContext;
38
+ exports.Observer = Observer;
39
+ exports.PropTypes = PropTypes;
40
+ exports.Provider = Provider;
41
+ Object.defineProperty(exports, "_global_external_mobx_react_exports", {
42
+ enumerable: true,
43
+ get: function() {
44
+ return _global_external_mobx_react_exports;
45
+ }
46
+ });
47
+ exports.default = __m;
48
+ exports.disposeOnUnmount = disposeOnUnmount;
49
+ exports.enableStaticRendering = enableStaticRendering;
50
+ exports.inject = inject;
51
+ exports.isUsingStaticRendering = isUsingStaticRendering;
52
+ exports.observer = observer;
53
+ exports.observerBatching = observerBatching;
54
+ exports.useAsObservableSource = useAsObservableSource;
55
+ exports.useLocalObservable = useLocalObservable;
56
+ exports.useLocalStore = useLocalStore;
57
+ exports.useObserver = useObserver;
58
+ exports.useStaticRendering = useStaticRendering;
@@ -0,0 +1,10 @@
1
+ //#region \0global-external:react/jsx-runtime
2
+ var __m = global.ReactJsxRuntime;
3
+ var Fragment = __m.Fragment;
4
+ var jsx = __m.jsx;
5
+ var jsxs = __m.jsxs;
6
+ //#endregion
7
+ exports.Fragment = Fragment;
8
+ exports.default = __m;
9
+ exports.jsx = jsx;
10
+ exports.jsxs = jsxs;
@@ -0,0 +1,32 @@
1
+ //#region \0global-external:react
2
+ var __m = global.React;
3
+ __m.Fragment;
4
+ __m.StrictMode;
5
+ __m.Profiler;
6
+ __m.Suspense;
7
+ __m.Children;
8
+ __m.Component;
9
+ __m.PureComponent;
10
+ __m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
11
+ __m.cloneElement;
12
+ __m.createContext;
13
+ __m.createElement;
14
+ __m.createFactory;
15
+ __m.createRef;
16
+ __m.forwardRef;
17
+ __m.isValidElement;
18
+ __m.lazy;
19
+ __m.memo;
20
+ __m.useCallback;
21
+ __m.useContext;
22
+ __m.useDebugValue;
23
+ __m.useEffect;
24
+ __m.useImperativeHandle;
25
+ __m.useLayoutEffect;
26
+ __m.useMemo;
27
+ __m.useReducer;
28
+ __m.useRef;
29
+ __m.useState;
30
+ __m.version;
31
+ //#endregion
32
+ exports.default = __m;
@@ -0,0 +1,13 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __defProp = Object.defineProperty;
3
+ var __exportAll = (all, no_symbols) => {
4
+ let target = {};
5
+ for (var name in all) __defProp(target, name, {
6
+ get: all[name],
7
+ enumerable: true
8
+ });
9
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
10
+ return target;
11
+ };
12
+ //#endregion
13
+ exports.__exportAll = __exportAll;
@@ -0,0 +1,61 @@
1
+ const require_extensions = require("../../_virtual/_global-external_@freelensapp/extensions.js");
2
+ const require_store_helpers = require("../store-helpers.js");
3
+ //#region src/renderer/api/clustersecretstore/clustersecretstore-v1.ts
4
+ var ClusterSecretStore = class extends require_extensions.Renderer.K8sApi.KubeObject {
5
+ static kind = "ClusterSecretStore";
6
+ static namespaced = false;
7
+ static apiBase = "/apis/external-secrets.io/v1/clustersecretstores";
8
+ static crd = {
9
+ apiVersions: ["external-secrets.io/v1"],
10
+ plural: "clustersecretstores",
11
+ singular: "clustersecretstore",
12
+ shortNames: ["css"],
13
+ title: "Cluster Secret Stores"
14
+ };
15
+ static getReadyCondition(object) {
16
+ return require_store_helpers.getStoreReadyCondition(object.status?.conditions);
17
+ }
18
+ /**
19
+ * The READY column of `kubectl get css`: the status of the Ready
20
+ * condition, or undefined when the controller has not written one yet.
21
+ */
22
+ static getReady(object) {
23
+ return require_store_helpers.getStoreReady(object.status?.conditions);
24
+ }
25
+ /**
26
+ * The STATUS column of `kubectl get css`: the reason of the Ready
27
+ * condition, with the controller defaults for a missing reason.
28
+ */
29
+ static getStatusText(object) {
30
+ return require_store_helpers.getStoreStatusText(object.status?.conditions);
31
+ }
32
+ static getStatusClass(object) {
33
+ return require_store_helpers.getStoreStatusClass(object.status?.conditions);
34
+ }
35
+ /**
36
+ * The CAPABILITIES column of `kubectl get css`.
37
+ */
38
+ static getCapabilities(object) {
39
+ return require_store_helpers.getStoreCapabilities(object.status);
40
+ }
41
+ static getProviderName(object) {
42
+ return require_store_helpers.getStoreProviderName(object.spec.provider);
43
+ }
44
+ };
45
+ var ClusterSecretStoreApi = class extends require_extensions.Renderer.K8sApi.KubeApi {};
46
+ var clusterSecretStoreApi = new ClusterSecretStoreApi({
47
+ objectConstructor: ClusterSecretStore,
48
+ autoRegister: false
49
+ });
50
+ var ClusterSecretStoreStore = class extends require_extensions.Renderer.K8sApi.KubeObjectStore {
51
+ api = clusterSecretStoreApi;
52
+ };
53
+ var clusterSecretStoreStore = new ClusterSecretStoreStore();
54
+ //#endregion
55
+ exports.ClusterSecretStore = ClusterSecretStore;
56
+ exports.ClusterSecretStoreApi = ClusterSecretStoreApi;
57
+ exports.ClusterSecretStoreStore = ClusterSecretStoreStore;
58
+ exports.clusterSecretStoreApi = clusterSecretStoreApi;
59
+ exports.clusterSecretStoreStore = clusterSecretStoreStore;
60
+
61
+ //# sourceMappingURL=clustersecretstore-v1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clustersecretstore-v1.js","names":["Renderer","getStoreReadyCondition","getStoreReady","getStoreStatusText","getStoreStatusClass","getStoreCapabilities","getStoreProviderName"],"sources":["../../../../src/renderer/api/clustersecretstore/clustersecretstore-v1.ts"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\nimport {\n getStoreCapabilities,\n getStoreProviderName,\n getStoreReady,\n getStoreReadyCondition,\n getStoreStatusClass,\n getStoreStatusText,\n} from \"../store-helpers\";\n\nimport type {\n EsoCondition,\n EsoKubeObjectCRD,\n SecretStoreCapabilities,\n SecretStoreSpec,\n SecretStoreStatus,\n} from \"../types\";\n\nexport type { SecretStoreSpec, SecretStoreStatus };\n\nexport class ClusterSecretStore extends Renderer.K8sApi.KubeObject<\n Renderer.K8sApi.KubeObjectMetadata,\n SecretStoreStatus,\n SecretStoreSpec\n> {\n static readonly kind = \"ClusterSecretStore\";\n static readonly namespaced = false;\n static readonly apiBase = \"/apis/external-secrets.io/v1/clustersecretstores\";\n\n static readonly crd: EsoKubeObjectCRD = {\n apiVersions: [\"external-secrets.io/v1\"],\n plural: \"clustersecretstores\",\n singular: \"clustersecretstore\",\n shortNames: [\"css\"],\n title: \"Cluster Secret Stores\",\n };\n\n static getReadyCondition(object: ClusterSecretStore): EsoCondition | undefined {\n return getStoreReadyCondition(object.status?.conditions);\n }\n\n /**\n * The READY column of `kubectl get css`: the status of the Ready\n * condition, or undefined when the controller has not written one yet.\n */\n static getReady(object: ClusterSecretStore): boolean | undefined {\n return getStoreReady(object.status?.conditions);\n }\n\n /**\n * The STATUS column of `kubectl get css`: the reason of the Ready\n * condition, with the controller defaults for a missing reason.\n */\n static getStatusText(object: ClusterSecretStore): string {\n return getStoreStatusText(object.status?.conditions);\n }\n\n static getStatusClass(object: ClusterSecretStore): string {\n return getStoreStatusClass(object.status?.conditions);\n }\n\n /**\n * The CAPABILITIES column of `kubectl get css`.\n */\n static getCapabilities(object: ClusterSecretStore): SecretStoreCapabilities | undefined {\n return getStoreCapabilities(object.status);\n }\n\n static getProviderName(object: ClusterSecretStore): string | undefined {\n return getStoreProviderName(object.spec.provider);\n }\n}\n\nexport class ClusterSecretStoreApi extends Renderer.K8sApi.KubeApi<ClusterSecretStore> {}\n\n// `autoRegister: false` keeps the API out of the cluster's apiManager: the\n// \"Not Available\" page of `createAvailableVersionPage` relies on the apiBase\n// being found only when the cluster actually serves the CRD. The store below\n// is registered in the extension's `onActivate` instead.\nexport const clusterSecretStoreApi = new ClusterSecretStoreApi({\n objectConstructor: ClusterSecretStore,\n autoRegister: false,\n});\n\nexport class ClusterSecretStoreStore extends Renderer.K8sApi.KubeObjectStore<ClusterSecretStore> {\n readonly api = clusterSecretStoreApi;\n}\n\nexport const clusterSecretStoreStore = new ClusterSecretStoreStore();\n"],"mappings":";;;AAoBA,IAAa,qBAAb,cAAwCA,mBAAAA,SAAS,OAAO,WAItD;CACA,OAAgB,OAAO;CACvB,OAAgB,aAAa;CAC7B,OAAgB,UAAU;CAE1B,OAAgB,MAAwB;EACtC,aAAa,CAAC,wBAAwB;EACtC,QAAQ;EACR,UAAU;EACV,YAAY,CAAC,KAAK;EAClB,OAAO;CACT;CAEA,OAAO,kBAAkB,QAAsD;EAC7E,OAAOC,sBAAAA,uBAAuB,OAAO,QAAQ,UAAU;CACzD;;;;;CAMA,OAAO,SAAS,QAAiD;EAC/D,OAAOC,sBAAAA,cAAc,OAAO,QAAQ,UAAU;CAChD;;;;;CAMA,OAAO,cAAc,QAAoC;EACvD,OAAOC,sBAAAA,mBAAmB,OAAO,QAAQ,UAAU;CACrD;CAEA,OAAO,eAAe,QAAoC;EACxD,OAAOC,sBAAAA,oBAAoB,OAAO,QAAQ,UAAU;CACtD;;;;CAKA,OAAO,gBAAgB,QAAiE;EACtF,OAAOC,sBAAAA,qBAAqB,OAAO,MAAM;CAC3C;CAEA,OAAO,gBAAgB,QAAgD;EACrE,OAAOC,sBAAAA,qBAAqB,OAAO,KAAK,QAAQ;CAClD;AACF;AAEA,IAAa,wBAAb,cAA2CN,mBAAAA,SAAS,OAAO,QAA4B,CAAC;AAMxF,IAAa,wBAAwB,IAAI,sBAAsB;CAC7D,mBAAmB;CACnB,cAAc;AAChB,CAAC;AAED,IAAa,0BAAb,cAA6CA,mBAAAA,SAAS,OAAO,gBAAoC;CAC/F,MAAe;AACjB;AAEA,IAAa,0BAA0B,IAAI,wBAAwB"}
@@ -0,0 +1,97 @@
1
+ const require_extensions = require("../../_virtual/_global-external_@freelensapp/extensions.js");
2
+ //#region src/renderer/api/externalsecret/externalsecret-v1.ts
3
+ var ExternalSecret = class ExternalSecret extends require_extensions.Renderer.K8sApi.KubeObject {
4
+ static kind = "ExternalSecret";
5
+ static namespaced = true;
6
+ static apiBase = "/apis/external-secrets.io/v1/externalsecrets";
7
+ static crd = {
8
+ apiVersions: ["external-secrets.io/v1"],
9
+ plural: "externalsecrets",
10
+ singular: "externalsecret",
11
+ shortNames: ["es"],
12
+ title: "External Secrets"
13
+ };
14
+ static getReadyCondition(object) {
15
+ return object.status?.conditions?.find((condition) => condition.type === "Ready");
16
+ }
17
+ /**
18
+ * The READY column of `kubectl get es`: the status of the Ready condition,
19
+ * or undefined when the controller has not written one yet.
20
+ */
21
+ static getReady(object) {
22
+ const condition = ExternalSecret.getReadyCondition(object);
23
+ if (condition?.status === "True") return true;
24
+ if (condition?.status === "False") return false;
25
+ }
26
+ /**
27
+ * The STATUS column of `kubectl get es`: the reason of the Ready condition,
28
+ * with the controller defaults for a missing reason.
29
+ */
30
+ static getStatusText(object) {
31
+ const condition = ExternalSecret.getReadyCondition(object);
32
+ if (condition?.status === "True") return condition.reason ?? "Ready";
33
+ if (condition?.status === "False") return condition.reason ?? "Not Ready";
34
+ return "Unknown";
35
+ }
36
+ static getStatusClass(object) {
37
+ switch (ExternalSecret.getReadyCondition(object)?.status) {
38
+ case "True": return "success";
39
+ case "False": return "error";
40
+ case "Unknown": return "warning";
41
+ default: return "";
42
+ }
43
+ }
44
+ /**
45
+ * The STORETYPE column of `kubectl get es`. `SecretStore` is the
46
+ * controller default when the kind is omitted.
47
+ */
48
+ static getStoreType(object) {
49
+ return object.spec.secretStoreRef?.kind ?? "SecretStore";
50
+ }
51
+ /**
52
+ * The STORE column of `kubectl get es`: the name of the referenced store.
53
+ */
54
+ static getStoreName(object) {
55
+ return object.spec.secretStoreRef?.name;
56
+ }
57
+ /**
58
+ * The REFRESH INTERVAL column of `kubectl get es`. `1h0m0s` is the
59
+ * controller default when the field is omitted.
60
+ */
61
+ static getRefreshInterval(object) {
62
+ return object.spec.refreshInterval ?? "1h0m0s";
63
+ }
64
+ /**
65
+ * The LAST SYNC column of `kubectl get es`.
66
+ */
67
+ static getRefreshTime(object) {
68
+ return object.status?.refreshTime;
69
+ }
70
+ static getSyncedResourceVersion(object) {
71
+ return object.status?.syncedResourceVersion;
72
+ }
73
+ /**
74
+ * The name of the generated Secret: `spec.target.name`, or the name of the
75
+ * ExternalSecret itself, which is the controller default.
76
+ */
77
+ static getTargetName(object) {
78
+ return object.spec.target?.name ?? object.getName();
79
+ }
80
+ };
81
+ var ExternalSecretApi = class extends require_extensions.Renderer.K8sApi.KubeApi {};
82
+ var externalSecretApi = new ExternalSecretApi({
83
+ objectConstructor: ExternalSecret,
84
+ autoRegister: false
85
+ });
86
+ var ExternalSecretStore = class extends require_extensions.Renderer.K8sApi.KubeObjectStore {
87
+ api = externalSecretApi;
88
+ };
89
+ var externalSecretStore = new ExternalSecretStore();
90
+ //#endregion
91
+ exports.ExternalSecret = ExternalSecret;
92
+ exports.ExternalSecretApi = ExternalSecretApi;
93
+ exports.ExternalSecretStore = ExternalSecretStore;
94
+ exports.externalSecretApi = externalSecretApi;
95
+ exports.externalSecretStore = externalSecretStore;
96
+
97
+ //# sourceMappingURL=externalsecret-v1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"externalsecret-v1.js","names":["Renderer"],"sources":["../../../../src/renderer/api/externalsecret/externalsecret-v1.ts"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\n\nimport type { EsoCondition, EsoKubeObjectCRD, ExternalSecretSpec, ExternalSecretStatus } from \"../types\";\n\nexport type { ExternalSecretSpec, ExternalSecretStatus };\n\nexport class ExternalSecret extends Renderer.K8sApi.KubeObject<\n Renderer.K8sApi.KubeObjectMetadata,\n ExternalSecretStatus,\n ExternalSecretSpec\n> {\n static readonly kind = \"ExternalSecret\";\n static readonly namespaced = true;\n static readonly apiBase = \"/apis/external-secrets.io/v1/externalsecrets\";\n\n static readonly crd: EsoKubeObjectCRD = {\n apiVersions: [\"external-secrets.io/v1\"],\n plural: \"externalsecrets\",\n singular: \"externalsecret\",\n shortNames: [\"es\"],\n title: \"External Secrets\",\n };\n\n static getReadyCondition(object: ExternalSecret): EsoCondition | undefined {\n return object.status?.conditions?.find((condition) => condition.type === \"Ready\");\n }\n\n /**\n * The READY column of `kubectl get es`: the status of the Ready condition,\n * or undefined when the controller has not written one yet.\n */\n static getReady(object: ExternalSecret): boolean | undefined {\n const condition = ExternalSecret.getReadyCondition(object);\n if (condition?.status === \"True\") return true;\n if (condition?.status === \"False\") return false;\n return undefined;\n }\n\n /**\n * The STATUS column of `kubectl get es`: the reason of the Ready condition,\n * with the controller defaults for a missing reason.\n */\n static getStatusText(object: ExternalSecret): string {\n const condition = ExternalSecret.getReadyCondition(object);\n if (condition?.status === \"True\") return condition.reason ?? \"Ready\";\n if (condition?.status === \"False\") return condition.reason ?? \"Not Ready\";\n return \"Unknown\";\n }\n\n static getStatusClass(object: ExternalSecret): string {\n const condition = ExternalSecret.getReadyCondition(object);\n switch (condition?.status) {\n case \"True\":\n return \"success\";\n case \"False\":\n return \"error\";\n case \"Unknown\":\n return \"warning\";\n default:\n return \"\";\n }\n }\n\n /**\n * The STORETYPE column of `kubectl get es`. `SecretStore` is the\n * controller default when the kind is omitted.\n */\n static getStoreType(object: ExternalSecret): string {\n return object.spec.secretStoreRef?.kind ?? \"SecretStore\";\n }\n\n /**\n * The STORE column of `kubectl get es`: the name of the referenced store.\n */\n static getStoreName(object: ExternalSecret): string | undefined {\n return object.spec.secretStoreRef?.name;\n }\n\n /**\n * The REFRESH INTERVAL column of `kubectl get es`. `1h0m0s` is the\n * controller default when the field is omitted.\n */\n static getRefreshInterval(object: ExternalSecret): string {\n return object.spec.refreshInterval ?? \"1h0m0s\";\n }\n\n /**\n * The LAST SYNC column of `kubectl get es`.\n */\n static getRefreshTime(object: ExternalSecret): string | undefined {\n return object.status?.refreshTime;\n }\n\n static getSyncedResourceVersion(object: ExternalSecret): string | undefined {\n return object.status?.syncedResourceVersion;\n }\n\n /**\n * The name of the generated Secret: `spec.target.name`, or the name of the\n * ExternalSecret itself, which is the controller default.\n */\n static getTargetName(object: ExternalSecret): string {\n return object.spec.target?.name ?? object.getName();\n }\n}\n\nexport class ExternalSecretApi extends Renderer.K8sApi.KubeApi<ExternalSecret> {}\n\n// `autoRegister: false` keeps the API out of the cluster's apiManager: the\n// \"Not Available\" page of `createAvailableVersionPage` relies on the apiBase\n// being found only when the cluster actually serves the CRD. The store below\n// is registered in the extension's `onActivate` instead.\nexport const externalSecretApi = new ExternalSecretApi({\n objectConstructor: ExternalSecret,\n autoRegister: false,\n});\n\nexport class ExternalSecretStore extends Renderer.K8sApi.KubeObjectStore<ExternalSecret> {\n readonly api = externalSecretApi;\n}\n\nexport const externalSecretStore = new ExternalSecretStore();\n"],"mappings":";;AAMA,IAAa,iBAAb,MAAa,uBAAuBA,mBAAAA,SAAS,OAAO,WAIlD;CACA,OAAgB,OAAO;CACvB,OAAgB,aAAa;CAC7B,OAAgB,UAAU;CAE1B,OAAgB,MAAwB;EACtC,aAAa,CAAC,wBAAwB;EACtC,QAAQ;EACR,UAAU;EACV,YAAY,CAAC,IAAI;EACjB,OAAO;CACT;CAEA,OAAO,kBAAkB,QAAkD;EACzE,OAAO,OAAO,QAAQ,YAAY,MAAM,cAAc,UAAU,SAAS,OAAO;CAClF;;;;;CAMA,OAAO,SAAS,QAA6C;EAC3D,MAAM,YAAY,eAAe,kBAAkB,MAAM;EACzD,IAAI,WAAW,WAAW,QAAQ,OAAO;EACzC,IAAI,WAAW,WAAW,SAAS,OAAO;CAE5C;;;;;CAMA,OAAO,cAAc,QAAgC;EACnD,MAAM,YAAY,eAAe,kBAAkB,MAAM;EACzD,IAAI,WAAW,WAAW,QAAQ,OAAO,UAAU,UAAU;EAC7D,IAAI,WAAW,WAAW,SAAS,OAAO,UAAU,UAAU;EAC9D,OAAO;CACT;CAEA,OAAO,eAAe,QAAgC;EAEpD,QADkB,eAAe,kBAAkB,MAC3C,CAAA,EAAW,QAAnB;GACE,KAAK,QACH,OAAO;GACT,KAAK,SACH,OAAO;GACT,KAAK,WACH,OAAO;GACT,SACE,OAAO;EACX;CACF;;;;;CAMA,OAAO,aAAa,QAAgC;EAClD,OAAO,OAAO,KAAK,gBAAgB,QAAQ;CAC7C;;;;CAKA,OAAO,aAAa,QAA4C;EAC9D,OAAO,OAAO,KAAK,gBAAgB;CACrC;;;;;CAMA,OAAO,mBAAmB,QAAgC;EACxD,OAAO,OAAO,KAAK,mBAAmB;CACxC;;;;CAKA,OAAO,eAAe,QAA4C;EAChE,OAAO,OAAO,QAAQ;CACxB;CAEA,OAAO,yBAAyB,QAA4C;EAC1E,OAAO,OAAO,QAAQ;CACxB;;;;;CAMA,OAAO,cAAc,QAAgC;EACnD,OAAO,OAAO,KAAK,QAAQ,QAAQ,OAAO,QAAQ;CACpD;AACF;AAEA,IAAa,oBAAb,cAAuCA,mBAAAA,SAAS,OAAO,QAAwB,CAAC;AAMhF,IAAa,oBAAoB,IAAI,kBAAkB;CACrD,mBAAmB;CACnB,cAAc;AAChB,CAAC;AAED,IAAa,sBAAb,cAAyCA,mBAAAA,SAAS,OAAO,gBAAgC;CACvF,MAAe;AACjB;AAEA,IAAa,sBAAsB,IAAI,oBAAoB"}
@@ -0,0 +1,61 @@
1
+ const require_extensions = require("../../_virtual/_global-external_@freelensapp/extensions.js");
2
+ const require_store_helpers = require("../store-helpers.js");
3
+ //#region src/renderer/api/secretstore/secretstore-v1.ts
4
+ var SecretStore = class extends require_extensions.Renderer.K8sApi.KubeObject {
5
+ static kind = "SecretStore";
6
+ static namespaced = true;
7
+ static apiBase = "/apis/external-secrets.io/v1/secretstores";
8
+ static crd = {
9
+ apiVersions: ["external-secrets.io/v1"],
10
+ plural: "secretstores",
11
+ singular: "secretstore",
12
+ shortNames: ["ss"],
13
+ title: "Secret Stores"
14
+ };
15
+ static getReadyCondition(object) {
16
+ return require_store_helpers.getStoreReadyCondition(object.status?.conditions);
17
+ }
18
+ /**
19
+ * The READY column of `kubectl get ss`: the status of the Ready condition,
20
+ * or undefined when the controller has not written one yet.
21
+ */
22
+ static getReady(object) {
23
+ return require_store_helpers.getStoreReady(object.status?.conditions);
24
+ }
25
+ /**
26
+ * The STATUS column of `kubectl get ss`: the reason of the Ready
27
+ * condition, with the controller defaults for a missing reason.
28
+ */
29
+ static getStatusText(object) {
30
+ return require_store_helpers.getStoreStatusText(object.status?.conditions);
31
+ }
32
+ static getStatusClass(object) {
33
+ return require_store_helpers.getStoreStatusClass(object.status?.conditions);
34
+ }
35
+ /**
36
+ * The CAPABILITIES column of `kubectl get ss`.
37
+ */
38
+ static getCapabilities(object) {
39
+ return require_store_helpers.getStoreCapabilities(object.status);
40
+ }
41
+ static getProviderName(object) {
42
+ return require_store_helpers.getStoreProviderName(object.spec.provider);
43
+ }
44
+ };
45
+ var SecretStoreApi = class extends require_extensions.Renderer.K8sApi.KubeApi {};
46
+ var secretStoreApi = new SecretStoreApi({
47
+ objectConstructor: SecretStore,
48
+ autoRegister: false
49
+ });
50
+ var SecretStoreStore = class extends require_extensions.Renderer.K8sApi.KubeObjectStore {
51
+ api = secretStoreApi;
52
+ };
53
+ var secretStoreStore = new SecretStoreStore();
54
+ //#endregion
55
+ exports.SecretStore = SecretStore;
56
+ exports.SecretStoreApi = SecretStoreApi;
57
+ exports.SecretStoreStore = SecretStoreStore;
58
+ exports.secretStoreApi = secretStoreApi;
59
+ exports.secretStoreStore = secretStoreStore;
60
+
61
+ //# sourceMappingURL=secretstore-v1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretstore-v1.js","names":["Renderer","getStoreReadyCondition","getStoreReady","getStoreStatusText","getStoreStatusClass","getStoreCapabilities","getStoreProviderName"],"sources":["../../../../src/renderer/api/secretstore/secretstore-v1.ts"],"sourcesContent":["import { Renderer } from \"@freelensapp/extensions\";\nimport {\n getStoreCapabilities,\n getStoreProviderName,\n getStoreReady,\n getStoreReadyCondition,\n getStoreStatusClass,\n getStoreStatusText,\n} from \"../store-helpers\";\n\nimport type {\n EsoCondition,\n EsoKubeObjectCRD,\n SecretStoreCapabilities,\n SecretStoreSpec,\n SecretStoreStatus,\n} from \"../types\";\n\nexport type { SecretStoreSpec, SecretStoreStatus };\n\nexport class SecretStore extends Renderer.K8sApi.KubeObject<\n Renderer.K8sApi.KubeObjectMetadata,\n SecretStoreStatus,\n SecretStoreSpec\n> {\n static readonly kind = \"SecretStore\";\n static readonly namespaced = true;\n static readonly apiBase = \"/apis/external-secrets.io/v1/secretstores\";\n\n static readonly crd: EsoKubeObjectCRD = {\n apiVersions: [\"external-secrets.io/v1\"],\n plural: \"secretstores\",\n singular: \"secretstore\",\n shortNames: [\"ss\"],\n title: \"Secret Stores\",\n };\n\n static getReadyCondition(object: SecretStore): EsoCondition | undefined {\n return getStoreReadyCondition(object.status?.conditions);\n }\n\n /**\n * The READY column of `kubectl get ss`: the status of the Ready condition,\n * or undefined when the controller has not written one yet.\n */\n static getReady(object: SecretStore): boolean | undefined {\n return getStoreReady(object.status?.conditions);\n }\n\n /**\n * The STATUS column of `kubectl get ss`: the reason of the Ready\n * condition, with the controller defaults for a missing reason.\n */\n static getStatusText(object: SecretStore): string {\n return getStoreStatusText(object.status?.conditions);\n }\n\n static getStatusClass(object: SecretStore): string {\n return getStoreStatusClass(object.status?.conditions);\n }\n\n /**\n * The CAPABILITIES column of `kubectl get ss`.\n */\n static getCapabilities(object: SecretStore): SecretStoreCapabilities | undefined {\n return getStoreCapabilities(object.status);\n }\n\n static getProviderName(object: SecretStore): string | undefined {\n return getStoreProviderName(object.spec.provider);\n }\n}\n\nexport class SecretStoreApi extends Renderer.K8sApi.KubeApi<SecretStore> {}\n\n// `autoRegister: false` keeps the API out of the cluster's apiManager: the\n// \"Not Available\" page of `createAvailableVersionPage` relies on the apiBase\n// being found only when the cluster actually serves the CRD. The store below\n// is registered in the extension's `onActivate` instead.\nexport const secretStoreApi = new SecretStoreApi({\n objectConstructor: SecretStore,\n autoRegister: false,\n});\n\nexport class SecretStoreStore extends Renderer.K8sApi.KubeObjectStore<SecretStore> {\n readonly api = secretStoreApi;\n}\n\nexport const secretStoreStore = new SecretStoreStore();\n"],"mappings":";;;AAoBA,IAAa,cAAb,cAAiCA,mBAAAA,SAAS,OAAO,WAI/C;CACA,OAAgB,OAAO;CACvB,OAAgB,aAAa;CAC7B,OAAgB,UAAU;CAE1B,OAAgB,MAAwB;EACtC,aAAa,CAAC,wBAAwB;EACtC,QAAQ;EACR,UAAU;EACV,YAAY,CAAC,IAAI;EACjB,OAAO;CACT;CAEA,OAAO,kBAAkB,QAA+C;EACtE,OAAOC,sBAAAA,uBAAuB,OAAO,QAAQ,UAAU;CACzD;;;;;CAMA,OAAO,SAAS,QAA0C;EACxD,OAAOC,sBAAAA,cAAc,OAAO,QAAQ,UAAU;CAChD;;;;;CAMA,OAAO,cAAc,QAA6B;EAChD,OAAOC,sBAAAA,mBAAmB,OAAO,QAAQ,UAAU;CACrD;CAEA,OAAO,eAAe,QAA6B;EACjD,OAAOC,sBAAAA,oBAAoB,OAAO,QAAQ,UAAU;CACtD;;;;CAKA,OAAO,gBAAgB,QAA0D;EAC/E,OAAOC,sBAAAA,qBAAqB,OAAO,MAAM;CAC3C;CAEA,OAAO,gBAAgB,QAAyC;EAC9D,OAAOC,sBAAAA,qBAAqB,OAAO,KAAK,QAAQ;CAClD;AACF;AAEA,IAAa,iBAAb,cAAoCN,mBAAAA,SAAS,OAAO,QAAqB,CAAC;AAM1E,IAAa,iBAAiB,IAAI,eAAe;CAC/C,mBAAmB;CACnB,cAAc;AAChB,CAAC;AAED,IAAa,mBAAb,cAAsCA,mBAAAA,SAAS,OAAO,gBAA6B;CACjF,MAAe;AACjB;AAEA,IAAa,mBAAmB,IAAI,iBAAiB"}
@@ -0,0 +1,53 @@
1
+ //#region src/renderer/api/store-helpers.ts
2
+ /**
3
+ * Pure helpers shared by the SecretStore and ClusterSecretStore models: both
4
+ * kinds carry the same spec and status, so their statics delegate to these
5
+ * functions.
6
+ */
7
+ function getStoreReadyCondition(conditions) {
8
+ return conditions?.find((condition) => condition.type === "Ready");
9
+ }
10
+ function getStoreReady(conditions) {
11
+ const condition = getStoreReadyCondition(conditions);
12
+ if (condition?.status === "True") return true;
13
+ if (condition?.status === "False") return false;
14
+ }
15
+ /**
16
+ * The STATUS column of `kubectl get ss/css`: the reason of the Ready
17
+ * condition, with the controller defaults for a missing reason.
18
+ */
19
+ function getStoreStatusText(conditions) {
20
+ const condition = getStoreReadyCondition(conditions);
21
+ if (condition?.status === "True") return condition.reason ?? "Valid";
22
+ if (condition?.status === "False") return condition.reason ?? "Invalid";
23
+ return "Unknown";
24
+ }
25
+ function getStoreStatusClass(conditions) {
26
+ switch (getStoreReadyCondition(conditions)?.status) {
27
+ case "True": return "success";
28
+ case "False": return "error";
29
+ case "Unknown": return "warning";
30
+ default: return "";
31
+ }
32
+ }
33
+ function getStoreCapabilities(status) {
34
+ return status?.capabilities;
35
+ }
36
+ /**
37
+ * The name of the provider backend: the first key of `spec.provider` with a
38
+ * defined value. The controller requires exactly one, so this is either that
39
+ * one or undefined for an incomplete object.
40
+ */
41
+ function getStoreProviderName(provider) {
42
+ if (!provider) return void 0;
43
+ return Object.keys(provider).find((name) => provider[name] !== void 0 && provider[name] !== null);
44
+ }
45
+ //#endregion
46
+ exports.getStoreCapabilities = getStoreCapabilities;
47
+ exports.getStoreProviderName = getStoreProviderName;
48
+ exports.getStoreReady = getStoreReady;
49
+ exports.getStoreReadyCondition = getStoreReadyCondition;
50
+ exports.getStoreStatusClass = getStoreStatusClass;
51
+ exports.getStoreStatusText = getStoreStatusText;
52
+
53
+ //# sourceMappingURL=store-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-helpers.js","names":[],"sources":["../../../src/renderer/api/store-helpers.ts"],"sourcesContent":["import type { EsoCondition, SecretStoreCapabilities, SecretStoreProvider, SecretStoreStatus } from \"./types\";\n\n/**\n * Pure helpers shared by the SecretStore and ClusterSecretStore models: both\n * kinds carry the same spec and status, so their statics delegate to these\n * functions.\n */\n\nexport function getStoreReadyCondition(conditions: EsoCondition[] | undefined): EsoCondition | undefined {\n return conditions?.find((condition) => condition.type === \"Ready\");\n}\n\nexport function getStoreReady(conditions: EsoCondition[] | undefined): boolean | undefined {\n const condition = getStoreReadyCondition(conditions);\n if (condition?.status === \"True\") return true;\n if (condition?.status === \"False\") return false;\n return undefined;\n}\n\n/**\n * The STATUS column of `kubectl get ss/css`: the reason of the Ready\n * condition, with the controller defaults for a missing reason.\n */\nexport function getStoreStatusText(conditions: EsoCondition[] | undefined): string {\n const condition = getStoreReadyCondition(conditions);\n if (condition?.status === \"True\") return condition.reason ?? \"Valid\";\n if (condition?.status === \"False\") return condition.reason ?? \"Invalid\";\n return \"Unknown\";\n}\n\nexport function getStoreStatusClass(conditions: EsoCondition[] | undefined): string {\n const condition = getStoreReadyCondition(conditions);\n switch (condition?.status) {\n case \"True\":\n return \"success\";\n case \"False\":\n return \"error\";\n case \"Unknown\":\n return \"warning\";\n default:\n return \"\";\n }\n}\n\nexport function getStoreCapabilities(status: SecretStoreStatus | undefined): SecretStoreCapabilities | undefined {\n return status?.capabilities;\n}\n\n/**\n * The name of the provider backend: the first key of `spec.provider` with a\n * defined value. The controller requires exactly one, so this is either that\n * one or undefined for an incomplete object.\n */\nexport function getStoreProviderName(provider: SecretStoreProvider | undefined): string | undefined {\n if (!provider) return undefined;\n return Object.keys(provider).find((name) => provider[name] !== undefined && provider[name] !== null);\n}\n"],"mappings":";;;;;;AAQA,SAAgB,uBAAuB,YAAkE;CACvG,OAAO,YAAY,MAAM,cAAc,UAAU,SAAS,OAAO;AACnE;AAEA,SAAgB,cAAc,YAA6D;CACzF,MAAM,YAAY,uBAAuB,UAAU;CACnD,IAAI,WAAW,WAAW,QAAQ,OAAO;CACzC,IAAI,WAAW,WAAW,SAAS,OAAO;AAE5C;;;;;AAMA,SAAgB,mBAAmB,YAAgD;CACjF,MAAM,YAAY,uBAAuB,UAAU;CACnD,IAAI,WAAW,WAAW,QAAQ,OAAO,UAAU,UAAU;CAC7D,IAAI,WAAW,WAAW,SAAS,OAAO,UAAU,UAAU;CAC9D,OAAO;AACT;AAEA,SAAgB,oBAAoB,YAAgD;CAElF,QADkB,uBAAuB,UACjC,CAAA,EAAW,QAAnB;EACE,KAAK,QACH,OAAO;EACT,KAAK,SACH,OAAO;EACT,KAAK,WACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,SAAgB,qBAAqB,QAA4E;CAC/G,OAAO,QAAQ;AACjB;;;;;;AAOA,SAAgB,qBAAqB,UAA+D;CAClG,IAAI,CAAC,UAAU,OAAO,KAAA;CACtB,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,MAAM,SAAS,SAAS,UAAU,KAAA,KAAa,SAAS,UAAU,IAAI;AACrG"}