@google/gemini-cli 0.1.8-rc.0 → 0.1.8-rc.1

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 (54) hide show
  1. package/README.md +4 -2
  2. package/dist/google-gemini-cli-0.1.8-rc.1.tgz +0 -0
  3. package/dist/package.json +7 -7
  4. package/dist/src/config/auth.js +1 -1
  5. package/dist/src/config/auth.js.map +1 -1
  6. package/dist/src/gemini.js +2 -2
  7. package/dist/src/gemini.js.map +1 -1
  8. package/dist/src/generated/git-commit.d.ts +1 -1
  9. package/dist/src/generated/git-commit.js +1 -1
  10. package/dist/src/ui/App.js +2 -2
  11. package/dist/src/ui/App.js.map +1 -1
  12. package/dist/src/ui/components/AuthDialog.d.ts +3 -3
  13. package/dist/src/ui/components/AuthDialog.js +3 -6
  14. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  15. package/dist/src/ui/components/AuthDialog.test.js +3 -3
  16. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  17. package/dist/src/ui/components/SessionSummaryDisplay.js +3 -25
  18. package/dist/src/ui/components/SessionSummaryDisplay.js.map +1 -1
  19. package/dist/src/ui/components/SessionSummaryDisplay.test.js +2 -29
  20. package/dist/src/ui/components/SessionSummaryDisplay.test.js.map +1 -1
  21. package/dist/src/ui/components/StatsDisplay.d.ts +1 -0
  22. package/dist/src/ui/components/StatsDisplay.js +9 -2
  23. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  24. package/dist/src/ui/components/StatsDisplay.test.js +34 -0
  25. package/dist/src/ui/components/StatsDisplay.test.js.map +1 -1
  26. package/dist/src/ui/components/shared/MaxSizedBox.js +2 -1
  27. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  28. package/dist/src/ui/hooks/useAuthCommand.d.ts +2 -3
  29. package/dist/src/ui/hooks/useAuthCommand.js +7 -13
  30. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  31. package/dist/src/ui/hooks/useGeminiStream.test.js +1 -1
  32. package/dist/src/ui/hooks/useGeminiStream.test.js.map +1 -1
  33. package/dist/src/ui/privacy/PrivacyNotice.js +1 -1
  34. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -1
  35. package/dist/src/ui/utils/MarkdownDisplay.js +55 -0
  36. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  37. package/dist/src/ui/utils/MarkdownDisplay.test.js +176 -0
  38. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -0
  39. package/dist/src/ui/utils/TableRenderer.d.ts +17 -0
  40. package/dist/src/ui/utils/TableRenderer.js +66 -0
  41. package/dist/src/ui/utils/TableRenderer.js.map +1 -0
  42. package/dist/src/ui/utils/errorParsing.js +1 -1
  43. package/dist/src/ui/utils/errorParsing.js.map +1 -1
  44. package/dist/src/ui/utils/updateCheck.js +3 -1
  45. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  46. package/dist/tsconfig.tsbuildinfo +1 -1
  47. package/package.json +7 -7
  48. package/dist/google-gemini-cli-0.1.8-rc.0.tgz +0 -0
  49. package/dist/src/ui/components/Stats.d.ts +0 -39
  50. package/dist/src/ui/components/Stats.js +0 -23
  51. package/dist/src/ui/components/Stats.js.map +0 -1
  52. package/dist/src/ui/components/Stats.test.js +0 -57
  53. package/dist/src/ui/components/Stats.test.js.map +0 -1
  54. /package/dist/src/ui/{components/Stats.test.d.ts → utils/MarkdownDisplay.test.d.ts} +0 -0
