@autonomaai/security-utils 1.0.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.
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Secret Management System for autonoma
3
+ *
4
+ * Provides secure secret storage, runtime injection, and rotation capabilities
5
+ * for sensitive configuration values like API keys and database credentials.
6
+ */
7
+ import { CredentialManager } from './credential-manager.js';
8
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
9
+ import { join } from 'path';
10
+ import { randomBytes } from 'crypto';
11
+ export class SecretManager {
12
+ credentialManager;
13
+ secrets = new Map();
14
+ secretsFile;
15
+ constructor(encryptionKey, secretsFile) {
16
+ this.credentialManager = new CredentialManager({
17
+ encryptionKey,
18
+ environment: process.env.NODE_ENV || 'development'
19
+ });
20
+ this.secretsFile = secretsFile || join(process.cwd(), '.secrets.enc');
21
+ this.loadSecrets();
22
+ }
23
+ /**
24
+ * Store a secret with optional rotation policy
25
+ */
26
+ async setSecret(name, value, options) {
27
+ const secret = {
28
+ name,
29
+ value,
30
+ description: options?.description,
31
+ rotationPolicy: options?.rotationPolicy,
32
+ tags: options?.tags || [],
33
+ createdAt: new Date(),
34
+ updatedAt: new Date(),
35
+ expiresAt: options?.expiresAt
36
+ };
37
+ this.secrets.set(name, secret);
38
+ await this.saveSecrets();
39
+ }
40
+ /**
41
+ * Retrieve a secret value
42
+ */
43
+ async getSecret(name) {
44
+ const secret = this.secrets.get(name);
45
+ if (!secret) {
46
+ return null;
47
+ }
48
+ // Check if secret has expired
49
+ if (secret.expiresAt && secret.expiresAt < new Date()) {
50
+ console.warn(`Secret '${name}' has expired`);
51
+ return null;
52
+ }
53
+ return secret.value;
54
+ }
55
+ /**
56
+ * Get secret metadata without exposing the value
57
+ */
58
+ getSecretMetadata(name) {
59
+ const secret = this.secrets.get(name);
60
+ if (!secret) {
61
+ return null;
62
+ }
63
+ return {
64
+ name: secret.name,
65
+ description: secret.description,
66
+ tags: secret.tags,
67
+ createdAt: secret.createdAt,
68
+ updatedAt: secret.updatedAt,
69
+ expiresAt: secret.expiresAt,
70
+ rotationPolicy: secret.rotationPolicy
71
+ };
72
+ }
73
+ /**
74
+ * List all secret names and metadata
75
+ */
76
+ listSecrets() {
77
+ return Array.from(this.secrets.values()).map(secret => ({
78
+ name: secret.name,
79
+ description: secret.description,
80
+ tags: secret.tags,
81
+ createdAt: secret.createdAt,
82
+ updatedAt: secret.updatedAt,
83
+ expiresAt: secret.expiresAt,
84
+ rotationPolicy: secret.rotationPolicy
85
+ }));
86
+ }
87
+ /**
88
+ * Rotate a secret value
89
+ */
90
+ async rotateSecret(name, newValue) {
91
+ const secret = this.secrets.get(name);
92
+ if (!secret) {
93
+ throw new Error(`Secret '${name}' not found`);
94
+ }
95
+ secret.value = newValue;
96
+ secret.updatedAt = new Date();
97
+ // Update expiry based on rotation policy
98
+ if (secret.rotationPolicy?.enabled && secret.rotationPolicy.intervalDays > 0) {
99
+ secret.expiresAt = new Date(Date.now() + secret.rotationPolicy.intervalDays * 24 * 60 * 60 * 1000);
100
+ }
101
+ await this.saveSecrets();
102
+ }
103
+ /**
104
+ * Delete a secret
105
+ */
106
+ async deleteSecret(name) {
107
+ const deleted = this.secrets.delete(name);
108
+ if (deleted) {
109
+ await this.saveSecrets();
110
+ }
111
+ return deleted;
112
+ }
113
+ /**
114
+ * Get secrets that need rotation
115
+ */
116
+ getSecretsNeedingRotation() {
117
+ const now = new Date();
118
+ return this.listSecrets().filter(secret => {
119
+ if (!secret.rotationPolicy?.enabled)
120
+ return false;
121
+ if (!secret.expiresAt)
122
+ return false;
123
+ const notifyDate = new Date(secret.expiresAt.getTime() -
124
+ (secret.rotationPolicy.notifyBeforeExpiry * 24 * 60 * 60 * 1000));
125
+ return now >= notifyDate;
126
+ });
127
+ }
128
+ /**
129
+ * Inject secrets into environment variables
130
+ */
131
+ async injectSecretsIntoEnv() {
132
+ for (const [name, secret] of this.secrets) {
133
+ // Only inject if environment variable is not already set
134
+ if (!process.env[name]) {
135
+ process.env[name] = secret.value;
136
+ }
137
+ }
138
+ }
139
+ /**
140
+ * Generate secure random secret value
141
+ */
142
+ generateSecretValue(length = 32) {
143
+ return randomBytes(length).toString('hex');
144
+ }
145
+ /**
146
+ * Validate secret strength
147
+ */
148
+ validateSecretStrength(value) {
149
+ const feedback = [];
150
+ let score = 0;
151
+ // Length check
152
+ if (value.length >= 32) {
153
+ score += 25;
154
+ }
155
+ else if (value.length >= 16) {
156
+ score += 15;
157
+ feedback.push('Consider using a longer secret (32+ characters)');
158
+ }
159
+ else {
160
+ feedback.push('Secret should be at least 16 characters long');
161
+ }
162
+ // Character variety
163
+ const hasUpper = /[A-Z]/.test(value);
164
+ const hasLower = /[a-z]/.test(value);
165
+ const hasNumbers = /\d/.test(value);
166
+ const hasSpecial = /[!@#$%^&*(),.?":{}|<>]/.test(value);
167
+ const varietyCount = [hasUpper, hasLower, hasNumbers, hasSpecial].filter(Boolean).length;
168
+ score += varietyCount * 10;
169
+ if (varietyCount < 3) {
170
+ feedback.push('Secret should include uppercase, lowercase, numbers, and special characters');
171
+ }
172
+ // Entropy check (simplified)
173
+ const uniqueChars = new Set(value).size;
174
+ const entropyScore = (uniqueChars / value.length) * 25;
175
+ score += entropyScore;
176
+ if (uniqueChars < value.length * 0.5) {
177
+ feedback.push('Secret has too many repeated characters');
178
+ }
179
+ // Common patterns check
180
+ const commonPatterns = [
181
+ /123456/,
182
+ /password/i,
183
+ /admin/i,
184
+ /qwerty/i,
185
+ /(.)\1{3,}/ // 4+ repeated characters
186
+ ];
187
+ let hasCommonPattern = false;
188
+ for (const pattern of commonPatterns) {
189
+ if (pattern.test(value)) {
190
+ hasCommonPattern = true;
191
+ break;
192
+ }
193
+ }
194
+ if (hasCommonPattern) {
195
+ score -= 20;
196
+ feedback.push('Secret contains common patterns that should be avoided');
197
+ }
198
+ const isStrong = score >= 70 && !hasCommonPattern;
199
+ return {
200
+ isStrong,
201
+ score: Math.max(0, Math.min(100, score)),
202
+ feedback: feedback.length > 0 ? feedback : ['Secret strength is good']
203
+ };
204
+ }
205
+ /**
206
+ * Load secrets from encrypted file
207
+ */
208
+ loadSecrets() {
209
+ if (!existsSync(this.secretsFile)) {
210
+ return;
211
+ }
212
+ try {
213
+ const encryptedData = readFileSync(this.secretsFile, 'utf8');
214
+ const decryptedData = this.credentialManager['decrypt'](encryptedData);
215
+ const secretsData = JSON.parse(decryptedData);
216
+ for (const secretData of secretsData) {
217
+ this.secrets.set(secretData.name, {
218
+ ...secretData,
219
+ createdAt: new Date(secretData.createdAt),
220
+ updatedAt: new Date(secretData.updatedAt),
221
+ expiresAt: secretData.expiresAt ? new Date(secretData.expiresAt) : undefined
222
+ });
223
+ }
224
+ }
225
+ catch (error) {
226
+ console.warn(`Failed to load secrets: ${error instanceof Error ? error.message : 'Unknown error'}`);
227
+ }
228
+ }
229
+ /**
230
+ * Save secrets to encrypted file
231
+ */
232
+ async saveSecrets() {
233
+ try {
234
+ const secretsArray = Array.from(this.secrets.values());
235
+ const jsonData = JSON.stringify(secretsArray, null, 2);
236
+ const encryptedData = this.credentialManager['encrypt'](jsonData);
237
+ writeFileSync(this.secretsFile, encryptedData, 'utf8');
238
+ }
239
+ catch (error) {
240
+ throw new Error(`Failed to save secrets: ${error instanceof Error ? error.message : 'Unknown error'}`);
241
+ }
242
+ }
243
+ }
244
+ /**
245
+ * Runtime secret injection utility
246
+ */
247
+ export class RuntimeSecretInjector {
248
+ secretManager;
249
+ constructor(secretManager) {
250
+ this.secretManager = secretManager;
251
+ }
252
+ /**
253
+ * Replace placeholders in configuration with actual secret values
254
+ */
255
+ async injectSecrets(config) {
256
+ const injectedConfig = JSON.parse(JSON.stringify(config)); // Deep clone
257
+ await this.recursivelyInjectSecrets(injectedConfig);
258
+ return injectedConfig;
259
+ }
260
+ /**
261
+ * Recursively find and replace secret placeholders
262
+ */
263
+ async recursivelyInjectSecrets(obj) {
264
+ if (typeof obj === 'string') {
265
+ return;
266
+ }
267
+ if (Array.isArray(obj)) {
268
+ for (let i = 0; i < obj.length; i++) {
269
+ if (typeof obj[i] === 'string' && obj[i].startsWith('{{') && obj[i].endsWith('}}')) {
270
+ const secretName = obj[i].slice(2, -2).trim();
271
+ const secretValue = await this.secretManager.getSecret(secretName);
272
+ if (secretValue !== null) {
273
+ obj[i] = secretValue;
274
+ }
275
+ }
276
+ else if (typeof obj[i] === 'object') {
277
+ await this.recursivelyInjectSecrets(obj[i]);
278
+ }
279
+ }
280
+ return;
281
+ }
282
+ if (typeof obj === 'object' && obj !== null) {
283
+ for (const [key, value] of Object.entries(obj)) {
284
+ if (typeof value === 'string' && value.startsWith('{{') && value.endsWith('}}')) {
285
+ const secretName = value.slice(2, -2).trim();
286
+ const secretValue = await this.secretManager.getSecret(secretName);
287
+ if (secretValue !== null) {
288
+ obj[key] = secretValue;
289
+ }
290
+ }
291
+ else if (typeof value === 'object') {
292
+ await this.recursivelyInjectSecrets(value);
293
+ }
294
+ }
295
+ }
296
+ }
297
+ /**
298
+ * Create environment variable mapping from secrets
299
+ */
300
+ async createEnvMapping() {
301
+ const secrets = this.secretManager.listSecrets();
302
+ const mapping = {};
303
+ for (const secretMeta of secrets) {
304
+ const value = await this.secretManager.getSecret(secretMeta.name);
305
+ if (value !== null) {
306
+ mapping[secretMeta.name] = value;
307
+ }
308
+ }
309
+ return mapping;
310
+ }
311
+ }
312
+ //# sourceMappingURL=secret-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret-manager.js","sourceRoot":"","sources":["../src/secret-manager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAc,MAAM,QAAQ,CAAC;AA8BjD,MAAM,OAAO,aAAa;IACP,iBAAiB,CAAoB;IACrC,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC1C,WAAW,CAAS;IAErC,YAAY,aAAsB,EAAE,WAAoB;QACtD,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC;YAC7C,aAAa;YACb,WAAW,EAAG,OAAO,CAAC,GAAG,CAAC,QAAkD,IAAI,aAAa;SAC9F,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,KAAa,EAAE,OAK5C;QACC,MAAM,MAAM,GAAiB;YAC3B,IAAI;YACJ,KAAK;YACL,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,cAAc,EAAE,OAAO,EAAE,cAAc;YACvC,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,OAAO,EAAE,SAAS;SAC9B,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QAED,8BAA8B;QAC9B,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,EAAE;YACrD,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,eAAe,CAAC,CAAC;YAC7C,OAAO,IAAI,CAAC;SACb;QAED,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,IAAY;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,QAAgB;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;SAC/C;QAED,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;QACxB,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE9B,yCAAyC;QACzC,IAAI,MAAM,CAAC,cAAc,EAAE,OAAO,IAAI,MAAM,CAAC,cAAc,CAAC,YAAY,GAAG,CAAC,EAAE;YAC5E,MAAM,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;SACpG;QAED,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,OAAO,EAAE;YACX,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;SAC1B;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,yBAAyB;QACvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO;gBAAE,OAAO,KAAK,CAAC;YAClD,IAAI,CAAC,MAAM,CAAC,SAAS;gBAAE,OAAO,KAAK,CAAC;YAEpC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE;gBACpD,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;YAEpE,OAAO,GAAG,IAAI,UAAU,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACzC,yDAAyD;YACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;aAClC;SACF;IACH,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,SAAiB,EAAE;QACrC,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAa;QAKlC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,eAAe;QACf,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE;YACtB,KAAK,IAAI,EAAE,CAAC;SACb;aAAM,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE;YAC7B,KAAK,IAAI,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;SAClE;aAAM;YACL,QAAQ,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;SAC/D;QAED,oBAAoB;QACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAExD,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QACzF,KAAK,IAAI,YAAY,GAAG,EAAE,CAAC;QAE3B,IAAI,YAAY,GAAG,CAAC,EAAE;YACpB,QAAQ,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;SAC9F;QAED,6BAA6B;QAC7B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;QACxC,MAAM,YAAY,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACvD,KAAK,IAAI,YAAY,CAAC;QAEtB,IAAI,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE;YACpC,QAAQ,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;SAC1D;QAED,wBAAwB;QACxB,MAAM,cAAc,GAAG;YACrB,QAAQ;YACR,WAAW;YACX,QAAQ;YACR,SAAS;YACT,WAAW,CAAC,yBAAyB;SACtC,CAAC;QAEF,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE;YACpC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACvB,gBAAgB,GAAG,IAAI,CAAC;gBACxB,MAAM;aACP;SACF;QAED,IAAI,gBAAgB,EAAE;YACpB,KAAK,IAAI,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;SACzE;QAED,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAElD,OAAO;YACL,QAAQ;YACR,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACxC,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC;SACvE,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACjC,OAAO;SACR;QAED,IAAI;YACF,MAAM,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAE9C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;gBACpC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE;oBAChC,GAAG,UAAU;oBACb,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;oBACzC,SAAS,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;oBACzC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC7E,CAAC,CAAC;aACJ;SACF;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;SACrG;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW;QACvB,IAAI;YACF,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;YAElE,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;SACxD;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;SACxG;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACf,aAAa,CAAgB;IAE9C,YAAY,aAA4B;QACtC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,MAA2B;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa;QAExE,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QAEpD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,wBAAwB,CAAC,GAAQ;QAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO;SACR;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAClF,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC9C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;oBACnE,IAAI,WAAW,KAAK,IAAI,EAAE;wBACxB,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;qBACtB;iBACF;qBAAM,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBACrC,MAAM,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC7C;aACF;YACD,OAAO;SACR;QAED,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE;YAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC/E,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;oBACnE,IAAI,WAAW,KAAK,IAAI,EAAE;wBACxB,GAAG,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;qBACxB;iBACF;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBACpC,MAAM,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;iBAC5C;aACF;SACF;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QACjD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAE3C,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE;YAChC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;aAClC;SACF;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@autonomaai/security-utils",
3
+ "version": "1.0.0",
4
+ "description": "Security utilities for credential management and encryption",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "dev": "tsc --watch",
10
+ "test": "jest",
11
+ "clean": "rm -rf dist",
12
+ "lint": "eslint src/**/*.ts",
13
+ "format": "prettier --write src/**/*.ts"
14
+ },
15
+ "dependencies": {
16
+ "dotenv": "^16.0.3",
17
+ "jsonwebtoken": "^9.0.2",
18
+ "bcrypt": "^5.1.1"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^18.0.0",
22
+ "@types/jsonwebtoken": "^9.0.3",
23
+ "@types/bcrypt": "^5.0.0",
24
+ "typescript": "^4.9.5",
25
+ "eslint": "^8.57.1",
26
+ "prettier": "^3.0.0",
27
+ "jest": "^29.0.0",
28
+ "@types/jest": "^29.0.0"
29
+ },
30
+ "keywords": [
31
+ "security",
32
+ "encryption",
33
+ "credentials",
34
+ "environment",
35
+ "authentication",
36
+ "authorization",
37
+ "jwt"
38
+ ],
39
+ "author": "autonoma Team",
40
+ "license": "MIT",
41
+ "files": [
42
+ "dist/**/*",
43
+ "README.md"
44
+ ],
45
+ "repository": {
46
+ "type": "git",
47
+ "url": "https://github.com/Stack3Labs/autonoma-typescript-packages"
48
+ },
49
+ "publishConfig": {
50
+ "access": "public"
51
+ }
52
+ }