voltenv-sdk 1.0.0 → 1.1.0

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/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # VoltEnv Node.js SDK
2
+
3
+ TypeScript SDK for VoltEnv - The Environment Variable Management System.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install voltenv-sdk
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ### Initialization
14
+
15
+ ```typescript
16
+ import VoltEnv from 'voltenv-sdk';
17
+
18
+ const voltenv = new VoltEnv({
19
+ apiKey: 'your_api_key',
20
+ // Optional
21
+ baseURL: 'https://api.voltenv.com', // Defaults to official API
22
+ cache: true, // Enable local caching (default: true)
23
+ timeout: 5000 // Request timeout in ms
24
+ });
25
+ ```
26
+
27
+ ### Get a Variable
28
+
29
+ ```typescript
30
+ // Get a specific variable from an environment
31
+ const port = await voltenv.get('development', 'PORT', '3000');
32
+ console.log(port); // Returns value or default '3000'
33
+ ```
34
+
35
+ ### Get All Variables
36
+
37
+ ```typescript
38
+ // Get all variables for an environment
39
+ const variables = await voltenv.all('development');
40
+ console.log(variables);
41
+ // { PORT: "3000", DB_HOST: "localhost", ... }
42
+ ```
43
+
44
+ ### Set a Variable
45
+
46
+ ```typescript
47
+ await voltenv.set('development', 'API_KEY', 'secret-value');
48
+ ```
49
+
50
+ ### Delete a Variable
51
+
52
+ ```typescript
53
+ await voltenv.delete('development', 'API_KEY');
54
+ ```
55
+
56
+ ### Caching
57
+ The SDK includes a built-in LRU cache to minimize API requests. You can manually sync/refresh the cache:
58
+
59
+ ```typescript
60
+ // Force refresh all variables for an environment from the server
61
+ await voltenv.sync('development');
62
+ ```
package/dist/index.d.ts CHANGED
@@ -2,11 +2,24 @@ import { VoltEnvOptions } from './utilities/errorHandler';
2
2
  export declare class VoltEnv {
3
3
  private httpClient;
4
4
  private cacheService;
5
+ private resolvedPrefix;
5
6
  /**
6
7
  * Initialize the VoltEnv SDK
7
8
  * @param options Configuration options or API key string
8
9
  */
9
10
  constructor(options: VoltEnvOptions | string);
11
+ /**
12
+ * Resolve the prefix based on framework or explicit option
13
+ */
14
+ private resolvePrefix;
15
+ /**
16
+ * Try to detect the framework from package.json
17
+ */
18
+ private detectFramework;
19
+ /**
20
+ * Apply prefix to a key if it's missing
21
+ */
22
+ private applyPrefix;
10
23
  /**
11
24
  * Get a variable from a specific environment
12
25
  * @param environment The environment name (e.g., 'production', 'development')
@@ -28,6 +41,21 @@ export declare class VoltEnv {
28
41
  * @param value The variable value
29
42
  */
30
43
  set(environment: string, key: string, value: string): Promise<void>;
44
+ /**
45
+ * Set a secret variable in a specific environment
46
+ * @param environment The environment name
47
+ * @param key The variable key
48
+ * @param value The secret value
49
+ */
50
+ setSecret(environment: string, key: string, value: string): Promise<void>;
51
+ /**
52
+ * Watch for changes in an environment
53
+ * @param environment The environment name
54
+ * @param callback Function to call when changes occur
55
+ * @param interval Polling interval in milliseconds (default: 30000)
56
+ * @returns A function to stop watching
57
+ */
58
+ watch(environment: string, callback: (variables: Record<string, string>) => void, interval?: number): () => void;
31
59
  /**
32
60
  * Set multiple variables at once
33
61
  * @param environment The environment name
@@ -46,11 +74,68 @@ export declare class VoltEnv {
46
74
  * @param keys Array of keys to delete
47
75
  */
48
76
  deleteMany(environment: string, keys: string[]): Promise<void>;
77
+ /**
78
+ * Get metadata for a specific variable
79
+ * @param environment The environment name
80
+ * @param key The variable key
81
+ */
82
+ getMetadata(environment: string, key: string): Promise<Record<string, any>>;
83
+ /**
84
+ * Get the audit history of a variable
85
+ * @param environment The environment name
86
+ * @param key The variable key
87
+ */
88
+ getHistory(environment: string, key: string): Promise<any[]>;
89
+ /**
90
+ * Export all variables in an environment to a .env file
91
+ * @param environment The environment name
92
+ * @param filePath Path to the .env file to create/overwrite
93
+ */
94
+ exportToEnvFile(environment: string, filePath: string): Promise<void>;
95
+ /**
96
+ * Load variables from a .env file and set them in an environment
97
+ * @param environment The environment name
98
+ * @param filePath Path to the .env file to read from
99
+ */
100
+ loadFromEnvFile(environment: string, filePath: string): Promise<void>;
49
101
  /**
50
102
  * List all environments accessible by this API key
51
103
  * @returns Array of environment names
52
104
  */
53
105
  listEnvironments(): Promise<string[]>;
106
+ /**
107
+ * Create a new environment
108
+ * @param name The name of the environment
109
+ * @param options Optional configuration for the environment
110
+ */
111
+ createEnvironment(name: string, options?: Record<string, any>): Promise<void>;
112
+ /**
113
+ * Update an existing environment
114
+ * @param name The current name of the environment
115
+ * @param update Data to update (e.g., { name: 'new-name' })
116
+ */
117
+ updateEnvironment(name: string, update: Record<string, any>): Promise<void>;
118
+ /**
119
+ * Delete an environment
120
+ * @param name The name of the environment to delete
121
+ */
122
+ deleteEnvironment(name: string): Promise<void>;
123
+ /**
124
+ * List all team members in the project
125
+ * @returns Array of team member objects
126
+ */
127
+ listTeamMembers(): Promise<any[]>;
128
+ /**
129
+ * Invite a new team member
130
+ * @param email The email address of the person to invite
131
+ * @param role The role to assign (e.g., 'admin', 'viewer')
132
+ */
133
+ inviteTeamMember(email: string, role: string): Promise<void>;
134
+ /**
135
+ * Remove a team member
136
+ * @param email The email address of the person to remove
137
+ */
138
+ removeTeamMember(email: string): Promise<void>;
54
139
  /**
55
140
  * Sync/refresh variables from server (bypassing cache)
56
141
  *If an environment is provided, it only syncs that environment.
@@ -58,6 +143,17 @@ export declare class VoltEnv {
58
143
  * @param environment Optional environment to sync
59
144
  */
60
145
  sync(environment?: string): Promise<void>;
146
+ /**
147
+ * Get all cached keys (for debugging)
148
+ */
149
+ getCacheKeys(): string[];
150
+ /**
151
+ * Get cache statistics
152
+ */
153
+ getCacheStats(): {
154
+ size: number;
155
+ keys: string[];
156
+ };
61
157
  }
