@decaf-ts/integrations 0.14.2 → 0.15.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +373 -21
- package/README.md +11 -1
- package/dist/integrations.cjs +1 -1
- package/dist/integrations.cjs.map +1 -1
- package/dist/integrations.js.map +1 -1
- package/jest.config.cjs +0 -1
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs +1 -0
- package/lib/cjs/feature-flags/services/FeatureFlag.service.cjs.map +1 -1
- package/lib/cjs/index.cjs +3 -3
- package/lib/cjs/secrets/core/SecretReference.cjs +1 -0
- package/lib/cjs/secrets/core/SecretReference.cjs.map +1 -1
- package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs +34 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretEnvironment.cjs.map +1 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs +479 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretService.cjs.map +1 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs +4 -0
- package/lib/cjs/secrets/kubernetes/KubernetesSecretServiceConfig.cjs.map +1 -0
- package/lib/cjs/secrets/kubernetes/index.cjs +27 -0
- package/lib/cjs/secrets/kubernetes/index.cjs.map +1 -0
- package/lib/esm/feature-flags/services/FeatureFlag.service.js +1 -0
- package/lib/esm/feature-flags/services/FeatureFlag.service.js.map +1 -1
- package/lib/esm/index.js +3 -3
- package/lib/esm/secrets/core/SecretReference.js +1 -0
- package/lib/esm/secrets/core/SecretReference.js.map +1 -1
- package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js +30 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretEnvironment.js.map +1 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretService.js +474 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretService.js.map +1 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js +9 -0
- package/lib/esm/secrets/kubernetes/KubernetesSecretServiceConfig.js.map +1 -0
- package/lib/esm/secrets/kubernetes/index.js +10 -0
- package/lib/esm/secrets/kubernetes/index.js.map +1 -0
- package/lib/types/index.d.cts +2 -2
- package/lib/types/index.d.mts +2 -2
- package/lib/types/secrets/core/SecretTypes.d.cts +13 -1
- package/lib/types/secrets/core/SecretTypes.d.mts +13 -1
- package/lib/types/secrets/kubernetes/KubernetesSecretEnvironment.d.cts +34 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretEnvironment.d.mts +34 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretService.d.cts +45 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretService.d.mts +45 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretServiceConfig.d.cts +49 -0
- package/lib/types/secrets/kubernetes/KubernetesSecretServiceConfig.d.mts +49 -0
- package/lib/types/secrets/kubernetes/index.d.cts +9 -0
- package/lib/types/secrets/kubernetes/index.d.mts +9 -0
- package/package.json +91 -50
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @summary Secret core types.
|
|
4
4
|
* @description Shared payload, metadata, option, and configuration types for secret service implementations.
|
|
5
5
|
*/
|
|
6
|
-
export type SecretProvider = "model" | "memory" | "filesystem" | "hashicorp-vault" | "aws-secrets-manager" | "azure-key-vault" | "gcp-secret-manager" | "1password";
|
|
6
|
+
export type SecretProvider = "model" | "memory" | "filesystem" | "hashicorp-vault" | "aws-secrets-manager" | "azure-key-vault" | "gcp-secret-manager" | "1password" | "kubernetes";
|
|
7
7
|
export type SecretName = string;
|
|
8
8
|
export type SecretPayload = string | Record<string, unknown> | Uint8Array;
|
|
9
9
|
export interface SerializedSecretPayload {
|
|
@@ -61,30 +61,42 @@ export interface StoreSecretOptions {
|
|
|
61
61
|
* @description Principal that owns the secret.
|
|
62
62
|
*/
|
|
63
63
|
ownerPrincipalId?: string;
|
|
64
|
+
/**
|
|
65
|
+
* @description Backend namespace or tenant partition for the secret.
|
|
66
|
+
* @summary Kubernetes uses this as the object namespace; other providers may
|
|
67
|
+
* ignore it when their backend is not namespace-scoped.
|
|
68
|
+
*/
|
|
69
|
+
namespace?: string;
|
|
64
70
|
}
|
|
65
71
|
export interface RetrieveSecretOptions {
|
|
66
72
|
version?: string;
|
|
67
73
|
includeMetadata?: boolean;
|
|
74
|
+
namespace?: string;
|
|
68
75
|
}
|
|
69
76
|
export interface DeleteSecretOptions {
|
|
70
77
|
force?: boolean;
|
|
71
78
|
version?: string;
|
|
79
|
+
namespace?: string;
|
|
72
80
|
}
|
|
73
81
|
export interface ExistsSecretOptions {
|
|
74
82
|
version?: string;
|
|
83
|
+
namespace?: string;
|
|
75
84
|
}
|
|
76
85
|
export interface ListSecretsOptions {
|
|
77
86
|
limit?: number;
|
|
78
87
|
offset?: number;
|
|
79
88
|
tags?: Record<string, string>;
|
|
80
89
|
enabled?: boolean;
|
|
90
|
+
namespace?: string;
|
|
81
91
|
}
|
|
82
92
|
export interface SecretMetadataOptions {
|
|
83
93
|
version?: string;
|
|
84
94
|
includeTags?: boolean;
|
|
95
|
+
namespace?: string;
|
|
85
96
|
}
|
|
86
97
|
export interface RotateSecretOptions {
|
|
87
98
|
oldVersion?: string;
|
|
88
99
|
newVersion?: string;
|
|
89
100
|
keyId?: string;
|
|
101
|
+
namespace?: string;
|
|
90
102
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/secrets/kubernetes/environment
|
|
3
|
+
* @summary Kubernetes secret environment.
|
|
4
|
+
* @description Extends the common secrets environment with the `secrets.kubernetes`
|
|
5
|
+
* shape matching {@link KubernetesSecretServiceConfig}, so
|
|
6
|
+
* {@link KubernetesSecretService} can fall back to it when no config is passed to
|
|
7
|
+
* `initialize`.
|
|
8
|
+
*/
|
|
9
|
+
export interface KubernetesSecretEnvironmentConfig {
|
|
10
|
+
namespace?: string;
|
|
11
|
+
kubeconfig?: string;
|
|
12
|
+
context?: string;
|
|
13
|
+
server?: string;
|
|
14
|
+
token?: string;
|
|
15
|
+
tokenFile?: string;
|
|
16
|
+
caFile?: string;
|
|
17
|
+
caData?: string;
|
|
18
|
+
certFile?: string;
|
|
19
|
+
keyFile?: string;
|
|
20
|
+
certData?: string;
|
|
21
|
+
keyData?: string;
|
|
22
|
+
skipTLSVerify?: boolean;
|
|
23
|
+
serviceAccount?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface KubernetesSecretEnvironmentShape {
|
|
26
|
+
secrets: {
|
|
27
|
+
kubernetes: KubernetesSecretEnvironmentConfig;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare const KubernetesSecretEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
|
|
31
|
+
app: string | undefined;
|
|
32
|
+
} & import("@decaf-ts/logging").LoggingConfig<object> & {
|
|
33
|
+
env: any;
|
|
34
|
+
} & import("..").SecretCommonEnvironmentShape & KubernetesSecretEnvironmentShape>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/secrets/kubernetes/environment
|
|
3
|
+
* @summary Kubernetes secret environment.
|
|
4
|
+
* @description Extends the common secrets environment with the `secrets.kubernetes`
|
|
5
|
+
* shape matching {@link KubernetesSecretServiceConfig}, so
|
|
6
|
+
* {@link KubernetesSecretService} can fall back to it when no config is passed to
|
|
7
|
+
* `initialize`.
|
|
8
|
+
*/
|
|
9
|
+
export interface KubernetesSecretEnvironmentConfig {
|
|
10
|
+
namespace?: string;
|
|
11
|
+
kubeconfig?: string;
|
|
12
|
+
context?: string;
|
|
13
|
+
server?: string;
|
|
14
|
+
token?: string;
|
|
15
|
+
tokenFile?: string;
|
|
16
|
+
caFile?: string;
|
|
17
|
+
caData?: string;
|
|
18
|
+
certFile?: string;
|
|
19
|
+
keyFile?: string;
|
|
20
|
+
certData?: string;
|
|
21
|
+
keyData?: string;
|
|
22
|
+
skipTLSVerify?: boolean;
|
|
23
|
+
serviceAccount?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface KubernetesSecretEnvironmentShape {
|
|
26
|
+
secrets: {
|
|
27
|
+
kubernetes: KubernetesSecretEnvironmentConfig;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare const KubernetesSecretEnvironment: import("@decaf-ts/logging").AccumulatedEnvironment<{
|
|
31
|
+
app: string | undefined;
|
|
32
|
+
} & import("@decaf-ts/logging").LoggingConfig<object> & {
|
|
33
|
+
env: any;
|
|
34
|
+
} & import("..").SecretCommonEnvironmentShape & KubernetesSecretEnvironmentShape>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CoreV1Api } from "@kubernetes/client-node";
|
|
2
|
+
import { type MaybeContextualArg } from "@decaf-ts/core";
|
|
3
|
+
import { ClientBasedSecretService, SecretProvider, SecretName, SecretPayload, SecretReference, SecretMetadata } from "../../secrets/core/index.d.cts";
|
|
4
|
+
import { StoreSecretOptions, RetrieveSecretOptions, DeleteSecretOptions, ExistsSecretOptions, ListSecretsOptions, SecretMetadataOptions, RotateSecretOptions } from "../../secrets/core/index.d.cts";
|
|
5
|
+
import { KubernetesSecretServiceConfig } from "./KubernetesSecretServiceConfig.d.cts";
|
|
6
|
+
/**
|
|
7
|
+
* @class KubernetesSecretService
|
|
8
|
+
* @summary Native Kubernetes Secrets backend.
|
|
9
|
+
* @description Implements the {@link SecretService} contract on top of
|
|
10
|
+
* namespaced Kubernetes `Secret` objects. Each DECAF secret is stored as an
|
|
11
|
+
* `Opaque` Secret whose `payload` data key holds the serialized
|
|
12
|
+
* {@link SerializedSecretPayload} envelope, while encoding, content type, tags,
|
|
13
|
+
* logical version, and ownership hints live in `decaf-ts.io/*` annotations.
|
|
14
|
+
*
|
|
15
|
+
* Authentication uses the standard Kubernetes client resolution order:
|
|
16
|
+
* explicit `server` credentials, an explicit `kubeconfig` path, `KUBECONFIG`,
|
|
17
|
+
* `~/.kube/config`, and finally the in-cluster service account.
|
|
18
|
+
*/
|
|
19
|
+
export declare class KubernetesSecretService extends ClientBasedSecretService<CoreV1Api, KubernetesSecretServiceConfig> {
|
|
20
|
+
readonly provider: SecretProvider;
|
|
21
|
+
protected configFromEnvironment(): KubernetesSecretServiceConfig | undefined;
|
|
22
|
+
initialize(...args: MaybeContextualArg<any>): Promise<{
|
|
23
|
+
config: KubernetesSecretServiceConfig;
|
|
24
|
+
client: CoreV1Api;
|
|
25
|
+
}>;
|
|
26
|
+
store<T extends SecretPayload = SecretPayload>(name: SecretName, value: T, options?: StoreSecretOptions, ...args: MaybeContextualArg<any>): Promise<SecretReference>;
|
|
27
|
+
retrieve<T extends SecretPayload = SecretPayload>(nameOrRef: SecretName | SecretReference, options?: RetrieveSecretOptions, ...args: MaybeContextualArg<any>): Promise<T>;
|
|
28
|
+
delete(nameOrRef: SecretName | SecretReference, options?: DeleteSecretOptions, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
29
|
+
exists(nameOrRef: SecretName | SecretReference, options?: ExistsSecretOptions, ...args: MaybeContextualArg<any>): Promise<boolean>;
|
|
30
|
+
list(options?: ListSecretsOptions, ...args: MaybeContextualArg<any>): Promise<SecretMetadata[]>;
|
|
31
|
+
metadata(nameOrRef: SecretName | SecretReference, options?: SecretMetadataOptions, ...args: MaybeContextualArg<any>): Promise<SecretMetadata | undefined>;
|
|
32
|
+
rotate<T extends SecretPayload = SecretPayload>(nameOrRef: SecretName | SecretReference, value: T, options?: RotateSecretOptions, ...args: MaybeContextualArg<any>): Promise<SecretReference>;
|
|
33
|
+
private buildKubeConfig;
|
|
34
|
+
private resolveNamespace;
|
|
35
|
+
private resolveNamespaceOption;
|
|
36
|
+
private resolveReference;
|
|
37
|
+
private normalizeName;
|
|
38
|
+
private buildSecret;
|
|
39
|
+
private readSecret;
|
|
40
|
+
private assertVersion;
|
|
41
|
+
private toMetadata;
|
|
42
|
+
private statusOf;
|
|
43
|
+
private messageOf;
|
|
44
|
+
protected parseError(error: unknown): Error;
|
|
45
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { CoreV1Api } from "@kubernetes/client-node";
|
|
2
|
+
import { type MaybeContextualArg } from "@decaf-ts/core";
|
|
3
|
+
import { ClientBasedSecretService, SecretProvider, SecretName, SecretPayload, SecretReference, SecretMetadata } from "../../secrets/core/index.d.mts";
|
|
4
|
+
import { StoreSecretOptions, RetrieveSecretOptions, DeleteSecretOptions, ExistsSecretOptions, ListSecretsOptions, SecretMetadataOptions, RotateSecretOptions } from "../../secrets/core/index.d.mts";
|
|
5
|
+
import { KubernetesSecretServiceConfig } from "./KubernetesSecretServiceConfig.d.mts";
|
|
6
|
+
/**
|
|
7
|
+
* @class KubernetesSecretService
|
|
8
|
+
* @summary Native Kubernetes Secrets backend.
|
|
9
|
+
* @description Implements the {@link SecretService} contract on top of
|
|
10
|
+
* namespaced Kubernetes `Secret` objects. Each DECAF secret is stored as an
|
|
11
|
+
* `Opaque` Secret whose `payload` data key holds the serialized
|
|
12
|
+
* {@link SerializedSecretPayload} envelope, while encoding, content type, tags,
|
|
13
|
+
* logical version, and ownership hints live in `decaf-ts.io/*` annotations.
|
|
14
|
+
*
|
|
15
|
+
* Authentication uses the standard Kubernetes client resolution order:
|
|
16
|
+
* explicit `server` credentials, an explicit `kubeconfig` path, `KUBECONFIG`,
|
|
17
|
+
* `~/.kube/config`, and finally the in-cluster service account.
|
|
18
|
+
*/
|
|
19
|
+
export declare class KubernetesSecretService extends ClientBasedSecretService<CoreV1Api, KubernetesSecretServiceConfig> {
|
|
20
|
+
readonly provider: SecretProvider;
|
|
21
|
+
protected configFromEnvironment(): KubernetesSecretServiceConfig | undefined;
|
|
22
|
+
initialize(...args: MaybeContextualArg<any>): Promise<{
|
|
23
|
+
config: KubernetesSecretServiceConfig;
|
|
24
|
+
client: CoreV1Api;
|
|
25
|
+
}>;
|
|
26
|
+
store<T extends SecretPayload = SecretPayload>(name: SecretName, value: T, options?: StoreSecretOptions, ...args: MaybeContextualArg<any>): Promise<SecretReference>;
|
|
27
|
+
retrieve<T extends SecretPayload = SecretPayload>(nameOrRef: SecretName | SecretReference, options?: RetrieveSecretOptions, ...args: MaybeContextualArg<any>): Promise<T>;
|
|
28
|
+
delete(nameOrRef: SecretName | SecretReference, options?: DeleteSecretOptions, ...args: MaybeContextualArg<any>): Promise<void>;
|
|
29
|
+
exists(nameOrRef: SecretName | SecretReference, options?: ExistsSecretOptions, ...args: MaybeContextualArg<any>): Promise<boolean>;
|
|
30
|
+
list(options?: ListSecretsOptions, ...args: MaybeContextualArg<any>): Promise<SecretMetadata[]>;
|
|
31
|
+
metadata(nameOrRef: SecretName | SecretReference, options?: SecretMetadataOptions, ...args: MaybeContextualArg<any>): Promise<SecretMetadata | undefined>;
|
|
32
|
+
rotate<T extends SecretPayload = SecretPayload>(nameOrRef: SecretName | SecretReference, value: T, options?: RotateSecretOptions, ...args: MaybeContextualArg<any>): Promise<SecretReference>;
|
|
33
|
+
private buildKubeConfig;
|
|
34
|
+
private resolveNamespace;
|
|
35
|
+
private resolveNamespaceOption;
|
|
36
|
+
private resolveReference;
|
|
37
|
+
private normalizeName;
|
|
38
|
+
private buildSecret;
|
|
39
|
+
private readSecret;
|
|
40
|
+
private assertVersion;
|
|
41
|
+
private toMetadata;
|
|
42
|
+
private statusOf;
|
|
43
|
+
private messageOf;
|
|
44
|
+
protected parseError(error: unknown): Error;
|
|
45
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/secrets/kubernetes/config
|
|
3
|
+
* @summary Kubernetes secret service configuration.
|
|
4
|
+
* @description Configuration schema for the native Kubernetes Secrets integration,
|
|
5
|
+
* including kubeconfig selection, explicit API-server credentials, and the
|
|
6
|
+
* default namespace used by every operation.
|
|
7
|
+
*/
|
|
8
|
+
import { SecretServiceConfig } from "../../secrets/core/index.d.cts";
|
|
9
|
+
export interface KubernetesSecretServiceConfig extends SecretServiceConfig {
|
|
10
|
+
provider: "kubernetes";
|
|
11
|
+
/**
|
|
12
|
+
* @description Namespace that owns the secrets.
|
|
13
|
+
* @summary Defaults to the namespace of the active kubeconfig context, then
|
|
14
|
+
* to `default`. Individual operations may override it through their options.
|
|
15
|
+
*/
|
|
16
|
+
namespace?: string;
|
|
17
|
+
/**
|
|
18
|
+
* @description Path to a kubeconfig file.
|
|
19
|
+
* @summary When omitted the client falls back to `KUBECONFIG`,
|
|
20
|
+
* `~/.kube/config`, and finally in-cluster service-account configuration.
|
|
21
|
+
*/
|
|
22
|
+
kubeconfig?: string;
|
|
23
|
+
/**
|
|
24
|
+
* @description Kubeconfig context to select after loading.
|
|
25
|
+
*/
|
|
26
|
+
context?: string;
|
|
27
|
+
/**
|
|
28
|
+
* @description Explicit Kubernetes API server URL.
|
|
29
|
+
* @summary When present the client is built from the explicit server,
|
|
30
|
+
* token/certificate fields, and namespace instead of a kubeconfig file.
|
|
31
|
+
*/
|
|
32
|
+
server?: string;
|
|
33
|
+
token?: string;
|
|
34
|
+
tokenFile?: string;
|
|
35
|
+
caFile?: string;
|
|
36
|
+
/**
|
|
37
|
+
* @description Base64 encoded PEM certificate authority bundle.
|
|
38
|
+
*/
|
|
39
|
+
caData?: string;
|
|
40
|
+
certFile?: string;
|
|
41
|
+
keyFile?: string;
|
|
42
|
+
certData?: string;
|
|
43
|
+
keyData?: string;
|
|
44
|
+
skipTLSVerify?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* @description Force loading the in-cluster service-account configuration.
|
|
47
|
+
*/
|
|
48
|
+
serviceAccount?: boolean;
|
|
49
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/secrets/kubernetes/config
|
|
3
|
+
* @summary Kubernetes secret service configuration.
|
|
4
|
+
* @description Configuration schema for the native Kubernetes Secrets integration,
|
|
5
|
+
* including kubeconfig selection, explicit API-server credentials, and the
|
|
6
|
+
* default namespace used by every operation.
|
|
7
|
+
*/
|
|
8
|
+
import { SecretServiceConfig } from "../../secrets/core/index.d.mts";
|
|
9
|
+
export interface KubernetesSecretServiceConfig extends SecretServiceConfig {
|
|
10
|
+
provider: "kubernetes";
|
|
11
|
+
/**
|
|
12
|
+
* @description Namespace that owns the secrets.
|
|
13
|
+
* @summary Defaults to the namespace of the active kubeconfig context, then
|
|
14
|
+
* to `default`. Individual operations may override it through their options.
|
|
15
|
+
*/
|
|
16
|
+
namespace?: string;
|
|
17
|
+
/**
|
|
18
|
+
* @description Path to a kubeconfig file.
|
|
19
|
+
* @summary When omitted the client falls back to `KUBECONFIG`,
|
|
20
|
+
* `~/.kube/config`, and finally in-cluster service-account configuration.
|
|
21
|
+
*/
|
|
22
|
+
kubeconfig?: string;
|
|
23
|
+
/**
|
|
24
|
+
* @description Kubeconfig context to select after loading.
|
|
25
|
+
*/
|
|
26
|
+
context?: string;
|
|
27
|
+
/**
|
|
28
|
+
* @description Explicit Kubernetes API server URL.
|
|
29
|
+
* @summary When present the client is built from the explicit server,
|
|
30
|
+
* token/certificate fields, and namespace instead of a kubeconfig file.
|
|
31
|
+
*/
|
|
32
|
+
server?: string;
|
|
33
|
+
token?: string;
|
|
34
|
+
tokenFile?: string;
|
|
35
|
+
caFile?: string;
|
|
36
|
+
/**
|
|
37
|
+
* @description Base64 encoded PEM certificate authority bundle.
|
|
38
|
+
*/
|
|
39
|
+
caData?: string;
|
|
40
|
+
certFile?: string;
|
|
41
|
+
keyFile?: string;
|
|
42
|
+
certData?: string;
|
|
43
|
+
keyData?: string;
|
|
44
|
+
skipTLSVerify?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* @description Force loading the in-cluster service-account configuration.
|
|
47
|
+
*/
|
|
48
|
+
serviceAccount?: boolean;
|
|
49
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/secrets/kubernetes
|
|
3
|
+
* @summary Kubernetes secret service exports.
|
|
4
|
+
* @description Re-exports the native Kubernetes Secrets service, its configuration,
|
|
5
|
+
* and its environment slice.
|
|
6
|
+
*/
|
|
7
|
+
export * from "./KubernetesSecretService.d.cts";
|
|
8
|
+
export * from "./KubernetesSecretServiceConfig.d.cts";
|
|
9
|
+
export * from "./KubernetesSecretEnvironment.d.cts";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/secrets/kubernetes
|
|
3
|
+
* @summary Kubernetes secret service exports.
|
|
4
|
+
* @description Re-exports the native Kubernetes Secrets service, its configuration,
|
|
5
|
+
* and its environment slice.
|
|
6
|
+
*/
|
|
7
|
+
export * from "./KubernetesSecretService.d.mts";
|
|
8
|
+
export * from "./KubernetesSecretServiceConfig.d.mts";
|
|
9
|
+
export * from "./KubernetesSecretEnvironment.d.mts";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/integrations",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.mts",
|
|
@@ -181,6 +181,17 @@
|
|
|
181
181
|
},
|
|
182
182
|
"default": "./lib/esm/secrets/vault/index.js"
|
|
183
183
|
},
|
|
184
|
+
"./secrets/kubernetes": {
|
|
185
|
+
"import": {
|
|
186
|
+
"types": "./lib/types/secrets/kubernetes/index.d.mts",
|
|
187
|
+
"default": "./lib/esm/secrets/kubernetes/index.js"
|
|
188
|
+
},
|
|
189
|
+
"require": {
|
|
190
|
+
"types": "./lib/types/secrets/kubernetes/index.d.cts",
|
|
191
|
+
"default": "./lib/cjs/secrets/kubernetes/index.cjs"
|
|
192
|
+
},
|
|
193
|
+
"default": "./lib/esm/secrets/kubernetes/index.js"
|
|
194
|
+
},
|
|
184
195
|
"./blob": {
|
|
185
196
|
"import": {
|
|
186
197
|
"types": "./lib/types/blob/index.d.mts",
|
|
@@ -616,6 +627,7 @@
|
|
|
616
627
|
"test": "npm run build && NODE_OPTIONS=\"--experimental-vm-modules\" jest --watchman=false --runInBand --coverage --detectOpenHandles",
|
|
617
628
|
"test:unit": "NODE_OPTIONS=\"--experimental-vm-modules\" jest --watchman=false --testPathPatterns=\"/tests/unit\" --passWithNoTests --detectOpenHandles",
|
|
618
629
|
"test:integration": "NODE_OPTIONS=\"--experimental-vm-modules\" jest --watchman=false --testPathPatterns=\"/tests/(integration)\" --passWithNoTests --detectOpenHandles",
|
|
630
|
+
"test:integration:kubernetes": "DECAF_KUBERNETES_IT=1 NODE_OPTIONS=\"--experimental-vm-modules\" jest --watchman=false --runInBand --testPathPatterns=kubernetes-secrets --passWithNoTests --detectOpenHandles",
|
|
619
631
|
"test:e2e": "NODE_OPTIONS=\"--experimental-vm-modules\" jest --watchman=false --testPathPatterns=\"/tests/(e2e)\" --passWithNoTests --detectOpenHandles",
|
|
620
632
|
"test:e2e:plugins": "npx playwright test --config tests/playwright/playwright.config.ts --project chromium",
|
|
621
633
|
"test:e2e:plugins:kibana": "npx playwright test --config tests/playwright/playwright.config.ts tests/playwright/kibana.e2e.ts",
|
|
@@ -627,7 +639,7 @@
|
|
|
627
639
|
"lint-fix": "eslint --fix .",
|
|
628
640
|
"prepare-pr": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
|
629
641
|
"prepare-release": "npm run lint-fix && npm run build:prod",
|
|
630
|
-
"release": "
|
|
642
|
+
"release": "tag-release",
|
|
631
643
|
"clean-publish": "npx clean-publish",
|
|
632
644
|
"drawings": "for FILE in workdocs/drawings/*.drawio; do echo \"converting $FILE to image...\" && docker run --rm -v $(pwd):/data rlespinasse/drawio-export --format png $FILE; done && cp -rf workdocs/drawings/export/* workdocs/resources/",
|
|
633
645
|
"uml": "cd workdocs/uml && for FILE in ./*.puml; do docker run --rm -v $(pwd):/work -w /work miy4/plantuml -DPLANTUML_LIMIT_SIZE=8192 -tpng $FILE; done && cd ../.. && cp -fr workdocs/uml/*.png workdocs/resources/",
|
|
@@ -637,63 +649,65 @@
|
|
|
637
649
|
"repo:setup": "codex exec \"$(cat ./.codex/prompts/repo-setup.md)\nbase_path is ./\"",
|
|
638
650
|
"repo:doc": "codex exec \"$(cat ./.codex/prompts/doc.md) $(cat ./.codex/prompts/bulk-docs.md)\nbase_path is ./\"",
|
|
639
651
|
"repo:tests": "codex exec \"$(cat ./.codex/prompts/bulk-tests.md)\nbase_path is ./ and coverage is 95%\" -s workspace-write",
|
|
640
|
-
"prepare-it-tests": "docker compose -f docker/dragonfly-compose.yml up -d --wait && docker compose -f docker/postgres-compose.yml up -d --wait && docker compose -f docker/mailpit-compose.yml up -d --wait",
|
|
652
|
+
"prepare-it-tests": "npx playwright install chromium && docker compose -f docker/dragonfly-compose.yml up -d --wait && docker compose -f docker/postgres-compose.yml up -d --wait && docker compose -f docker/mailpit-compose.yml up -d --wait",
|
|
641
653
|
"repo:readme": "codex exec \"$(cat ./.codex/prompts/update-readme.md)\nbase_path is ./\"",
|
|
642
654
|
"repo:pr": "npm run repo:doc && npm run repo:tests && npm run repo:readme",
|
|
643
655
|
"clean": "rimraf ./lib ./workdocs/coverage"
|
|
644
656
|
},
|
|
645
657
|
"devDependencies": {
|
|
646
|
-
"@aws-sdk/client-s3": "^3.
|
|
647
|
-
"@aws-sdk/client-secrets-manager": "^3.
|
|
648
|
-
"@aws-sdk/s3-request-presigner": "^3.
|
|
649
|
-
"@azure/identity": "4.
|
|
650
|
-
"@azure/keyvault-secrets": "^4.
|
|
651
|
-
"@azure/storage-blob": "^12.
|
|
652
|
-
"@decaf-ts/as-zod": "
|
|
653
|
-
"@decaf-ts/cli": "
|
|
654
|
-
"@decaf-ts/core": "
|
|
655
|
-
"@decaf-ts/crypto": "
|
|
656
|
-
"@decaf-ts/db-decorators": "
|
|
657
|
-
"@decaf-ts/decoration": "
|
|
658
|
-
"@decaf-ts/decorator-validation": "
|
|
659
|
-
"@decaf-ts/for-http": "
|
|
660
|
-
"@decaf-ts/for-nano": "
|
|
661
|
-
"@decaf-ts/for-nest": "
|
|
662
|
-
"@decaf-ts/injectable-decorators": "
|
|
663
|
-
"@decaf-ts/logging": "
|
|
664
|
-
"@decaf-ts/transactional-decorators": "
|
|
665
|
-
"@decaf-ts/ui-decorators": "
|
|
666
|
-
"@decaf-ts/utils": "
|
|
667
|
-
"@google-cloud/secret-manager": "^
|
|
668
|
-
"@google-cloud/storage": "^
|
|
669
|
-
"@grpc/grpc-js": "^1.14.
|
|
670
|
-
"@
|
|
671
|
-
"@nestjs/
|
|
672
|
-
"@nestjs/
|
|
673
|
-
"@nestjs/
|
|
674
|
-
"@nestjs/
|
|
675
|
-
"@
|
|
658
|
+
"@aws-sdk/client-s3": "^3.1164.0",
|
|
659
|
+
"@aws-sdk/client-secrets-manager": "^3.1164.0",
|
|
660
|
+
"@aws-sdk/s3-request-presigner": "^3.1164.0",
|
|
661
|
+
"@azure/identity": "4.14.1",
|
|
662
|
+
"@azure/keyvault-secrets": "^4.12.0",
|
|
663
|
+
"@azure/storage-blob": "^12.34.0",
|
|
664
|
+
"@decaf-ts/as-zod": "1.17.0",
|
|
665
|
+
"@decaf-ts/cli": "0.14.0",
|
|
666
|
+
"@decaf-ts/core": "0.34.0",
|
|
667
|
+
"@decaf-ts/crypto": "0.16.0",
|
|
668
|
+
"@decaf-ts/db-decorators": "0.20.0",
|
|
669
|
+
"@decaf-ts/decoration": "0.20.0",
|
|
670
|
+
"@decaf-ts/decorator-validation": "1.24.0",
|
|
671
|
+
"@decaf-ts/for-http": "0.22.0",
|
|
672
|
+
"@decaf-ts/for-nano": "0.16.0",
|
|
673
|
+
"@decaf-ts/for-nest": "0.18.0",
|
|
674
|
+
"@decaf-ts/injectable-decorators": "1.21.0",
|
|
675
|
+
"@decaf-ts/logging": "0.30.3",
|
|
676
|
+
"@decaf-ts/transactional-decorators": "0.14.0",
|
|
677
|
+
"@decaf-ts/ui-decorators": "0.22.0",
|
|
678
|
+
"@decaf-ts/utils": "2.0.6",
|
|
679
|
+
"@google-cloud/secret-manager": "^7.2.0",
|
|
680
|
+
"@google-cloud/storage": "^8.4.0",
|
|
681
|
+
"@grpc/grpc-js": "^1.14.7",
|
|
682
|
+
"@kubernetes/client-node": "^2.0.2",
|
|
683
|
+
"@nestjs/common": "^12.4.0",
|
|
684
|
+
"@nestjs/core": "^12.4.0",
|
|
685
|
+
"@nestjs/platform-express": "^12.4.0",
|
|
686
|
+
"@nestjs/swagger": "^12.1.1",
|
|
687
|
+
"@nestjs/testing": "^12.4.0",
|
|
688
|
+
"@playwright/test": "^1.65.0",
|
|
676
689
|
"@types/jest": "^30.0.0",
|
|
677
690
|
"@types/pg": "^8.23.1",
|
|
678
|
-
"@types/supertest": "^
|
|
679
|
-
"acorn": "^8.
|
|
691
|
+
"@types/supertest": "^7.2.1",
|
|
692
|
+
"acorn": "^8.19.0",
|
|
680
693
|
"acorn-walk": "^8.3.5",
|
|
681
|
-
"axios": "^1.
|
|
682
|
-
"cron-parser": "^5.
|
|
694
|
+
"axios": "^1.21.0",
|
|
695
|
+
"cron-parser": "^5.10.4",
|
|
683
696
|
"form-data": "^4.0.6",
|
|
684
|
-
"imapflow": "^
|
|
685
|
-
"isolated-vm": "^
|
|
697
|
+
"imapflow": "^2.11.0",
|
|
698
|
+
"isolated-vm": "^7.0.2",
|
|
686
699
|
"node-fetch": "^3.3.2",
|
|
687
|
-
"nodemailer": "^10.1
|
|
700
|
+
"nodemailer": "^10.3.1",
|
|
688
701
|
"pg": "^8.23.1",
|
|
689
|
-
"redis": "^6.3.
|
|
690
|
-
"reflect-metadata": "^0.2.
|
|
691
|
-
"rxjs": "^7.8.
|
|
692
|
-
"ssh2": "^1.
|
|
693
|
-
"supertest": "^7.
|
|
694
|
-
"tslib": "^2.
|
|
695
|
-
"typescript": "^
|
|
696
|
-
"uuid": "^
|
|
702
|
+
"redis": "^6.3.1",
|
|
703
|
+
"reflect-metadata": "^0.2.2",
|
|
704
|
+
"rxjs": "^7.8.2",
|
|
705
|
+
"ssh2": "^1.17.0",
|
|
706
|
+
"supertest": "^7.3.2",
|
|
707
|
+
"tslib": "^2.9.1",
|
|
708
|
+
"typescript": "^6.0.3",
|
|
709
|
+
"uuid": "^14.0.3",
|
|
710
|
+
"@decaf-ts/for-testing": "1.3.7"
|
|
697
711
|
},
|
|
698
712
|
"peerDependencies": {
|
|
699
713
|
"@aws-sdk/client-s3": "^3.1075.0",
|
|
@@ -714,6 +728,7 @@
|
|
|
714
728
|
"@google-cloud/secret-manager": "^5.6.0",
|
|
715
729
|
"@google-cloud/storage": "^7.21.0",
|
|
716
730
|
"@grpc/grpc-js": "^1.14.6",
|
|
731
|
+
"@kubernetes/client-node": "^2.0.2",
|
|
717
732
|
"@nestjs/common": "^11.0.0",
|
|
718
733
|
"axios": "^1.7.9",
|
|
719
734
|
"cron-parser": "^5.7.0",
|
|
@@ -779,6 +794,9 @@
|
|
|
779
794
|
"@grpc/grpc-js": {
|
|
780
795
|
"optional": true
|
|
781
796
|
},
|
|
797
|
+
"@kubernetes/client-node": {
|
|
798
|
+
"optional": true
|
|
799
|
+
},
|
|
782
800
|
"axios": {
|
|
783
801
|
"optional": true
|
|
784
802
|
},
|
|
@@ -808,7 +826,30 @@
|
|
|
808
826
|
}
|
|
809
827
|
},
|
|
810
828
|
"overrides": {
|
|
811
|
-
"
|
|
812
|
-
"
|
|
829
|
+
"jest": "$jest",
|
|
830
|
+
"open": "^11.0.0",
|
|
831
|
+
"eslint": {
|
|
832
|
+
"minimatch": "^11.0.5"
|
|
833
|
+
},
|
|
834
|
+
"dpdm": {
|
|
835
|
+
"glob": "^14.0.4",
|
|
836
|
+
"minimatch": "^11.0.5"
|
|
837
|
+
},
|
|
838
|
+
"glob": "^14.0.4",
|
|
839
|
+
"minimatch": "^11.0.5",
|
|
840
|
+
"typescript-eslint": {
|
|
841
|
+
"minimatch": "^11.0.5"
|
|
842
|
+
},
|
|
843
|
+
"deepmerge": "^4.3.1",
|
|
844
|
+
"test-exclude": {
|
|
845
|
+
".": "^8.0.0",
|
|
846
|
+
"glob": "^14.0.4",
|
|
847
|
+
"minimatch": "^11.0.5"
|
|
848
|
+
}
|
|
849
|
+
},
|
|
850
|
+
"license": "MPL-2.0",
|
|
851
|
+
"repository": {
|
|
852
|
+
"type": "git",
|
|
853
|
+
"url": "git+https://github.com/decaf-ts/integrations.git"
|
|
813
854
|
}
|
|
814
855
|
}
|