@@ -0,0 +1,176 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import { render } from 'ink-testing-library';
8
+ import { MarkdownDisplay } from './MarkdownDisplay.js';
9
+ describe('MarkdownDisplay', () => {
10
+ describe('Table Rendering', () => {
11
+ it('should render a simple table', () => {
12
+ const tableMarkdown = `
13
+ | Name | Age | City |
14
+ |------|-----|------|
15
+ | John | 25 | NYC |
16
+ | Jane | 30 | LA |
17
+ `;
18
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: tableMarkdown, isPending: false, terminalWidth: 80 }));
19
+ expect(lastFrame()).toContain('Name');
20
+ expect(lastFrame()).toContain('Age');
21
+ expect(lastFrame()).toContain('City');
22
+ expect(lastFrame()).toContain('John');
23
+ expect(lastFrame()).toContain('25');
24
+ expect(lastFrame()).toContain('NYC');
25
+ expect(lastFrame()).toContain('Jane');
26
+ expect(lastFrame()).toContain('30');
27
+ expect(lastFrame()).toContain('LA');
28
+ });
29
+ it('should handle tables with varying column widths', () => {
30
+ const tableMarkdown = `
31
+ | Short | Medium Column | Very Long Column Name |
32
+ |-------|---------------|----------------------|
33
+ | A | Some text | This is a longer text content |
34
+ | B | More content | Another piece of content here |
35
+ `;
36
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: tableMarkdown, isPending: false, terminalWidth: 80 }));
37
+ expect(lastFrame()).toContain('Short');
38
+ expect(lastFrame()).toContain('Medium Column');
39
+ expect(lastFrame()).toContain('Very Long Column Name');
40
+ });
41
+ it('should handle empty cells in tables', () => {
42
+ const tableMarkdown = `
43
+ | Col1 | Col2 | Col3 |
44
+ |------|------|------|
45
+ | A | | C |
46
+ | | B | |
47
+ `;
48
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: tableMarkdown, isPending: false, terminalWidth: 80 }));
49
+ expect(lastFrame()).toContain('Col1');
50
+ expect(lastFrame()).toContain('Col2');
51
+ expect(lastFrame()).toContain('Col3');
52
+ expect(lastFrame()).toContain('A');
53
+ expect(lastFrame()).toContain('B');
54
+ expect(lastFrame()).toContain('C');
55
+ });
56
+ it('should handle mixed content with tables', () => {
57
+ const mixedMarkdown = `
58
+ # Header
59
+
60
+ Some paragraph text before the table.
61
+
62
+ | Feature | Status | Notes |
63
+ |---------|--------|-------|
64
+ | Auth | Done | OAuth |
65
+ | API | WIP | REST |
66
+
67
+ Some text after the table.
68
+ `;
69
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: mixedMarkdown, isPending: false, terminalWidth: 80 }));
70
+ expect(lastFrame()).toContain('Header');
71
+ expect(lastFrame()).toContain('Some paragraph text before the table.');
72
+ expect(lastFrame()).toContain('Feature');
73
+ expect(lastFrame()).toContain('Status');
74
+ expect(lastFrame()).toContain('Auth');
75
+ expect(lastFrame()).toContain('Done');
76
+ expect(lastFrame()).toContain('Some text after the table.');
77
+ });
78
+ it('should handle tables with empty cells at edges', () => {
79
+ const tableMarkdown = `
80
+ | | Middle | |
81
+ |-|--------|-|
82
+ | | Value | |
83
+ `;
84
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: tableMarkdown, isPending: false, terminalWidth: 80 }));
85
+ expect(lastFrame()).toContain('Middle');
86
+ expect(lastFrame()).toContain('Value');
87
+ // Should maintain column structure even with empty edge cells
88
+ });
89
+ it('should handle PR reviewer test case 1', () => {
90
+ const tableMarkdown = `
91
+ | Package | Lines of Code |
92
+ |---------|---------------|
93
+ | CLI | 18407 |
94
+ | Core | 14445 |
95
+ `;
96
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: tableMarkdown, isPending: false, terminalWidth: 80 }));
97
+ const output = lastFrame();
98
+ expect(output).toContain('Package');
99
+ expect(output).toContain('Lines of Code');
100
+ expect(output).toContain('CLI');
101
+ expect(output).toContain('18407');
102
+ expect(output).toContain('Core');
103
+ expect(output).toContain('14445');
104
+ });
105
+ it('should handle PR reviewer test case 2 - long table', () => {
106
+ const tableMarkdown = `
107
+ | Letter | Count |
108
+ |--------|-------|
109
+ | a | 15 |
110
+ | b | 2 |
111
+ | c | 26 |
112
+ | Total | 283 |
113
+ `;
114
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: tableMarkdown, isPending: false, terminalWidth: 80 }));
115
+ const output = lastFrame();
116
+ expect(output).toContain('Letter');
117
+ expect(output).toContain('Count');
118
+ expect(output).toContain('a');
119
+ expect(output).toContain('15');
120
+ expect(output).toContain('Total');
121
+ expect(output).toContain('283');
122
+ });
123
+ it('should not render malformed tables', () => {
124
+ const malformedMarkdown = `
125
+ | This looks like a table |
126
+ But there's no separator line
127
+ | So it shouldn't render as table |
128
+ `;
129
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: malformedMarkdown, isPending: false, terminalWidth: 80 }));
130
+ // Should render as regular text, not a table
131
+ expect(lastFrame()).toContain('| This looks like a table |');
132
+ expect(lastFrame()).toContain("But there's no separator line");
133
+ expect(lastFrame()).toContain("| So it shouldn't render as table |");
134
+ });
135
+ it('should not crash when rendering a very wide table in a narrow terminal', () => {
136
+ const wideTable = `
137
+ | Col 1 | Col 2 | Col 3 | Col 4 | Col 5 | Col 6 | Col 7 | Col 8 | Col 9 | Col 10 |
138
+ |-------|-------|-------|-------|-------|-------|-------|-------|-------|--------|
139
+ | ${'a'.repeat(20)} | ${'b'.repeat(20)} | ${'c'.repeat(20)} | ${'d'.repeat(20)} | ${'e'.repeat(20)} | ${'f'.repeat(20)} | ${'g'.repeat(20)} | ${'h'.repeat(20)} | ${'i'.repeat(20)} | ${'j'.repeat(20)} |
140
+ `;
141
+ const renderNarrow = () => render(_jsx(MarkdownDisplay, { text: wideTable, isPending: false, terminalWidth: 40 }));
142
+ // The important part is that this does not throw an error.
143
+ expect(renderNarrow).not.toThrow();
144
+ // We can also check that it rendered *something*.
145
+ const { lastFrame } = renderNarrow();
146
+ expect(lastFrame()).not.toBe('');
147
+ });
148
+ });
149
+ describe('Existing Functionality', () => {
150
+ it('should render headers correctly', () => {
151
+ const headerMarkdown = `
152
+ # H1 Header
153
+ ## H2 Header
154
+ ### H3 Header
155
+ #### H4 Header
156
+ `;
157
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: headerMarkdown, isPending: false, terminalWidth: 80 }));
158
+ expect(lastFrame()).toContain('H1 Header');
159
+ expect(lastFrame()).toContain('H2 Header');
160
+ expect(lastFrame()).toContain('H3 Header');
161
+ expect(lastFrame()).toContain('H4 Header');
162
+ });
163
+ it('should render code blocks correctly', () => {
164
+ const codeMarkdown = `
165
+ \`\`\`javascript
166
+ const x = 42;
167
+ console.log(x);
168
+ \`\`\`
169
+ `;
170
+ const { lastFrame } = render(_jsx(MarkdownDisplay, { text: codeMarkdown, isPending: false, terminalWidth: 80 }));
171
+ expect(lastFrame()).toContain('const x = 42;');
172
+ expect(lastFrame()).toContain('console.log(x);');
173
+ });
174
+ });
175
+ });
176
+ //# sourceMappingURL=MarkdownDisplay.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MarkdownDisplay.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/MarkdownDisplay.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import React from 'react';
7
+ interface TableRendererProps {
8
+ headers: string[];
9
+ rows: string[][];
10
+ terminalWidth: number;
11
+ }
12
+ /**
13
+ * Custom table renderer for markdown tables
14
+ * We implement our own instead of using ink-table due to module compatibility issues
15
+ */
16
+ export declare const TableRenderer: React.FC<TableRendererProps>;
17
+ export {};
@@ -0,0 +1,66 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Google LLC
5
+ * SPDX-License-Identifier: Apache-2.0
6
+ */
7
+ import React from 'react';
8
+ import { Text, Box } from 'ink';
9
+ import { Colors } from '../colors.js';
10
+ /**
11
+ * Custom table renderer for markdown tables
12
+ * We implement our own instead of using ink-table due to module compatibility issues
13
+ */
14
+ export const TableRenderer = ({ headers, rows, terminalWidth, }) => {
15
+ // Calculate column widths
16
+ const columnWidths = headers.map((header, index) => {
17
+ const headerWidth = header.length;
18
+ const maxRowWidth = Math.max(...rows.map((row) => (row[index] || '').length));
19
+ return Math.max(headerWidth, maxRowWidth) + 2; // Add padding
20
+ });
21
+ // Ensure table fits within terminal width
22
+ const totalWidth = columnWidths.reduce((sum, width) => sum + width + 1, 1);
23
+ const scaleFactor = totalWidth > terminalWidth ? terminalWidth / totalWidth : 1;
24
+ const adjustedWidths = columnWidths.map((width) => Math.floor(width * scaleFactor));
25
+ const renderCell = (content, width, isHeader = false) => {
26
+ // The actual space for content inside the padding
27
+ const contentWidth = Math.max(0, width - 2);
28
+ let cellContent = content;
29
+ if (content.length > contentWidth) {
30
+ if (contentWidth <= 3) {
31
+ // Not enough space for '...'
32
+ cellContent = content.substring(0, contentWidth);
33
+ }
34
+ else {
35
+ cellContent = content.substring(0, contentWidth - 3) + '...';
36
+ }
37
+ }
38
+ // Pad the content to fill the cell
39
+ const padded = cellContent.padEnd(contentWidth, ' ');
40
+ if (isHeader) {
41
+ return (_jsx(Text, { bold: true, color: Colors.AccentCyan, children: padded }));
42
+ }
43
+ return _jsx(Text, { children: padded });
44
+ };
45
+ const renderRow = (cells, isHeader = false) => (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { children: "\u2502 " }), cells.map((cell, index) => (_jsxs(React.Fragment, { children: [renderCell(cell, adjustedWidths[index] || 0, isHeader), _jsx(Text, { children: " \u2502 " })] }, index)))] }));
46
+ const renderSeparator = () => {
47
+ const separator = adjustedWidths
48
+ .map((width) => '─'.repeat(Math.max(0, (width || 0) - 2)))
49
+ .join('─┼─');
50
+ return _jsxs(Text, { children: ["\u251C\u2500", separator, "\u2500\u2524"] });
51
+ };
52
+ const renderTopBorder = () => {
53
+ const border = adjustedWidths
54
+ .map((width) => '─'.repeat(Math.max(0, (width || 0) - 2)))
55
+ .join('─┬─');
56
+ return _jsxs(Text, { children: ["\u250C\u2500", border, "\u2500\u2510"] });
57
+ };
58
+ const renderBottomBorder = () => {
59
+ const border = adjustedWidths
60
+ .map((width) => '─'.repeat(Math.max(0, (width || 0) - 2)))
61
+ .join('─┴─');
62
+ return _jsxs(Text, { children: ["\u2514\u2500", border, "\u2500\u2518"] });
63
+ };
64
+ return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [renderTopBorder(), renderRow(headers, true), renderSeparator(), rows.map((row, index) => (_jsx(React.Fragment, { children: renderRow(row) }, index))), renderBottomBorder()] }));
65
+ };
66
+ //# sourceMappingURL=TableRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRenderer.js","sourceRoot":"","sources":["../../../../src/ui/utils/TableRenderer.tsx"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ function isStructuredError(error) {
23
23
  }
