aquaman-core 0.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/LICENSE +21 -0
- package/README.md +51 -0
- package/dist/audit/index.d.ts +5 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +5 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/logger.d.ts +48 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/logger.js +237 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/credentials/backends/onepassword.d.ts +38 -0
- package/dist/credentials/backends/onepassword.d.ts.map +1 -0
- package/dist/credentials/backends/onepassword.js +218 -0
- package/dist/credentials/backends/onepassword.js.map +1 -0
- package/dist/credentials/backends/vault.d.ts +56 -0
- package/dist/credentials/backends/vault.d.ts.map +1 -0
- package/dist/credentials/backends/vault.js +206 -0
- package/dist/credentials/backends/vault.js.map +1 -0
- package/dist/credentials/index.d.ts +7 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +7 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/credentials/store.d.ts +88 -0
- package/dist/credentials/store.d.ts.map +1 -0
- package/dist/credentials/store.js +221 -0
- package/dist/credentials/store.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/config.d.ts +18 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +115 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/hash.d.ts +27 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +348 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"onepassword.js","sourceRoot":"","sources":["../../../src/credentials/backends/onepassword.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HashiCorp Vault credential backend using KV v2 API
|
|
3
|
+
* Requires: Vault server accessible and valid token
|
|
4
|
+
*/
|
|
5
|
+
import type { CredentialStore } from '../store.js';
|
|
6
|
+
export interface VaultStoreOptions {
|
|
7
|
+
address: string;
|
|
8
|
+
token?: string;
|
|
9
|
+
namespace?: string;
|
|
10
|
+
mountPath?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class VaultStore implements CredentialStore {
|
|
13
|
+
private address;
|
|
14
|
+
private token;
|
|
15
|
+
private namespace?;
|
|
16
|
+
private mountPath;
|
|
17
|
+
constructor(options: VaultStoreOptions);
|
|
18
|
+
private getPath;
|
|
19
|
+
private getHeaders;
|
|
20
|
+
private request;
|
|
21
|
+
/**
|
|
22
|
+
* KV v2 uses data/ prefix for read/write and metadata/ prefix for metadata
|
|
23
|
+
*/
|
|
24
|
+
private getDataPath;
|
|
25
|
+
private getMetadataPath;
|
|
26
|
+
private getListPath;
|
|
27
|
+
get(service: string, key: string): Promise<string | null>;
|
|
28
|
+
set(service: string, key: string, value: string, metadata?: Record<string, string>): Promise<void>;
|
|
29
|
+
delete(service: string, key: string): Promise<boolean>;
|
|
30
|
+
list(service?: string): Promise<Array<{
|
|
31
|
+
service: string;
|
|
32
|
+
key: string;
|
|
33
|
+
}>>;
|
|
34
|
+
exists(service: string, key: string): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Get the Vault address being used
|
|
37
|
+
*/
|
|
38
|
+
getAddress(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Get the mount path being used
|
|
41
|
+
*/
|
|
42
|
+
getMountPath(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Check if Vault is reachable and token is valid
|
|
45
|
+
*/
|
|
46
|
+
healthCheck(): Promise<{
|
|
47
|
+
healthy: boolean;
|
|
48
|
+
error?: string;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Check if Vault is available with given options
|
|
52
|
+
*/
|
|
53
|
+
static isAvailable(options: VaultStoreOptions): Promise<boolean>;
|
|
54
|
+
}
|
|
55
|
+
export declare function createVaultStore(options: VaultStoreOptions): VaultStore;
|
|
56
|
+
//# sourceMappingURL=vault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../../src/credentials/backends/vault.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,qBAAa,UAAW,YAAW,eAAe;IAChD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;gBAEd,OAAO,EAAE,iBAAiB;IAetC,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,UAAU;YAaJ,OAAO;IA+BrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,WAAW;IAOb,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmBzD,GAAG,CACP,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAiBV,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAatD,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IA0CxE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5D;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiBlE;;OAEG;WACU,WAAW,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;CASvE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAEvE"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HashiCorp Vault credential backend using KV v2 API
|
|
3
|
+
* Requires: Vault server accessible and valid token
|
|
4
|
+
*/
|
|
5
|
+
const DEFAULT_MOUNT_PATH = 'secret';
|
|
6
|
+
const AQUAMAN_PATH_PREFIX = 'aquaman';
|
|
7
|
+
export class VaultStore {
|
|
8
|
+
address;
|
|
9
|
+
token;
|
|
10
|
+
namespace;
|
|
11
|
+
mountPath;
|
|
12
|
+
constructor(options) {
|
|
13
|
+
this.address = options.address.replace(/\/$/, ''); // Remove trailing slash
|
|
14
|
+
this.token = options.token || process.env['VAULT_TOKEN'] || '';
|
|
15
|
+
this.namespace = options.namespace || process.env['VAULT_NAMESPACE'];
|
|
16
|
+
this.mountPath = options.mountPath || DEFAULT_MOUNT_PATH;
|
|
17
|
+
if (!this.token) {
|
|
18
|
+
throw new Error('Vault token required. Provide via options.token or VAULT_TOKEN env var.');
|
|
19
|
+
}
|
|
20
|
+
if (!this.address) {
|
|
21
|
+
throw new Error('Vault address required. Provide via options.address or VAULT_ADDR env var.');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
getPath(service, key) {
|
|
25
|
+
return `${AQUAMAN_PATH_PREFIX}/${service}/${key}`;
|
|
26
|
+
}
|
|
27
|
+
getHeaders() {
|
|
28
|
+
const headers = {
|
|
29
|
+
'X-Vault-Token': this.token,
|
|
30
|
+
'Content-Type': 'application/json'
|
|
31
|
+
};
|
|
32
|
+
if (this.namespace) {
|
|
33
|
+
headers['X-Vault-Namespace'] = this.namespace;
|
|
34
|
+
}
|
|
35
|
+
return headers;
|
|
36
|
+
}
|
|
37
|
+
async request(method, path, body) {
|
|
38
|
+
const url = `${this.address}/v1/${path}`;
|
|
39
|
+
const headers = this.getHeaders();
|
|
40
|
+
const response = await fetch(url, {
|
|
41
|
+
method,
|
|
42
|
+
headers,
|
|
43
|
+
body: body ? JSON.stringify(body) : undefined
|
|
44
|
+
});
|
|
45
|
+
if (response.status === 404) {
|
|
46
|
+
return { status: 404 };
|
|
47
|
+
}
|
|
48
|
+
if (!response.ok && response.status !== 204) {
|
|
49
|
+
const errorText = await response.text();
|
|
50
|
+
throw new Error(`Vault API error (${response.status}): ${errorText}`);
|
|
51
|
+
}
|
|
52
|
+
if (response.status === 204) {
|
|
53
|
+
return { status: 204 };
|
|
54
|
+
}
|
|
55
|
+
const data = await response.json();
|
|
56
|
+
return { data: data.data, status: response.status };
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* KV v2 uses data/ prefix for read/write and metadata/ prefix for metadata
|
|
60
|
+
*/
|
|
61
|
+
getDataPath(service, key) {
|
|
62
|
+
return `${this.mountPath}/data/${this.getPath(service, key)}`;
|
|
63
|
+
}
|
|
64
|
+
getMetadataPath(service, key) {
|
|
65
|
+
return `${this.mountPath}/metadata/${this.getPath(service, key)}`;
|
|
66
|
+
}
|
|
67
|
+
getListPath(service) {
|
|
68
|
+
if (service) {
|
|
69
|
+
return `${this.mountPath}/metadata/${AQUAMAN_PATH_PREFIX}/${service}`;
|
|
70
|
+
}
|
|
71
|
+
return `${this.mountPath}/metadata/${AQUAMAN_PATH_PREFIX}`;
|
|
72
|
+
}
|
|
73
|
+
async get(service, key) {
|
|
74
|
+
try {
|
|
75
|
+
const result = await this.request('GET', this.getDataPath(service, key));
|
|
76
|
+
if (result.status === 404) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
// KV v2 wraps data in another data object
|
|
80
|
+
const kvData = result.data;
|
|
81
|
+
return kvData?.data?.credential || null;
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async set(service, key, value, metadata) {
|
|
91
|
+
const data = {
|
|
92
|
+
credential: value
|
|
93
|
+
};
|
|
94
|
+
// Add metadata to the secret data (Vault stores metadata separately but we can include it in data too)
|
|
95
|
+
if (metadata) {
|
|
96
|
+
for (const [k, v] of Object.entries(metadata)) {
|
|
97
|
+
data[`meta_${k}`] = v;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
await this.request('POST', this.getDataPath(service, key), {
|
|
101
|
+
data
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async delete(service, key) {
|
|
105
|
+
try {
|
|
106
|
+
// For KV v2, we need to delete the metadata to fully remove the secret
|
|
107
|
+
const result = await this.request('DELETE', this.getMetadataPath(service, key));
|
|
108
|
+
return result.status === 204 || result.status === 200;
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
throw error;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
async list(service) {
|
|
118
|
+
const credentials = [];
|
|
119
|
+
try {
|
|
120
|
+
if (service) {
|
|
121
|
+
// List keys for a specific service
|
|
122
|
+
const result = await this.request('LIST', this.getListPath(service));
|
|
123
|
+
if (result.status === 404) {
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
const keys = result.data?.keys || [];
|
|
127
|
+
for (const key of keys) {
|
|
128
|
+
// Remove trailing slash if present (indicates directory)
|
|
129
|
+
const cleanKey = key.replace(/\/$/, '');
|
|
130
|
+
credentials.push({ service, key: cleanKey });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
// List all services first, then keys for each
|
|
135
|
+
const servicesResult = await this.request('LIST', this.getListPath());
|
|
136
|
+
if (servicesResult.status === 404) {
|
|
137
|
+
return [];
|
|
138
|
+
}
|
|
139
|
+
const services = servicesResult.data?.keys || [];
|
|
140
|
+
for (const svc of services) {
|
|
141
|
+
const cleanService = svc.replace(/\/$/, '');
|
|
142
|
+
const serviceCredentials = await this.list(cleanService);
|
|
143
|
+
credentials.push(...serviceCredentials);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return credentials;
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
150
|
+
return [];
|
|
151
|
+
}
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
async exists(service, key) {
|
|
156
|
+
const value = await this.get(service, key);
|
|
157
|
+
return value !== null;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Get the Vault address being used
|
|
161
|
+
*/
|
|
162
|
+
getAddress() {
|
|
163
|
+
return this.address;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get the mount path being used
|
|
167
|
+
*/
|
|
168
|
+
getMountPath() {
|
|
169
|
+
return this.mountPath;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Check if Vault is reachable and token is valid
|
|
173
|
+
*/
|
|
174
|
+
async healthCheck() {
|
|
175
|
+
try {
|
|
176
|
+
// Check token validity by looking up self
|
|
177
|
+
const response = await fetch(`${this.address}/v1/auth/token/lookup-self`, {
|
|
178
|
+
headers: this.getHeaders()
|
|
179
|
+
});
|
|
180
|
+
if (response.ok) {
|
|
181
|
+
return { healthy: true };
|
|
182
|
+
}
|
|
183
|
+
return { healthy: false, error: `Token lookup failed: ${response.status}` };
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
return { healthy: false, error: `Connection failed: ${error}` };
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Check if Vault is available with given options
|
|
191
|
+
*/
|
|
192
|
+
static async isAvailable(options) {
|
|
193
|
+
try {
|
|
194
|
+
const store = new VaultStore(options);
|
|
195
|
+
const health = await store.healthCheck();
|
|
196
|
+
return health.healthy;
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
export function createVaultStore(options) {
|
|
204
|
+
return new VaultStore(options);
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../../src/credentials/backends/vault.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential storage module
|
|
3
|
+
*/
|
|
4
|
+
export { type Credential, type CredentialStore, type CredentialStoreOptions, KeychainStore, EncryptedFileStore, MemoryStore, createCredentialStore } from './store.js';
|
|
5
|
+
export { type OnePasswordStoreOptions, OnePasswordStore, createOnePasswordStore } from './backends/onepassword.js';
|
|
6
|
+
export { type VaultStoreOptions, VaultStore, createVaultStore } from './backends/vault.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credentials/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,uBAAuB,EAC5B,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,KAAK,iBAAiB,EACtB,UAAU,EACV,gBAAgB,EACjB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential storage module
|
|
3
|
+
*/
|
|
4
|
+
export { KeychainStore, EncryptedFileStore, MemoryStore, createCredentialStore } from './store.js';
|
|
5
|
+
export { OnePasswordStore, createOnePasswordStore } from './backends/onepassword.js';
|
|
6
|
+
export { VaultStore, createVaultStore } from './backends/vault.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/credentials/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAIL,aAAa,EACb,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAEL,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAEL,UAAU,EACV,gBAAgB,EACjB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential storage interface with multiple backend support
|
|
3
|
+
* Supports: macOS Keychain, 1Password, HashiCorp Vault, encrypted file
|
|
4
|
+
*/
|
|
5
|
+
import type { CredentialBackend } from '../types.js';
|
|
6
|
+
export interface Credential {
|
|
7
|
+
service: string;
|
|
8
|
+
key: string;
|
|
9
|
+
value: string;
|
|
10
|
+
metadata?: Record<string, string>;
|
|
11
|
+
createdAt: Date;
|
|
12
|
+
lastUsed?: Date;
|
|
13
|
+
rotateAfter?: Date;
|
|
14
|
+
}
|
|
15
|
+
export interface CredentialStore {
|
|
16
|
+
get(service: string, key: string): Promise<string | null>;
|
|
17
|
+
set(service: string, key: string, value: string, metadata?: Record<string, string>): Promise<void>;
|
|
18
|
+
delete(service: string, key: string): Promise<boolean>;
|
|
19
|
+
list(service?: string): Promise<Array<{
|
|
20
|
+
service: string;
|
|
21
|
+
key: string;
|
|
22
|
+
}>>;
|
|
23
|
+
exists(service: string, key: string): Promise<boolean>;
|
|
24
|
+
}
|
|
25
|
+
export interface CredentialStoreOptions {
|
|
26
|
+
backend: CredentialBackend;
|
|
27
|
+
encryptionPassword?: string;
|
|
28
|
+
vaultAddress?: string;
|
|
29
|
+
vaultToken?: string;
|
|
30
|
+
vaultNamespace?: string;
|
|
31
|
+
vaultMountPath?: string;
|
|
32
|
+
onePasswordVault?: string;
|
|
33
|
+
onePasswordAccount?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* macOS Keychain backend using the keytar library
|
|
37
|
+
*/
|
|
38
|
+
export declare class KeychainStore implements CredentialStore {
|
|
39
|
+
private keytar;
|
|
40
|
+
private serviceName;
|
|
41
|
+
private getKeytar;
|
|
42
|
+
get(service: string, key: string): Promise<string | null>;
|
|
43
|
+
set(service: string, key: string, value: string): Promise<void>;
|
|
44
|
+
delete(service: string, key: string): Promise<boolean>;
|
|
45
|
+
list(): Promise<Array<{
|
|
46
|
+
service: string;
|
|
47
|
+
key: string;
|
|
48
|
+
}>>;
|
|
49
|
+
exists(service: string, key: string): Promise<boolean>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Encrypted file backend - fallback option
|
|
53
|
+
*/
|
|
54
|
+
export declare class EncryptedFileStore implements CredentialStore {
|
|
55
|
+
private filePath;
|
|
56
|
+
private password;
|
|
57
|
+
private cache;
|
|
58
|
+
constructor(password: string, filePath?: string);
|
|
59
|
+
private getKey;
|
|
60
|
+
private load;
|
|
61
|
+
private save;
|
|
62
|
+
get(service: string, key: string): Promise<string | null>;
|
|
63
|
+
set(service: string, key: string, value: string, metadata?: Record<string, string>): Promise<void>;
|
|
64
|
+
delete(service: string, key: string): Promise<boolean>;
|
|
65
|
+
list(service?: string): Promise<Array<{
|
|
66
|
+
service: string;
|
|
67
|
+
key: string;
|
|
68
|
+
}>>;
|
|
69
|
+
exists(service: string, key: string): Promise<boolean>;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* In-memory store for testing
|
|
73
|
+
*/
|
|
74
|
+
export declare class MemoryStore implements CredentialStore {
|
|
75
|
+
private store;
|
|
76
|
+
private getKey;
|
|
77
|
+
get(service: string, key: string): Promise<string | null>;
|
|
78
|
+
set(service: string, key: string, value: string, metadata?: Record<string, string>): Promise<void>;
|
|
79
|
+
delete(service: string, key: string): Promise<boolean>;
|
|
80
|
+
list(service?: string): Promise<Array<{
|
|
81
|
+
service: string;
|
|
82
|
+
key: string;
|
|
83
|
+
}>>;
|
|
84
|
+
exists(service: string, key: string): Promise<boolean>;
|
|
85
|
+
clear(): void;
|
|
86
|
+
}
|
|
87
|
+
export declare function createCredentialStore(options: CredentialStoreOptions): CredentialStore;
|
|
88
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/credentials/store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACzE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAa;YAElB,SAAS;IAYjB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMzD,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtD,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IASxD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAI7D;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAwC;gBAEzC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAK/C,OAAO,CAAC,MAAM;YAIA,IAAI;YAsBJ,IAAI;IAmBZ,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMzD,GAAG,CACP,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAaV,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStD,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAaxE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAI7D;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,eAAe;IACjD,OAAO,CAAC,KAAK,CAAiC;IAE9C,OAAO,CAAC,MAAM;IAIR,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzD,GAAG,CACP,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAUV,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItD,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAUxE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D,KAAK,IAAI,IAAI;CAGd;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CA2CtF"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential storage interface with multiple backend support
|
|
3
|
+
* Supports: macOS Keychain, 1Password, HashiCorp Vault, encrypted file
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'node:fs';
|
|
6
|
+
import * as path from 'node:path';
|
|
7
|
+
import * as os from 'node:os';
|
|
8
|
+
import { encryptWithPassword, decryptWithPassword } from '../utils/hash.js';
|
|
9
|
+
/**
|
|
10
|
+
* macOS Keychain backend using the keytar library
|
|
11
|
+
*/
|
|
12
|
+
export class KeychainStore {
|
|
13
|
+
keytar = null;
|
|
14
|
+
serviceName = 'aquaman';
|
|
15
|
+
async getKeytar() {
|
|
16
|
+
if (!this.keytar) {
|
|
17
|
+
try {
|
|
18
|
+
const mod = await import('keytar');
|
|
19
|
+
this.keytar = mod.default || mod;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
throw new Error('keytar not available - install with: npm install keytar');
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return this.keytar;
|
|
26
|
+
}
|
|
27
|
+
async get(service, key) {
|
|
28
|
+
const keytar = await this.getKeytar();
|
|
29
|
+
const account = `${service}:${key}`;
|
|
30
|
+
return keytar.getPassword(this.serviceName, account);
|
|
31
|
+
}
|
|
32
|
+
async set(service, key, value) {
|
|
33
|
+
const keytar = await this.getKeytar();
|
|
34
|
+
const account = `${service}:${key}`;
|
|
35
|
+
await keytar.setPassword(this.serviceName, account, value);
|
|
36
|
+
}
|
|
37
|
+
async delete(service, key) {
|
|
38
|
+
const keytar = await this.getKeytar();
|
|
39
|
+
const account = `${service}:${key}`;
|
|
40
|
+
return keytar.deletePassword(this.serviceName, account);
|
|
41
|
+
}
|
|
42
|
+
async list() {
|
|
43
|
+
const keytar = await this.getKeytar();
|
|
44
|
+
const credentials = await keytar.findCredentials(this.serviceName);
|
|
45
|
+
return credentials.map(cred => {
|
|
46
|
+
const [service, key] = cred.account.split(':');
|
|
47
|
+
return { service: service || cred.account, key: key || '' };
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async exists(service, key) {
|
|
51
|
+
const value = await this.get(service, key);
|
|
52
|
+
return value !== null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Encrypted file backend - fallback option
|
|
57
|
+
*/
|
|
58
|
+
export class EncryptedFileStore {
|
|
59
|
+
filePath;
|
|
60
|
+
password;
|
|
61
|
+
cache = null;
|
|
62
|
+
constructor(password, filePath) {
|
|
63
|
+
this.password = password;
|
|
64
|
+
this.filePath = filePath || path.join(os.homedir(), '.aquaman', 'credentials.enc');
|
|
65
|
+
}
|
|
66
|
+
getKey(service, key) {
|
|
67
|
+
return `${service}:${key}`;
|
|
68
|
+
}
|
|
69
|
+
async load() {
|
|
70
|
+
if (this.cache) {
|
|
71
|
+
return this.cache;
|
|
72
|
+
}
|
|
73
|
+
if (!fs.existsSync(this.filePath)) {
|
|
74
|
+
this.cache = new Map();
|
|
75
|
+
return this.cache;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
const encrypted = fs.readFileSync(this.filePath, 'utf-8');
|
|
79
|
+
const decrypted = decryptWithPassword(encrypted, this.password);
|
|
80
|
+
const data = JSON.parse(decrypted);
|
|
81
|
+
this.cache = new Map(Object.entries(data));
|
|
82
|
+
return this.cache;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
throw new Error('Failed to decrypt credentials file - wrong password?');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async save() {
|
|
89
|
+
if (!this.cache)
|
|
90
|
+
return;
|
|
91
|
+
const data = {};
|
|
92
|
+
for (const [key, cred] of this.cache.entries()) {
|
|
93
|
+
data[key] = cred;
|
|
94
|
+
}
|
|
95
|
+
const json = JSON.stringify(data, null, 2);
|
|
96
|
+
const encrypted = encryptWithPassword(json, this.password);
|
|
97
|
+
const dir = path.dirname(this.filePath);
|
|
98
|
+
if (!fs.existsSync(dir)) {
|
|
99
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
100
|
+
}
|
|
101
|
+
fs.writeFileSync(this.filePath, encrypted, { mode: 0o600 });
|
|
102
|
+
}
|
|
103
|
+
async get(service, key) {
|
|
104
|
+
const store = await this.load();
|
|
105
|
+
const cred = store.get(this.getKey(service, key));
|
|
106
|
+
return cred?.value ?? null;
|
|
107
|
+
}
|
|
108
|
+
async set(service, key, value, metadata) {
|
|
109
|
+
const store = await this.load();
|
|
110
|
+
const credential = {
|
|
111
|
+
service,
|
|
112
|
+
key,
|
|
113
|
+
value,
|
|
114
|
+
metadata,
|
|
115
|
+
createdAt: new Date()
|
|
116
|
+
};
|
|
117
|
+
store.set(this.getKey(service, key), credential);
|
|
118
|
+
await this.save();
|
|
119
|
+
}
|
|
120
|
+
async delete(service, key) {
|
|
121
|
+
const store = await this.load();
|
|
122
|
+
const deleted = store.delete(this.getKey(service, key));
|
|
123
|
+
if (deleted) {
|
|
124
|
+
await this.save();
|
|
125
|
+
}
|
|
126
|
+
return deleted;
|
|
127
|
+
}
|
|
128
|
+
async list(service) {
|
|
129
|
+
const store = await this.load();
|
|
130
|
+
const results = [];
|
|
131
|
+
for (const cred of store.values()) {
|
|
132
|
+
if (!service || cred.service === service) {
|
|
133
|
+
results.push({ service: cred.service, key: cred.key });
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return results;
|
|
137
|
+
}
|
|
138
|
+
async exists(service, key) {
|
|
139
|
+
const store = await this.load();
|
|
140
|
+
return store.has(this.getKey(service, key));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* In-memory store for testing
|
|
145
|
+
*/
|
|
146
|
+
export class MemoryStore {
|
|
147
|
+
store = new Map();
|
|
148
|
+
getKey(service, key) {
|
|
149
|
+
return `${service}:${key}`;
|
|
150
|
+
}
|
|
151
|
+
async get(service, key) {
|
|
152
|
+
return this.store.get(this.getKey(service, key))?.value ?? null;
|
|
153
|
+
}
|
|
154
|
+
async set(service, key, value, metadata) {
|
|
155
|
+
this.store.set(this.getKey(service, key), {
|
|
156
|
+
service,
|
|
157
|
+
key,
|
|
158
|
+
value,
|
|
159
|
+
metadata,
|
|
160
|
+
createdAt: new Date()
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
async delete(service, key) {
|
|
164
|
+
return this.store.delete(this.getKey(service, key));
|
|
165
|
+
}
|
|
166
|
+
async list(service) {
|
|
167
|
+
const results = [];
|
|
168
|
+
for (const cred of this.store.values()) {
|
|
169
|
+
if (!service || cred.service === service) {
|
|
170
|
+
results.push({ service: cred.service, key: cred.key });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return results;
|
|
174
|
+
}
|
|
175
|
+
async exists(service, key) {
|
|
176
|
+
return this.store.has(this.getKey(service, key));
|
|
177
|
+
}
|
|
178
|
+
clear() {
|
|
179
|
+
this.store.clear();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export function createCredentialStore(options) {
|
|
183
|
+
switch (options.backend) {
|
|
184
|
+
case 'keychain':
|
|
185
|
+
return new KeychainStore();
|
|
186
|
+
case 'encrypted-file':
|
|
187
|
+
if (!options.encryptionPassword) {
|
|
188
|
+
throw new Error('encryptionPassword required for encrypted-file backend');
|
|
189
|
+
}
|
|
190
|
+
return new EncryptedFileStore(options.encryptionPassword);
|
|
191
|
+
case '1password': {
|
|
192
|
+
// Dynamically import to avoid loading if not used
|
|
193
|
+
const { OnePasswordStore } = require('./backends/onepassword.js');
|
|
194
|
+
return new OnePasswordStore({
|
|
195
|
+
vault: options.onePasswordVault,
|
|
196
|
+
account: options.onePasswordAccount
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
case 'vault': {
|
|
200
|
+
if (!options.vaultAddress) {
|
|
201
|
+
// Try env var
|
|
202
|
+
const envAddress = process.env['VAULT_ADDR'];
|
|
203
|
+
if (!envAddress) {
|
|
204
|
+
throw new Error('vaultAddress required for vault backend. Set via config or VAULT_ADDR env var.');
|
|
205
|
+
}
|
|
206
|
+
options.vaultAddress = envAddress;
|
|
207
|
+
}
|
|
208
|
+
// Dynamically import to avoid loading if not used
|
|
209
|
+
const { VaultStore } = require('./backends/vault.js');
|
|
210
|
+
return new VaultStore({
|
|
211
|
+
address: options.vaultAddress,
|
|
212
|
+
token: options.vaultToken,
|
|
213
|
+
namespace: options.vaultNamespace,
|
|
214
|
+
mountPath: options.vaultMountPath
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
default:
|
|
218
|
+
throw new Error(`Unknown credential backend: ${options.backend}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/credentials/store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAkC5E;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,MAAM,GAAQ,IAAI,CAAC;IACnB,WAAW,GAAG,SAAS,CAAC;IAExB,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAQ,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC;YACnC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,GAAW;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,GAAW,EAAE,KAAa;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;QACpC,MAAM,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,GAAW;QACvC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;QACpC,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnE,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC5B,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,GAAW;QACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC3C,OAAO,KAAK,KAAK,IAAI,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACrB,QAAQ,CAAS;IACjB,QAAQ,CAAS;IACjB,KAAK,GAAmC,IAAI,CAAC;IAErD,YAAY,QAAgB,EAAE,QAAiB;QAC7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;IACrF,CAAC;IAEO,MAAM,CAAC,OAAe,EAAE,GAAW;QACzC,OAAO,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;IAC7B,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAA+B,CAAC;YAEjE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,IAAI,GAA+B,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACnB,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE3D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,GAAW;QACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CACP,OAAe,EACf,GAAW,EACX,KAAa,EACb,QAAiC;QAEjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,UAAU,GAAe;YAC7B,OAAO;YACP,GAAG;YACH,KAAK;YACL,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC;QACF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,GAAW;QACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,OAAO,GAA4C,EAAE,CAAC;QAE5D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,GAAW;QACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEtC,MAAM,CAAC,OAAe,EAAE,GAAW;QACzC,OAAO,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,GAAW;QACpC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,GAAG,CACP,OAAe,EACf,GAAW,EACX,KAAa,EACb,QAAiC;QAEjC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YACxC,OAAO;YACP,GAAG;YACH,KAAK;YACL,QAAQ;YACR,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,GAAW;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,MAAM,OAAO,GAA4C,EAAE,CAAC;QAC5D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,GAAW;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,UAAU;YACb,OAAO,IAAI,aAAa,EAAE,CAAC;QAE7B,KAAK,gBAAgB;YACnB,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;gBAChC,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,IAAI,kBAAkB,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAE5D,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,kDAAkD;YAClD,MAAM,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;YAClE,OAAO,IAAI,gBAAgB,CAAC;gBAC1B,KAAK,EAAE,OAAO,CAAC,gBAAgB;gBAC/B,OAAO,EAAE,OAAO,CAAC,kBAAkB;aACpC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC1B,cAAc;gBACd,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;gBACpG,CAAC;gBACD,OAAO,CAAC,YAAY,GAAG,UAAU,CAAC;YACpC,CAAC;YAED,kDAAkD;YAClD,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;YACtD,OAAO,IAAI,UAAU,CAAC;gBACpB,OAAO,EAAE,OAAO,CAAC,YAAY;gBAC7B,KAAK,EAAE,OAAO,CAAC,UAAU;gBACzB,SAAS,EAAE,OAAO,CAAC,cAAc;gBACjC,SAAS,EAAE,OAAO,CAAC,cAAc;aAClC,CAAC,CAAC;QACL,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
|