opencode-gemini-cli-oauth 1.1.1 ā 1.1.3
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/cli/setup.js +87 -35
- package/dist/cli/setup.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/setup.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { spawn } from 'child_process';
|
|
3
2
|
import fs from 'fs/promises';
|
|
4
3
|
import path from 'path';
|
|
5
4
|
import os from 'os';
|
|
6
|
-
import
|
|
7
|
-
|
|
5
|
+
import http from 'http';
|
|
6
|
+
import url from 'url';
|
|
7
|
+
import { OAuth2Client } from 'google-auth-library';
|
|
8
|
+
import { OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, OAUTH_SCOPES, OAUTH_CREDS_PATH, GEMINI_DIR } from '../constants.js';
|
|
9
|
+
// Setup paths
|
|
8
10
|
const OPENCODE_CONFIG_DIR = path.join(os.homedir(), '.config', 'opencode');
|
|
9
11
|
const OPENCODE_CONFIG_PATH = path.join(OPENCODE_CONFIG_DIR, 'opencode.json');
|
|
10
|
-
const OAUTH_CREDS_PATH = path.join(GEMINI_DIR, 'oauth_creds.json');
|
|
11
12
|
const MODELS_CONFIG = {
|
|
12
13
|
"gemini-cli-oauth": {
|
|
13
14
|
"npm": "opencode-gemini-cli-oauth",
|
|
@@ -35,6 +36,8 @@ const MODELS_CONFIG = {
|
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
};
|
|
39
|
+
// Helper for user input
|
|
40
|
+
import readline from 'readline';
|
|
38
41
|
const rl = readline.createInterface({
|
|
39
42
|
input: process.stdin,
|
|
40
43
|
output: process.stdout
|
|
@@ -42,23 +45,77 @@ const rl = readline.createInterface({
|
|
|
42
45
|
const question = (query) => {
|
|
43
46
|
return new Promise((resolve) => rl.question(query, resolve));
|
|
44
47
|
};
|
|
45
|
-
async function
|
|
46
|
-
|
|
47
|
-
const check = spawn('gemini', ['--version']);
|
|
48
|
-
check.on('error', () => resolve(false));
|
|
49
|
-
check.on('close', (code) => resolve(code === 0));
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
async function runGeminiLogin() {
|
|
53
|
-
console.log('\nš Initiating Gemini CLI Login...');
|
|
54
|
-
console.log('This will open your browser to authenticate with Google.');
|
|
48
|
+
async function performLoopbackLogin() {
|
|
49
|
+
console.log('\nš Initiating Native Google Login (Loopback Flow)...');
|
|
55
50
|
return new Promise((resolve, reject) => {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
51
|
+
let client; // Declare client here
|
|
52
|
+
// Create a local server to receive the code
|
|
53
|
+
const server = http.createServer(async (req, res) => {
|
|
54
|
+
try {
|
|
55
|
+
if (!req.url)
|
|
56
|
+
return;
|
|
57
|
+
const query = url.parse(req.url, true).query;
|
|
58
|
+
if (query.code) {
|
|
59
|
+
const code = query.code;
|
|
60
|
+
// Close the browser tab
|
|
61
|
+
res.writeHead(200, { 'Content-Type': 'text/html' });
|
|
62
|
+
res.end(`
|
|
63
|
+
<html>
|
|
64
|
+
<body style="font-family: sans-serif; text-align: center; padding-top: 50px;">
|
|
65
|
+
<h1 style="color: #4CAF50;">Authentication Successful!</h1>
|
|
66
|
+
<p>You can close this window and return to the terminal.</p>
|
|
67
|
+
</body>
|
|
68
|
+
</html>
|
|
69
|
+
`);
|
|
70
|
+
// Close server
|
|
71
|
+
server.close();
|
|
72
|
+
console.log('ā
Authorization code received!');
|
|
73
|
+
console.log('š Exchanging code for token...');
|
|
74
|
+
try {
|
|
75
|
+
// Exchange code for tokens (client is now accessible)
|
|
76
|
+
const { tokens } = await client.getToken(code);
|
|
77
|
+
// Save credentials
|
|
78
|
+
await fs.mkdir(GEMINI_DIR, { recursive: true });
|
|
79
|
+
await fs.writeFile(OAUTH_CREDS_PATH, JSON.stringify(tokens, null, 2));
|
|
80
|
+
console.log('ā
Authentication successful! Credentials saved.');
|
|
81
|
+
resolve();
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
reject(err);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
console.error('Server error:', err);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
// Listen on a random available port
|
|
93
|
+
server.listen(0, async () => {
|
|
94
|
+
const address = server.address();
|
|
95
|
+
if (!address || typeof address === 'string') {
|
|
96
|
+
reject(new Error('Failed to get server port'));
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const port = address.port;
|
|
100
|
+
const redirectUri = `http://localhost:${port}`;
|
|
101
|
+
console.log(`š Local server listening on port ${port}`);
|
|
102
|
+
// Initialize OAuth client with dynamic redirect URI
|
|
103
|
+
client = new OAuth2Client({
|
|
104
|
+
clientId: OAUTH_CLIENT_ID,
|
|
105
|
+
clientSecret: OAUTH_CLIENT_SECRET,
|
|
106
|
+
redirectUri: redirectUri
|
|
107
|
+
});
|
|
108
|
+
const authorizeUrl = client.generateAuthUrl({
|
|
109
|
+
access_type: 'offline',
|
|
110
|
+
scope: OAUTH_SCOPES,
|
|
111
|
+
prompt: 'consent'
|
|
112
|
+
});
|
|
113
|
+
console.log('\nš Opening browser to authorize...');
|
|
114
|
+
console.log(` URL: ${authorizeUrl}`);
|
|
115
|
+
// Try to open browser, or ask user to click
|
|
116
|
+
const { exec } = await import('child_process');
|
|
117
|
+
const start = (process.platform == 'darwin' ? 'open' : process.platform == 'win32' ? 'start' : 'xdg-open');
|
|
118
|
+
exec(`${start} "${authorizeUrl}"`);
|
|
62
119
|
});
|
|
63
120
|
});
|
|
64
121
|
}
|
|
@@ -73,13 +130,10 @@ async function updateOpencodeConfig() {
|
|
|
73
130
|
catch (e) {
|
|
74
131
|
console.log('Creating new OpenCode configuration file...');
|
|
75
132
|
}
|
|
76
|
-
// Ensure provider section exists
|
|
77
133
|
if (!config.provider)
|
|
78
134
|
config.provider = {};
|
|
79
|
-
// Merge our models
|
|
80
135
|
console.log('\nš¦ Configuring models in opencode.json...');
|
|
81
136
|
config.provider['gemini-cli-oauth'] = MODELS_CONFIG['gemini-cli-oauth'];
|
|
82
|
-
// Ensure plugin is listed
|
|
83
137
|
if (!config.plugin)
|
|
84
138
|
config.plugin = [];
|
|
85
139
|
if (!config.plugin.includes('opencode-gemini-cli-oauth')) {
|
|
@@ -96,30 +150,23 @@ async function updateOpencodeConfig() {
|
|
|
96
150
|
async function main() {
|
|
97
151
|
console.log('š OpenCode Gemini CLI OAuth Setup');
|
|
98
152
|
console.log('==================================');
|
|
99
|
-
// 1. Check
|
|
100
|
-
const hasGemini = await checkGeminiCliInstalled();
|
|
101
|
-
if (!hasGemini) {
|
|
102
|
-
console.error('ā Gemini CLI is not installed.');
|
|
103
|
-
console.log('Please install it first: npm install -g @google/gemini-cli');
|
|
104
|
-
process.exit(1);
|
|
105
|
-
}
|
|
106
|
-
// 2. Check Auth
|
|
153
|
+
// 1. Check Auth
|
|
107
154
|
try {
|
|
108
155
|
await fs.access(OAUTH_CREDS_PATH);
|
|
109
156
|
console.log('ā
OAuth credentials found.');
|
|
110
157
|
const answer = await question('Do you want to re-authenticate? (y/N) ');
|
|
111
158
|
if (answer.toLowerCase() === 'y') {
|
|
112
|
-
await
|
|
159
|
+
await performLoopbackLogin();
|
|
113
160
|
}
|
|
114
161
|
}
|
|
115
162
|
catch {
|
|
116
163
|
console.log('ā ļø No OAuth credentials found.');
|
|
117
164
|
const answer = await question('Do you want to login now? (Y/n) ');
|
|
118
165
|
if (answer.toLowerCase() !== 'n') {
|
|
119
|
-
await
|
|
166
|
+
await performLoopbackLogin();
|
|
120
167
|
}
|
|
121
168
|
}
|
|
122
|
-
//
|
|
169
|
+
// 2. Update Config
|
|
123
170
|
const updateConfig = await question('Do you want to automatically configure OpenCode models? (Y/n) ');
|
|
124
171
|
if (updateConfig.toLowerCase() !== 'n') {
|
|
125
172
|
await updateOpencodeConfig();
|
|
@@ -127,6 +174,11 @@ async function main() {
|
|
|
127
174
|
console.log('\n⨠Setup Complete!');
|
|
128
175
|
console.log('You can now use "Gemini (Google Account)" models in OpenCode.');
|
|
129
176
|
rl.close();
|
|
177
|
+
process.exit(0);
|
|
130
178
|
}
|
|
131
|
-
main().catch(
|
|
179
|
+
main().catch((error) => {
|
|
180
|
+
console.error('\nā Setup failed:', error.message);
|
|
181
|
+
rl.close();
|
|
182
|
+
process.exit(1);
|
|
183
|
+
});
|
|
132
184
|
//# sourceMappingURL=setup.js.map
|
package/dist/cli/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB,cAAc;AACd,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3E,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAE7E,MAAM,aAAa,GAAG;IACpB,kBAAkB,EAAE;QAClB,KAAK,EAAE,2BAA2B;QAClC,QAAQ,EAAE;YACR,sBAAsB,EAAE;gBACtB,MAAM,EAAE,mCAAmC;gBAC3C,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;aACnF;YACD,uBAAuB,EAAE;gBACvB,MAAM,EAAE,iCAAiC;gBACzC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;aAC1F;YACD,yBAAyB,EAAE;gBACzB,MAAM,EAAE,mCAAmC;gBAC3C,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;aAC1F;YACD,iBAAiB,EAAE;gBACjB,MAAM,EAAE,2CAA2C;gBACnD,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC/C,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;aACjE;SACF;KACF;CACF,CAAC;AAEF,wBAAwB;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;IAClC,KAAK,EAAE,OAAO,CAAC,KAAK;IACpB,MAAM,EAAE,OAAO,CAAC,MAAM;CACvB,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAmB,EAAE;IAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,KAAK,UAAU,oBAAoB;IACjC,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;IAEtE,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,MAAoB,CAAC,CAAC,sBAAsB;QAEhD,4CAA4C;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;YAClD,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,GAAG;oBAAE,OAAO;gBACrB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC;gBAE7C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACf,MAAM,IAAI,GAAG,KAAK,CAAC,IAAc,CAAC;oBAElC,wBAAwB;oBACxB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC;oBACpD,GAAG,CAAC,GAAG,CAAC;;;;;;;WAOP,CAAC,CAAC;oBAEH,eAAe;oBACf,MAAM,CAAC,KAAK,EAAE,CAAC;oBAEf,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;oBAC9C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;oBAE/C,IAAI,CAAC;wBACH,sDAAsD;wBACtD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBAE/C,mBAAmB;wBACnB,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAChD,MAAM,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;wBAEtE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;wBAC/D,OAAO,EAAE,CAAC;oBACZ,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,GAAG,CAAC,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,oCAAoC;QACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,EAAE;YAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAC1B,MAAM,WAAW,GAAG,oBAAoB,IAAI,EAAE,CAAC;YAE/C,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC;YAEzD,oDAAoD;YACpD,MAAM,GAAG,IAAI,YAAY,CAAC;gBACxB,QAAQ,EAAE,eAAe;gBACzB,YAAY,EAAE,mBAAmB;gBACjC,WAAW,EAAE,WAAW;aACzB,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;gBAC1C,WAAW,EAAE,SAAS;gBACtB,KAAK,EAAE,YAAY;gBACnB,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,WAAW,YAAY,EAAE,CAAC,CAAC;YAEvC,4CAA4C;YAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;YAC/C,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAA,CAAC,CAAC,MAAM,CAAA,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAA,CAAC,CAAC,OAAO,CAAA,CAAC,CAAC,UAAU,CAAC,CAAC;YACvG,IAAI,CAAC,GAAG,KAAK,KAAK,YAAY,GAAG,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzD,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YACjE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,GAAG,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAExE,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,gBAAgB,oBAAoB,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAElD,gBAAgB;IAChB,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,wCAAwC,CAAC,CAAC;QACxE,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kCAAkC,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YACjC,MAAM,oBAAoB,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,gEAAgE,CAAC,CAAC;IACtG,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;QACvC,MAAM,oBAAoB,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;IAC7E,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED