@quantiya/codevibe-core 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +15 -6
  2. package/bin/codevibe.js +1 -1
  3. package/dist/index.js +216 -67
  4. package/package.json +10 -10
  5. package/dist/appsync/appsync-client.d.ts +0 -132
  6. package/dist/appsync/appsync-client.js +0 -575
  7. package/dist/appsync/index.d.ts +0 -2
  8. package/dist/appsync/index.js +0 -10
  9. package/dist/appsync/queries.d.ts +0 -16
  10. package/dist/appsync/queries.js +0 -189
  11. package/dist/auth/auth-cli.d.ts +0 -5
  12. package/dist/auth/auth-cli.js +0 -217
  13. package/dist/auth/auth-service.d.ts +0 -53
  14. package/dist/auth/auth-service.js +0 -310
  15. package/dist/auth/index.d.ts +0 -2
  16. package/dist/auth/index.js +0 -9
  17. package/dist/config/config.d.ts +0 -53
  18. package/dist/config/config.js +0 -123
  19. package/dist/config/index.d.ts +0 -2
  20. package/dist/config/index.js +0 -8
  21. package/dist/crypto/crypto-service.d.ts +0 -118
  22. package/dist/crypto/crypto-service.js +0 -284
  23. package/dist/crypto/index.d.ts +0 -1
  24. package/dist/crypto/index.js +0 -9
  25. package/dist/index.d.ts +0 -14
  26. package/dist/keychain/index.d.ts +0 -1
  27. package/dist/keychain/index.js +0 -8
  28. package/dist/keychain/keychain-manager.d.ts +0 -125
  29. package/dist/keychain/keychain-manager.js +0 -375
  30. package/dist/logger/index.d.ts +0 -1
  31. package/dist/logger/index.js +0 -8
  32. package/dist/logger/logger.d.ts +0 -35
  33. package/dist/logger/logger.js +0 -142
  34. package/dist/prompt-parser.d.ts +0 -39
  35. package/dist/prompt-parser.js +0 -236
  36. package/dist/session/index.d.ts +0 -2
  37. package/dist/session/index.js +0 -7
  38. package/dist/session/session-resume.d.ts +0 -55
  39. package/dist/session/session-resume.js +0 -151
  40. package/dist/types/auth.d.ts +0 -15
  41. package/dist/types/auth.js +0 -3
  42. package/dist/types/encryption.d.ts +0 -54
  43. package/dist/types/encryption.js +0 -3
  44. package/dist/types/events.d.ts +0 -74
  45. package/dist/types/events.js +0 -28
  46. package/dist/types/index.d.ts +0 -4
  47. package/dist/types/index.js +0 -22
  48. package/dist/types/session.d.ts +0 -59
  49. package/dist/types/session.js +0 -22
@@ -1,310 +0,0 @@
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;">&#10003; 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;">&#10007; 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;">&#10003; 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=
@@ -1,2 +0,0 @@
1
- export { AuthService, authService } from './auth-service';
2
- export { runAuthCli } from './auth-cli';
@@ -1,9 +0,0 @@
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=
@@ -1,53 +0,0 @@
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;
@@ -1,123 +0,0 @@
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=
@@ -1,2 +0,0 @@
1
- export { loadConfig, getConfig, getEnvironment } from './config';
2
- export type { Config, Environment } from './config';
@@ -1,8 +0,0 @@
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