gt 2.14.37 → 2.14.38
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/CHANGELOG.md +7 -0
- package/dist/console/inkFields.js +4 -3
- package/dist/console/inkFields.js.map +1 -1
- package/dist/console/inkLayout.js +7 -6
- package/dist/console/inkLayout.js.map +1 -1
- package/dist/console/inkTheme.d.ts +1 -0
- package/dist/console/inkTheme.js +6 -0
- package/dist/console/inkTheme.js.map +1 -0
- package/dist/console/logging.js +9 -8
- package/dist/console/logging.js.map +1 -1
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/generated/version.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# gtx-cli
|
|
2
2
|
|
|
3
|
+
## 2.14.38
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`cc4edc1`](https://github.com/generaltranslation/gt/commit/cc4edc1e40d9977125bf6d053fb7f8cdbdd40b05)]:
|
|
8
|
+
- @generaltranslation/supported-locales@2.1.0
|
|
9
|
+
|
|
3
10
|
## 2.14.37
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { stripAnsi } from "./logging.js";
|
|
2
2
|
import { getLocaleCodeWidth } from "./inkLocaleData.js";
|
|
3
|
+
import { INK_ACCENT_COLOR } from "./inkTheme.js";
|
|
3
4
|
import { truncate } from "./inkUtils.js";
|
|
4
5
|
import { Box, Text } from "ink";
|
|
5
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -7,7 +8,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
7
8
|
function OptionRow({ active, selected, label, hint, width }) {
|
|
8
9
|
const text = `${active ? ">" : " "} ${selected == null ? "" : selected ? "[x] " : "[ ] "}${stripAnsi(label)}${hint ? ` ${stripAnsi(hint)}` : ""}`;
|
|
9
10
|
return active ? /* @__PURE__ */ jsx(Text, {
|
|
10
|
-
color:
|
|
11
|
+
color: INK_ACCENT_COLOR,
|
|
11
12
|
bold: true,
|
|
12
13
|
children: width ? truncate(text, width) : text
|
|
13
14
|
}) : /* @__PURE__ */ jsx(Text, { children: width ? truncate(text, width) : text });
|
|
@@ -23,7 +24,7 @@ function SelectedTags({ selectedLocales, active, activeIndex, width }) {
|
|
|
23
24
|
}), selectedLocales.map((locale, index) => {
|
|
24
25
|
const isActive = active && index === activeIndex;
|
|
25
26
|
return /* @__PURE__ */ jsxs(Text, { children: [/* @__PURE__ */ jsx(Text, {
|
|
26
|
-
backgroundColor: isActive ?
|
|
27
|
+
backgroundColor: isActive ? INK_ACCENT_COLOR : "gray",
|
|
27
28
|
color: "black",
|
|
28
29
|
bold: isActive,
|
|
29
30
|
children: ` ${locale} `
|
|
@@ -55,7 +56,7 @@ function LocaleRow({ active, option, width, codeWidth }) {
|
|
|
55
56
|
const nativeMax = sameName ? 0 : Math.max(1, remainingForName - truncatedName.length - 2);
|
|
56
57
|
const truncatedNative = sameName ? "" : truncate(option.nativeName, nativeMax);
|
|
57
58
|
if (active) return /* @__PURE__ */ jsxs(Text, {
|
|
58
|
-
color:
|
|
59
|
+
color: INK_ACCENT_COLOR,
|
|
59
60
|
bold: true,
|
|
60
61
|
children: [`${marker} ${codeStr} ${truncatedName}`, sameName ? "" : ` ${truncatedNative}`]
|
|
61
62
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inkFields.js","names":[],"sources":["../../src/console/inkFields.tsx"],"sourcesContent":["import { Box, Text } from 'ink';\nimport { getLocaleCodeWidth } from './inkLocaleData.js';\nimport type { LocaleOption } from './inkTypes.js';\nimport { stripAnsi, truncate } from './inkUtils.js';\n\nexport function OptionRow({\n active,\n selected,\n label,\n hint,\n width,\n}: {\n active: boolean;\n selected?: boolean;\n label: string;\n hint?: string;\n width?: number;\n}) {\n const marker = active ? '>' : ' ';\n const selectedMarker = selected == null ? '' : selected ? '[x] ' : '[ ] ';\n const text = `${marker} ${selectedMarker}${stripAnsi(label)}${\n hint ? ` ${stripAnsi(hint)}` : ''\n }`;\n\n return active ? (\n <Text color=
|
|
1
|
+
{"version":3,"file":"inkFields.js","names":[],"sources":["../../src/console/inkFields.tsx"],"sourcesContent":["import { Box, Text } from 'ink';\nimport { getLocaleCodeWidth } from './inkLocaleData.js';\nimport { INK_ACCENT_COLOR } from './inkTheme.js';\nimport type { LocaleOption } from './inkTypes.js';\nimport { stripAnsi, truncate } from './inkUtils.js';\n\nexport function OptionRow({\n active,\n selected,\n label,\n hint,\n width,\n}: {\n active: boolean;\n selected?: boolean;\n label: string;\n hint?: string;\n width?: number;\n}) {\n const marker = active ? '>' : ' ';\n const selectedMarker = selected == null ? '' : selected ? '[x] ' : '[ ] ';\n const text = `${marker} ${selectedMarker}${stripAnsi(label)}${\n hint ? ` ${stripAnsi(hint)}` : ''\n }`;\n\n return active ? (\n <Text color={INK_ACCENT_COLOR} bold>\n {width ? truncate(text, width) : text}\n </Text>\n ) : (\n <Text>{width ? truncate(text, width) : text}</Text>\n );\n}\n\nexport function SelectedTags({\n selectedLocales,\n active,\n activeIndex,\n width,\n}: {\n selectedLocales: string[];\n active: boolean;\n activeIndex: number;\n width: number;\n}) {\n if (selectedLocales.length === 0) return null;\n\n return (\n <Box width={width} flexWrap='wrap'>\n <Text dimColor>Selected </Text>\n {selectedLocales.map((locale, index) => {\n const isActive = active && index === activeIndex;\n return (\n <Text key={locale}>\n <Text\n backgroundColor={isActive ? INK_ACCENT_COLOR : 'gray'}\n color='black'\n bold={isActive}\n >{` ${locale} `}</Text>\n {index < selectedLocales.length - 1 ? <Text> </Text> : null}\n </Text>\n );\n })}\n </Box>\n );\n}\n\nexport function LocaleOptionsList({\n options,\n activeIndex,\n width,\n}: {\n options: LocaleOption[];\n activeIndex: number;\n width: number;\n}) {\n const codeWidth = getLocaleCodeWidth();\n return (\n <Box flexDirection='column' marginTop={1}>\n {options.map((option, index) => (\n <LocaleRow\n key={option.code}\n active={index === activeIndex}\n option={option}\n width={width}\n codeWidth={codeWidth}\n />\n ))}\n </Box>\n );\n}\n\nfunction LocaleRow({\n active,\n option,\n width,\n codeWidth,\n}: {\n active: boolean;\n option: LocaleOption;\n width: number;\n codeWidth: number;\n}) {\n const marker = active ? '>' : ' ';\n const sameName = option.name === option.nativeName;\n const codeStr = option.code.padEnd(codeWidth);\n const reserved = 2 + codeWidth + 2;\n const remainingForName = Math.max(1, width - reserved);\n const nameMax = sameName\n ? remainingForName\n : Math.max(1, Math.ceil(remainingForName * 0.55));\n const truncatedName = truncate(option.name, nameMax);\n const nativeMax = sameName\n ? 0\n : Math.max(1, remainingForName - truncatedName.length - 2);\n const truncatedNative = sameName\n ? ''\n : truncate(option.nativeName, nativeMax);\n\n if (active) {\n return (\n <Text color={INK_ACCENT_COLOR} bold>\n {`${marker} ${codeStr} ${truncatedName}`}\n {sameName ? '' : ` ${truncatedNative}`}\n </Text>\n );\n }\n\n return (\n <Text>\n <Text>{`${marker} `}</Text>\n <Text dimColor>{codeStr}</Text>\n <Text>{` ${truncatedName}`}</Text>\n {sameName ? null : <Text dimColor italic>{` ${truncatedNative}`}</Text>}\n </Text>\n );\n}\n\nexport function RemainingMatches({\n total,\n visible,\n}: {\n total: number;\n visible: number;\n}) {\n const remaining = total - visible;\n if (remaining <= 0) return null;\n return <Text dimColor>{remaining} more matches</Text>;\n}\n"],"mappings":";;;;;;;AAMA,SAAgB,UAAU,EACxB,QACA,UACA,OACA,MACA,SAOC;CAGD,MAAM,OAAO,GAFE,SAAS,MAAM,IAEP,GADA,YAAY,OAAO,KAAK,WAAW,SAAS,SACxB,UAAU,MAAM,GACzD,OAAO,IAAI,UAAU,KAAK,KAAK;AAGjC,QAAO,SACL,oBAAC,MAAD;EAAM,OAAO;EAAkB,MAAA;YAC5B,QAAQ,SAAS,MAAM,MAAM,GAAG;EAC5B,CAAA,GAEP,oBAAC,MAAD,EAAA,UAAO,QAAQ,SAAS,MAAM,MAAM,GAAG,MAAY,CAAA;;AAIvD,SAAgB,aAAa,EAC3B,iBACA,QACA,aACA,SAMC;AACD,KAAI,gBAAgB,WAAW,EAAG,QAAO;AAEzC,QACE,qBAAC,KAAD;EAAY;EAAO,UAAS;YAA5B,CACE,oBAAC,MAAD;GAAM,UAAA;aAAS;GAAgB,CAAA,EAC9B,gBAAgB,KAAK,QAAQ,UAAU;GACtC,MAAM,WAAW,UAAU,UAAU;AACrC,UACE,qBAAC,MAAD,EAAA,UAAA,CACE,oBAAC,MAAD;IACE,iBAAiB,WAAW,mBAAmB;IAC/C,OAAM;IACN,MAAM;cACN,IAAI,OAAO;IAAU,CAAA,EACtB,QAAQ,gBAAgB,SAAS,IAAI,oBAAC,MAAD,EAAA,UAAM,KAAQ,CAAA,GAAG,KAClD,EAAA,EAPI,OAOJ;IAET,CACE;;;AAIV,SAAgB,kBAAkB,EAChC,SACA,aACA,SAKC;CACD,MAAM,YAAY,oBAAoB;AACtC,QACE,oBAAC,KAAD;EAAK,eAAc;EAAS,WAAW;YACpC,QAAQ,KAAK,QAAQ,UACpB,oBAAC,WAAD;GAEE,QAAQ,UAAU;GACV;GACD;GACI;GACX,EALK,OAAO,KAKZ,CACF;EACE,CAAA;;AAIV,SAAS,UAAU,EACjB,QACA,QACA,OACA,aAMC;CACD,MAAM,SAAS,SAAS,MAAM;CAC9B,MAAM,WAAW,OAAO,SAAS,OAAO;CACxC,MAAM,UAAU,OAAO,KAAK,OAAO,UAAU;CAC7C,MAAM,WAAW,IAAI,YAAY;CACjC,MAAM,mBAAmB,KAAK,IAAI,GAAG,QAAQ,SAAS;CACtD,MAAM,UAAU,WACZ,mBACA,KAAK,IAAI,GAAG,KAAK,KAAK,mBAAmB,IAAK,CAAC;CACnD,MAAM,gBAAgB,SAAS,OAAO,MAAM,QAAQ;CACpD,MAAM,YAAY,WACd,IACA,KAAK,IAAI,GAAG,mBAAmB,cAAc,SAAS,EAAE;CAC5D,MAAM,kBAAkB,WACpB,KACA,SAAS,OAAO,YAAY,UAAU;AAE1C,KAAI,OACF,QACE,qBAAC,MAAD;EAAM,OAAO;EAAkB,MAAA;YAA/B,CACG,GAAG,OAAO,GAAG,QAAQ,IAAI,iBACzB,WAAW,KAAK,KAAK,kBACjB;;AAIX,QACE,qBAAC,MAAD,EAAA,UAAA;EACE,oBAAC,MAAD,EAAA,UAAO,GAAG,OAAO,IAAU,CAAA;EAC3B,oBAAC,MAAD;GAAM,UAAA;aAAU;GAAe,CAAA;EAC/B,oBAAC,MAAD,EAAA,UAAO,KAAK,iBAAuB,CAAA;EAClC,WAAW,OAAO,oBAAC,MAAD;GAAM,UAAA;GAAS,QAAA;aAAQ,KAAK;GAAyB,CAAA;EACnE,EAAA,CAAA;;AAIX,SAAgB,iBAAiB,EAC/B,OACA,WAIC;CACD,MAAM,YAAY,QAAQ;AAC1B,KAAI,aAAa,EAAG,QAAO;AAC3B,QAAO,qBAAC,MAAD;EAAM,UAAA;YAAN,CAAgB,WAAU,gBAAoB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PACKAGE_VERSION } from "../generated/version.js";
|
|
2
|
+
import { INK_ACCENT_COLOR } from "./inkTheme.js";
|
|
2
3
|
import { getContentWidth, normalizedMessage, truncate, wrapText } from "./inkUtils.js";
|
|
3
4
|
import { useTerminalSize } from "./inkTerminal.js";
|
|
4
5
|
import { Box, Text } from "ink";
|
|
@@ -26,7 +27,7 @@ function PromptFrame({ message, children, footer }) {
|
|
|
26
27
|
children: /* @__PURE__ */ jsx(Text, {
|
|
27
28
|
bold: true,
|
|
28
29
|
color: "black",
|
|
29
|
-
backgroundColor:
|
|
30
|
+
backgroundColor: INK_ACCENT_COLOR,
|
|
30
31
|
children: headerText
|
|
31
32
|
})
|
|
32
33
|
}),
|
|
@@ -43,7 +44,7 @@ function PromptFrame({ message, children, footer }) {
|
|
|
43
44
|
justifyContent: "center",
|
|
44
45
|
children: /* @__PURE__ */ jsx(Text, {
|
|
45
46
|
bold: true,
|
|
46
|
-
color:
|
|
47
|
+
color: INK_ACCENT_COLOR,
|
|
47
48
|
children: "GT Wizard"
|
|
48
49
|
})
|
|
49
50
|
}),
|
|
@@ -65,7 +66,7 @@ function PromptFrame({ message, children, footer }) {
|
|
|
65
66
|
width: columns,
|
|
66
67
|
children: /* @__PURE__ */ jsx(Text, {
|
|
67
68
|
color: "black",
|
|
68
|
-
backgroundColor:
|
|
69
|
+
backgroundColor: INK_ACCENT_COLOR,
|
|
69
70
|
wrap: "truncate-end",
|
|
70
71
|
children: footerLine
|
|
71
72
|
})
|
|
@@ -87,7 +88,7 @@ function InputBox({ value, width, placeholder }) {
|
|
|
87
88
|
return /* @__PURE__ */ jsxs(Box, {
|
|
88
89
|
width,
|
|
89
90
|
borderStyle: "round",
|
|
90
|
-
borderColor:
|
|
91
|
+
borderColor: INK_ACCENT_COLOR,
|
|
91
92
|
paddingX: 1,
|
|
92
93
|
children: [
|
|
93
94
|
/* @__PURE__ */ jsx(Text, { children: visibleValue }),
|
|
@@ -105,7 +106,7 @@ function InputBox({ value, width, placeholder }) {
|
|
|
105
106
|
return /* @__PURE__ */ jsxs(Box, {
|
|
106
107
|
width,
|
|
107
108
|
borderStyle: "round",
|
|
108
|
-
borderColor:
|
|
109
|
+
borderColor: INK_ACCENT_COLOR,
|
|
109
110
|
paddingX: 1,
|
|
110
111
|
children: [/* @__PURE__ */ jsx(Text, {
|
|
111
112
|
inverse: true,
|
|
@@ -117,7 +118,7 @@ function InputBox({ value, width, placeholder }) {
|
|
|
117
118
|
return /* @__PURE__ */ jsxs(Box, {
|
|
118
119
|
width,
|
|
119
120
|
borderStyle: "round",
|
|
120
|
-
borderColor:
|
|
121
|
+
borderColor: INK_ACCENT_COLOR,
|
|
121
122
|
paddingX: 1,
|
|
122
123
|
children: [
|
|
123
124
|
/* @__PURE__ */ jsx(Text, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inkLayout.js","names":[],"sources":["../../src/console/inkLayout.tsx"],"sourcesContent":["import { Box, Text } from 'ink';\nimport { PACKAGE_VERSION } from '../generated/version.js';\nimport { useTerminalSize } from './inkTerminal.js';\nimport type { PromptFrameProps } from './inkTypes.js';\nimport {\n getContentWidth,\n normalizedMessage,\n truncate,\n wrapText,\n} from './inkUtils.js';\n\nexport function PromptFrame({ message, children, footer }: PromptFrameProps) {\n const { columns, rows } = useTerminalSize();\n const width = getContentWidth(columns);\n const topPadding = Math.max(1, Math.min(5, Math.floor(rows * 0.1)));\n const showFeedback = columns >= 88;\n const footerText =\n columns < 50\n ? ultraCompactFooter(footer)\n : columns < 72\n ? compactFooter(footer)\n : footer;\n const messageLines = wrapText(normalizedMessage(message), width);\n const headerTitle = ` General Translation Wizard v${PACKAGE_VERSION}`;\n const headerFeedback = 'Feedback: support@generaltranslation.com ';\n const headerGap = Math.max(\n 1,\n columns - headerTitle.length - (showFeedback ? headerFeedback.length : 0)\n );\n const headerText = `${headerTitle}${' '.repeat(headerGap)}${\n showFeedback ? headerFeedback : ''\n }`;\n const footerLine = ` ${footerText}`.padEnd(columns, ' ');\n\n return (\n <Box width={columns} height={rows} flexDirection='column'>\n <Box width={columns}>\n <Text bold color='black' backgroundColor=
|
|
1
|
+
{"version":3,"file":"inkLayout.js","names":[],"sources":["../../src/console/inkLayout.tsx"],"sourcesContent":["import { Box, Text } from 'ink';\nimport { PACKAGE_VERSION } from '../generated/version.js';\nimport { useTerminalSize } from './inkTerminal.js';\nimport { INK_ACCENT_COLOR } from './inkTheme.js';\nimport type { PromptFrameProps } from './inkTypes.js';\nimport {\n getContentWidth,\n normalizedMessage,\n truncate,\n wrapText,\n} from './inkUtils.js';\n\nexport function PromptFrame({ message, children, footer }: PromptFrameProps) {\n const { columns, rows } = useTerminalSize();\n const width = getContentWidth(columns);\n const topPadding = Math.max(1, Math.min(5, Math.floor(rows * 0.1)));\n const showFeedback = columns >= 88;\n const footerText =\n columns < 50\n ? ultraCompactFooter(footer)\n : columns < 72\n ? compactFooter(footer)\n : footer;\n const messageLines = wrapText(normalizedMessage(message), width);\n const headerTitle = ` General Translation Wizard v${PACKAGE_VERSION}`;\n const headerFeedback = 'Feedback: support@generaltranslation.com ';\n const headerGap = Math.max(\n 1,\n columns - headerTitle.length - (showFeedback ? headerFeedback.length : 0)\n );\n const headerText = `${headerTitle}${' '.repeat(headerGap)}${\n showFeedback ? headerFeedback : ''\n }`;\n const footerLine = ` ${footerText}`.padEnd(columns, ' ');\n\n return (\n <Box width={columns} height={rows} flexDirection='column'>\n <Box width={columns}>\n <Text bold color='black' backgroundColor={INK_ACCENT_COLOR}>\n {headerText}\n </Text>\n </Box>\n\n <Box\n flexDirection='column'\n alignItems='center'\n paddingTop={topPadding}\n flexShrink={1}\n >\n <Box width={width} flexDirection='column'>\n <Box justifyContent='center'>\n <Text bold color={INK_ACCENT_COLOR}>\n GT Wizard\n </Text>\n </Box>\n <Box flexDirection='column' marginTop={1}>\n {messageLines.map((line, index) => (\n <Text key={`${index}-${line}`}>{line}</Text>\n ))}\n </Box>\n <Box marginTop={2} flexDirection='column'>\n {children}\n </Box>\n </Box>\n </Box>\n\n <Box flexGrow={1} />\n <Box width={columns}>\n <Text\n color='black'\n backgroundColor={INK_ACCENT_COLOR}\n wrap='truncate-end'\n >\n {footerLine}\n </Text>\n </Box>\n </Box>\n );\n}\n\nfunction compactFooter(footer: string) {\n return footer\n .replace('↑↓ navigate', '↑↓ move')\n .replace('enter confirm', 'enter done')\n .replace('enter select', 'enter choose')\n .replace('esc cancel', 'esc quit');\n}\n\nfunction ultraCompactFooter(footer: string) {\n return compactFooter(footer)\n .replace(/\\s{2,}esc quit\\s*$/, '')\n .replace('↑↓ move', '↑↓')\n .replace('space toggle', 'spc')\n .replace('enter done', 'enter')\n .replace('enter choose', 'enter')\n .replace('enter select', 'enter')\n .replace('enter save', 'enter')\n .replace('enter confirm', 'enter')\n .replace('type to edit', 'type')\n .replace('y/n select', 'y/n')\n .replace('←→ choose', '←→');\n}\n\nexport function InputBox({\n value,\n width,\n placeholder,\n}: {\n value: string;\n width: number;\n placeholder?: string;\n}) {\n const innerWidth = Math.max(1, width - 4);\n const hasValue = value.length > 0;\n\n if (hasValue) {\n const visibleValue = truncate(value, Math.max(0, innerWidth - 1));\n const padding = Math.max(0, innerWidth - visibleValue.length - 1);\n return (\n <Box\n width={width}\n borderStyle='round'\n borderColor={INK_ACCENT_COLOR}\n paddingX={1}\n >\n <Text>{visibleValue}</Text>\n <Text inverse> </Text>\n <Text>{' '.repeat(padding)}</Text>\n </Box>\n );\n }\n\n const placeholderText = truncate(\n placeholder ?? '',\n Math.max(0, innerWidth - 1)\n );\n\n if (!placeholderText) {\n const padding = Math.max(0, innerWidth - 1);\n return (\n <Box\n width={width}\n borderStyle='round'\n borderColor={INK_ACCENT_COLOR}\n paddingX={1}\n >\n <Text inverse> </Text>\n <Text>{' '.repeat(padding)}</Text>\n </Box>\n );\n }\n\n const padding = Math.max(0, innerWidth - placeholderText.length);\n return (\n <Box\n width={width}\n borderStyle='round'\n borderColor={INK_ACCENT_COLOR}\n paddingX={1}\n >\n <Text inverse dimColor>\n {placeholderText.slice(0, 1)}\n </Text>\n <Text dimColor>{placeholderText.slice(1)}</Text>\n <Text>{' '.repeat(padding)}</Text>\n </Box>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const INK_ACCENT_COLOR = "#61A6FA";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inkTheme.js","names":[],"sources":["../../src/console/inkTheme.ts"],"sourcesContent":["export const INK_ACCENT_COLOR = '#61A6FA';\n"],"mappings":";AAAA,MAAa,mBAAmB"}
|
package/dist/console/logging.js
CHANGED
|
@@ -39,14 +39,15 @@ function displayHeader(introString) {
|
|
|
39
39
|
if (introString) logger.startCommand(introString);
|
|
40
40
|
}
|
|
41
41
|
function displayAsciiTitle() {
|
|
42
|
-
console.log(chalk.cyan(`\n
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
console.log(chalk.cyan(`\n @@@@@@@@@@@@@@@@@@@@@@
|
|
43
|
+
@@ @@@@@@@@@@@@ @@@@@@@
|
|
44
|
+
@@ @@@ @ @
|
|
45
|
+
@@ @@ @ @
|
|
46
|
+
@@ @ @@@@@ @ @
|
|
47
|
+
@@ @@ @@@ @ @ @
|
|
48
|
+
@@ @@ @ @ @ @
|
|
49
|
+
@@ @@@@@@@ @ @ @
|
|
50
|
+
@@@@@@@@@ @ @`));
|
|
50
51
|
}
|
|
51
52
|
function displayInitializingText() {
|
|
52
53
|
const version = getCLIVersion();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","names":[],"sources":["../../src/console/logging.ts"],"sourcesContent":["import {\n text,\n select,\n confirm,\n isCancel,\n cancel,\n multiselect,\n} from '@clack/prompts';\nimport type { Option } from '@clack/prompts';\nimport chalk from 'chalk';\nimport { getCLIVersion } from '../utils/packageJson.js';\nimport { logger } from './logger.js';\nimport { TEMPLATE_FILE_NAME } from '../utils/constants.js';\nimport { FileToUpload } from 'generaltranslation/types';\nimport { endTerminalSession, shouldUseInkPrompts } from './terminalSession.js';\nimport {\n parseLocaleList,\n validateLocale,\n validateLocaleList,\n} from './promptParsing.js';\n\nfunction cancelPromptAndExit(message: string): never {\n endTerminalSession();\n cancel(message);\n return exitSync(0);\n}\n\nasync function loadInkPrompts() {\n return import('./inkPrompts.js');\n}\n\nasync function runInkPrompt<T>(\n prompt: (prompts: Awaited<ReturnType<typeof loadInkPrompts>>) => Promise<{\n value?: T;\n cancelled: boolean;\n }>,\n cancelMessage = 'Operation cancelled'\n) {\n const result = await prompt(await loadInkPrompts());\n if (result.cancelled) {\n return cancelPromptAndExit(cancelMessage);\n }\n return result.value;\n}\n\n/**\n * Strip ANSI escape codes from a string (e.g., chalk color codes)\n */\nexport function stripAnsi(str: string): string {\n // eslint-disable-next-line no-control-regex, no-useless-escape\n return str.replace(/\\x1B\\[[0-9;]*m/g, '');\n}\n\nexport function logErrorAndExit(message: string): never {\n logger.error(message);\n return exitSync(1);\n}\n\nexport function exitSync(code: number): never {\n // Flush logs before exit\n logger.flush();\n process.exit(code);\n}\n\n// GT specific logging\nexport function displayHeader(introString?: string) {\n displayAsciiTitle();\n displayInitializingText();\n\n if (introString) {\n logger.startCommand(introString);\n }\n}\n\nfunction displayAsciiTitle() {\n // eslint-disable-next-line no-console\n console.log(\n chalk.cyan(\n `\\n ,ad8888ba, 888888888888 \n d8\"' \\`\"8b 88 \nd8' 88 \n88 88 \n88 88888 88 \nY8, 88 88 \n Y8a. .a88 88 \n \\`\"Y88888P\" 88 `\n )\n );\n}\n\nfunction displayInitializingText() {\n const version = getCLIVersion();\n // eslint-disable-next-line no-console\n console.log(\n `\\n${chalk.bold.blue('General Translation, Inc.')}\n${chalk.dim('https://generaltranslation.com/docs')}\n${chalk.dim(`CLI Version: ${version}\\n`)}`\n );\n}\n\nexport function displayProjectId(projectId: string) {\n logger.message(\n chalk.dim(`Project ID: ${chalk.bold(projectId)}`),\n chalk.cyan('~')\n );\n}\n\nexport function displayResolvedPaths(resolvedPaths: [string, string][]) {\n const paths = resolvedPaths.map(([key, resolvedPath]) => {\n return chalk.dim(`'${chalk.white(key)}' → '${chalk.green(resolvedPath)}'`);\n });\n logger.step(`Resolved path aliases:\\n${paths.join('\\n')}`);\n}\n\nexport function displayCreatedConfigFile(configFilepath: string) {\n logger.step(`Created config file ${chalk.cyan(configFilepath)}`);\n}\n\nexport function displayUpdatedConfigFile(configFilepath: string) {\n logger.success(`Updated config file ${chalk.cyan(configFilepath)}`);\n}\n\nexport function displayUpdatedVersionsFile(versionFilepath: string) {\n logger.success(`Updated versions file ${chalk.cyan(versionFilepath)}`);\n}\n\n// Input prompts\nexport async function promptText({\n message,\n defaultValue,\n validate,\n}: {\n message: string;\n defaultValue?: string;\n validate?: (value: string) => boolean | string;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<string>((prompts) =>\n prompts.inkPromptText({ message, defaultValue, validate })\n )) ?? ''\n );\n }\n\n const result = await text({\n message,\n placeholder: defaultValue,\n validate: validate\n ? (value) => {\n const validation = validate(value || '');\n return validation === true ? undefined : validation.toString();\n }\n : undefined,\n });\n\n if (isCancel(result)) {\n cancel('Operation cancelled');\n return exitSync(0);\n }\n\n return result;\n}\n\nexport async function promptLocale({\n message,\n defaultValue,\n}: {\n message: string;\n defaultValue?: string;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<string>((prompts) =>\n prompts.inkPromptLocale({ message, defaultValue })\n )) ?? ''\n );\n }\n\n return promptText({\n message,\n defaultValue,\n validate: validateLocale,\n });\n}\n\nexport async function promptLocaleList({\n message,\n defaultValue,\n required = true,\n}: {\n message: string;\n defaultValue?: string[];\n required?: boolean;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<string[]>((prompts) =>\n prompts.inkPromptLocaleMulti({\n message,\n defaultValue,\n required,\n })\n )) ?? []\n );\n }\n\n return promptText({\n message,\n defaultValue: defaultValue?.join(' '),\n validate: validateLocaleList,\n }).then(parseLocaleList);\n}\n\nexport async function promptGlobPatterns({\n label,\n message,\n defaultValue,\n}: {\n label: string;\n message: string;\n defaultValue?: string;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<string>((prompts) =>\n prompts.inkPromptGlob({ label, message, defaultValue })\n )) ?? ''\n );\n }\n\n return promptText({\n message,\n defaultValue,\n });\n}\n\nexport async function promptSelect<T>({\n message,\n options,\n defaultValue,\n}: {\n message: string;\n options: Array<{ value: T; label: string; hint?: string }>;\n defaultValue?: T;\n}) {\n if (shouldUseInkPrompts()) {\n return (await runInkPrompt<T>((prompts) =>\n prompts.inkPromptSelect({ message, options, defaultValue })\n )) as T;\n }\n\n // Convert options to the format expected by clack\n const clackOptions = options.map((opt) => ({\n value: opt.value,\n label: opt.label,\n hint: opt.hint,\n })) as Option<T>[];\n\n const result = await select({\n message,\n options: clackOptions,\n initialValue: defaultValue,\n });\n\n if (isCancel(result)) {\n cancel('Operation cancelled');\n return exitSync(0);\n }\n\n return result as T;\n}\n\nexport async function promptMultiSelect<T extends string>({\n message,\n options,\n required = true,\n}: {\n message: string;\n options: Array<{ value: T; label: string; hint?: string }>;\n required?: boolean;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<Array<T>>((prompts) =>\n prompts.inkPromptMultiSelect({\n message,\n options,\n required,\n })\n )) ?? []\n );\n }\n\n // Convert options to the format expected by clack\n const clackOptions = options.map((opt) => ({\n value: opt.value,\n label: opt.label,\n hint: opt.hint,\n })) as Option<T>[];\n\n const result = await multiselect({\n message,\n options: clackOptions,\n required,\n });\n\n if (isCancel(result)) {\n cancel('Operation cancelled');\n return exitSync(0);\n }\n\n return result as Array<T>;\n}\n\nexport async function promptConfirm({\n message,\n defaultValue = true,\n cancelMessage = 'Operation cancelled',\n}: {\n message: string;\n defaultValue?: boolean;\n cancelMessage?: string;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<boolean>(\n (prompts) => prompts.inkPromptConfirm({ message, defaultValue }),\n cancelMessage\n )) ?? defaultValue\n );\n }\n\n const result = await confirm({\n message,\n initialValue: defaultValue,\n });\n\n if (isCancel(result)) {\n cancel(cancelMessage);\n return exitSync(0);\n }\n\n return result;\n}\n\n// Warning display functions\nexport function warnApiKeyInConfig(optionsFilepath: string) {\n logger.warn(\n `Found ${chalk.cyan('apiKey')} in \"${chalk.green(optionsFilepath)}\". ` +\n chalk.white(\n 'Your API key is exposed! Remove it from the file and include it as an environment variable.'\n )\n );\n}\n\nexport function warnVariableProp(\n file: string,\n attrName: string,\n value: string\n) {\n logger.warn(\n `Found ${chalk.green('<T>')} component in ${chalk.cyan(file)} with variable ${attrName}: \"${chalk.white(value)}\". ` +\n `Change \"${attrName}\" to ensure this content is translated.`\n );\n}\n\nexport function warnNoId(file: string) {\n logger.warn(\n `Found ${chalk.green('<T>')} component in ${chalk.cyan(file)} with no id. ` +\n chalk.white('Add an id to ensure the content is translated.')\n );\n}\n\nexport function warnHasUnwrappedExpression(\n file: string,\n id: string,\n unwrappedExpressions: string[]\n) {\n logger.warn(\n `${chalk.green('<T>')} with id \"${id}\" in ${chalk.cyan(file)} has children: ${unwrappedExpressions.join(', ')} that could change at runtime. ` +\n chalk.white('Use a variable component like ') +\n chalk.green('<Var>') +\n chalk.white(' (') +\n chalk.blue('https://generaltranslation.com/docs') +\n chalk.white(') to translate this properly.')\n );\n}\n\nexport function warnTemplateLiteral(file: string, value: string) {\n logger.warn(\n `Found template literal with quasis (${value}) in ${chalk.cyan(file)}. ` +\n chalk.white(\n 'Change the template literal to a string to ensure this content is translated.'\n )\n );\n}\n\nexport function warnTernary(file: string) {\n logger.warn(\n `Found ternary expression in ${chalk.cyan(file)}. ` +\n chalk.white('A Branch component may be more appropriate here.')\n );\n}\n\nexport function warnDeprecatedField(\n deprecatedField: string,\n replacement: string\n) {\n logger.warn(\n `${chalk.green(deprecatedField)} is deprecated. ` +\n chalk.white(`Use ${chalk.green(replacement)} instead.`)\n );\n}\n\n/**\n * Helper: Log all collected files\n */\nexport function logCollectedFiles(\n files: Pick<FileToUpload, 'fileName'>[],\n reactComponents?: number\n): void {\n logger.message(\n chalk.cyan('Files found in project:') +\n '\\n' +\n files\n .map((file) => {\n if (file.fileName === TEMPLATE_FILE_NAME) {\n return `- <React Elements>${reactComponents ? ` (${reactComponents})` : ''}`;\n }\n return `- ${file.fileName}`;\n })\n .join('\\n')\n );\n}\n"],"mappings":";;;;;;;;AAqBA,SAAS,oBAAoB,SAAwB;AACnD,qBAAoB;AACpB,QAAO,QAAQ;AACf,QAAO,SAAS,EAAE;;AAGpB,eAAe,iBAAiB;AAC9B,QAAO,OAAO;;AAGhB,eAAe,aACb,QAIA,gBAAgB,uBAChB;CACA,MAAM,SAAS,MAAM,OAAO,MAAM,gBAAgB,CAAC;AACnD,KAAI,OAAO,UACT,QAAO,oBAAoB,cAAc;AAE3C,QAAO,OAAO;;;;;AAMhB,SAAgB,UAAU,KAAqB;AAE7C,QAAO,IAAI,QAAQ,mBAAmB,GAAG;;AAG3C,SAAgB,gBAAgB,SAAwB;AACtD,QAAO,MAAM,QAAQ;AACrB,QAAO,SAAS,EAAE;;AAGpB,SAAgB,SAAS,MAAqB;AAE5C,QAAO,OAAO;AACd,SAAQ,KAAK,KAAK;;AAIpB,SAAgB,cAAc,aAAsB;AAClD,oBAAmB;AACnB,0BAAyB;AAEzB,KAAI,YACF,QAAO,aAAa,YAAY;;AAIpC,SAAS,oBAAoB;AAE3B,SAAQ,IACN,MAAM,KACJ;;;;;;;+BAQD,CACF;;AAGH,SAAS,0BAA0B;CACjC,MAAM,UAAU,eAAe;AAE/B,SAAQ,IACN,KAAK,MAAM,KAAK,KAAK,4BAA4B,CAAC;EACpD,MAAM,IAAI,sCAAsC,CAAC;EACjD,MAAM,IAAI,gBAAgB,QAAQ,IAAI,GACrC;;AAGH,SAAgB,iBAAiB,WAAmB;AAClD,QAAO,QACL,MAAM,IAAI,eAAe,MAAM,KAAK,UAAU,GAAG,EACjD,MAAM,KAAK,IAAI,CAChB;;AAGH,SAAgB,qBAAqB,eAAmC;CACtE,MAAM,QAAQ,cAAc,KAAK,CAAC,KAAK,kBAAkB;AACvD,SAAO,MAAM,IAAI,IAAI,MAAM,MAAM,IAAI,CAAC,OAAO,MAAM,MAAM,aAAa,CAAC,GAAG;GAC1E;AACF,QAAO,KAAK,2BAA2B,MAAM,KAAK,KAAK,GAAG;;AAG5D,SAAgB,yBAAyB,gBAAwB;AAC/D,QAAO,KAAK,uBAAuB,MAAM,KAAK,eAAe,GAAG;;AAGlE,SAAgB,yBAAyB,gBAAwB;AAC/D,QAAO,QAAQ,uBAAuB,MAAM,KAAK,eAAe,GAAG;;AAGrE,SAAgB,2BAA2B,iBAAyB;AAClE,QAAO,QAAQ,yBAAyB,MAAM,KAAK,gBAAgB,GAAG;;AAIxE,eAAsB,WAAW,EAC/B,SACA,cACA,YAKC;AACD,KAAI,qBAAqB,CACvB,QACG,MAAM,cAAsB,YAC3B,QAAQ,cAAc;EAAE;EAAS;EAAc;EAAU,CAAC,CAC3D,IAAK;CAIV,MAAM,SAAS,MAAM,KAAK;EACxB;EACA,aAAa;EACb,UAAU,YACL,UAAU;GACT,MAAM,aAAa,SAAS,SAAS,GAAG;AACxC,UAAO,eAAe,OAAO,KAAA,IAAY,WAAW,UAAU;MAEhE,KAAA;EACL,CAAC;AAEF,KAAI,SAAS,OAAO,EAAE;AACpB,SAAO,sBAAsB;AAC7B,SAAO,SAAS,EAAE;;AAGpB,QAAO;;AAGT,eAAsB,aAAa,EACjC,SACA,gBAIC;AACD,KAAI,qBAAqB,CACvB,QACG,MAAM,cAAsB,YAC3B,QAAQ,gBAAgB;EAAE;EAAS;EAAc,CAAC,CACnD,IAAK;AAIV,QAAO,WAAW;EAChB;EACA;EACA,UAAU;EACX,CAAC;;AAGJ,eAAsB,iBAAiB,EACrC,SACA,cACA,WAAW,QAKV;AACD,KAAI,qBAAqB,CACvB,QACG,MAAM,cAAwB,YAC7B,QAAQ,qBAAqB;EAC3B;EACA;EACA;EACD,CAAC,CACH,IAAK,EAAE;AAIZ,QAAO,WAAW;EAChB;EACA,cAAc,cAAc,KAAK,IAAI;EACrC,UAAU;EACX,CAAC,CAAC,KAAK,gBAAgB;;AAG1B,eAAsB,mBAAmB,EACvC,OACA,SACA,gBAKC;AACD,KAAI,qBAAqB,CACvB,QACG,MAAM,cAAsB,YAC3B,QAAQ,cAAc;EAAE;EAAO;EAAS;EAAc,CAAC,CACxD,IAAK;AAIV,QAAO,WAAW;EAChB;EACA;EACD,CAAC;;AAGJ,eAAsB,aAAgB,EACpC,SACA,SACA,gBAKC;AACD,KAAI,qBAAqB,CACvB,QAAQ,MAAM,cAAiB,YAC7B,QAAQ,gBAAgB;EAAE;EAAS;EAAS;EAAc,CAAC,CAC5D;CAUH,MAAM,SAAS,MAAM,OAAO;EAC1B;EACA,SARmB,QAAQ,KAAK,SAAS;GACzC,OAAO,IAAI;GACX,OAAO,IAAI;GACX,MAAM,IAAI;GACX,EAIsB;EACrB,cAAc;EACf,CAAC;AAEF,KAAI,SAAS,OAAO,EAAE;AACpB,SAAO,sBAAsB;AAC7B,SAAO,SAAS,EAAE;;AAGpB,QAAO;;AAGT,eAAsB,kBAAoC,EACxD,SACA,SACA,WAAW,QAKV;AACD,KAAI,qBAAqB,CACvB,QACG,MAAM,cAAwB,YAC7B,QAAQ,qBAAqB;EAC3B;EACA;EACA;EACD,CAAC,CACH,IAAK,EAAE;CAWZ,MAAM,SAAS,MAAM,YAAY;EAC/B;EACA,SARmB,QAAQ,KAAK,SAAS;GACzC,OAAO,IAAI;GACX,OAAO,IAAI;GACX,MAAM,IAAI;GACX,EAIsB;EACrB;EACD,CAAC;AAEF,KAAI,SAAS,OAAO,EAAE;AACpB,SAAO,sBAAsB;AAC7B,SAAO,SAAS,EAAE;;AAGpB,QAAO;;AAGT,eAAsB,cAAc,EAClC,SACA,eAAe,MACf,gBAAgB,yBAKf;AACD,KAAI,qBAAqB,CACvB,QACG,MAAM,cACJ,YAAY,QAAQ,iBAAiB;EAAE;EAAS;EAAc,CAAC,EAChE,cACD,IAAK;CAIV,MAAM,SAAS,MAAM,QAAQ;EAC3B;EACA,cAAc;EACf,CAAC;AAEF,KAAI,SAAS,OAAO,EAAE;AACpB,SAAO,cAAc;AACrB,SAAO,SAAS,EAAE;;AAGpB,QAAO;;AAIT,SAAgB,mBAAmB,iBAAyB;AAC1D,QAAO,KACL,SAAS,MAAM,KAAK,SAAS,CAAC,OAAO,MAAM,MAAM,gBAAgB,CAAC,OAChE,MAAM,MACJ,8FACD,CACJ;;AAGH,SAAgB,iBACd,MACA,UACA,OACA;AACA,QAAO,KACL,SAAS,MAAM,MAAM,MAAM,CAAC,gBAAgB,MAAM,KAAK,KAAK,CAAC,iBAAiB,SAAS,KAAK,MAAM,MAAM,MAAM,CAAC,aAClG,SAAS,yCACvB;;AAGH,SAAgB,SAAS,MAAc;AACrC,QAAO,KACL,SAAS,MAAM,MAAM,MAAM,CAAC,gBAAgB,MAAM,KAAK,KAAK,CAAC,iBAC3D,MAAM,MAAM,iDAAiD,CAChE;;AAGH,SAAgB,2BACd,MACA,IACA,sBACA;AACA,QAAO,KACL,GAAG,MAAM,MAAM,MAAM,CAAC,YAAY,GAAG,OAAO,MAAM,KAAK,KAAK,CAAC,iBAAiB,qBAAqB,KAAK,KAAK,CAAC,mCAC5G,MAAM,MAAM,iCAAiC,GAC7C,MAAM,MAAM,QAAQ,GACpB,MAAM,MAAM,KAAK,GACjB,MAAM,KAAK,sCAAsC,GACjD,MAAM,MAAM,gCAAgC,CAC/C;;AAGH,SAAgB,oBAAoB,MAAc,OAAe;AAC/D,QAAO,KACL,uCAAuC,MAAM,OAAO,MAAM,KAAK,KAAK,CAAC,MACnE,MAAM,MACJ,gFACD,CACJ;;AAGH,SAAgB,YAAY,MAAc;AACxC,QAAO,KACL,+BAA+B,MAAM,KAAK,KAAK,CAAC,MAC9C,MAAM,MAAM,mDAAmD,CAClE;;AAGH,SAAgB,oBACd,iBACA,aACA;AACA,QAAO,KACL,GAAG,MAAM,MAAM,gBAAgB,CAAC,oBAC9B,MAAM,MAAM,OAAO,MAAM,MAAM,YAAY,CAAC,WAAW,CAC1D;;;;;AAMH,SAAgB,kBACd,OACA,iBACM;AACN,QAAO,QACL,MAAM,KAAK,0BAA0B,GACnC,OACA,MACG,KAAK,SAAS;AACb,MAAI,KAAK,aAAA,gCACP,QAAO,qBAAqB,kBAAkB,KAAK,gBAAgB,KAAK;AAE1E,SAAO,KAAK,KAAK;GACjB,CACD,KAAK,KAAK,CAChB"}
|
|
1
|
+
{"version":3,"file":"logging.js","names":[],"sources":["../../src/console/logging.ts"],"sourcesContent":["import {\n text,\n select,\n confirm,\n isCancel,\n cancel,\n multiselect,\n} from '@clack/prompts';\nimport type { Option } from '@clack/prompts';\nimport chalk from 'chalk';\nimport { getCLIVersion } from '../utils/packageJson.js';\nimport { logger } from './logger.js';\nimport { TEMPLATE_FILE_NAME } from '../utils/constants.js';\nimport { FileToUpload } from 'generaltranslation/types';\nimport { endTerminalSession, shouldUseInkPrompts } from './terminalSession.js';\nimport {\n parseLocaleList,\n validateLocale,\n validateLocaleList,\n} from './promptParsing.js';\n\nfunction cancelPromptAndExit(message: string): never {\n endTerminalSession();\n cancel(message);\n return exitSync(0);\n}\n\nasync function loadInkPrompts() {\n return import('./inkPrompts.js');\n}\n\nasync function runInkPrompt<T>(\n prompt: (prompts: Awaited<ReturnType<typeof loadInkPrompts>>) => Promise<{\n value?: T;\n cancelled: boolean;\n }>,\n cancelMessage = 'Operation cancelled'\n) {\n const result = await prompt(await loadInkPrompts());\n if (result.cancelled) {\n return cancelPromptAndExit(cancelMessage);\n }\n return result.value;\n}\n\n/**\n * Strip ANSI escape codes from a string (e.g., chalk color codes)\n */\nexport function stripAnsi(str: string): string {\n // eslint-disable-next-line no-control-regex, no-useless-escape\n return str.replace(/\\x1B\\[[0-9;]*m/g, '');\n}\n\nexport function logErrorAndExit(message: string): never {\n logger.error(message);\n return exitSync(1);\n}\n\nexport function exitSync(code: number): never {\n // Flush logs before exit\n logger.flush();\n process.exit(code);\n}\n\n// GT specific logging\nexport function displayHeader(introString?: string) {\n displayAsciiTitle();\n displayInitializingText();\n\n if (introString) {\n logger.startCommand(introString);\n }\n}\n\nfunction displayAsciiTitle() {\n // eslint-disable-next-line no-console\n console.log(\n chalk.cyan(\n `\\n @@@@@@@@@@@@@@@@@@@@@@\n @@ @@@@@@@@@@@@ @@@@@@@\n @@ @@@ @ @\n@@ @@ @ @\n@@ @ @@@@@ @ @\n@@ @@ @@@ @ @ @\n @@ @@ @ @ @ @\n @@ @@@@@@@ @ @ @\n @@@@@@@@@ @ @`\n )\n );\n}\n\nfunction displayInitializingText() {\n const version = getCLIVersion();\n // eslint-disable-next-line no-console\n console.log(\n `\\n${chalk.bold.blue('General Translation, Inc.')}\n${chalk.dim('https://generaltranslation.com/docs')}\n${chalk.dim(`CLI Version: ${version}\\n`)}`\n );\n}\n\nexport function displayProjectId(projectId: string) {\n logger.message(\n chalk.dim(`Project ID: ${chalk.bold(projectId)}`),\n chalk.cyan('~')\n );\n}\n\nexport function displayResolvedPaths(resolvedPaths: [string, string][]) {\n const paths = resolvedPaths.map(([key, resolvedPath]) => {\n return chalk.dim(`'${chalk.white(key)}' → '${chalk.green(resolvedPath)}'`);\n });\n logger.step(`Resolved path aliases:\\n${paths.join('\\n')}`);\n}\n\nexport function displayCreatedConfigFile(configFilepath: string) {\n logger.step(`Created config file ${chalk.cyan(configFilepath)}`);\n}\n\nexport function displayUpdatedConfigFile(configFilepath: string) {\n logger.success(`Updated config file ${chalk.cyan(configFilepath)}`);\n}\n\nexport function displayUpdatedVersionsFile(versionFilepath: string) {\n logger.success(`Updated versions file ${chalk.cyan(versionFilepath)}`);\n}\n\n// Input prompts\nexport async function promptText({\n message,\n defaultValue,\n validate,\n}: {\n message: string;\n defaultValue?: string;\n validate?: (value: string) => boolean | string;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<string>((prompts) =>\n prompts.inkPromptText({ message, defaultValue, validate })\n )) ?? ''\n );\n }\n\n const result = await text({\n message,\n placeholder: defaultValue,\n validate: validate\n ? (value) => {\n const validation = validate(value || '');\n return validation === true ? undefined : validation.toString();\n }\n : undefined,\n });\n\n if (isCancel(result)) {\n cancel('Operation cancelled');\n return exitSync(0);\n }\n\n return result;\n}\n\nexport async function promptLocale({\n message,\n defaultValue,\n}: {\n message: string;\n defaultValue?: string;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<string>((prompts) =>\n prompts.inkPromptLocale({ message, defaultValue })\n )) ?? ''\n );\n }\n\n return promptText({\n message,\n defaultValue,\n validate: validateLocale,\n });\n}\n\nexport async function promptLocaleList({\n message,\n defaultValue,\n required = true,\n}: {\n message: string;\n defaultValue?: string[];\n required?: boolean;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<string[]>((prompts) =>\n prompts.inkPromptLocaleMulti({\n message,\n defaultValue,\n required,\n })\n )) ?? []\n );\n }\n\n return promptText({\n message,\n defaultValue: defaultValue?.join(' '),\n validate: validateLocaleList,\n }).then(parseLocaleList);\n}\n\nexport async function promptGlobPatterns({\n label,\n message,\n defaultValue,\n}: {\n label: string;\n message: string;\n defaultValue?: string;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<string>((prompts) =>\n prompts.inkPromptGlob({ label, message, defaultValue })\n )) ?? ''\n );\n }\n\n return promptText({\n message,\n defaultValue,\n });\n}\n\nexport async function promptSelect<T>({\n message,\n options,\n defaultValue,\n}: {\n message: string;\n options: Array<{ value: T; label: string; hint?: string }>;\n defaultValue?: T;\n}) {\n if (shouldUseInkPrompts()) {\n return (await runInkPrompt<T>((prompts) =>\n prompts.inkPromptSelect({ message, options, defaultValue })\n )) as T;\n }\n\n // Convert options to the format expected by clack\n const clackOptions = options.map((opt) => ({\n value: opt.value,\n label: opt.label,\n hint: opt.hint,\n })) as Option<T>[];\n\n const result = await select({\n message,\n options: clackOptions,\n initialValue: defaultValue,\n });\n\n if (isCancel(result)) {\n cancel('Operation cancelled');\n return exitSync(0);\n }\n\n return result as T;\n}\n\nexport async function promptMultiSelect<T extends string>({\n message,\n options,\n required = true,\n}: {\n message: string;\n options: Array<{ value: T; label: string; hint?: string }>;\n required?: boolean;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<Array<T>>((prompts) =>\n prompts.inkPromptMultiSelect({\n message,\n options,\n required,\n })\n )) ?? []\n );\n }\n\n // Convert options to the format expected by clack\n const clackOptions = options.map((opt) => ({\n value: opt.value,\n label: opt.label,\n hint: opt.hint,\n })) as Option<T>[];\n\n const result = await multiselect({\n message,\n options: clackOptions,\n required,\n });\n\n if (isCancel(result)) {\n cancel('Operation cancelled');\n return exitSync(0);\n }\n\n return result as Array<T>;\n}\n\nexport async function promptConfirm({\n message,\n defaultValue = true,\n cancelMessage = 'Operation cancelled',\n}: {\n message: string;\n defaultValue?: boolean;\n cancelMessage?: string;\n}) {\n if (shouldUseInkPrompts()) {\n return (\n (await runInkPrompt<boolean>(\n (prompts) => prompts.inkPromptConfirm({ message, defaultValue }),\n cancelMessage\n )) ?? defaultValue\n );\n }\n\n const result = await confirm({\n message,\n initialValue: defaultValue,\n });\n\n if (isCancel(result)) {\n cancel(cancelMessage);\n return exitSync(0);\n }\n\n return result;\n}\n\n// Warning display functions\nexport function warnApiKeyInConfig(optionsFilepath: string) {\n logger.warn(\n `Found ${chalk.cyan('apiKey')} in \"${chalk.green(optionsFilepath)}\". ` +\n chalk.white(\n 'Your API key is exposed! Remove it from the file and include it as an environment variable.'\n )\n );\n}\n\nexport function warnVariableProp(\n file: string,\n attrName: string,\n value: string\n) {\n logger.warn(\n `Found ${chalk.green('<T>')} component in ${chalk.cyan(file)} with variable ${attrName}: \"${chalk.white(value)}\". ` +\n `Change \"${attrName}\" to ensure this content is translated.`\n );\n}\n\nexport function warnNoId(file: string) {\n logger.warn(\n `Found ${chalk.green('<T>')} component in ${chalk.cyan(file)} with no id. ` +\n chalk.white('Add an id to ensure the content is translated.')\n );\n}\n\nexport function warnHasUnwrappedExpression(\n file: string,\n id: string,\n unwrappedExpressions: string[]\n) {\n logger.warn(\n `${chalk.green('<T>')} with id \"${id}\" in ${chalk.cyan(file)} has children: ${unwrappedExpressions.join(', ')} that could change at runtime. ` +\n chalk.white('Use a variable component like ') +\n chalk.green('<Var>') +\n chalk.white(' (') +\n chalk.blue('https://generaltranslation.com/docs') +\n chalk.white(') to translate this properly.')\n );\n}\n\nexport function warnTemplateLiteral(file: string, value: string) {\n logger.warn(\n `Found template literal with quasis (${value}) in ${chalk.cyan(file)}. ` +\n chalk.white(\n 'Change the template literal to a string to ensure this content is translated.'\n )\n );\n}\n\nexport function warnTernary(file: string) {\n logger.warn(\n `Found ternary expression in ${chalk.cyan(file)}. ` +\n chalk.white('A Branch component may be more appropriate here.')\n );\n}\n\nexport function warnDeprecatedField(\n deprecatedField: string,\n replacement: string\n) {\n logger.warn(\n `${chalk.green(deprecatedField)} is deprecated. ` +\n chalk.white(`Use ${chalk.green(replacement)} instead.`)\n );\n}\n\n/**\n * Helper: Log all collected files\n */\nexport function logCollectedFiles(\n files: Pick<FileToUpload, 'fileName'>[],\n reactComponents?: number\n): void {\n logger.message(\n chalk.cyan('Files found in project:') +\n '\\n' +\n files\n .map((file) => {\n if (file.fileName === TEMPLATE_FILE_NAME) {\n return `- <React Elements>${reactComponents ? ` (${reactComponents})` : ''}`;\n }\n return `- ${file.fileName}`;\n })\n .join('\\n')\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PACKAGE_VERSION = "2.14.
|
|
1
|
+
export declare const PACKAGE_VERSION = "2.14.38";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","names":[],"sources":["../../src/generated/version.ts"],"sourcesContent":["// This file is auto-generated. Do not edit manually.\nexport const PACKAGE_VERSION = '2.14.
|
|
1
|
+
{"version":3,"file":"version.js","names":[],"sources":["../../src/generated/version.ts"],"sourcesContent":["// This file is auto-generated. Do not edit manually.\nexport const PACKAGE_VERSION = '2.14.38';\n"],"mappings":";AACA,MAAa,kBAAkB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gt",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.38",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"bin": "bin/main.js",
|
|
6
6
|
"files": [
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"yaml": "^2.8.0",
|
|
116
116
|
"@generaltranslation/format": "0.1.1",
|
|
117
117
|
"@generaltranslation/python-extractor": "0.2.21",
|
|
118
|
-
"@generaltranslation/supported-locales": "2.0
|
|
118
|
+
"@generaltranslation/supported-locales": "2.1.0",
|
|
119
119
|
"generaltranslation": "8.2.15",
|
|
120
120
|
"gt-remark": "1.0.7"
|
|
121
121
|
},
|