62
158
  export default VoltEnv;
63
159
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAIxE,qBAAa,OAAO;IAChB,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAsB;IAE1C;;;OAGG;gBACS,OAAO,EAAE,cAAc,GAAG,MAAM;IAuB5C;;;;;;OAMG;IACG,GAAG,CACL,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA2B9B;;;;OAIG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAgBlE;;;;;OAKG;IACG,GAAG,CACL,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IAUhB;;;;OAIG;IACG,OAAO,CACT,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;OAIG;IACG,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ7D;;;;OAIG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpE;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAO3C;;;;;OAKG;IACG,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBlD;AAED,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,6 +1,41 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.VoltEnv = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
4
39
  const errorHandler_1 = require("./utilities/errorHandler");
5
40
  const httpClient_1 = require("./utilities/httpClient");
6
41
  const cacheService_1 = require("./utilities/cacheService");
@@ -10,10 +45,11 @@ class VoltEnv {
10
45
  * @param options Configuration options or API key string
11
46
  */
12
47
  constructor(options) {
48
+ this.resolvedPrefix = '';
13
49
  const config = typeof options === 'string'
14
50
  ? { apiKey: options }
15
51
  : options;
16
- const { apiKey, baseURL = 'https://api.voltenv.com', timeout = 5000, cache = true, onError } = config;
52
+ const { apiKey, baseURL = 'https://api.voltenv.com', timeout = 5000, cache = true, onError, framework, prefix } = config;
17
53
  this.httpClient = new httpClient_1.HttpClient({
18
54
  apiKey,
19
55
  baseURL,
@@ -21,6 +57,53 @@ class VoltEnv {
21
57
  onError
22
58
  });
23
59
  this.cacheService = cache ? new cacheService_1.CacheService() : null;
60
+ this.resolvedPrefix = this.resolvePrefix(framework, prefix);
61
+ }
62
+ /**
63
+ * Resolve the prefix based on framework or explicit option
64
+ */
65
+ resolvePrefix(framework, explicitPrefix) {
66
+ if (explicitPrefix !== undefined)
67
+ return explicitPrefix;
68
+ const fw = framework || this.detectFramework();
69
+ switch (fw) {
70
+ case 'vite': return 'VITE_';
71
+ case 'nextjs': return 'NEXT_PUBLIC_';
72
+ case 'cra': return 'REACT_APP_';
73
+ default: return '';
74
+ }
75
+ }
76
+ /**
77
+ * Try to detect the framework from package.json
78
+ */
79
+ detectFramework() {
80
+ try {
81
+ const packageJsonPath = path.join(process.cwd(), 'package.json');
82
+ if (fs.existsSync(packageJsonPath)) {
83
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));
84
+ const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
85
+ if (deps['vite'])
86
+ return 'vite';
87
+ if (deps['next'])
88
+ return 'nextjs';
89
+ if (deps['react-scripts'])
90
+ return 'cra';
91
+ }
92
+ }
93
+ catch (error) {
94
+ // Silently fail and return empty string if package.json cannot be read/parsed
95
+ }
96
+ return '';
97
+ }
98
+ /**
99
+ * Apply prefix to a key if it's missing
100
+ */
101
+ applyPrefix(key) {
102
+ if (!this.resolvedPrefix)
103
+ return key;
104
+ if (key.startsWith(this.resolvedPrefix))
105
+ return key;
106
+ return `${this.resolvedPrefix}${key}`;
24
107
  }
