@google/gemini-cli 0.18.0-preview.1 → 0.19.0-nightly.20251122.42c2e1b21
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/dist/google-gemini-cli-0.19.0-nightly.20251120.8e531dc02.tgz +0 -0
- package/dist/index.js +8 -6
- package/dist/index.js.map +1 -1
- package/dist/package.json +3 -3
- package/dist/src/commands/extensions/examples/mcp-server/package.json +1 -1
- package/dist/src/config/auth.js +4 -0
- package/dist/src/config/auth.js.map +1 -1
- package/dist/src/config/auth.test.js +61 -37
- package/dist/src/config/auth.test.js.map +1 -1
- package/dist/src/config/config.integration.test.js +81 -198
- package/dist/src/config/config.integration.test.js.map +1 -1
- package/dist/src/config/config.js +2 -6
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +196 -299
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/extension.test.js +109 -133
- package/dist/src/config/extension.test.js.map +1 -1
- package/dist/src/config/extensions/consent.test.js +152 -0
- package/dist/src/config/extensions/consent.test.js.map +1 -0
- package/dist/src/config/extensions/extensionEnablement.test.js +82 -15
- package/dist/src/config/extensions/extensionEnablement.test.js.map +1 -1
- package/dist/src/config/extensions/extensionSettings.test.js +105 -1
- package/dist/src/config/extensions/extensionSettings.test.js.map +1 -1
- package/dist/src/config/extensions/github.d.ts +1 -0
- package/dist/src/config/extensions/github.js +1 -1
- package/dist/src/config/extensions/github.js.map +1 -1
- package/dist/src/config/extensions/github.test.js +197 -318
- package/dist/src/config/extensions/github.test.js.map +1 -1
- package/dist/src/config/extensions/storage.test.d.ts +6 -0
- package/dist/src/config/extensions/storage.test.js +64 -0
- package/dist/src/config/extensions/storage.test.js.map +1 -0
- package/dist/src/config/extensions/update.test.js +154 -263
- package/dist/src/config/extensions/update.test.js.map +1 -1
- package/dist/src/config/extensions/variables.test.js +87 -1
- package/dist/src/config/extensions/variables.test.js.map +1 -1
- package/dist/src/config/sandboxConfig.d.ts +1 -1
- package/dist/src/config/sandboxConfig.js.map +1 -1
- package/dist/src/config/sandboxConfig.test.d.ts +6 -0
- package/dist/src/config/sandboxConfig.test.js +178 -0
- package/dist/src/config/sandboxConfig.test.js.map +1 -0
- package/dist/src/config/settingPaths.test.d.ts +6 -0
- package/dist/src/config/settingPaths.test.js +22 -0
- package/dist/src/config/settingPaths.test.js.map +1 -0
- package/dist/src/config/settings.test.js +164 -226
- package/dist/src/config/settings.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +10 -10
- package/dist/src/config/settingsSchema.js +10 -10
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +0 -6
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/gemini.d.ts +1 -1
- package/dist/src/gemini.js +5 -7
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +18 -21
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.js +1 -1
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
- package/dist/src/services/BuiltinCommandLoader.test.js +0 -22
- package/dist/src/services/BuiltinCommandLoader.test.js.map +1 -1
- package/dist/src/test-utils/mockCommandContext.js +1 -1
- package/dist/src/test-utils/render.js +1 -1
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/AppContainer.js +13 -11
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +10 -16
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.js +17 -10
- package/dist/src/ui/auth/AuthDialog.js.map +1 -1
- package/dist/src/ui/auth/AuthDialog.test.js +5 -2
- package/dist/src/ui/auth/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/components/AppHeader.js +3 -17
- package/dist/src/ui/components/AppHeader.js.map +1 -1
- package/dist/src/ui/components/AppHeader.test.js +10 -4
- package/dist/src/ui/components/AppHeader.test.js.map +1 -1
- package/dist/src/ui/components/DebugProfiler.js +1 -1
- package/dist/src/ui/components/DebugProfiler.js.map +1 -1
- package/dist/src/ui/components/DialogManager.js +6 -1
- package/dist/src/ui/components/DialogManager.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +1 -1
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/LoadingIndicator.js +6 -1
- package/dist/src/ui/components/LoadingIndicator.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.test.js +1 -1
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
- package/dist/src/ui/components/SessionBrowser.d.ts +98 -0
- package/dist/src/ui/components/SessionBrowser.js +457 -0
- package/dist/src/ui/components/SessionBrowser.js.map +1 -0
- package/dist/src/ui/components/SessionBrowser.test.d.ts +6 -0
- package/dist/src/ui/components/SessionBrowser.test.js +245 -0
- package/dist/src/ui/components/SessionBrowser.test.js.map +1 -0
- package/dist/src/ui/components/messages/ShellToolMessage.js +2 -2
- package/dist/src/ui/components/messages/ShellToolMessage.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.d.ts +5 -0
- package/dist/src/ui/components/messages/ToolMessage.js +32 -3
- package/dist/src/ui/components/messages/ToolMessage.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.js +20 -4
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.test.js +20 -0
- package/dist/src/ui/components/shared/text-buffer.test.js.map +1 -1
- package/dist/src/ui/constants.d.ts +1 -0
- package/dist/src/ui/constants.js +1 -0
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.js +3 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAlternateBuffer.js +1 -1
- package/dist/src/ui/hooks/useAlternateBuffer.js.map +1 -1
- package/dist/src/ui/hooks/useBanner.d.ts +14 -0
- package/dist/src/ui/hooks/useBanner.js +48 -0
- package/dist/src/ui/hooks/useBanner.js.map +1 -0
- package/dist/src/ui/hooks/useBanner.test.d.ts +6 -0
- package/dist/src/ui/hooks/useBanner.test.js +92 -0
- package/dist/src/ui/hooks/useBanner.test.js.map +1 -0
- package/dist/src/ui/hooks/useBracketedPaste.js +3 -5
- package/dist/src/ui/hooks/useBracketedPaste.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -0
- package/dist/src/ui/hooks/useGeminiStream.js +6 -4
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js +1 -1
- package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
- package/dist/src/ui/hooks/useInactivityTimer.d.ts +14 -0
- package/dist/src/ui/hooks/useInactivityTimer.js +30 -0
- package/dist/src/ui/hooks/useInactivityTimer.js.map +1 -0
- package/dist/src/ui/hooks/useLoadingIndicator.d.ts +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.js +2 -2
- package/dist/src/ui/hooks/useLoadingIndicator.js.map +1 -1
- package/dist/src/ui/hooks/useLoadingIndicator.test.js +16 -5
- package/dist/src/ui/hooks/useLoadingIndicator.test.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.d.ts +4 -1
- package/dist/src/ui/hooks/usePhraseCycler.js +52 -43
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.test.js +52 -3
- package/dist/src/ui/hooks/usePhraseCycler.test.js.map +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.d.ts +2 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js +3 -0
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.d.ts +18 -1
- package/dist/src/ui/hooks/useSessionBrowser.js +59 -0
- package/dist/src/ui/hooks/useSessionBrowser.js.map +1 -1
- package/dist/src/ui/hooks/useSessionBrowser.test.js +154 -526
- package/dist/src/ui/hooks/useSessionBrowser.test.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js +121 -0
- package/dist/src/ui/privacy/CloudFreePrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js +34 -0
- package/dist/src/ui/privacy/CloudPaidPrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/privacy/GeminiPrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js +34 -0
- package/dist/src/ui/privacy/GeminiPrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/privacy/PrivacyNotice.test.d.ts +6 -0
- package/dist/src/ui/privacy/PrivacyNotice.test.js +62 -0
- package/dist/src/ui/privacy/PrivacyNotice.test.js.map +1 -0
- package/dist/src/ui/types.js +1 -1
- package/dist/src/ui/utils/bracketedPaste.d.ts +7 -0
- package/dist/src/ui/utils/bracketedPaste.js +15 -0
- package/dist/src/ui/utils/bracketedPaste.js.map +1 -0
- package/dist/src/ui/utils/kittyProtocolDetector.js +3 -4
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +1 -1
- package/dist/src/ui/utils/mouse.d.ts +2 -2
- package/dist/src/ui/utils/mouse.js +2 -11
- package/dist/src/ui/utils/mouse.js.map +1 -1
- package/dist/src/utils/persistentState.d.ts +1 -1
- package/dist/src/utils/sessionCleanup.test.js +38 -0
- package/dist/src/utils/sessionCleanup.test.js.map +1 -1
- package/dist/src/utils/sessionUtils.d.ts +49 -4
- package/dist/src/utils/sessionUtils.js +100 -25
- package/dist/src/utils/sessionUtils.js.map +1 -1
- package/dist/src/utils/sessionUtils.test.js +46 -3
- package/dist/src/utils/sessionUtils.test.js.map +1 -1
- package/dist/src/utils/sessions.js +4 -1
- package/dist/src/utils/sessions.js.map +1 -1
- package/dist/src/utils/sessions.test.js +42 -0
- package/dist/src/utils/sessions.test.js.map +1 -1
- package/dist/src/zed-integration/connection.test.d.ts +6 -0
- package/dist/src/zed-integration/connection.test.js +175 -0
- package/dist/src/zed-integration/connection.test.js.map +1 -0
- package/dist/src/zed-integration/fileSystemService.test.d.ts +6 -0
- package/dist/src/zed-integration/fileSystemService.test.js +98 -0
- package/dist/src/zed-integration/fileSystemService.test.js.map +1 -0
- package/dist/src/zed-integration/schema.d.ts +30 -30
- package/dist/src/zed-integration/zedIntegration.d.ts +31 -1
- package/dist/src/zed-integration/zedIntegration.js +5 -2
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.test.d.ts +6 -0
- package/dist/src/zed-integration/zedIntegration.test.js +619 -0
- package/dist/src/zed-integration/zedIntegration.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/google-gemini-cli-0.18.0-preview.0.tgz +0 -0
- package/dist/src/utils/stdio.d.ts +0 -32
- package/dist/src/utils/stdio.js +0 -85
- package/dist/src/utils/stdio.js.map +0 -1
- package/dist/src/utils/stdio.test.js +0 -47
- package/dist/src/utils/stdio.test.js.map +0 -1
- /package/dist/src/{utils/stdio.test.d.ts → config/extensions/consent.test.d.ts} +0 -0
|
Binary file
|
package/dist/index.js
CHANGED
|
@@ -6,23 +6,25 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import './src/gemini.js';
|
|
8
8
|
import { main } from './src/gemini.js';
|
|
9
|
-
import {
|
|
9
|
+
import { FatalError, writeToStderr } from '@google/gemini-cli-core';
|
|
10
|
+
import { runExitCleanup } from './src/utils/cleanup.js';
|
|
10
11
|
// --- Global Entry Point ---
|
|
11
|
-
main().catch((error) => {
|
|
12
|
+
main().catch(async (error) => {
|
|
13
|
+
await runExitCleanup();
|
|
12
14
|
if (error instanceof FatalError) {
|
|
13
15
|
let errorMessage = error.message;
|
|
14
16
|
if (!process.env['NO_COLOR']) {
|
|
15
17
|
errorMessage = `\x1b[31m${errorMessage}\x1b[0m`;
|
|
16
18
|
}
|
|
17
|
-
|
|
19
|
+
writeToStderr(errorMessage + '\n');
|
|
18
20
|
process.exit(error.exitCode);
|
|
19
21
|
}
|
|
20
|
-
|
|
22
|
+
writeToStderr('An unexpected critical error occurred:');
|
|
21
23
|
if (error instanceof Error) {
|
|
22
|
-
|
|
24
|
+
writeToStderr(error.stack + '\n');
|
|
23
25
|
}
|
|
24
26
|
else {
|
|
25
|
-
|
|
27
|
+
writeToStderr(String(error) + '\n');
|
|
26
28
|
}
|
|
27
29
|
process.exit(1);
|
|
28
30
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAEA;;;;GAIG;AAEH,OAAO,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,6BAA6B;AAC7B,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3B,MAAM,cAAc,EAAE,CAAC;IAEvB,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,IAAI,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,YAAY,GAAG,WAAW,YAAY,SAAS,CAAC;QAClD,CAAC;QACD,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACD,aAAa,CAAC,wCAAwC,CAAC,CAAC;IACxD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@google/gemini-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0-nightly.20251122.42c2e1b21",
|
|
4
4
|
"description": "Gemini CLI",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
"dist"
|
|
26
26
|
],
|
|
27
27
|
"config": {
|
|
28
|
-
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.
|
|
28
|
+
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.19.0-nightly.20251122.42c2e1b21"
|
|
29
29
|
},
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@google/gemini-cli-core": "file:../core",
|
|
32
32
|
"@google/genai": "1.30.0",
|
|
33
33
|
"@iarna/toml": "^2.2.5",
|
|
34
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
34
|
+
"@modelcontextprotocol/sdk": "^1.22.0",
|
|
35
35
|
"@types/update-notifier": "^6.0.8",
|
|
36
36
|
"ansi-regex": "^6.2.2",
|
|
37
37
|
"clipboardy": "^5.0.0",
|
package/dist/src/config/auth.js
CHANGED
|
@@ -12,6 +12,10 @@ export function validateAuthMethod(authMethod) {
|
|
|
12
12
|
return null;
|
|
13
13
|
}
|
|
14
14
|
if (authMethod === AuthType.USE_GEMINI) {
|
|
15
|
+
if (!process.env['GEMINI_API_KEY']) {
|
|
16
|
+
return ('When using Gemini API, you must specify the GEMINI_API_KEY environment variable.\n' +
|
|
17
|
+
'Update your environment and try again (no reload needed if using .env)!');
|
|
18
|
+
}
|
|
15
19
|
return null;
|
|
16
20
|
}
|
|
17
21
|
if (authMethod === AuthType.USE_VERTEX_AI) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/config/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC;IACvC,IACE,UAAU,KAAK,QAAQ,CAAC,iBAAiB;QACzC,UAAU,KAAK,QAAQ,CAAC,WAAW,EACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,8BAA8B,GAClC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,CAAC,8BAA8B,IAAI,CAAC,eAAe,EAAE,CAAC;YACxD,OAAO,CACL,kDAAkD;gBAClD,2EAA2E;gBAC3E,kEAAkE;gBAClE,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,+BAA+B,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/config/auth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE9D,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,eAAe,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC;IACvC,IACE,UAAU,KAAK,QAAQ,CAAC,iBAAiB;QACzC,UAAU,KAAK,QAAQ,CAAC,WAAW,EACnC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACnC,OAAO,CACL,oFAAoF;gBACpF,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC1C,MAAM,8BAA8B,GAClC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,CAAC,8BAA8B,IAAI,CAAC,eAAe,EAAE,CAAC;YACxD,OAAO,CACL,kDAAkD;gBAClD,2EAA2E;gBAC3E,kEAAkE;gBAClE,yEAAyE,CAC1E,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,+BAA+B,CAAC;AACzC,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { AuthType } from '@google/gemini-cli-core';
|
|
7
|
-
import { vi } from 'vitest';
|
|
7
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
8
8
|
import { validateAuthMethod } from './auth.js';
|
|
9
9
|
vi.mock('./settings.js', () => ({
|
|
10
10
|
loadEnvironment: vi.fn(),
|
|
@@ -14,7 +14,6 @@ vi.mock('./settings.js', () => ({
|
|
|
14
14
|
}));
|
|
15
15
|
describe('validateAuthMethod', () => {
|
|
16
16
|
beforeEach(() => {
|
|
17
|
-
vi.resetModules();
|
|
18
17
|
vi.stubEnv('GEMINI_API_KEY', undefined);
|
|
19
18
|
vi.stubEnv('GOOGLE_CLOUD_PROJECT', undefined);
|
|
20
19
|
vi.stubEnv('GOOGLE_CLOUD_LOCATION', undefined);
|
|
@@ -23,43 +22,68 @@ describe('validateAuthMethod', () => {
|
|
|
23
22
|
afterEach(() => {
|
|
24
23
|
vi.unstubAllEnvs();
|
|
25
24
|
});
|
|
26
|
-
it(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
25
|
+
it.each([
|
|
26
|
+
{
|
|
27
|
+
description: 'should return null for LOGIN_WITH_GOOGLE',
|
|
28
|
+
authType: AuthType.LOGIN_WITH_GOOGLE,
|
|
29
|
+
envs: {},
|
|
30
|
+
expected: null,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
description: 'should return null for COMPUTE_ADC',
|
|
34
|
+
authType: AuthType.COMPUTE_ADC,
|
|
35
|
+
envs: {},
|
|
36
|
+
expected: null,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
description: 'should return null for USE_GEMINI if GEMINI_API_KEY is set',
|
|
40
|
+
authType: AuthType.USE_GEMINI,
|
|
41
|
+
envs: { GEMINI_API_KEY: 'test-key' },
|
|
42
|
+
expected: null,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
description: 'should return an error message for USE_GEMINI if GEMINI_API_KEY is not set',
|
|
46
|
+
authType: AuthType.USE_GEMINI,
|
|
47
|
+
envs: {},
|
|
48
|
+
expected: 'When using Gemini API, you must specify the GEMINI_API_KEY environment variable.\n' +
|
|
49
|
+
'Update your environment and try again (no reload needed if using .env)!',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
description: 'should return null for USE_VERTEX_AI if GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION are set',
|
|
53
|
+
authType: AuthType.USE_VERTEX_AI,
|
|
54
|
+
envs: {
|
|
55
|
+
GOOGLE_CLOUD_PROJECT: 'test-project',
|
|
56
|
+
GOOGLE_CLOUD_LOCATION: 'test-location',
|
|
57
|
+
},
|
|
58
|
+
expected: null,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
description: 'should return null for USE_VERTEX_AI if GOOGLE_API_KEY is set',
|
|
62
|
+
authType: AuthType.USE_VERTEX_AI,
|
|
63
|
+
envs: { GOOGLE_API_KEY: 'test-api-key' },
|
|
64
|
+
expected: null,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
description: 'should return an error message for USE_VERTEX_AI if no required environment variables are set',
|
|
68
|
+
authType: AuthType.USE_VERTEX_AI,
|
|
69
|
+
envs: {},
|
|
70
|
+
expected: 'When using Vertex AI, you must specify either:\n' +
|
|
56
71
|
'• GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION environment variables.\n' +
|
|
57
72
|
'• GOOGLE_API_KEY environment variable (if using express mode).\n' +
|
|
58
|
-
'Update your environment and try again (no reload needed if using .env)!'
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
73
|
+
'Update your environment and try again (no reload needed if using .env)!',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
description: 'should return an error message for an invalid auth method',
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
78
|
+
authType: 'invalid-method',
|
|
79
|
+
envs: {},
|
|
80
|
+
expected: 'Invalid auth method selected.',
|
|
81
|
+
},
|
|
82
|
+
])('$description', ({ authType, envs, expected }) => {
|
|
83
|
+
for (const [key, value] of Object.entries(envs)) {
|
|
84
|
+
vi.stubEnv(key, value);
|
|
85
|
+
}
|
|
86
|
+
expect(validateAuthMethod(authType)).toBe(expected);
|
|
63
87
|
});
|
|
64
88
|
});
|
|
65
89
|
//# sourceMappingURL=auth.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../src/config/auth.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.test.js","sourceRoot":"","sources":["../../../src/config/auth.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi, } from 'vitest';
|
|
7
7
|
import * as fs from 'node:fs';
|
|
8
8
|
import * as path from 'node:path';
|
|
9
9
|
import { tmpdir } from 'node:os';
|
|
@@ -47,87 +47,29 @@ describe('Configuration Integration Tests', () => {
|
|
|
47
47
|
fs.rmSync(tempDir, { recursive: true });
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
|
-
describe('File Filtering Configuration', () => {
|
|
51
|
-
it(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
embeddingModel: 'test-embedding-model',
|
|
70
|
-
sandbox: undefined,
|
|
71
|
-
targetDir: tempDir,
|
|
72
|
-
debugMode: false,
|
|
73
|
-
fileFiltering: {
|
|
74
|
-
respectGitIgnore: false,
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
const config = new Config(configParams);
|
|
78
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(false);
|
|
79
|
-
});
|
|
80
|
-
it('should merge user and workspace file filtering settings', async () => {
|
|
81
|
-
const configParams = {
|
|
82
|
-
sessionId: 'test-session',
|
|
83
|
-
cwd: '/tmp',
|
|
84
|
-
model: 'test-model',
|
|
85
|
-
embeddingModel: 'test-embedding-model',
|
|
86
|
-
sandbox: undefined,
|
|
87
|
-
targetDir: tempDir,
|
|
88
|
-
debugMode: false,
|
|
89
|
-
fileFiltering: {
|
|
90
|
-
respectGitIgnore: true,
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
const config = new Config(configParams);
|
|
94
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(true);
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
describe('Configuration Integration', () => {
|
|
98
|
-
it('should handle partial configuration objects gracefully', async () => {
|
|
99
|
-
const configParams = {
|
|
100
|
-
sessionId: 'test-session',
|
|
101
|
-
cwd: '/tmp',
|
|
102
|
-
model: 'test-model',
|
|
103
|
-
embeddingModel: 'test-embedding-model',
|
|
104
|
-
sandbox: undefined,
|
|
105
|
-
targetDir: tempDir,
|
|
106
|
-
debugMode: false,
|
|
107
|
-
fileFiltering: {
|
|
108
|
-
respectGitIgnore: false,
|
|
109
|
-
},
|
|
110
|
-
};
|
|
111
|
-
const config = new Config(configParams);
|
|
112
|
-
// Specified settings should be applied
|
|
113
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(false);
|
|
114
|
-
});
|
|
115
|
-
it('should handle empty configuration objects gracefully', async () => {
|
|
116
|
-
const configParams = {
|
|
117
|
-
sessionId: 'test-session',
|
|
118
|
-
cwd: '/tmp',
|
|
119
|
-
model: 'test-model',
|
|
120
|
-
embeddingModel: 'test-embedding-model',
|
|
121
|
-
sandbox: undefined,
|
|
122
|
-
targetDir: tempDir,
|
|
123
|
-
debugMode: false,
|
|
50
|
+
describe('File Filtering and Configuration', () => {
|
|
51
|
+
it.each([
|
|
52
|
+
{
|
|
53
|
+
description: 'should load default file filtering settings when fileFiltering is missing',
|
|
54
|
+
fileFiltering: undefined,
|
|
55
|
+
expected: DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
description: 'should load custom file filtering settings from configuration',
|
|
59
|
+
fileFiltering: { respectGitIgnore: false },
|
|
60
|
+
expected: false,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
description: 'should respect file filtering settings from configuration',
|
|
64
|
+
fileFiltering: { respectGitIgnore: true },
|
|
65
|
+
expected: true,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
description: 'should handle empty fileFiltering object gracefully and use defaults',
|
|
124
69
|
fileFiltering: {},
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore);
|
|
129
|
-
});
|
|
130
|
-
it('should handle missing configuration sections gracefully', async () => {
|
|
70
|
+
expected: DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore,
|
|
71
|
+
},
|
|
72
|
+
])('$description', async ({ fileFiltering, expected }) => {
|
|
131
73
|
const configParams = {
|
|
132
74
|
sessionId: 'test-session',
|
|
133
75
|
cwd: '/tmp',
|
|
@@ -136,15 +78,23 @@ describe('Configuration Integration Tests', () => {
|
|
|
136
78
|
sandbox: undefined,
|
|
137
79
|
targetDir: tempDir,
|
|
138
80
|
debugMode: false,
|
|
139
|
-
|
|
81
|
+
fileFiltering,
|
|
140
82
|
};
|
|
141
83
|
const config = new Config(configParams);
|
|
142
|
-
|
|
143
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(DEFAULT_FILE_FILTERING_OPTIONS.respectGitIgnore);
|
|
84
|
+
expect(config.getFileFilteringRespectGitIgnore()).toBe(expected);
|
|
144
85
|
});
|
|
145
86
|
});
|
|
146
87
|
describe('Real-world Configuration Scenarios', () => {
|
|
147
|
-
it(
|
|
88
|
+
it.each([
|
|
89
|
+
{
|
|
90
|
+
description: 'should handle a security-focused configuration',
|
|
91
|
+
respectGitIgnore: true,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
description: 'should handle a CI/CD environment configuration',
|
|
95
|
+
respectGitIgnore: false,
|
|
96
|
+
},
|
|
97
|
+
])('$description', async ({ respectGitIgnore }) => {
|
|
148
98
|
const configParams = {
|
|
149
99
|
sessionId: 'test-session',
|
|
150
100
|
cwd: '/tmp',
|
|
@@ -154,27 +104,11 @@ describe('Configuration Integration Tests', () => {
|
|
|
154
104
|
targetDir: tempDir,
|
|
155
105
|
debugMode: false,
|
|
156
106
|
fileFiltering: {
|
|
157
|
-
respectGitIgnore
|
|
107
|
+
respectGitIgnore,
|
|
158
108
|
},
|
|
159
109
|
};
|
|
160
110
|
const config = new Config(configParams);
|
|
161
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(
|
|
162
|
-
});
|
|
163
|
-
it('should handle a CI/CD environment configuration', async () => {
|
|
164
|
-
const configParams = {
|
|
165
|
-
sessionId: 'test-session',
|
|
166
|
-
cwd: '/tmp',
|
|
167
|
-
model: 'test-model',
|
|
168
|
-
embeddingModel: 'test-embedding-model',
|
|
169
|
-
sandbox: undefined,
|
|
170
|
-
targetDir: tempDir,
|
|
171
|
-
debugMode: false,
|
|
172
|
-
fileFiltering: {
|
|
173
|
-
respectGitIgnore: false,
|
|
174
|
-
}, // CI might need to see all files
|
|
175
|
-
};
|
|
176
|
-
const config = new Config(configParams);
|
|
177
|
-
expect(config.getFileFilteringRespectGitIgnore()).toBe(false);
|
|
111
|
+
expect(config.getFileFilteringRespectGitIgnore()).toBe(respectGitIgnore);
|
|
178
112
|
});
|
|
179
113
|
});
|
|
180
114
|
describe('Checkpointing Configuration', () => {
|
|
@@ -200,122 +134,71 @@ describe('Configuration Integration Tests', () => {
|
|
|
200
134
|
const { parseArguments: parseArgs } = await import('./config.js');
|
|
201
135
|
parseArguments = parseArgs;
|
|
202
136
|
});
|
|
203
|
-
it(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
137
|
+
it.each([
|
|
138
|
+
{
|
|
139
|
+
description: 'should parse --approval-mode=auto_edit correctly',
|
|
140
|
+
argv: [
|
|
207
141
|
'node',
|
|
208
142
|
'script.js',
|
|
209
143
|
'--approval-mode',
|
|
210
144
|
'auto_edit',
|
|
211
145
|
'-p',
|
|
212
146
|
'test',
|
|
213
|
-
]
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
147
|
+
],
|
|
148
|
+
expected: { approvalMode: 'auto_edit', prompt: 'test', yolo: false },
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
description: 'should parse --approval-mode=yolo correctly',
|
|
152
|
+
argv: ['node', 'script.js', '--approval-mode', 'yolo', '-p', 'test'],
|
|
153
|
+
expected: { approvalMode: 'yolo', prompt: 'test', yolo: false },
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
description: 'should parse --approval-mode=default correctly',
|
|
157
|
+
argv: ['node', 'script.js', '--approval-mode', 'default', '-p', 'test'],
|
|
158
|
+
expected: { approvalMode: 'default', prompt: 'test', yolo: false },
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
description: 'should parse legacy --yolo flag correctly',
|
|
162
|
+
argv: ['node', 'script.js', '--yolo', '-p', 'test'],
|
|
163
|
+
expected: { yolo: true, approvalMode: undefined, prompt: 'test' },
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
description: 'should handle no approval mode arguments',
|
|
167
|
+
argv: ['node', 'script.js', '-p', 'test'],
|
|
168
|
+
expected: { approvalMode: undefined, yolo: false, prompt: 'test' },
|
|
169
|
+
},
|
|
170
|
+
])('$description', async ({ argv, expected }) => {
|
|
225
171
|
const originalArgv = process.argv;
|
|
226
172
|
try {
|
|
227
|
-
process.argv =
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
'-p',
|
|
233
|
-
'test',
|
|
234
|
-
];
|
|
235
|
-
const argv = await parseArguments({});
|
|
236
|
-
expect(argv.approvalMode).toBe('yolo');
|
|
237
|
-
expect(argv.prompt).toBe('test');
|
|
238
|
-
expect(argv.yolo).toBe(false); // Should NOT be set when using --approval-mode
|
|
173
|
+
process.argv = argv;
|
|
174
|
+
const parsedArgs = await parseArguments({});
|
|
175
|
+
expect(parsedArgs.approvalMode).toBe(expected.approvalMode);
|
|
176
|
+
expect(parsedArgs.prompt).toBe(expected.prompt);
|
|
177
|
+
expect(parsedArgs.yolo).toBe(expected.yolo);
|
|
239
178
|
}
|
|
240
179
|
finally {
|
|
241
180
|
process.argv = originalArgv;
|
|
242
181
|
}
|
|
243
182
|
});
|
|
244
|
-
it(
|
|
183
|
+
it.each([
|
|
184
|
+
{
|
|
185
|
+
description: 'should reject invalid approval mode values',
|
|
186
|
+
argv: ['node', 'script.js', '--approval-mode', 'invalid_mode'],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
description: 'should reject conflicting --yolo and --approval-mode flags',
|
|
190
|
+
argv: ['node', 'script.js', '--yolo', '--approval-mode', 'default'],
|
|
191
|
+
},
|
|
192
|
+
])('$description', async ({ argv }) => {
|
|
245
193
|
const originalArgv = process.argv;
|
|
246
194
|
try {
|
|
247
|
-
process.argv =
|
|
248
|
-
'node',
|
|
249
|
-
'script.js',
|
|
250
|
-
'--approval-mode',
|
|
251
|
-
'default',
|
|
252
|
-
'-p',
|
|
253
|
-
'test',
|
|
254
|
-
];
|
|
255
|
-
const argv = await parseArguments({});
|
|
256
|
-
expect(argv.approvalMode).toBe('default');
|
|
257
|
-
expect(argv.prompt).toBe('test');
|
|
258
|
-
expect(argv.yolo).toBe(false);
|
|
259
|
-
}
|
|
260
|
-
finally {
|
|
261
|
-
process.argv = originalArgv;
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
it('should parse legacy --yolo flag correctly', async () => {
|
|
265
|
-
const originalArgv = process.argv;
|
|
266
|
-
try {
|
|
267
|
-
process.argv = ['node', 'script.js', '--yolo', '-p', 'test'];
|
|
268
|
-
const argv = await parseArguments({});
|
|
269
|
-
expect(argv.yolo).toBe(true);
|
|
270
|
-
expect(argv.approvalMode).toBeUndefined(); // Should NOT be set when using --yolo
|
|
271
|
-
expect(argv.prompt).toBe('test');
|
|
272
|
-
}
|
|
273
|
-
finally {
|
|
274
|
-
process.argv = originalArgv;
|
|
275
|
-
}
|
|
276
|
-
});
|
|
277
|
-
it('should reject invalid approval mode values during argument parsing', async () => {
|
|
278
|
-
const originalArgv = process.argv;
|
|
279
|
-
try {
|
|
280
|
-
process.argv = ['node', 'script.js', '--approval-mode', 'invalid_mode'];
|
|
281
|
-
// Should throw during argument parsing due to yargs validation
|
|
282
|
-
await expect(parseArguments({})).rejects.toThrow();
|
|
283
|
-
}
|
|
284
|
-
finally {
|
|
285
|
-
process.argv = originalArgv;
|
|
286
|
-
}
|
|
287
|
-
});
|
|
288
|
-
it('should reject conflicting --yolo and --approval-mode flags', async () => {
|
|
289
|
-
const originalArgv = process.argv;
|
|
290
|
-
try {
|
|
291
|
-
process.argv = [
|
|
292
|
-
'node',
|
|
293
|
-
'script.js',
|
|
294
|
-
'--yolo',
|
|
295
|
-
'--approval-mode',
|
|
296
|
-
'default',
|
|
297
|
-
];
|
|
298
|
-
// Should throw during argument parsing due to conflict validation
|
|
195
|
+
process.argv = argv;
|
|
299
196
|
await expect(parseArguments({})).rejects.toThrow();
|
|
300
197
|
}
|
|
301
198
|
finally {
|
|
302
199
|
process.argv = originalArgv;
|
|
303
200
|
}
|
|
304
201
|
});
|
|
305
|
-
it('should handle backward compatibility with mixed scenarios', async () => {
|
|
306
|
-
const originalArgv = process.argv;
|
|
307
|
-
try {
|
|
308
|
-
// Test that no approval mode arguments defaults to no flags set
|
|
309
|
-
process.argv = ['node', 'script.js', '-p', 'test'];
|
|
310
|
-
const argv = await parseArguments({});
|
|
311
|
-
expect(argv.approvalMode).toBeUndefined();
|
|
312
|
-
expect(argv.yolo).toBe(false);
|
|
313
|
-
expect(argv.prompt).toBe('test');
|
|
314
|
-
}
|
|
315
|
-
finally {
|
|
316
|
-
process.argv = originalArgv;
|
|
317
|
-
}
|
|
318
|
-
});
|
|
319
202
|
});
|
|
320
203
|
});
|
|
321
204
|
//# sourceMappingURL=config.integration.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.integration.test.js","sourceRoot":"","sources":["../../../src/config/config.integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"config.integration.test.js","sourceRoot":"","sources":["../../../src/config/config.integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,MAAM,EACN,EAAE,EACF,EAAE,GACH,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,EACL,MAAM,EACN,8BAA8B,GAC/B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,KAAK,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG,WAAW,EAAE,CAAC;AAEpC,oEAAoE;AACpE,SAAS,CAAC,GAAG,EAAE;IACb,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,MAAM,CAAC,aAAa,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE;IACZ,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,iCAAiC,CAAC;AAEvD,gDAAgD;AAChD,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;IAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;IAChE,OAAO;QACL,GAAG,MAAM;QACT,oBAAoB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC;YACtD,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;SACpB,CAAC,CAAC;QACH,kBAAkB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAI,OAAe,CAAC;IAEpB,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEzE,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;QAClE,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAC7C,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,aAAa,EAAE,CAAC;QACnB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAChD,EAAE,CAAC,IAAI,CAAC;YACN;gBACE,WAAW,EACT,2EAA2E;gBAC7E,aAAa,EAAE,SAAS;gBACxB,QAAQ,EAAE,8BAA8B,CAAC,gBAAgB;aAC1D;YACD;gBACE,WAAW,EACT,+DAA+D;gBACjE,aAAa,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE;gBAC1C,QAAQ,EAAE,KAAK;aAChB;YACD;gBACE,WAAW,EACT,2DAA2D;gBAC7D,aAAa,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE;gBACzC,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,WAAW,EACT,sEAAsE;gBACxE,aAAa,EAAE,EAAE;gBACjB,QAAQ,EAAE,8BAA8B,CAAC,gBAAgB;aAC1D;SACF,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvD,MAAM,YAAY,GAAqB;gBACrC,SAAS,EAAE,cAAc;gBACzB,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,YAAY;gBACnB,cAAc,EAAE,sBAAsB;gBACtC,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,KAAK;gBAChB,aAAa;aACd,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;YAExC,MAAM,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,EAAE,CAAC,IAAI,CAAC;YACN;gBACE,WAAW,EAAE,gDAAgD;gBAC7D,gBAAgB,EAAE,IAAI;aACvB;YACD;gBACE,WAAW,EAAE,iDAAiD;gBAC9D,gBAAgB,EAAE,KAAK;aACxB;SACF,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE;YAChD,MAAM,YAAY,GAAqB;gBACrC,SAAS,EAAE,cAAc;gBACzB,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,YAAY;gBACnB,cAAc,EAAE,sBAAsB;gBACtC,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,KAAK;gBAChB,aAAa,EAAE;oBACb,gBAAgB;iBACjB;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;YAExC,MAAM,CAAC,MAAM,CAAC,gCAAgC,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC3C,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,YAAY,GAAqB;gBACrC,SAAS,EAAE,cAAc;gBACzB,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE,YAAY;gBACnB,cAAc,EAAE,sBAAsB;gBACtC,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,OAAO;gBAClB,SAAS,EAAE,KAAK;gBAChB,aAAa,EAAE,IAAI;aACpB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC;YAExC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,IAAI,cAA2D,CAAC;QAEhE,UAAU,CAAC,KAAK,IAAI,EAAE;YACpB,+DAA+D;YAC/D,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YAClE,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC;YACN;gBACE,WAAW,EAAE,kDAAkD;gBAC/D,IAAI,EAAE;oBACJ,MAAM;oBACN,WAAW;oBACX,iBAAiB;oBACjB,WAAW;oBACX,IAAI;oBACJ,MAAM;iBACP;gBACD,QAAQ,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;aACrE;YACD;gBACE,WAAW,EAAE,6CAA6C;gBAC1D,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;gBACpE,QAAQ,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;aAChE;YACD;gBACE,WAAW,EAAE,gDAAgD;gBAC7D,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC;gBACvE,QAAQ,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE;aACnE;YACD;gBACE,WAAW,EAAE,2CAA2C;gBACxD,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC;gBACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE;aAClE;YACD;gBACE,WAAW,EAAE,0CAA0C;gBACvD,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC;gBACzC,QAAQ,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;aACnE;SACF,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;YAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBACpB,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,EAAc,CAAC,CAAC;gBACxD,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC5D,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAChD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9C,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC;YACN;gBACE,WAAW,EAAE,4CAA4C;gBACzD,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,CAAC;aAC/D;YACD;gBACE,WAAW,EACT,4DAA4D;gBAC9D,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,CAAC;aACpE;SACF,CAAC,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACpC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAClC,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;gBACpB,MAAM,MAAM,CAAC,cAAc,CAAC,EAAc,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACjE,CAAC;oBAAS,CAAC;gBACT,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;YAC9B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|