@kibibit/configit 1.0.0-beta.25 → 1.0.0-beta.27

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 (98) hide show
  1. package/README.md +419 -0
  2. package/lib/scripts/test-vault-comprehensive.d.ts +2 -0
  3. package/lib/scripts/test-vault-comprehensive.d.ts.map +1 -0
  4. package/lib/scripts/test-vault-comprehensive.js +422 -0
  5. package/lib/scripts/test-vault-comprehensive.js.map +1 -0
  6. package/lib/scripts/test-vault-dynamic.d.ts +2 -0
  7. package/lib/scripts/test-vault-dynamic.d.ts.map +1 -0
  8. package/lib/scripts/test-vault-dynamic.js +193 -0
  9. package/lib/scripts/test-vault-dynamic.js.map +1 -0
  10. package/lib/scripts/test-vault-gcp-ttl.d.ts +3 -0
  11. package/lib/scripts/test-vault-gcp-ttl.d.ts.map +1 -0
  12. package/lib/scripts/test-vault-gcp-ttl.js +218 -0
  13. package/lib/scripts/test-vault-gcp-ttl.js.map +1 -0
  14. package/lib/scripts/test-vault.d.ts +2 -0
  15. package/lib/scripts/test-vault.d.ts.map +1 -0
  16. package/lib/scripts/test-vault.js +167 -0
  17. package/lib/scripts/test-vault.js.map +1 -0
  18. package/lib/src/config.errors.d.ts.map +1 -0
  19. package/lib/src/config.errors.js.map +1 -0
  20. package/lib/src/config.model.d.ts.map +1 -0
  21. package/lib/src/config.model.js.map +1 -0
  22. package/lib/{config.service.d.ts → src/config.service.d.ts} +10 -1
  23. package/lib/src/config.service.d.ts.map +1 -0
  24. package/lib/{config.service.js → src/config.service.js} +75 -9
  25. package/lib/src/config.service.js.map +1 -0
  26. package/lib/src/environment.service.d.ts.map +1 -0
  27. package/lib/src/environment.service.js.map +1 -0
  28. package/lib/{index.d.ts → src/index.d.ts} +1 -0
  29. package/lib/src/index.d.ts.map +1 -0
  30. package/lib/{index.js → src/index.js} +1 -0
  31. package/lib/src/index.js.map +1 -0
  32. package/lib/src/json-schema.validator.d.ts.map +1 -0
  33. package/lib/src/json-schema.validator.js.map +1 -0
  34. package/lib/src/vault/__tests__/vault-integration.test.d.ts +2 -0
  35. package/lib/src/vault/__tests__/vault-integration.test.d.ts.map +1 -0
  36. package/lib/src/vault/__tests__/vault-integration.test.js +190 -0
  37. package/lib/src/vault/__tests__/vault-integration.test.js.map +1 -0
  38. package/lib/src/vault/decorators.d.ts +17 -0
  39. package/lib/src/vault/decorators.d.ts.map +1 -0
  40. package/lib/src/vault/decorators.js +149 -0
  41. package/lib/src/vault/decorators.js.map +1 -0
  42. package/lib/src/vault/index.d.ts +7 -0
  43. package/lib/src/vault/index.d.ts.map +1 -0
  44. package/lib/src/vault/index.js +42 -0
  45. package/lib/src/vault/index.js.map +1 -0
  46. package/lib/src/vault/secret-refresh-manager.d.ts +23 -0
  47. package/lib/src/vault/secret-refresh-manager.d.ts.map +1 -0
  48. package/lib/src/vault/secret-refresh-manager.js +149 -0
  49. package/lib/src/vault/secret-refresh-manager.js.map +1 -0
  50. package/lib/src/vault/types.d.ts +149 -0
  51. package/lib/src/vault/types.d.ts.map +1 -0
  52. package/lib/src/vault/types.js +4 -0
  53. package/lib/src/vault/types.js.map +1 -0
  54. package/lib/src/vault/vault-cache.d.ts +20 -0
  55. package/lib/src/vault/vault-cache.d.ts.map +1 -0
  56. package/lib/src/vault/vault-cache.js +139 -0
  57. package/lib/src/vault/vault-cache.js.map +1 -0
  58. package/lib/src/vault/vault-integration.d.ts +27 -0
  59. package/lib/src/vault/vault-integration.d.ts.map +1 -0
  60. package/lib/src/vault/vault-integration.js +211 -0
  61. package/lib/src/vault/vault-integration.js.map +1 -0
  62. package/lib/src/vault/vault-provider.d.ts +37 -0
  63. package/lib/src/vault/vault-provider.d.ts.map +1 -0
  64. package/lib/src/vault/vault-provider.js +354 -0
  65. package/lib/src/vault/vault-provider.js.map +1 -0
  66. package/lib/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +14 -74
  68. package/src/config.service.ts +155 -10
  69. package/src/config.service.vault.spec.ts +859 -0
  70. package/src/index.ts +1 -0
  71. package/src/vault/__tests__/vault-integration.test.ts +226 -0
  72. package/src/vault/decorators.ts +228 -0
  73. package/src/vault/index.ts +31 -0
  74. package/src/vault/secret-refresh-manager.ts +241 -0
  75. package/src/vault/types.ts +487 -0
  76. package/src/vault/vault-cache.ts +240 -0
  77. package/src/vault/vault-integration.ts +332 -0
  78. package/src/vault/vault-provider.ts +576 -0
  79. package/lib/config.errors.d.ts.map +0 -1
  80. package/lib/config.errors.js.map +0 -1
  81. package/lib/config.model.d.ts.map +0 -1
  82. package/lib/config.model.js.map +0 -1
  83. package/lib/config.service.d.ts.map +0 -1
  84. package/lib/config.service.js.map +0 -1
  85. package/lib/environment.service.d.ts.map +0 -1
  86. package/lib/environment.service.js.map +0 -1
  87. package/lib/index.d.ts.map +0 -1
  88. package/lib/index.js.map +0 -1
  89. package/lib/json-schema.validator.d.ts.map +0 -1
  90. package/lib/json-schema.validator.js.map +0 -1
  91. /package/lib/{config.errors.d.ts → src/config.errors.d.ts} +0 -0
  92. /package/lib/{config.errors.js → src/config.errors.js} +0 -0
  93. /package/lib/{config.model.d.ts → src/config.model.d.ts} +0 -0
  94. /package/lib/{config.model.js → src/config.model.js} +0 -0
  95. /package/lib/{environment.service.d.ts → src/environment.service.d.ts} +0 -0
  96. /package/lib/{environment.service.js → src/environment.service.js} +0 -0
  97. /package/lib/{json-schema.validator.d.ts → src/json-schema.validator.d.ts} +0 -0
  98. /package/lib/{json-schema.validator.js → src/json-schema.validator.js} +0 -0
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecretRefreshManager = void 0;
4
+ class SecretRefreshManager {
5
+ constructor(provider, cache, refreshBuffer) {
6
+ this.refreshTimers = new Map();
7
+ this.refreshLocks = new Map();
8
+ this.refreshCounts = new Map();
9
+ this.lastRefreshTimes = new Map();
10
+ this.refreshContexts = new Map();
11
+ this.vaultProvider = provider;
12
+ this.cache = cache;
13
+ this.refreshBuffer = refreshBuffer || 300;
14
+ }
15
+ scheduleRefresh(propertyName, metadata, targetInstance) {
16
+ const entry = this.cache.getEntry(propertyName);
17
+ if (!entry) {
18
+ return;
19
+ }
20
+ this.refreshContexts.set(propertyName, {
21
+ metadata,
22
+ targetInstance,
23
+ fullPath: entry.vaultPath
24
+ });
25
+ this.cancelRefresh(propertyName);
26
+ const now = Date.now();
27
+ const timeUntilRefresh = Math.max(0, entry.refreshAt - now);
28
+ if (timeUntilRefresh <= 0) {
29
+ this.executeRefresh(propertyName);
30
+ return;
31
+ }
32
+ const timer = setTimeout(() => {
33
+ this.executeRefresh(propertyName);
34
+ }, timeUntilRefresh);
35
+ this.refreshTimers.set(propertyName, timer);
36
+ }
37
+ cancelRefresh(propertyName) {
38
+ const timer = this.refreshTimers.get(propertyName);
39
+ if (timer) {
40
+ clearTimeout(timer);
41
+ this.refreshTimers.delete(propertyName);
42
+ }
43
+ }
44
+ async executeRefresh(propertyName) {
45
+ const existingLock = this.refreshLocks.get(propertyName);
46
+ if (existingLock) {
47
+ await existingLock;
48
+ return;
49
+ }
50
+ const refreshPromise = this.performRefresh(propertyName)
51
+ .finally(() => {
52
+ this.refreshLocks.delete(propertyName);
53
+ this.refreshTimers.delete(propertyName);
54
+ });
55
+ this.refreshLocks.set(propertyName, refreshPromise);
56
+ await refreshPromise;
57
+ }
58
+ async performRefresh(propertyName) {
59
+ const context = this.refreshContexts.get(propertyName);
60
+ if (!context) {
61
+ console.error(`No refresh context for ${propertyName}`);
62
+ return;
63
+ }
64
+ const { metadata, targetInstance, fullPath } = context;
65
+ const refreshCount = (this.refreshCounts.get(propertyName) || 0) + 1;
66
+ this.refreshCounts.set(propertyName, refreshCount);
67
+ try {
68
+ const secret = await this.vaultProvider.read(fullPath);
69
+ this.cache.set(propertyName, fullPath, secret, metadata);
70
+ if (targetInstance) {
71
+ const key = metadata.key || metadata.propertyName;
72
+ const value = secret.data[key];
73
+ targetInstance[propertyName] = value;
74
+ }
75
+ this.lastRefreshTimes.set(propertyName, Date.now());
76
+ this.scheduleRefresh(propertyName, metadata, targetInstance);
77
+ }
78
+ catch (error) {
79
+ const errorMessage = (error === null || error === void 0 ? void 0 : error.message) || 'Unknown error';
80
+ console.error(`Failed to refresh secret for ${propertyName}: ${this.sanitizeError(errorMessage)}`);
81
+ const retryDelay = Math.min(1000 * Math.pow(2, refreshCount - 1), 30000);
82
+ setTimeout(() => {
83
+ this.scheduleRefresh(propertyName, metadata, targetInstance);
84
+ }, retryDelay);
85
+ }
86
+ }
87
+ getRefreshStatus() {
88
+ const statuses = [];
89
+ const cachedProperties = this.cache.getCachedProperties();
90
+ for (const propertyName of cachedProperties) {
91
+ const entry = this.cache.getEntry(propertyName);
92
+ if (!entry) {
93
+ continue;
94
+ }
95
+ const timer = this.refreshTimers.get(propertyName);
96
+ const now = Date.now();
97
+ const refreshAt = entry.refreshAt;
98
+ const timeUntilRefresh = Math.max(0, refreshAt - now);
99
+ statuses.push({
100
+ propertyName,
101
+ vaultPath: entry.vaultPath,
102
+ scheduled: timer !== undefined,
103
+ refreshAt,
104
+ timeUntilRefresh,
105
+ lastRefresh: this.lastRefreshTimes.get(propertyName) || entry.cachedAt,
106
+ refreshCount: this.refreshCounts.get(propertyName) || 0
107
+ });
108
+ }
109
+ return statuses;
110
+ }
111
+ getRefreshStatusForProperty(propertyName) {
112
+ const entry = this.cache.getEntry(propertyName);
113
+ if (!entry) {
114
+ return null;
115
+ }
116
+ const timer = this.refreshTimers.get(propertyName);
117
+ const now = Date.now();
118
+ const refreshAt = entry.refreshAt;
119
+ const timeUntilRefresh = Math.max(0, refreshAt - now);
120
+ return {
121
+ propertyName,
122
+ vaultPath: entry.vaultPath,
123
+ scheduled: timer !== undefined,
124
+ refreshAt,
125
+ timeUntilRefresh,
126
+ lastRefresh: this.lastRefreshTimes.get(propertyName) || entry.cachedAt,
127
+ refreshCount: this.refreshCounts.get(propertyName) || 0
128
+ };
129
+ }
130
+ shutdown() {
131
+ for (const [propertyName, timer] of this.refreshTimers.entries()) {
132
+ clearTimeout(timer);
133
+ }
134
+ this.refreshTimers.clear();
135
+ this.refreshLocks.clear();
136
+ this.refreshCounts.clear();
137
+ this.lastRefreshTimes.clear();
138
+ }
139
+ sanitizeError(message) {
140
+ const sensitivePatterns = [/password/i, /secret/i, /key/i, /token/i, /credential/i];
141
+ let sanitized = message;
142
+ sensitivePatterns.forEach((pattern) => {
143
+ sanitized = sanitized.replace(new RegExp(`${pattern.source}[:=]\\s*[^\\s,}]+`, 'gi'), `${pattern.source}: ***`);
144
+ });
145
+ return sanitized;
146
+ }
147
+ }
148
+ exports.SecretRefreshManager = SecretRefreshManager;
149
+ //# sourceMappingURL=secret-refresh-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-refresh-manager.js","sourceRoot":"","sources":["../../../src/vault/secret-refresh-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /// <reference types="node" />
2
+ import 'reflect-metadata';
3
+ export type VaultEngineType = 'kv1' | 'kv-v1' | 'kv2' | 'kv-v2' | 'database' | 'aws' | 'azure' | 'gcp' | 'transit' | 'pki' | 'custom';
4
+ export interface IVaultConfigOptions {
5
+ endpoint: string;
6
+ auth: IVaultAuthConfig;
7
+ tls?: IVaultTLSConfig;
8
+ refreshBuffer?: number;
9
+ fallback?: IVaultFallbackConfig;
10
+ retry?: IRetryPolicy;
11
+ circuitBreaker?: ICircuitBreakerConfig;
12
+ }
13
+ export type IVaultAuthConfig = IVaultAuthConfigSimple | IVaultAuthConfigMethods;
14
+ export type IVaultAuthConfigSimple = ({
15
+ method: 'gcp';
16
+ } & IGCPAuthConfig) | ({
17
+ method: 'aws';
18
+ } & IAWSAuthConfig) | ({
19
+ method: 'approle';
20
+ } & IAppRoleAuthConfig) | ({
21
+ method: 'token';
22
+ } & ITokenAuthConfig);
23
+ export interface IVaultAuthConfigMethods {
24
+ methods: IVaultAuthMethod[];
25
+ }
26
+ export interface IVaultAuthMethod {
27
+ type: 'gcp' | 'aws' | 'approle' | 'token';
28
+ config: IGCPAuthConfig | IAWSAuthConfig | IAppRoleAuthConfig | ITokenAuthConfig;
29
+ }
30
+ export interface IGCPAuthConfig {
31
+ type?: 'gcp';
32
+ role: string;
33
+ serviceAccountKeyFile?: string;
34
+ serviceAccountEmail?: string;
35
+ jwtExpiration?: number;
36
+ }
37
+ export interface IAWSAuthConfig {
38
+ type?: 'aws';
39
+ role: string;
40
+ }
41
+ export interface IAppRoleAuthConfig {
42
+ type?: 'approle';
43
+ roleId: string;
44
+ secretId: string;
45
+ mountPath?: string;
46
+ }
47
+ export interface ITokenAuthConfig {
48
+ type?: 'token';
49
+ token: string;
50
+ }
51
+ export interface IVaultTLSConfig {
52
+ enabled: boolean;
53
+ verifyCertificate: boolean;
54
+ certificateFingerprint?: string;
55
+ caCert?: string | Buffer;
56
+ minVersion?: 'TLSv1.2' | 'TLSv1.3';
57
+ }
58
+ export interface IVaultFallbackConfig {
59
+ required: boolean;
60
+ useCacheOnFailure: boolean;
61
+ maxCacheAge: number;
62
+ failFast: boolean;
63
+ }
64
+ export interface IRetryPolicy {
65
+ maxAttempts: number;
66
+ backoff: {
67
+ strategy: 'exponential' | 'linear' | 'fixed';
68
+ initial: number;
69
+ max: number;
70
+ multiplier: number;
71
+ };
72
+ retryableErrors: string[];
73
+ }
74
+ export interface ICircuitBreakerConfig {
75
+ enabled: boolean;
76
+ failureThreshold: number;
77
+ resetTimeout: number;
78
+ halfOpenMaxRequests: number;
79
+ }
80
+ export interface IVaultSecretResponse {
81
+ data: Record<string, any>;
82
+ lease_id?: string;
83
+ lease_duration?: number;
84
+ renewable?: boolean;
85
+ request_id?: string;
86
+ }
87
+ export interface IVaultSecret {
88
+ data: Record<string, any>;
89
+ leaseId?: string;
90
+ leaseDuration: number;
91
+ renewable: boolean;
92
+ metadata?: {
93
+ createdTime: string;
94
+ deletionTime: string;
95
+ destroyed: boolean;
96
+ version: number;
97
+ };
98
+ }
99
+ export interface VaultPropertyMetadata {
100
+ path: string;
101
+ engine: VaultEngineType;
102
+ key?: string;
103
+ refreshBuffer?: number;
104
+ required: boolean;
105
+ propertyName: string;
106
+ propertyType: string;
107
+ }
108
+ export interface VaultCacheEntry {
109
+ value: any;
110
+ secret: IVaultSecret;
111
+ cachedAt: number;
112
+ expiresAt: number;
113
+ refreshAt: number;
114
+ propertyName: string;
115
+ vaultPath: string;
116
+ }
117
+ export interface VaultHealth {
118
+ connected: boolean;
119
+ authenticated: boolean;
120
+ cacheSize: number;
121
+ refreshQueueSize: number;
122
+ lastRefreshTime: number;
123
+ errors: VaultError[];
124
+ }
125
+ export interface VaultError {
126
+ timestamp: number;
127
+ path: string;
128
+ error: string;
129
+ retryable: boolean;
130
+ }
131
+ export interface IRefreshStatus {
132
+ propertyName: string;
133
+ vaultPath: string;
134
+ scheduled: boolean;
135
+ refreshAt: number;
136
+ timeUntilRefresh: number;
137
+ lastRefresh: number;
138
+ refreshCount: number;
139
+ }
140
+ export interface IVaultHealthDetails {
141
+ connected: boolean;
142
+ authenticated: boolean;
143
+ cacheSize: number;
144
+ refreshQueueSize: number;
145
+ lastRefreshTime: number;
146
+ errors: VaultError[];
147
+ refreshStatus: IRefreshStatus[];
148
+ }
149
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/vault/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("reflect-metadata");
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/vault/types.ts"],"names":[],"mappings":";;AAKA,4BAA0B"}
@@ -0,0 +1,20 @@
1
+ import { IVaultSecret, VaultCacheEntry, VaultPropertyMetadata } from './types';
2
+ export declare class VaultCache {
3
+ private cache;
4
+ private propertyToPath;
5
+ private pathToProperties;
6
+ get(propertyName: string): any | null;
7
+ set(propertyName: string, vaultPath: string, secret: IVaultSecret, metadata: VaultPropertyMetadata): void;
8
+ private extractValue;
9
+ invalidate(vaultPath: string): void;
10
+ invalidateProperty(propertyName: string): void;
11
+ getEntry(propertyName: string): VaultCacheEntry | undefined;
12
+ getPropertiesForPath(vaultPath: string): string[];
13
+ getPathForProperty(propertyName: string): string | undefined;
14
+ has(propertyName: string): boolean;
15
+ getEntriesNeedingRefresh(): VaultCacheEntry[];
16
+ clear(): void;
17
+ size(): number;
18
+ getCachedProperties(): string[];
19
+ }
20
+ //# sourceMappingURL=vault-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-cache.d.ts","sourceRoot":"","sources":["../../../src/vault/vault-cache.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAK/E,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,gBAAgB,CAAuC;IAO/D,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAkBrC,GAAG,CACD,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,qBAAqB,GAC9B,IAAI;IAoDP,OAAO,CAAC,YAAY;IA6BpB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAmBnC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAc9C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAO3D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAQjD,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAO5D,GAAG,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAkBlC,wBAAwB,IAAI,eAAe,EAAE;IAgB7C,KAAK,IAAI,IAAI;IAcb,IAAI,IAAI,MAAM;IAOd,mBAAmB,IAAI,MAAM,EAAE;CAGhC"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.VaultCache = void 0;
7
+ const nconf_1 = __importDefault(require("nconf"));
8
+ class VaultCache {
9
+ constructor() {
10
+ this.cache = new Map();
11
+ this.propertyToPath = new Map();
12
+ this.pathToProperties = new Map();
13
+ }
14
+ get(propertyName) {
15
+ const entry = this.cache.get(propertyName);
16
+ if (!entry) {
17
+ return null;
18
+ }
19
+ if (Date.now() > entry.expiresAt) {
20
+ this.cache.delete(propertyName);
21
+ return null;
22
+ }
23
+ return entry.value;
24
+ }
25
+ set(propertyName, vaultPath, secret, metadata) {
26
+ var _a;
27
+ const value = this.extractValue(secret, metadata);
28
+ const now = Date.now();
29
+ const leaseDurationMs = secret.leaseDuration * 1000;
30
+ const expiresAt = secret.leaseDuration > 0 ? now + leaseDurationMs : now + 3600000;
31
+ const defaultBufferMs = Math.min(leaseDurationMs * 0.1, 300000);
32
+ const refreshBufferMs = metadata.refreshBuffer ? metadata.refreshBuffer * 1000 : defaultBufferMs;
33
+ const refreshAt = secret.leaseDuration > 0 ? expiresAt - refreshBufferMs : expiresAt;
34
+ const entry = {
35
+ value,
36
+ secret,
37
+ cachedAt: now,
38
+ expiresAt,
39
+ refreshAt,
40
+ propertyName,
41
+ vaultPath
42
+ };
43
+ this.cache.set(propertyName, entry);
44
+ this.propertyToPath.set(propertyName, vaultPath);
45
+ const properties = this.pathToProperties.get(vaultPath) || new Set();
46
+ properties.add(propertyName);
47
+ this.pathToProperties.set(vaultPath, properties);
48
+ const overridesStore = (_a = nconf_1.default.stores) === null || _a === void 0 ? void 0 : _a.overrides;
49
+ const existingOverrides = (overridesStore === null || overridesStore === void 0 ? void 0 : overridesStore.store) || {};
50
+ nconf_1.default.overrides(Object.assign(Object.assign({}, existingOverrides), { [propertyName]: value }));
51
+ }
52
+ extractValue(secret, metadata) {
53
+ var _a;
54
+ const { engine, key } = metadata;
55
+ switch (engine) {
56
+ case 'kv-v1':
57
+ return key ? secret.data[key] : secret.data;
58
+ case 'kv-v2':
59
+ const kv2Data = ((_a = secret.data) === null || _a === void 0 ? void 0 : _a.data) || secret.data;
60
+ return key ? kv2Data[key] : kv2Data;
61
+ case 'database':
62
+ case 'aws':
63
+ case 'azure':
64
+ case 'gcp':
65
+ return key ? secret.data[key] : secret.data;
66
+ default:
67
+ return key ? secret.data[key] : secret.data;
68
+ }
69
+ }
70
+ invalidate(vaultPath) {
71
+ const properties = this.pathToProperties.get(vaultPath);
72
+ if (!properties) {
73
+ return;
74
+ }
75
+ for (const propertyName of properties) {
76
+ this.cache.delete(propertyName);
77
+ this.propertyToPath.delete(propertyName);
78
+ nconf_1.default.remove(propertyName);
79
+ }
80
+ this.pathToProperties.delete(vaultPath);
81
+ }
82
+ invalidateProperty(propertyName) {
83
+ const vaultPath = this.propertyToPath.get(propertyName);
84
+ if (vaultPath) {
85
+ this.invalidate(vaultPath);
86
+ }
87
+ else {
88
+ this.cache.delete(propertyName);
89
+ nconf_1.default.remove(propertyName);
90
+ }
91
+ }
92
+ getEntry(propertyName) {
93
+ return this.cache.get(propertyName);
94
+ }
95
+ getPropertiesForPath(vaultPath) {
96
+ const properties = this.pathToProperties.get(vaultPath);
97
+ return properties ? Array.from(properties) : [];
98
+ }
99
+ getPathForProperty(propertyName) {
100
+ return this.propertyToPath.get(propertyName);
101
+ }
102
+ has(propertyName) {
103
+ const entry = this.cache.get(propertyName);
104
+ if (!entry) {
105
+ return false;
106
+ }
107
+ if (Date.now() > entry.expiresAt) {
108
+ this.cache.delete(propertyName);
109
+ return false;
110
+ }
111
+ return true;
112
+ }
113
+ getEntriesNeedingRefresh() {
114
+ const now = Date.now();
115
+ const entries = [];
116
+ for (const entry of this.cache.values()) {
117
+ if (entry.refreshAt <= now && entry.expiresAt > now) {
118
+ entries.push(entry);
119
+ }
120
+ }
121
+ return entries;
122
+ }
123
+ clear() {
124
+ for (const propertyName of this.cache.keys()) {
125
+ nconf_1.default.remove(propertyName);
126
+ }
127
+ this.cache.clear();
128
+ this.propertyToPath.clear();
129
+ this.pathToProperties.clear();
130
+ }
131
+ size() {
132
+ return this.cache.size;
133
+ }
134
+ getCachedProperties() {
135
+ return Array.from(this.cache.keys());
136
+ }
137
+ }
138
+ exports.VaultCache = VaultCache;
139
+ //# sourceMappingURL=vault-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-cache.js","sourceRoot":"","sources":["../../../src/vault/vault-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { IVaultConfigOptions, IVaultHealthDetails, VaultHealth } from './types';
2
+ export declare class VaultIntegration {
3
+ private provider;
4
+ private cache;
5
+ private refreshManager;
6
+ private initialized;
7
+ private config;
8
+ private errors;
9
+ constructor(config: IVaultConfigOptions);
10
+ initialize(): Promise<void>;
11
+ loadSecrets<T extends object>(configOrClass: T | (new () => T)): Promise<void>;
12
+ getSecret(propertyName: string): any | null;
13
+ isInitialized(): boolean;
14
+ getHealth(): VaultHealth;
15
+ getHealthDetails(): IVaultHealthDetails;
16
+ invalidateCache(vaultPath: string): void;
17
+ invalidateProperty(propertyName: string): void;
18
+ shutdown(): void;
19
+ private groupByPath;
20
+ private groupByFullPath;
21
+ private constructFullPath;
22
+ private recordError;
23
+ private isRetryableError;
24
+ private sanitizeError;
25
+ private sanitizePath;
26
+ }
27
+ //# sourceMappingURL=vault-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault-integration.d.ts","sourceRoot":"","sources":["../../../src/vault/vault-integration.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EAEZ,MAAM,SAAS,CAAC;AAOjB,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAqF;gBAEvF,MAAM,EAAE,mBAAmB;IAYjC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAsEpF,SAAS,CAAC,YAAY,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAO3C,aAAa,IAAI,OAAO;IAOxB,SAAS,IAAI,WAAW;IAmBxB,gBAAgB,IAAI,mBAAmB;IAmBvC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAYxC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAQ9C,QAAQ,IAAI,IAAI;IAShB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,aAAa;IAiBrB,OAAO,CAAC,YAAY;CAWrB"}