@quantiya/codevibe-core 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.
- package/README.md +178 -0
- package/bin/codevibe.js +7 -0
- package/dist/appsync/appsync-client.d.ts +132 -0
- package/dist/appsync/appsync-client.js +568 -0
- package/dist/appsync/index.d.ts +2 -0
- package/dist/appsync/index.js +10 -0
- package/dist/appsync/queries.d.ts +16 -0
- package/dist/appsync/queries.js +189 -0
- package/dist/auth/auth-cli.d.ts +5 -0
- package/dist/auth/auth-cli.js +217 -0
- package/dist/auth/auth-service.d.ts +53 -0
- package/dist/auth/auth-service.js +310 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.js +9 -0
- package/dist/config/config.d.ts +53 -0
- package/dist/config/config.js +123 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.js +8 -0
- package/dist/crypto/crypto-service.d.ts +118 -0
- package/dist/crypto/crypto-service.js +284 -0
- package/dist/crypto/index.d.ts +1 -0
- package/dist/crypto/index.js +9 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.js +68 -0
- package/dist/keychain/index.d.ts +1 -0
- package/dist/keychain/index.js +8 -0
- package/dist/keychain/keychain-manager.d.ts +125 -0
- package/dist/keychain/keychain-manager.js +375 -0
- package/dist/logger/index.d.ts +1 -0
- package/dist/logger/index.js +8 -0
- package/dist/logger/logger.d.ts +35 -0
- package/dist/logger/logger.js +142 -0
- package/dist/prompt-parser.d.ts +39 -0
- package/dist/prompt-parser.js +236 -0
- package/dist/session/index.d.ts +2 -0
- package/dist/session/index.js +7 -0
- package/dist/session/session-resume.d.ts +55 -0
- package/dist/session/session-resume.js +151 -0
- package/dist/types/auth.d.ts +15 -0
- package/dist/types/auth.js +3 -0
- package/dist/types/encryption.d.ts +54 -0
- package/dist/types/encryption.js +3 -0
- package/dist/types/events.d.ts +74 -0
- package/dist/types/events.js +28 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.js +22 -0
- package/dist/types/session.d.ts +59 -0
- package/dist/types/session.js +22 -0
- package/package.json +51 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
//
|
|
3
|
+
// auth-service.ts
|
|
4
|
+
// CodeVibe Core
|
|
5
|
+
//
|
|
6
|
+
// OAuth authentication service
|
|
7
|
+
//
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.authService = exports.AuthService = void 0;
|
|
43
|
+
const crypto = __importStar(require("crypto"));
|
|
44
|
+
const http = __importStar(require("http"));
|
|
45
|
+
const child_process_1 = require("child_process");
|
|
46
|
+
const config_1 = require("../config");
|
|
47
|
+
const keychain_1 = require("../keychain");
|
|
48
|
+
const logger_1 = require("../logger");
|
|
49
|
+
const CALLBACK_PORT = 8080;
|
|
50
|
+
const CALLBACK_PATH = '/callback';
|
|
51
|
+
const REDIRECT_URI = `http://localhost:${CALLBACK_PORT}${CALLBACK_PATH}`;
|
|
52
|
+
/**
|
|
53
|
+
* Authentication service for OAuth flows
|
|
54
|
+
*/
|
|
55
|
+
class AuthService {
|
|
56
|
+
constructor() { }
|
|
57
|
+
static getInstance() {
|
|
58
|
+
if (!AuthService.instance) {
|
|
59
|
+
AuthService.instance = new AuthService();
|
|
60
|
+
}
|
|
61
|
+
return AuthService.instance;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Open URL in default browser
|
|
65
|
+
*/
|
|
66
|
+
openBrowser(url) {
|
|
67
|
+
(0, child_process_1.spawn)('open', [url], { detached: true, stdio: 'ignore' }).unref();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Generate state for CSRF protection
|
|
71
|
+
*/
|
|
72
|
+
generateState() {
|
|
73
|
+
return crypto.randomBytes(32).toString('hex');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Build authorization URL
|
|
77
|
+
*/
|
|
78
|
+
buildAuthUrl(state) {
|
|
79
|
+
const config = (0, config_1.getConfig)();
|
|
80
|
+
const params = new URLSearchParams({
|
|
81
|
+
client_id: config.aws.cognitoClientId,
|
|
82
|
+
response_type: 'code',
|
|
83
|
+
scope: 'email openid profile',
|
|
84
|
+
redirect_uri: REDIRECT_URI,
|
|
85
|
+
state: state,
|
|
86
|
+
});
|
|
87
|
+
return `https://${config.aws.cognitoDomain}/oauth2/authorize?${params.toString()}`;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Exchange authorization code for tokens
|
|
91
|
+
*/
|
|
92
|
+
async exchangeCodeForTokens(code) {
|
|
93
|
+
const config = (0, config_1.getConfig)();
|
|
94
|
+
const tokenUrl = `https://${config.aws.cognitoDomain}/oauth2/token`;
|
|
95
|
+
const params = new URLSearchParams({
|
|
96
|
+
grant_type: 'authorization_code',
|
|
97
|
+
client_id: config.aws.cognitoClientId,
|
|
98
|
+
code: code,
|
|
99
|
+
redirect_uri: REDIRECT_URI,
|
|
100
|
+
});
|
|
101
|
+
const response = await fetch(tokenUrl, {
|
|
102
|
+
method: 'POST',
|
|
103
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
104
|
+
body: params.toString(),
|
|
105
|
+
});
|
|
106
|
+
if (!response.ok) {
|
|
107
|
+
const errorText = await response.text();
|
|
108
|
+
throw new Error(`Token exchange failed: ${response.status} ${errorText}`);
|
|
109
|
+
}
|
|
110
|
+
const data = await response.json();
|
|
111
|
+
return {
|
|
112
|
+
accessToken: data.access_token,
|
|
113
|
+
idToken: data.id_token,
|
|
114
|
+
refreshToken: data.refresh_token,
|
|
115
|
+
expiresIn: data.expires_in,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Decode JWT payload
|
|
120
|
+
*/
|
|
121
|
+
decodeJwt(token) {
|
|
122
|
+
const parts = token.split('.');
|
|
123
|
+
if (parts.length !== 3)
|
|
124
|
+
throw new Error('Invalid JWT');
|
|
125
|
+
return JSON.parse(Buffer.from(parts[1], 'base64').toString('utf-8'));
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Refresh tokens
|
|
129
|
+
*/
|
|
130
|
+
async refreshTokens(refreshToken) {
|
|
131
|
+
const config = (0, config_1.getConfig)();
|
|
132
|
+
const tokenUrl = `https://${config.aws.cognitoDomain}/oauth2/token`;
|
|
133
|
+
const params = new URLSearchParams({
|
|
134
|
+
grant_type: 'refresh_token',
|
|
135
|
+
client_id: config.aws.cognitoClientId,
|
|
136
|
+
refresh_token: refreshToken,
|
|
137
|
+
});
|
|
138
|
+
const response = await fetch(tokenUrl, {
|
|
139
|
+
method: 'POST',
|
|
140
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
141
|
+
body: params.toString(),
|
|
142
|
+
});
|
|
143
|
+
if (!response.ok) {
|
|
144
|
+
throw new Error(`Token refresh failed: ${response.status}`);
|
|
145
|
+
}
|
|
146
|
+
const data = await response.json();
|
|
147
|
+
return {
|
|
148
|
+
accessToken: data.access_token,
|
|
149
|
+
idToken: data.id_token,
|
|
150
|
+
expiresIn: data.expires_in,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Login via OAuth browser flow
|
|
155
|
+
*/
|
|
156
|
+
async login() {
|
|
157
|
+
// Check if already logged in
|
|
158
|
+
const existing = await keychain_1.keychainManager.getTokens((0, config_1.getEnvironment)());
|
|
159
|
+
if (existing && !keychain_1.keychainManager.isTokenExpired(existing)) {
|
|
160
|
+
return existing;
|
|
161
|
+
}
|
|
162
|
+
const state = this.generateState();
|
|
163
|
+
const authUrl = this.buildAuthUrl(state);
|
|
164
|
+
return new Promise((resolve, reject) => {
|
|
165
|
+
const server = http.createServer(async (req, res) => {
|
|
166
|
+
if (!req.url?.startsWith(CALLBACK_PATH)) {
|
|
167
|
+
res.writeHead(404);
|
|
168
|
+
res.end('Not found');
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
const url = new URL(req.url, `http://localhost:${CALLBACK_PORT}`);
|
|
173
|
+
const code = url.searchParams.get('code');
|
|
174
|
+
const returnedState = url.searchParams.get('state');
|
|
175
|
+
const error = url.searchParams.get('error');
|
|
176
|
+
if (error) {
|
|
177
|
+
throw new Error(`OAuth error: ${error}`);
|
|
178
|
+
}
|
|
179
|
+
if (returnedState !== state) {
|
|
180
|
+
throw new Error('State mismatch');
|
|
181
|
+
}
|
|
182
|
+
if (!code) {
|
|
183
|
+
throw new Error('No authorization code');
|
|
184
|
+
}
|
|
185
|
+
const tokens = await this.exchangeCodeForTokens(code);
|
|
186
|
+
const idPayload = this.decodeJwt(tokens.idToken);
|
|
187
|
+
const tokenData = {
|
|
188
|
+
accessToken: tokens.accessToken,
|
|
189
|
+
idToken: tokens.idToken,
|
|
190
|
+
refreshToken: tokens.refreshToken,
|
|
191
|
+
expiresAt: Date.now() + (tokens.expiresIn * 1000),
|
|
192
|
+
userId: idPayload.sub,
|
|
193
|
+
email: idPayload.email || 'unknown',
|
|
194
|
+
};
|
|
195
|
+
await keychain_1.keychainManager.setTokens(tokenData, (0, config_1.getEnvironment)());
|
|
196
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
197
|
+
res.end(`
|
|
198
|
+
<!DOCTYPE html>
|
|
199
|
+
<html>
|
|
200
|
+
<head><title>Success</title></head>
|
|
201
|
+
<body style="font-family: system-ui; max-width: 600px; margin: 50px auto; text-align: center;">
|
|
202
|
+
<h1 style="color: #22c55e;">✓ Authentication Successful</h1>
|
|
203
|
+
<p>You can close this window.</p>
|
|
204
|
+
</body>
|
|
205
|
+
</html>
|
|
206
|
+
`);
|
|
207
|
+
setTimeout(() => {
|
|
208
|
+
server.close(() => resolve(tokenData));
|
|
209
|
+
}, 500);
|
|
210
|
+
}
|
|
211
|
+
catch (err) {
|
|
212
|
+
res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
213
|
+
res.end(`
|
|
214
|
+
<!DOCTYPE html>
|
|
215
|
+
<html>
|
|
216
|
+
<head><title>Error</title></head>
|
|
217
|
+
<body style="font-family: system-ui; max-width: 600px; margin: 50px auto; text-align: center;">
|
|
218
|
+
<h1 style="color: #ef4444;">✗ Authentication Failed</h1>
|
|
219
|
+
<p>${err.message}</p>
|
|
220
|
+
</body>
|
|
221
|
+
</html>
|
|
222
|
+
`);
|
|
223
|
+
setTimeout(() => {
|
|
224
|
+
server.close(() => reject(err));
|
|
225
|
+
}, 500);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
server.on('error', (err) => {
|
|
229
|
+
if (err.code === 'EADDRINUSE') {
|
|
230
|
+
reject(new Error(`Port ${CALLBACK_PORT} is in use`));
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
reject(err);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
server.listen(CALLBACK_PORT, 'localhost', () => {
|
|
237
|
+
logger_1.logger.info('[AuthService] Callback server started');
|
|
238
|
+
this.openBrowser(authUrl);
|
|
239
|
+
});
|
|
240
|
+
// Timeout
|
|
241
|
+
setTimeout(() => {
|
|
242
|
+
server.close(() => reject(new Error('Login timeout')));
|
|
243
|
+
}, 2 * 60 * 1000);
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Logout
|
|
248
|
+
*/
|
|
249
|
+
async logout() {
|
|
250
|
+
const config = (0, config_1.getConfig)();
|
|
251
|
+
const deleted = await keychain_1.keychainManager.deleteTokens((0, config_1.getEnvironment)());
|
|
252
|
+
if (deleted) {
|
|
253
|
+
// Start temporary server to handle signout callback
|
|
254
|
+
return new Promise((resolve) => {
|
|
255
|
+
const server = http.createServer((req, res) => {
|
|
256
|
+
if (req.url?.startsWith('/signout')) {
|
|
257
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
258
|
+
res.end(`
|
|
259
|
+
<!DOCTYPE html>
|
|
260
|
+
<html>
|
|
261
|
+
<head><title>Signed Out</title></head>
|
|
262
|
+
<body style="font-family: system-ui; max-width: 600px; margin: 50px auto; text-align: center;">
|
|
263
|
+
<h1 style="color: #22c55e;">✓ Signed Out</h1>
|
|
264
|
+
<p>You can close this window.</p>
|
|
265
|
+
</body>
|
|
266
|
+
</html>
|
|
267
|
+
`);
|
|
268
|
+
setTimeout(() => {
|
|
269
|
+
server.close(() => resolve(true));
|
|
270
|
+
}, 500);
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
res.writeHead(404);
|
|
274
|
+
res.end('Not found');
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
server.on('error', () => {
|
|
278
|
+
resolve(true); // Still return true since tokens were deleted
|
|
279
|
+
});
|
|
280
|
+
server.listen(CALLBACK_PORT, 'localhost', () => {
|
|
281
|
+
const logoutUrl = `https://${config.aws.cognitoDomain}/logout?` +
|
|
282
|
+
`client_id=${config.aws.cognitoClientId}&` +
|
|
283
|
+
`logout_uri=${encodeURIComponent(REDIRECT_URI.replace('/callback', '/signout'))}`;
|
|
284
|
+
this.openBrowser(logoutUrl);
|
|
285
|
+
});
|
|
286
|
+
// Timeout after 30 seconds
|
|
287
|
+
setTimeout(() => {
|
|
288
|
+
server.close(() => resolve(true));
|
|
289
|
+
}, 30 * 1000);
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
return deleted;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Get current auth status
|
|
296
|
+
*/
|
|
297
|
+
async getStatus() {
|
|
298
|
+
const tokens = await keychain_1.keychainManager.getTokens((0, config_1.getEnvironment)());
|
|
299
|
+
if (!tokens) {
|
|
300
|
+
return { authenticated: false };
|
|
301
|
+
}
|
|
302
|
+
return {
|
|
303
|
+
authenticated: !keychain_1.keychainManager.isTokenExpired(tokens),
|
|
304
|
+
tokens,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
exports.AuthService = AuthService;
|
|
309
|
+
exports.authService = AuthService.getInstance();
|
|
310
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2F1dGgvYXV0aC1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxFQUFFO0FBQ0Ysa0JBQWtCO0FBQ2xCLGdCQUFnQjtBQUNoQixFQUFFO0FBQ0YsK0JBQStCO0FBQy9CLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVGLCtDQUFpQztBQUNqQywyQ0FBNkI7QUFDN0IsaURBQXNDO0FBQ3RDLHNDQUFzRDtBQUN0RCwwQ0FBOEM7QUFDOUMsc0NBQW1DO0FBR25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQztBQUMzQixNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUM7QUFDbEMsTUFBTSxZQUFZLEdBQUcsb0JBQW9CLGFBQWEsR0FBRyxhQUFhLEVBQUUsQ0FBQztBQUV6RTs7R0FFRztBQUNILE1BQWEsV0FBVztJQUd0QixnQkFBdUIsQ0FBQztJQUV4QixNQUFNLENBQUMsV0FBVztRQUNoQixJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzFCLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUMzQyxDQUFDO1FBQ0QsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNLLFdBQVcsQ0FBQyxHQUFXO1FBQzdCLElBQUEscUJBQUssRUFBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYTtRQUNuQixPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FF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LEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDcEMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsU0FBUztRQUNiLE1BQU0sTUFBTSxHQUFHLE1BQU0sMEJBQWUsQ0FBQyxTQUFTLENBQUMsSUFBQSx1QkFBYyxHQUFFLENBQUMsQ0FBQztRQUNqRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2xDLENBQUM7UUFFRCxPQUFPO1lBQ0wsYUFBYSxFQUFFLENBQUMsMEJBQWUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQ3RELE1BQU07U0FDUCxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeFRELGtDQXdUQztBQUVZLFFBQUEsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vLyBhdXRoLXNlcnZpY2UudHNcbi8vIENvZGVWaWJlIENvcmVcbi8vXG4vLyBPQXV0aCBhdXRoZW50aWNhdGlvbiBzZXJ2aWNlXG4vL1xuXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIGh0dHAgZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBzcGF3biB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnLCBnZXRFbnZpcm9ubWVudCB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBrZXljaGFpbk1hbmFnZXIgfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgVG9rZW5EYXRhIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBDQUxMQkFDS19QT1JUID0gODA4MDtcbmNvbnN0IENBTExCQUNLX1BBVEggPSAnL2NhbGxiYWNrJztcbmNvbnN0IFJFRElSRUNUX1VSSSA9IGBodHRwOi8vbG9jYWxob3N0OiR7Q0FMTEJBQ0tfUE9SVH0ke0NBTExCQUNLX1BBVEh9YDtcblxuLyoqXG4gKiBBdXRoZW50aWNhdGlvbiBzZXJ2aWNlIGZvciBPQXV0aCBmbG93c1xuICovXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogQXV0aFNlcnZpY2U7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgc3RhdGljIGdldEluc3RhbmNlKCk6IEF1dGhTZXJ2aWNlIHtcbiAgICBpZiAoIUF1dGhTZXJ2aWNlLmluc3RhbmNlKSB7XG4gICAgICBBdXRoU2VydmljZS5pbnN0YW5jZSA9IG5ldyBBdXRoU2VydmljZSgpO1xuICAgIH1cbiAgICByZXR1cm4gQXV0aFNlcnZpY2UuaW5zdGFuY2U7XG4gIH1cblxuICAvKipcbiAgICogT3BlbiBVUkwgaW4gZGVmYXVsdCBicm93c2VyXG4gICAqL1xuICBwcml2YXRlIG9wZW5Ccm93c2VyKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgc3Bhd24oJ29wZW4nLCBbdXJsXSwgeyBkZXRhY2hlZDogdHJ1ZSwgc3RkaW86ICdpZ25vcmUnIH0pLnVucmVmKCk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgc3RhdGUgZm9yIENTUkYgcHJvdGVjdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZVN0YXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNyeXB0by5yYW5kb21CeXRlcygzMikudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGF1dGhvcml6YXRpb24gVVJMXG4gICAqL1xuICBwcml2YXRlIGJ1aWxkQXV0aFVybChzdGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHtcbiAgICAgIGNsaWVudF9pZDogY29uZmlnLmF3cy5jb2duaXRvQ2xpZW50SWQsXG4gICAgICByZXNwb25zZV90eXBlOiAnY29kZScsXG4gICAgICBzY29wZTogJ2VtYWlsIG9wZW5pZCBwcm9maWxlJyxcbiAgICAgIHJlZGlyZWN0X3VyaTogUkVESVJFQ1RfVVJJLFxuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGBodHRwczovLyR7Y29uZmlnLmF3cy5jb2duaXRvRG9tYWlufS9vYXV0aDIvYXV0aG9yaXplPyR7cGFyYW1zLnRvU3RyaW5nKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGNoYW5nZSBhdXRob3JpemF0aW9uIGNvZGUgZm9yIHRva2Vuc1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBleGNoYW5nZUNvZGVGb3JUb2tlbnMoY29kZTogc3RyaW5nKTogUHJvbWlzZTx7XG4gICAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgICBpZFRva2VuOiBzdHJpbmc7XG4gICAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gICAgZXhwaXJlc0luOiBudW1iZXI7XG4gIH0+IHtcbiAgICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgICBjb25zdCB0b2tlblVybCA9IGBodHRwczovLyR7Y29uZmlnLmF3cy5jb2duaXRvRG9tYWlufS9vYXV0aDIvdG9rZW5gO1xuXG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7XG4gICAgICBncmFudF90eXBlOiAnYXV0aG9yaXphdGlvbl9jb2RlJyxcbiAgICAgIGNsaWVudF9pZDogY29uZmlnLmF3cy5jb2duaXRvQ2xpZW50SWQsXG4gICAgICBjb2RlOiBjb2RlLFxuICAgICAgcmVkaXJlY3RfdXJpOiBSRURJUkVDVF9VUkksXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKHRva2VuVXJsLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnIH0sXG4gICAgICBib2R5OiBwYXJhbXMudG9TdHJpbmcoKSxcbiAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIGNvbnN0IGVycm9yVGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVG9rZW4gZXhjaGFuZ2UgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c30gJHtlcnJvclRleHR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyB7XG4gICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgICByZWZyZXNoX3Rva2VuOiBzdHJpbmc7XG4gICAgICBleHBpcmVzX2luOiBudW1iZXI7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBhY2Nlc3NUb2tlbjogZGF0YS5hY2Nlc3NfdG9rZW4sXG4gICAgICBpZFRva2VuOiBkYXRhLmlkX3Rva2VuLFxuICAgICAgcmVmcmVzaFRva2VuOiBkYXRhLnJlZnJlc2hfdG9rZW4sXG4gICAgICBleHBpcmVzSW46IGRhdGEuZXhwaXJlc19pbixcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29kZSBKV1QgcGF5bG9hZFxuICAgKi9cbiAgcHJpdmF0ZSBkZWNvZGVKd3QodG9rZW46IHN0cmluZyk6IGFueSB7XG4gICAgY29uc3QgcGFydHMgPSB0b2tlbi5zcGxpdCgnLicpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDMpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKV1QnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShCdWZmZXIuZnJvbShwYXJ0c1sxXSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCd1dGYtOCcpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIHRva2Vuc1xuICAgKi9cbiAgYXN5bmMgcmVmcmVzaFRva2VucyhyZWZyZXNoVG9rZW46IHN0cmluZyk6IFByb21pc2U8e1xuICAgIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gICAgaWRUb2tlbjogc3RyaW5nO1xuICAgIGV4cGlyZXNJbjogbnVtYmVyO1xuICB9PiB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgdG9rZW5VcmwgPSBgaHR0cHM6Ly8ke2NvbmZpZy5hd3MuY29nbml0b0RvbWFpbn0vb2F1dGgyL3Rva2VuYDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoe1xuICAgICAgZ3JhbnRfdHlwZTogJ3JlZnJlc2hfdG9rZW4nLFxuICAgICAgY2xpZW50X2lkOiBjb25maWcuYXdzLmNvZ25pdG9DbGllbnRJZCxcbiAgICAgIHJlZnJlc2hfdG9rZW46IHJlZnJlc2hUb2tlbixcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godG9rZW5VcmwsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcgfSxcbiAgICAgIGJvZHk6IHBhcmFtcy50b1N0cmluZygpLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUb2tlbiByZWZyZXNoIGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXN9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKSBhcyB7XG4gICAgICBhY2Nlc3NfdG9rZW46IHN0cmluZztcbiAgICAgIGlkX3Rva2VuOiBzdHJpbmc7XG4gICAgICBleHBpcmVzX2luOiBudW1iZXI7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICBhY2Nlc3NUb2tlbjogZGF0YS5hY2Nlc3NfdG9rZW4sXG4gICAgICBpZFRva2VuOiBkYXRhLmlkX3Rva2VuLFxuICAgICAgZXhwaXJlc0luOiBkYXRhLmV4cGlyZXNfaW4sXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2dpbiB2aWEgT0F1dGggYnJvd3NlciBmbG93XG4gICAqL1xuICBhc3luYyBsb2dpbigpOiBQcm9taXNlPFRva2VuRGF0YSB8IG51bGw+IHtcbiAgICAvLyBDaGVjayBpZiBhbHJlYWR5IGxvZ2dlZCBpblxuICAgIGNvbnN0IGV4aXN0aW5nID0gYXdhaXQga2V5Y2hhaW5NYW5hZ2VyLmdldFRva2VucyhnZXRFbnZpcm9ubWVudCgpKTtcbiAgICBpZiAoZXhpc3RpbmcgJiYgIWtleWNoYWluTWFuYWdlci5pc1Rva2VuRXhwaXJlZChleGlzdGluZykpIHtcbiAgICAgIHJldHVybiBleGlzdGluZztcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuZ2VuZXJhdGVTdGF0ZSgpO1xuICAgIGNvbnN0IGF1dGhVcmwgPSB0aGlzLmJ1aWxkQXV0aFVybChzdGF0ZSk7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3Qgc2VydmVyID0gaHR0cC5jcmVhdGVTZXJ2ZXIoYXN5bmMgKHJlcSwgcmVzKSA9PiB7XG4gICAgICAgIGlmICghcmVxLnVybD8uc3RhcnRzV2l0aChDQUxMQkFDS19QQVRIKSkge1xuICAgICAgICAgIHJlcy53cml0ZUhlYWQoNDA0KTtcbiAgICAgICAgICByZXMuZW5kKCdOb3QgZm91bmQnKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocmVxLnVybCwgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtDQUxMQkFDS19QT1JUfWApO1xuICAgICAgICAgIGNvbnN0IGNvZGUgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnY29kZScpO1xuICAgICAgICAgIGNvbnN0IHJldHVybmVkU3RhdGUgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnc3RhdGUnKTtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IHVybC5zZWFyY2hQYXJhbXMuZ2V0KCdlcnJvcicpO1xuXG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9BdXRoIGVycm9yOiAke2Vycm9yfWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChyZXR1cm5lZFN0YXRlICE9PSBzdGF0ZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdGF0ZSBtaXNtYXRjaCcpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghY29kZSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBhdXRob3JpemF0aW9uIGNvZGUnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB0b2tlbnMgPSBhd2FpdCB0aGlzLmV4Y2hhbmdlQ29kZUZvclRva2Vucyhjb2RlKTtcbiAgICAgICAgICBjb25zdCBpZFBheWxvYWQgPSB0aGlzLmRlY29kZUp3dCh0b2tlbnMuaWRUb2tlbik7XG5cbiAgICAgICAgICBjb25zdCB0b2tlbkRhdGE6IFRva2VuRGF0YSA9IHtcbiAgICAgICAgICAgIGFjY2Vzc1Rva2VuOiB0b2tlbnMuYWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBpZFRva2VuOiB0b2tlbnMuaWRUb2tlbixcbiAgICAgICAgICAgIHJlZnJlc2hUb2tlbjogdG9rZW5zLnJlZnJlc2hUb2tlbixcbiAgICAgICAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArICh0b2tlbnMuZXhwaXJlc0luICogMTAwMCksXG4gICAgICAgICAgICB1c2VySWQ6IGlkUGF5bG9hZC5zdWIsXG4gICAgICAgICAgICBlbWFpbDogaWRQYXlsb2FkLmVtYWlsIHx8ICd1bmtub3duJyxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgYXdhaXQga2V5Y2hhaW5NYW5hZ2VyLnNldFRva2Vucyh0b2tlbkRhdGEsIGdldEVudmlyb25tZW50KCkpO1xuXG4gICAgICAgICAgcmVzLndyaXRlSGVhZCgyMDAsIHsgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnIH0pO1xuICAgICAgICAgIHJlcy5lbmQoYFxuICAgICAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgICAgICA8aHRtbD5cbiAgICAgICAgICAgIDxoZWFkPjx0aXRsZT5TdWNjZXNzPC90aXRsZT48L2hlYWQ+XG4gICAgICAgICAgICA8Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7IG1heC13aWR0aDogNjAwcHg7IG1hcmdpbjogNTBweCBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxoMSBzdHlsZT1cImNvbG9yOiAjMjJjNTVlO1wiPiYjMTAwMDM7IEF1dGhlbnRpY2F0aW9uIFN1Y2Nlc3NmdWw8L2gxPlxuICAgICAgICAgICAgICA8cD5Zb3UgY2FuIGNsb3NlIHRoaXMgd2luZG93LjwvcD5cbiAgICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgICAgIDwvaHRtbD5cbiAgICAgICAgICBgKTtcblxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgc2VydmVyLmNsb3NlKCgpID0+IHJlc29sdmUodG9rZW5EYXRhKSk7XG4gICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgICByZXMud3JpdGVIZWFkKDQwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbDsgY2hhcnNldD11dGYtOCcgfSk7XG4gICAgICAgICAgcmVzLmVuZChgXG4gICAgICAgICAgICA8IURPQ1RZUEUgaHRtbD5cbiAgICAgICAgICAgIDxodG1sPlxuICAgICAgICAgICAgPGhlYWQ+PHRpdGxlPkVycm9yPC90aXRsZT48L2hlYWQ+XG4gICAgICAgICAgICA8Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7IG1heC13aWR0aDogNjAwcHg7IG1hcmdpbjogNTBweCBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgIDxoMSBzdHlsZT1cImNvbG9yOiAjZWY0NDQ0O1wiPiYjMTAwMDc7IEF1dGhlbnRpY2F0aW9uIEZhaWxlZDwvaDE+XG4gICAgICAgICAgICAgIDxwPiR7ZXJyLm1lc3NhZ2V9PC9wPlxuICAgICAgICAgICAgPC9ib2R5PlxuICAgICAgICAgICAgPC9odG1sPlxuICAgICAgICAgIGApO1xuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKCkgPT4gcmVqZWN0KGVycikpO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBzZXJ2ZXIub24oJ2Vycm9yJywgKGVycjogYW55KSA9PiB7XG4gICAgICAgIGlmIChlcnIuY29kZSA9PT0gJ0VBRERSSU5VU0UnKSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgUG9ydCAke0NBTExCQUNLX1BPUlR9IGlzIGluIHVzZWApKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHNlcnZlci5saXN0ZW4oQ0FMTEJBQ0tfUE9SVCwgJ2xvY2FsaG9zdCcsICgpID0+IHtcbiAgICAgICAgbG9nZ2VyLmluZm8oJ1tBdXRoU2VydmljZV0gQ2FsbGJhY2sgc2VydmVyIHN0YXJ0ZWQnKTtcbiAgICAgICAgdGhpcy5vcGVuQnJvd3NlcihhdXRoVXJsKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBUaW1lb3V0XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2VydmVyLmNsb3NlKCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ0xvZ2luIHRpbWVvdXQnKSkpO1xuICAgICAgfSwgMiAqIDYwICogMTAwMCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9nb3V0XG4gICAqL1xuICBhc3luYyBsb2dvdXQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnKCk7XG4gICAgY29uc3QgZGVsZXRlZCA9IGF3YWl0IGtleWNoYWluTWFuYWdlci5kZWxldGVUb2tlbnMoZ2V0RW52aXJvbm1lbnQoKSk7XG5cbiAgICBpZiAoZGVsZXRlZCkge1xuICAgICAgLy8gU3RhcnQgdGVtcG9yYXJ5IHNlcnZlciB0byBoYW5kbGUgc2lnbm91dCBjYWxsYmFja1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlcnZlciA9IGh0dHAuY3JlYXRlU2VydmVyKChyZXEsIHJlcykgPT4ge1xuICAgICAgICAgIGlmIChyZXEudXJsPy5zdGFydHNXaXRoKCcvc2lnbm91dCcpKSB7XG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDIwMCwgeyAnQ29udGVudC1UeXBlJzogJ3RleHQvaHRtbDsgY2hhcnNldD11dGYtOCcgfSk7XG4gICAgICAgICAgICByZXMuZW5kKGBcbiAgICAgICAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgICAgICAgIDxodG1sPlxuICAgICAgICAgICAgICA8aGVhZD48dGl0bGU+U2lnbmVkIE91dDwvdGl0bGU+PC9oZWFkPlxuICAgICAgICAgICAgICA8Ym9keSBzdHlsZT1cImZvbnQtZmFtaWx5OiBzeXN0ZW0tdWk7IG1heC13aWR0aDogNjAwcHg7IG1hcmdpbjogNTBweCBhdXRvOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG4gICAgICAgICAgICAgICAgPGgxIHN0eWxlPVwiY29sb3I6ICMyMmM1NWU7XCI+JiMxMDAwMzsgU2lnbmVkIE91dDwvaDE+XG4gICAgICAgICAgICAgICAgPHA+WW91IGNhbiBjbG9zZSB0aGlzIHdpbmRvdy48L3A+XG4gICAgICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgICAgICAgPC9odG1sPlxuICAgICAgICAgICAgYCk7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKCkgPT4gcmVzb2x2ZSh0cnVlKSk7XG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXMud3JpdGVIZWFkKDQwNCk7XG4gICAgICAgICAgICByZXMuZW5kKCdOb3QgZm91bmQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNlcnZlci5vbignZXJyb3InLCAoKSA9PiB7XG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTsgLy8gU3RpbGwgcmV0dXJuIHRydWUgc2luY2UgdG9rZW5zIHdlcmUgZGVsZXRlZFxuICAgICAgICB9KTtcblxuICAgICAgICBzZXJ2ZXIubGlzdGVuKENBTExCQUNLX1BPUlQsICdsb2NhbGhvc3QnLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbG9nb3V0VXJsID0gYGh0dHBzOi8vJHtjb25maWcuYXdzLmNvZ25pdG9Eb21haW59L2xvZ291dD9gICtcbiAgICAgICAgICAgIGBjbGllbnRfaWQ9JHtjb25maWcuYXdzLmNvZ25pdG9DbGllbnRJZH0mYCArXG4gICAgICAgICAgICBgbG9nb3V0X3VyaT0ke2VuY29kZVVSSUNvbXBvbmVudChSRURJUkVDVF9VUkkucmVwbGFjZSgnL2NhbGxiYWNrJywgJy9zaWdub3V0JykpfWA7XG5cbiAgICAgICAgICB0aGlzLm9wZW5Ccm93c2VyKGxvZ291dFVybCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFRpbWVvdXQgYWZ0ZXIgMzAgc2Vjb25kc1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXJ2ZXIuY2xvc2UoKCkgPT4gcmVzb2x2ZSh0cnVlKSk7XG4gICAgICAgIH0sIDMwICogMTAwMCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGVsZXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY3VycmVudCBhdXRoIHN0YXR1c1xuICAgKi9cbiAgYXN5bmMgZ2V0U3RhdHVzKCk6IFByb21pc2U8eyBhdXRoZW50aWNhdGVkOiBib29sZWFuOyB0b2tlbnM/OiBUb2tlbkRhdGEgfT4ge1xuICAgIGNvbnN0IHRva2VucyA9IGF3YWl0IGtleWNoYWluTWFuYWdlci5nZXRUb2tlbnMoZ2V0RW52aXJvbm1lbnQoKSk7XG4gICAgaWYgKCF0b2tlbnMpIHtcbiAgICAgIHJldHVybiB7IGF1dGhlbnRpY2F0ZWQ6IGZhbHNlIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGF1dGhlbnRpY2F0ZWQ6ICFrZXljaGFpbk1hbmFnZXIuaXNUb2tlbkV4cGlyZWQodG9rZW5zKSxcbiAgICAgIHRva2VucyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBhdXRoU2VydmljZSA9IEF1dGhTZXJ2aWNlLmdldEluc3RhbmNlKCk7XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runAuthCli = exports.authService = exports.AuthService = void 0;
|
|
4
|
+
var auth_service_1 = require("./auth-service");
|
|
5
|
+
Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_1.AuthService; } });
|
|
6
|
+
Object.defineProperty(exports, "authService", { enumerable: true, get: function () { return auth_service_1.authService; } });
|
|
7
|
+
var auth_cli_1 = require("./auth-cli");
|
|
8
|
+
Object.defineProperty(exports, "runAuthCli", { enumerable: true, get: function () { return auth_cli_1.runAuthCli; } });
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXV0aC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBMEQ7QUFBakQsMkdBQUEsV0FBVyxPQUFBO0FBQUUsMkdBQUEsV0FBVyxPQUFBO0FBQ2pDLHVDQUF3QztBQUEvQixzR0FBQSxVQUFVLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBdXRoU2VydmljZSwgYXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGgtc2VydmljZSc7XG5leHBvcnQgeyBydW5BdXRoQ2xpIH0gZnJvbSAnLi9hdXRoLWNsaSc7XG4iXX0=
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment type
|
|
3
|
+
*/
|
|
4
|
+
export type Environment = 'development' | 'production';
|
|
5
|
+
/**
|
|
6
|
+
* Configuration interface
|
|
7
|
+
*/
|
|
8
|
+
export interface Config {
|
|
9
|
+
environment: Environment;
|
|
10
|
+
aws: {
|
|
11
|
+
region: string;
|
|
12
|
+
appsyncUrl: string;
|
|
13
|
+
cognitoUserPoolId: string;
|
|
14
|
+
cognitoClientId: string;
|
|
15
|
+
cognitoDomain: string;
|
|
16
|
+
};
|
|
17
|
+
keychain: {
|
|
18
|
+
serviceName: string;
|
|
19
|
+
};
|
|
20
|
+
server: {
|
|
21
|
+
port: number;
|
|
22
|
+
host: string;
|
|
23
|
+
dynamicPort: boolean;
|
|
24
|
+
};
|
|
25
|
+
claude: {
|
|
26
|
+
command: string;
|
|
27
|
+
defaultTimeout: number;
|
|
28
|
+
};
|
|
29
|
+
codex: {
|
|
30
|
+
command: string;
|
|
31
|
+
defaultTimeout: number;
|
|
32
|
+
sessionsDir: string;
|
|
33
|
+
approvalTimeoutMs: number;
|
|
34
|
+
};
|
|
35
|
+
gemini: {
|
|
36
|
+
command: string;
|
|
37
|
+
defaultTimeout: number;
|
|
38
|
+
transcriptDir: string;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get environment from process.env.ENVIRONMENT, defaults to 'production'
|
|
43
|
+
*/
|
|
44
|
+
export declare function getEnvironment(): Environment;
|
|
45
|
+
/**
|
|
46
|
+
* Load configuration for specific environment
|
|
47
|
+
* If no environment specified, uses process.env.ENVIRONMENT or defaults to 'production'
|
|
48
|
+
*/
|
|
49
|
+
export declare function loadConfig(environment?: Environment): Config;
|
|
50
|
+
/**
|
|
51
|
+
* Get current configuration (auto-initializes if not already loaded)
|
|
52
|
+
*/
|
|
53
|
+
export declare function getConfig(): Config;
|
|
@@ -0,0 +1,123 @@
|
|
|
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.getEnvironment = getEnvironment;
|
|
7
|
+
exports.loadConfig = loadConfig;
|
|
8
|
+
exports.getConfig = getConfig;
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
// Default configuration values
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
development: {
|
|
14
|
+
environment: 'development',
|
|
15
|
+
aws: {
|
|
16
|
+
region: 'us-east-1',
|
|
17
|
+
appsyncUrl: 'https://te6rjr37sbfpjc4fiunmb2tgy4.appsync-api.us-east-1.amazonaws.com/graphql',
|
|
18
|
+
cognitoUserPoolId: 'us-east-1_yVwWDPvvJ',
|
|
19
|
+
cognitoClientId: 'e9r5apv6v5uui3l928r2ris0r',
|
|
20
|
+
cognitoDomain: 'codevibe-development.auth.us-east-1.amazoncognito.com',
|
|
21
|
+
},
|
|
22
|
+
keychain: {
|
|
23
|
+
serviceName: 'ai.quantiya.app.codevibe',
|
|
24
|
+
},
|
|
25
|
+
server: {
|
|
26
|
+
port: 3456,
|
|
27
|
+
host: '127.0.0.1',
|
|
28
|
+
dynamicPort: true,
|
|
29
|
+
},
|
|
30
|
+
claude: {
|
|
31
|
+
command: 'claude',
|
|
32
|
+
defaultTimeout: 60000,
|
|
33
|
+
},
|
|
34
|
+
codex: {
|
|
35
|
+
command: 'codex',
|
|
36
|
+
defaultTimeout: 60000,
|
|
37
|
+
sessionsDir: path_1.default.join(os_1.default.homedir(), '.codex', 'sessions'),
|
|
38
|
+
approvalTimeoutMs: 5000,
|
|
39
|
+
},
|
|
40
|
+
gemini: {
|
|
41
|
+
command: 'gemini',
|
|
42
|
+
defaultTimeout: 60000,
|
|
43
|
+
transcriptDir: path_1.default.join(os_1.default.homedir(), '.gemini', 'tmp'),
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
production: {
|
|
47
|
+
environment: 'production',
|
|
48
|
+
aws: {
|
|
49
|
+
region: 'us-east-1',
|
|
50
|
+
appsyncUrl: 'https://jwhyxq4sgrgcdosewp5k4ns5ca.appsync-api.us-east-1.amazonaws.com/graphql',
|
|
51
|
+
cognitoUserPoolId: 'us-east-1_mNRO0j5og',
|
|
52
|
+
cognitoClientId: '5p04dbc9ojptc5r8n7605fg78f',
|
|
53
|
+
cognitoDomain: 'codevibe-production.auth.us-east-1.amazoncognito.com',
|
|
54
|
+
},
|
|
55
|
+
keychain: {
|
|
56
|
+
serviceName: 'ai.quantiya.app.codevibe',
|
|
57
|
+
},
|
|
58
|
+
server: {
|
|
59
|
+
port: 3456,
|
|
60
|
+
host: '127.0.0.1',
|
|
61
|
+
dynamicPort: true,
|
|
62
|
+
},
|
|
63
|
+
claude: {
|
|
64
|
+
command: 'claude',
|
|
65
|
+
defaultTimeout: 60000,
|
|
66
|
+
},
|
|
67
|
+
codex: {
|
|
68
|
+
command: 'codex',
|
|
69
|
+
defaultTimeout: 60000,
|
|
70
|
+
sessionsDir: path_1.default.join(os_1.default.homedir(), '.codex', 'sessions'),
|
|
71
|
+
approvalTimeoutMs: 5000,
|
|
72
|
+
},
|
|
73
|
+
gemini: {
|
|
74
|
+
command: 'gemini',
|
|
75
|
+
defaultTimeout: 60000,
|
|
76
|
+
transcriptDir: path_1.default.join(os_1.default.homedir(), '.gemini', 'tmp'),
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
// Current configuration (mutable, lazy-initialized)
|
|
81
|
+
let currentConfig = null;
|
|
82
|
+
let configInitialized = false;
|
|
83
|
+
/**
|
|
84
|
+
* Get environment from process.env.ENVIRONMENT, defaults to 'production'
|
|
85
|
+
*/
|
|
86
|
+
function getEnvironment() {
|
|
87
|
+
const env = process.env.ENVIRONMENT;
|
|
88
|
+
if (env === 'development' || env === 'production') {
|
|
89
|
+
return env;
|
|
90
|
+
}
|
|
91
|
+
return 'production';
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Load configuration for specific environment
|
|
95
|
+
* If no environment specified, uses process.env.ENVIRONMENT or defaults to 'production'
|
|
96
|
+
*/
|
|
97
|
+
function loadConfig(environment) {
|
|
98
|
+
const env = environment || getEnvironment();
|
|
99
|
+
currentConfig = {
|
|
100
|
+
...DEFAULT_CONFIG[env],
|
|
101
|
+
// Allow environment variable overrides
|
|
102
|
+
aws: {
|
|
103
|
+
...DEFAULT_CONFIG[env].aws,
|
|
104
|
+
region: process.env.AWS_REGION || DEFAULT_CONFIG[env].aws.region,
|
|
105
|
+
appsyncUrl: process.env.APPSYNC_URL || DEFAULT_CONFIG[env].aws.appsyncUrl,
|
|
106
|
+
cognitoUserPoolId: process.env.COGNITO_USER_POOL_ID || DEFAULT_CONFIG[env].aws.cognitoUserPoolId,
|
|
107
|
+
cognitoClientId: process.env.COGNITO_CLIENT_ID || DEFAULT_CONFIG[env].aws.cognitoClientId,
|
|
108
|
+
cognitoDomain: process.env.COGNITO_DOMAIN || DEFAULT_CONFIG[env].aws.cognitoDomain,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
configInitialized = true;
|
|
112
|
+
return currentConfig;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get current configuration (auto-initializes if not already loaded)
|
|
116
|
+
*/
|
|
117
|
+
function getConfig() {
|
|
118
|
+
if (!configInitialized || !currentConfig) {
|
|
119
|
+
loadConfig();
|
|
120
|
+
}
|
|
121
|
+
return currentConfig;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE4SEEsd0NBTUM7QUFNRCxnQ0FnQkM7QUFLRCw4QkFLQztBQXBLRCw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBZ0R4QiwrQkFBK0I7QUFDL0IsTUFBTSxjQUFjLEdBQWdDO0lBQ2xELFdBQVcsRUFBRTtRQUNYLFdBQVcsRUFBRSxhQUFhO1FBQzFCLEdBQUcsRUFBRTtZQUNILE1BQU0sRUFBRSxXQUFXO1lBQ25CLFVBQVUsRUFBRSxnRkFBZ0Y7WUFDNUYsaUJBQWlCLEVBQUUscUJBQXFCO1lBQ3hDLGVBQWUsRUFBRSwyQkFBMkI7WUFDNUMsYUFBYSxFQUFFLHVEQUF1RDtTQUN2RTtRQUNELFFBQVEsRUFBRTtZQUNSLFdBQVcsRUFBRSwwQkFBMEI7U0FDeEM7UUFDRCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxXQUFXO1lBQ2pCLFdBQVcsRUFBRSxJQUFJO1NBQ2xCO1FBQ0QsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLFFBQVE7WUFDakIsY0FBYyxFQUFFLEtBQUs7U0FDdEI7UUFDRCxLQUFLLEVBQUU7WUFDTCxPQUFPLEVBQUUsT0FBTztZQUNoQixjQUFjLEVBQUUsS0FBSztZQUNyQixXQUFXLEVBQUUsY0FBSSxDQUFDLElBQUksQ0FBQyxZQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQztZQUMxRCxpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCO1FBQ0QsTUFBTSxFQUFFO1lBQ04sT0FBTyxFQUFFLFFBQVE7WUFDakIsY0FBYyxFQUFFLEtBQUs7WUFDckIsYUFBYSxFQUFFLGNBQUksQ0FBQyxJQUFJLENBQUMsWUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUM7U0FDekQ7S0FDRjtJQUNELFVBQVUsRUFB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Y2VzQ29udGVudCI6WyJpbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbi8qKlxuICogRW52aXJvbm1lbnQgdHlwZVxuICovXG5leHBvcnQgdHlwZSBFbnZpcm9ubWVudCA9ICdkZXZlbG9wbWVudCcgfCAncHJvZHVjdGlvbic7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWcge1xuICBlbnZpcm9ubWVudDogRW52aXJvbm1lbnQ7XG4gIGF3czoge1xuICAgIHJlZ2lvbjogc3RyaW5nO1xuICAgIGFwcHN5bmNVcmw6IHN0cmluZztcbiAgICBjb2duaXRvVXNlclBvb2xJZDogc3RyaW5nO1xuICAgIGNvZ25pdG9DbGllbnRJZDogc3RyaW5nO1xuICAgIGNvZ25pdG9Eb21haW46IHN0cmluZztcbiAgfTtcbiAga2V5Y2hhaW46IHtcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICB9O1xuICAvLyBQbHVnaW4tc3BlY2lmaWMgc2VydmVyIGNvbmZpZ3VyYXRpb25cbiAgc2VydmVyOiB7XG4gICAgcG9ydDogbnVtYmVyO1xuICAgIGhvc3Q6IHN0cmluZztcbiAgICBkeW5hbWljUG9ydDogYm9vbGVhbjtcbiAgfTtcbiAgLy8gQ2xhdWRlLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbiAgY2xhdWRlOiB7XG4gICAgY29tbWFuZDogc3RyaW5nO1xuICAgIGRlZmF1bHRUaW1lb3V0OiBudW1iZXI7XG4gIH07XG4gIC8vIENvZGV4LXNwZWNpZmljIGNvbmZpZ3VyYXRpb25cbiAgY29kZXg6IHtcbiAgICBjb21tYW5kOiBzdHJpbmc7XG4gICAgZGVmYXVsdFRpbWVvdXQ6IG51bWJlcjtcbiAgICBzZXNzaW9uc0Rpcjogc3RyaW5nO1xuICAgIGFwcHJvdmFsVGltZW91dE1zOiBudW1iZXI7XG4gIH07XG4gIC8vIEdlbWluaS1zcGVjaWZpYyBjb25maWd1cmF0aW9uXG4gIGdlbWluaToge1xuICAgIGNvbW1hbmQ6IHN0cmluZztcbiAgICBkZWZhdWx0VGltZW91dDogbnVtYmVyO1xuICAgIHRyYW5zY3JpcHREaXI6IHN0cmluZztcbiAgfTtcbn1cblxuLy8gRGVmYXVsdCBjb25maWd1cmF0aW9uIHZhbHVlc1xuY29uc3QgREVGQVVMVF9DT05GSUc6IFJlY29yZDxFbnZpcm9ubWVudCwgQ29uZmlnPiA9IHtcbiAgZGV2ZWxvcG1lbnQ6IHtcbiAgICBlbnZpcm9ubWVudDogJ2RldmVsb3BtZW50JyxcbiAgICBhd3M6IHtcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBhcHBzeW5jVXJsOiAnaHR0cHM6Ly90ZTZyanIzN3NiZnBqYzRmaXVubWIydGd5NC5hcHBzeW5jLWFwaS51cy1lYXN0LTEuYW1hem9uYXdzLmNvbS9ncmFwaHFsJyxcbiAgICAgIGNvZ25pdG9Vc2VyUG9vbElkOiAndXMtZWFzdC0xX3lWd1dEUHZ2SicsXG4gICAgICBjb2duaXRvQ2xpZW50SWQ6ICdlOXI1YXB2NnY1dXVpM2w5MjhyMnJpczByJyxcbiAgICAgIGNvZ25pdG9Eb21haW46ICdjb2RldmliZS1kZXZlbG9wbWVudC5hdXRoLnVzLWVhc3QtMS5hbWF6b25jb2duaXRvLmNvbScsXG4gICAgfSxcbiAgICBrZXljaGFpbjoge1xuICAgICAgc2VydmljZU5hbWU6ICdhaS5xdWFudGl5YS5hcHAuY29kZXZpYmUnLFxuICAgIH0sXG4gICAgc2VydmVyOiB7XG4gICAgICBwb3J0OiAzNDU2LFxuICAgICAgaG9zdDogJzEyNy4wLjAuMScsXG4gICAgICBkeW5hbWljUG9ydDogdHJ1ZSxcbiAgICB9LFxuICAgIGNsYXVkZToge1xuICAgICAgY29tbWFuZDogJ2NsYXVkZScsXG4gICAgICBkZWZhdWx0VGltZW91dDogNjAwMDAsXG4gICAgfSxcbiAgICBjb2RleDoge1xuICAgICAgY29tbWFuZDogJ2NvZGV4JyxcbiAgICAgIGRlZmF1bHRUaW1lb3V0OiA2MDAwMCxcbiAgICAgIHNlc3Npb25zRGlyOiBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmNvZGV4JywgJ3Nlc3Npb25zJyksXG4gICAgICBhcHByb3ZhbFRpbWVvdXRNczogNTAwMCxcbiAgICB9LFxuICAgIGdlbWluaToge1xuICAgICAgY29tbWFuZDogJ2dlbWluaScsXG4gICAgICBkZWZhdWx0VGltZW91dDogNjAwMDAsXG4gICAgICB0cmFuc2NyaXB0RGlyOiBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmdlbWluaScsICd0bXAnKSxcbiAgICB9LFxuICB9LFxuICBwcm9kdWN0aW9uOiB7XG4gICAgZW52aXJvbm1lbnQ6ICdwcm9kdWN0aW9uJyxcbiAgICBhd3M6IHtcbiAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICBhcHBzeW5jVXJsOiAnaHR0cHM6Ly9qd2h5eHE0c2dyZ2Nkb3Nld3A1azRuczVjYS5hcHBzeW5jLWFwaS51cy1lYXN0LTEuYW1hem9uYXdzLmNvbS9ncmFwaHFsJyxcbiAgICAgIGNvZ25pdG9Vc2VyUG9vbElkOiAndXMtZWFzdC0xX21OUk8wajVvZycsXG4gICAgICBjb2duaXRvQ2xpZW50SWQ6ICc1cDA0ZGJjOW9qcHRjNXI4bjc2MDVmZzc4ZicsXG4gICAgICBjb2duaXRvRG9tYWluOiAnY29kZXZpYmUtcHJvZHVjdGlvbi5hdXRoLnVzLWVhc3QtMS5hbWF6b25jb2duaXRvLmNvbScsXG4gICAgfSxcbiAgICBrZXljaGFpbjoge1xuICAgICAgc2VydmljZU5hbWU6ICdhaS5xdWFudGl5YS5hcHAuY29kZXZpYmUnLFxuICAgIH0sXG4gICAgc2VydmVyOiB7XG4gICAgICBwb3J0OiAzNDU2LFxuICAgICAgaG9zdDogJzEyNy4wLjAuMScsXG4gICAgICBkeW5hbWljUG9ydDogdHJ1ZSxcbiAgICB9LFxuICAgIGNsYXVkZToge1xuICAgICAgY29tbWFuZDogJ2NsYXVkZScsXG4gICAgICBkZWZhdWx0VGltZW91dDogNjAwMDAsXG4gICAgfSxcbiAgICBjb2RleDoge1xuICAgICAgY29tbWFuZDogJ2NvZGV4JyxcbiAgICAgIGRlZmF1bHRUaW1lb3V0OiA2MDAwMCxcbiAgICAgIHNlc3Npb25zRGlyOiBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmNvZGV4JywgJ3Nlc3Npb25zJyksXG4gICAgICBhcHByb3ZhbFRpbWVvdXRNczogNTAwMCxcbiAgICB9LFxuICAgIGdlbWluaToge1xuICAgICAgY29tbWFuZDogJ2dlbWluaScsXG4gICAgICBkZWZhdWx0VGltZW91dDogNjAwMDAsXG4gICAgICB0cmFuc2NyaXB0RGlyOiBwYXRoLmpvaW4ob3MuaG9tZWRpcigpLCAnLmdlbWluaScsICd0bXAnKSxcbiAgICB9LFxuICB9LFxufTtcblxuLy8gQ3VycmVudCBjb25maWd1cmF0aW9uIChtdXRhYmxlLCBsYXp5LWluaXRpYWxpemVkKVxubGV0IGN1cnJlbnRDb25maWc6IENvbmZpZyB8IG51bGwgPSBudWxsO1xubGV0IGNvbmZpZ0luaXRpYWxpemVkID0gZmFsc2U7XG5cbi8qKlxuICogR2V0IGVudmlyb25tZW50IGZyb20gcHJvY2Vzcy5lbnYuRU5WSVJPTk1FTlQsIGRlZmF1bHRzIHRvICdwcm9kdWN0aW9uJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW52aXJvbm1lbnQoKTogRW52aXJvbm1lbnQge1xuICBjb25zdCBlbnYgPSBwcm9jZXNzLmVudi5FTlZJUk9OTUVOVCBhcyBFbnZpcm9ubWVudDtcbiAgaWYgKGVudiA9PT0gJ2RldmVsb3BtZW50JyB8fCBlbnYgPT09ICdwcm9kdWN0aW9uJykge1xuICAgIHJldHVybiBlbnY7XG4gIH1cbiAgcmV0dXJuICdwcm9kdWN0aW9uJztcbn1cblxuLyoqXG4gKiBMb2FkIGNvbmZpZ3VyYXRpb24gZm9yIHNwZWNpZmljIGVudmlyb25tZW50XG4gKiBJZiBubyBlbnZpcm9ubWVudCBzcGVjaWZpZWQsIHVzZXMgcHJvY2Vzcy5lbnYuRU5WSVJPTk1FTlQgb3IgZGVmYXVsdHMgdG8gJ3Byb2R1Y3Rpb24nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQ29uZmlnKGVudmlyb25tZW50PzogRW52aXJvbm1lbnQpOiBDb25maWcge1xuICBjb25zdCBlbnYgPSBlbnZpcm9ubWVudCB8fCBnZXRFbnZpcm9ubWVudCgpO1xuICBjdXJyZW50Q29uZmlnID0ge1xuICAgIC4uLkRFRkFVTFRfQ09ORklHW2Vudl0sXG4gICAgLy8gQWxsb3cgZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzXG4gICAgYXdzOiB7XG4gICAgICAuLi5ERUZBVUxUX0NPTkZJR1tlbnZdLmF3cyxcbiAgICAgIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTiB8fCBERUZBVUxUX0NPTkZJR1tlbnZdLmF3cy5yZWdpb24sXG4gICAgICBhcHBzeW5jVXJsOiBwcm9jZXNzLmVudi5BUFBTWU5DX1VSTCB8fCBERUZBVUxUX0NPTkZJR1tlbnZdLmF3cy5hcHBzeW5jVXJsLFxuICAgICAgY29nbml0b1VzZXJQb29sSWQ6IHByb2Nlc3MuZW52LkNPR05JVE9fVVNFUl9QT09MX0lEIHx8IERFRkFVTFRfQ09ORklHW2Vudl0uYXdzLmNvZ25pdG9Vc2VyUG9vbElkLFxuICAgICAgY29nbml0b0NsaWVudElkOiBwcm9jZXNzLmVudi5DT0dOSVRPX0NMSUVOVF9JRCB8fCBERUZBVUxUX0NPTkZJR1tlbnZdLmF3cy5jb2duaXRvQ2xpZW50SWQsXG4gICAgICBjb2duaXRvRG9tYWluOiBwcm9jZXNzLmVudi5DT0dOSVRPX0RPTUFJTiB8fCBERUZBVUxUX0NPTkZJR1tlbnZdLmF3cy5jb2duaXRvRG9tYWluLFxuICAgIH0sXG4gIH07XG4gIGNvbmZpZ0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgcmV0dXJuIGN1cnJlbnRDb25maWc7XG59XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgY29uZmlndXJhdGlvbiAoYXV0by1pbml0aWFsaXplcyBpZiBub3QgYWxyZWFkeSBsb2FkZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcoKTogQ29uZmlnIHtcbiAgaWYgKCFjb25maWdJbml0aWFsaXplZCB8fCAhY3VycmVudENvbmZpZykge1xuICAgIGxvYWRDb25maWcoKTtcbiAgfVxuICByZXR1cm4gY3VycmVudENvbmZpZyE7XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getEnvironment = exports.getConfig = exports.loadConfig = void 0;
|
|
4
|
+
var config_1 = require("./config");
|
|
5
|
+
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return config_1.loadConfig; } });
|
|
6
|
+
Object.defineProperty(exports, "getConfig", { enumerable: true, get: function () { return config_1.getConfig; } });
|
|
7
|
+
Object.defineProperty(exports, "getEnvironment", { enumerable: true, get: function () { return config_1.getEnvironment; } });
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUFpRTtBQUF4RCxvR0FBQSxVQUFVLE9BQUE7QUFBRSxtR0FBQSxTQUFTLE9BQUE7QUFBRSx3R0FBQSxjQUFjLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBsb2FkQ29uZmlnLCBnZXRDb25maWcsIGdldEVudmlyb25tZW50IH0gZnJvbSAnLi9jb25maWcnO1xuZXhwb3J0IHR5cGUgeyBDb25maWcsIEVudmlyb25tZW50IH0gZnJvbSAnLi9jb25maWcnO1xuIl19
|