24
24
  function getRateLimitMessage(authType) {
25
25
  switch (authType) {
26
- case AuthType.LOGIN_WITH_GOOGLE_PERSONAL:
26
+ case AuthType.LOGIN_WITH_GOOGLE:
27
27
  return RATE_LIMIT_ERROR_MESSAGE_GOOGLE;
28
28
  case AuthType.USE_GEMINI:
29
29
  return RATE_LIMIT_ERROR_MESSAGE_USE_GEMINI;
@@ -1 +1 @@
1
- {"version":3,"file":"errorParsing.js","sourceRoot":"","sources":["../../../../src/ui/utils/errorParsing.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAmB,MAAM,yBAAyB,CAAC;AAEpE,MAAM,+BAA+B,GACnC,uMAAuM,CAAC;AAC1M,MAAM,mCAAmC,GACvC,2IAA2I,CAAC;AAC9I,MAAM,+BAA+B,GACnC,wIAAwI,CAAC;AAC3I,MAAM,gCAAgC,GACpC,sEAAsE,CAAC;AAWzE,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAO,IAAI,KAAK;QAChB,OAAQ,KAAkB,CAAC,KAAK,KAAK,QAAQ;QAC7C,SAAS,IAAK,KAAkB,CAAC,KAAK,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,OAAQ,KAAyB,CAAC,OAAO,KAAK,QAAQ,CACvD,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAmB;IAC9C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,0BAA0B;YACtC,OAAO,+BAA+B,CAAC;QACzC,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,mCAAmC,CAAC;QAC7C,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,+BAA+B,CAAC;QACzC;YACE,OAAO,gCAAgC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAc,EACd,QAAmB;IAEnB,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,IAAI,IAAI,GAAG,eAAe,KAAK,CAAC,OAAO,GAAG,CAAC;QAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACzB,IAAI,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,eAAe,KAAK,GAAG,CAAC,CAAC,kCAAkC;QACpE,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAY,CAAC;YACtD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC5B,IAAI,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC7C,IAAI,CAAC;oBACH,8DAA8D;oBAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAY,CAAC;oBACxD,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;wBAC5B,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBAAC,OAAO,EAAE,EAAE,CAAC;oBACZ,kEAAkE;gBACpE,CAAC;gBACD,IAAI,IAAI,GAAG,eAAe,YAAY,aAAa,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;gBAChF,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;oBACnC,IAAI,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,kEAAkE;QACpE,CAAC;QACD,OAAO,eAAe,KAAK,GAAG,CAAC;IACjC,CAAC;IAED,OAAO,yCAAyC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"errorParsing.js","sourceRoot":"","sources":["../../../../src/ui/utils/errorParsing.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import updateNotifier from 'update-notifier';
7
+ import semver from 'semver';
7
8
  import { getPackageJson } from '../../utils/package.js';
8
9
  export async function checkForUpdates() {
9
10
  try {
@@ -21,7 +22,8 @@ export async function checkForUpdates() {
21
22
  // allow notifier to run in scripts
22
23
  shouldNotifyInNpmScript: true,
23
24
  });
24
- if (notifier.update) {
25
+ if (notifier.update &&
26
+ semver.gt(notifier.update.latest, notifier.update.current)) {
25
27
  return `Gemini CLI update available! ${notifier.update.current} → ${notifier.update.latest}\nRun npm install -g ${packageJson.name} to update`;
26
28
  }
27
29
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../../../src/ui/utils/updateCheck.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,CAAC;YAC9B,GAAG,EAAE;gBACH,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B;YACD,mBAAmB;YACnB,mBAAmB,EAAE,CAAC;YACtB,mCAAmC;YACnC,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,gCAAgC,QAAQ,CAAC,MAAM,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,wBAAwB,WAAW,CAAC,IAAI,YAAY,CAAC;QACjJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../../../src/ui/utils/updateCheck.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,CAAC;YAC9B,GAAG,EAAE;gBACH,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B;YACD,mBAAmB;YACnB,mBAAmB,EAAE,CAAC;YACtB,mCAAmC;YACnC,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;QAEH,IACE,QAAQ,CAAC,MAAM;YACf,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAC1D,CAAC;YACD,OAAO,gCAAgC,QAAQ,CAAC,MAAM,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,wBAAwB,WAAW,CAAC,IAAI,YAAY,CAAC;QACjJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}