25
108
  /**
26
109
  * Get a variable from a specific environment
@@ -30,12 +113,13 @@ class VoltEnv {
30
113
  * @returns The variable value or the default value
31
114
  */
32
115
  async get(environment, key, defaultValue) {
33
- const cacheKey = `${environment}:${key}`;
116
+ const prefixedKey = this.applyPrefix(key);
117
+ const cacheKey = `${environment}:${prefixedKey}`;
34
118
  if (this.cacheService?.has(cacheKey)) {
35
119
  return this.cacheService.get(cacheKey);
36
120
  }
37
121
  try {
38
- const data = await this.httpClient.get(`/v1/variables/${environment}/${key}`);
122
+ const data = await this.httpClient.get(`/v1/variables/${environment}/${prefixedKey}`);
39
123
  const value = data.value;
40
124
  if (value && this.cacheService) {
41
125
  this.cacheService.set(cacheKey, value);
@@ -71,24 +155,72 @@ class VoltEnv {
71
155
  * @param value The variable value
72
156
  */
73
157
  async set(environment, key, value) {
74
- await this.httpClient.put(`/v1/variables/${environment}/${key}`, {
158
+ const prefixedKey = this.applyPrefix(key);
159
+ await this.httpClient.put(`/v1/variables/${environment}/${prefixedKey}`, {
75
160
  value,
76
161
  });
77
162
  if (this.cacheService) {
78
- this.cacheService.set(`${environment}:${key}`, value);
163
+ this.cacheService.set(`${environment}:${prefixedKey}`, value);
79
164
  }
80
165
  }
166
+ /**
167
+ * Set a secret variable in a specific environment
168
+ * @param environment The environment name
169
+ * @param key The variable key
170
+ * @param value The secret value
171
+ */
172
+ async setSecret(environment, key, value) {
173
+ const prefixedKey = this.applyPrefix(key);
174
+ await this.httpClient.put(`/v1/variables/${environment}/${prefixedKey}`, {
175
+ value,
176
+ isSecret: true
177
+ });
178
+ if (this.cacheService) {
179
+ this.cacheService.set(`${environment}:${prefixedKey}`, value);
180
+ }
181
+ }
182
+ /**
183
+ * Watch for changes in an environment
184
+ * @param environment The environment name
185
+ * @param callback Function to call when changes occur
186
+ * @param interval Polling interval in milliseconds (default: 30000)
187
+ * @returns A function to stop watching
188
+ */
189
+ watch(environment, callback, interval = 30000) {
190
+ let previousVariables = '';
191
+ const fetchAndCompare = async () => {
192
+ try {
193
+ const variables = await this.getAll(environment);
194
+ const currentVariables = JSON.stringify(variables);
195
+ if (currentVariables !== previousVariables) {
196
+ previousVariables = currentVariables;
197
+ callback(variables);
198
+ }
199
+ }
200
+ catch (error) {
201
+ console.error(`Error in VoltEnv watcher for ${environment}:`, error);
202
+ }
203
+ };
204
+ // Initial fetch
205
+ fetchAndCompare();
206
+ const timer = setInterval(fetchAndCompare, interval);
207
+ return () => clearInterval(timer);
208
+ }
81
209
  /**
82
210
  * Set multiple variables at once
83
211
  * @param environment The environment name
84
212
  * @param variables A record of key-value pairs to set
85
213
  */
86
214
  async setMany(environment, variables) {
215
+ const prefixedVariables = {};
216
+ Object.entries(variables).forEach(([key, value]) => {
217
+ prefixedVariables[this.applyPrefix(key)] = value;
218
+ });
87
219
  await this.httpClient.post(`/v1/variables/${environment}/batch`, {
88
- variables,
220
+ variables: prefixedVariables,
89
221
  });
90
222
  if (this.cacheService) {
91
- Object.entries(variables).forEach(([key, value]) => {
223
+ Object.entries(prefixedVariables).forEach(([key, value]) => {
92
224
  this.cacheService.set(`${environment}:${key}`, value);
93
225
  });
94
226
  }
@@ -99,9 +231,10 @@ class VoltEnv {
99
231
  * @param key The variable key
100
232
  */
101
233
  async delete(environment, key) {
102
- await this.httpClient.delete(`/v1/variables/${environment}/${key}`);
234
+ const prefixedKey = this.applyPrefix(key);
235
+ await this.httpClient.delete(`/v1/variables/${environment}/${prefixedKey}`);
103
236
  if (this.cacheService) {
104
- this.cacheService.delete(`${environment}:${key}`);
237
+ this.cacheService.delete(`${environment}:${prefixedKey}`);
105
238
  }
106
239
  }
107
240
  /**
@@ -110,15 +243,78 @@ class VoltEnv {
110
243
  * @param keys Array of keys to delete
111
244
  */
112
245
  async deleteMany(environment, keys) {
246
+ const prefixedKeys = keys.map(k => this.applyPrefix(k));
113
247
  await this.httpClient.post(`/v1/variables/${environment}/batch-delete`, {
114
- keys,
248
+ keys: prefixedKeys,
115
249
  });
116
250
  if (this.cacheService) {
117
- keys.forEach(key => {
251
+ prefixedKeys.forEach(key => {
118
252
  this.cacheService.delete(`${environment}:${key}`);
119
253
  });
120
254
  }
121
255
  }
256
+ /**
257
+ * Get metadata for a specific variable
258
+ * @param environment The environment name
259
+ * @param key The variable key
260
+ */
261
+ async getMetadata(environment, key) {
262
+ const prefixedKey = this.applyPrefix(key);
263
+ const data = await this.httpClient.get(`/v1/variables/${environment}/${prefixedKey}/metadata`);
264
+ return data;
265
+ }
266
+ /**
267
+ * Get the audit history of a variable
268
+ * @param environment The environment name
269
+ * @param key The variable key
270
+ */
271
+ async getHistory(environment, key) {
272
+ const prefixedKey = this.applyPrefix(key);
273
+ const data = await this.httpClient.get(`/v1/variables/${environment}/${prefixedKey}/history`);
274
+ return data.history;
275
+ }
276
+ /**
277
+ * Export all variables in an environment to a .env file
278
+ * @param environment The environment name
279
+ * @param filePath Path to the .env file to create/overwrite
280
+ */
281
+ async exportToEnvFile(environment, filePath) {
282
+ const variables = await this.getAll(environment);
283
+ const content = Object.entries(variables)
284
+ .map(([key, value]) => `${key}=${value}`)
285
+ .join('\n');
286
+ const absolutePath = path.isAbsolute(filePath)
287
+ ? filePath
288
+ : path.join(process.cwd(), filePath);
289
+ fs.writeFileSync(absolutePath, content, 'utf8');
290
+ }
291
+ /**
292
+ * Load variables from a .env file and set them in an environment
293
+ * @param environment The environment name
294
+ * @param filePath Path to the .env file to read from
295
+ */
296
+ async loadFromEnvFile(environment, filePath) {
297
+ const absolutePath = path.isAbsolute(filePath)
298
+ ? filePath
299
+ : path.join(process.cwd(), filePath);
300
+ if (!fs.existsSync(absolutePath)) {
301
+ throw new Error(`File not found: ${absolutePath}`);
302
+ }
303
+ const content = fs.readFileSync(absolutePath, 'utf8');
304
+ const variables = {};
305
+ content.split(/\r?\n/).forEach(line => {
306
+ const trimmedLine = line.trim();
307
+ if (trimmedLine && !trimmedLine.startsWith('#')) {
308
+ const [key, ...valueParts] = trimmedLine.split('=');
309
+ if (key) {
310
+ variables[key.trim()] = valueParts.join('=').trim();
311
+ }
312
+ }
313
+ });
314
+ if (Object.keys(variables).length > 0) {
315
+ await this.setMany(environment, variables);
316
+ }
317
+ }
122
318
  /**
123
319
  * List all environments accessible by this API key
124
320
  * @returns Array of environment names
@@ -127,6 +323,61 @@ class VoltEnv {
127
323
  const data = await this.httpClient.get('/v1/environments');
128
324
  return data.environments;
129
325
  }
326
+ /**
327
+ * Create a new environment
328
+ * @param name The name of the environment
329
+ * @param options Optional configuration for the environment
330
+ */
331
+ async createEnvironment(name, options) {
332
+ await this.httpClient.post('/v1/environments', {
333
+ name,
334
+ ...options
335
+ });
336
+ }
337
+ /**
338
+ * Update an existing environment
339
+ * @param name The current name of the environment
340
+ * @param update Data to update (e.g., { name: 'new-name' })
341
+ */
342
+ async updateEnvironment(name, update) {
343
+ await this.httpClient.put(`/v1/environments/${name}`, update);
344
+ }
345
+ /**
346
+ * Delete an environment
347
+ * @param name The name of the environment to delete
348
+ */
349
+ async deleteEnvironment(name) {
350
+ await this.httpClient.delete(`/v1/environments/${name}`);
351
+ if (this.cacheService) {
352
+ this.cacheService.deleteByPrefix(`${name}:`);
353
+ }
354
+ }
355
+ /**
356
+ * List all team members in the project
357
+ * @returns Array of team member objects
358
+ */
359
+ async listTeamMembers() {
360
+ const data = await this.httpClient.get('/v1/team/members');
361
+ return data.members;
362
+ }
363
+ /**
364
+ * Invite a new team member
365
+ * @param email The email address of the person to invite
366
+ * @param role The role to assign (e.g., 'admin', 'viewer')
367
+ */
368
+ async inviteTeamMember(email, role) {
369
+ await this.httpClient.post('/v1/team/invite', {
370
+ email,
371
+ role
372
+ });
373
+ }
374
+ /**
375
+ * Remove a team member
376
+ * @param email The email address of the person to remove
377
+ */
378
+ async removeTeamMember(email) {
379
+ await this.httpClient.delete(`/v1/team/members/${email}`);
380
+ }
130
381
  /**
131
382
  * Sync/refresh variables from server (bypassing cache)
132
383
  *If an environment is provided, it only syncs that environment.
@@ -150,6 +401,27 @@ class VoltEnv {
150
401
  }
151
402
  }
152
403
  }
404
+ /**
405
+ * Get all cached keys (for debugging)
406
+ */
407
+ getCacheKeys() {
408
+ if (!this.cacheService) {
409
+ return [];
410
+ }
411
+ return Array.from(this.cacheService.keys());
412
+ }
413
+ /**
414
+ * Get cache statistics
415
+ */
416
+ getCacheStats() {
417
+ if (!this.cacheService) {
418
+ return { size: 0, keys: [] };
419
+ }
420
+ return {
421
+ size: this.cacheService.size,
422
+ keys: Array.from(this.cacheService.keys())
423
+ };
424
+ }
153
425
  }
154
426
  exports.VoltEnv = VoltEnv;
155
427
  exports.default = VoltEnv;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
- /**
2
- * Simple in-memory cache service implementation
3
- */
1
+ export interface CacheServiceOptions {
2
+ max?: number;
3
+ ttl?: number;
4
+ maxSize?: number;
5
+ sizeCalculation?: (value: any, key: string) => number;
6
+ }
4
7
  export declare class CacheService {
5
8
  private cache;
6
- constructor();
9
+ constructor(options?: CacheServiceOptions);
7
10
  /**
8
11
  * Get a value from the cache
9
12
  */
@@ -11,7 +14,7 @@ export declare class CacheService {
11
14
  /**
12
15
  * Set a value in the cache
13
16
  */
14
- set(key: string, value: any): void;
17
+ set(key: string, value: any, ttl?: number): void;
15
18
  /**
16
19
  * Check if a key exists in the cache
17
20
  */
@@ -19,7 +22,7 @@ export declare class CacheService {
19
22
  /**
20
23
  * Delete a value from the cache
21
24
  */
22
- delete(key: string): void;
25
+ delete(key: string): boolean;
23
26
  /**
24
27
  * Clear all values from the cache
25
28
  */
@@ -28,5 +31,17 @@ export declare class CacheService {
28
31
  * Delete all keys starting with a prefix
29
32
  */
30
33
  deleteByPrefix(prefix: string): void;
34
+ /**
35
+ * Get the current size of the cache
36
+ */
37
+ get size(): number;
38
+ /**
39
+ * Get all keys in the cache
40
+ */
41
+ keys(): IterableIterator<string>;
42
+ /**
43
+ * Get all values in the cache
44
+ */
45
+ values(): IterableIterator<any>;
31
46
  }
32
47
  //# sourceMappingURL=cacheService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cacheService.d.ts","sourceRoot":"","sources":["../../utilities/cacheService.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,KAAK,CAAmB;;IAMhC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAIlC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAOvC"}
1
+ {"version":3,"file":"cacheService.d.ts","sourceRoot":"","sources":["../../utilities/cacheService.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;CACzD;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,KAAK,CAAwB;gBAEzB,OAAO,GAAE,mBAAwB;IAS7C;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAIlC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAQhD;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IASpC;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC;IAIhC;;OAEG;IACH,MAAM,IAAI,gBAAgB,CAAC,GAAG,CAAC;CAGlC"}