locadex 1.0.170 → 1.0.171

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 CHANGED
@@ -1,5 +1,12 @@
1
1
  # locadex
2
2
 
3
+ ## 1.0.171
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`6a0e55b`](https://github.com/generaltranslation/gt/commit/6a0e55b6787b8e05f6c1fef7796e1b8b68f6d87b), [`a877a2a`](https://github.com/generaltranslation/gt/commit/a877a2a5bd5ca47b199c6caf53a6d60d96e3a300), [`347cb48`](https://github.com/generaltranslation/gt/commit/347cb4844bba2007c7942f3f0e6a2ede4a1aa73e)]:
8
+ - gt@2.14.36
9
+
3
10
  ## 1.0.170
4
11
 
5
12
  ### Patch Changes
package/dist/cli.js CHANGED
@@ -1,33 +1,35 @@
1
1
  #!/usr/bin/env node
2
- import dotenv from 'dotenv';
3
- dotenv.config({ path: '.env' });
4
- dotenv.config({ path: '.env.local', override: true });
5
- dotenv.config({ path: '.env.production', override: true });
6
- import './utils/shutdown.js';
7
- import { Command } from 'commander';
8
- import { readFileSync } from 'node:fs';
9
- import { fromPackageRoot } from './utils/getPaths.js';
10
- import { main } from 'gt';
11
- import { GT_DASHBOARD_URL } from 'gt/utils/constants';
12
- import chalk from 'chalk';
13
- import { displayHeader, logMessage } from './logging/console.js';
14
- const packageJson = JSON.parse(readFileSync(fromPackageRoot('package.json'), 'utf8'));
2
+ import { fromPackageRoot } from "./utils/getPaths.js";
3
+ import { displayHeader, logMessage } from "./logging/console.js";
4
+ import "./utils/shutdown.js";
5
+ import dotenv from "dotenv";
6
+ import chalk from "chalk";
7
+ import { readFileSync } from "node:fs";
8
+ import { Command } from "commander";
9
+ import { main } from "gt";
10
+ import { GT_DASHBOARD_URL } from "gt/utils/constants";
11
+ //#region src/cli.ts
12
+ dotenv.config({ path: ".env" });
13
+ dotenv.config({
14
+ path: ".env.local",
15
+ override: true
16
+ });
17
+ dotenv.config({
18
+ path: ".env.production",
19
+ override: true
20
+ });
21
+ const packageJson = JSON.parse(readFileSync(fromPackageRoot("package.json"), "utf8"));
15
22
  const program = new Command();
16
- program
17
- .name('locadex')
18
- .description('AI agent for internationalization')
19
- .version(packageJson.version);
20
- program
21
- .command('start')
22
- .description('Get started with Locadex')
23
- .action(async () => {
24
- displayHeader();
25
- const urlToOpen = `${GT_DASHBOARD_URL}/locadex`;
26
- await import('open').then((open) => open.default(urlToOpen, {
27
- wait: false,
28
- }));
29
- logMessage(`${chalk.dim(`If the browser window didn't open automatically, please open the following link:`)}\n\n${chalk.cyan(urlToOpen)}`);
23
+ program.name("locadex").description("AI agent for internationalization").version(packageJson.version);
24
+ program.command("start").description("Get started with Locadex").action(async () => {
25
+ displayHeader();
26
+ const urlToOpen = `${GT_DASHBOARD_URL}/locadex`;
27
+ await import("open").then((open) => open.default(urlToOpen, { wait: false }));
28
+ logMessage(`${chalk.dim(`If the browser window didn't open automatically, please open the following link:`)}\n\n${chalk.cyan(urlToOpen)}`);
30
29
  });
31
30
  main(program);
32
31
  program.parse();
32
+ //#endregion
33
+ export {};
34
+
33
35
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"/","sources":["cli.ts"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAE3D,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CACtD,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,aAAa,EAAE,CAAC;IAEhB,MAAM,SAAS,GAAG,GAAG,gBAAgB,UAAU,CAAC;IAChD,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACjC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;QACtB,IAAI,EAAE,KAAK;KACZ,CAAC,CACH,CAAC;IACF,UAAU,CACR,GAAG,KAAK,CAAC,GAAG,CACV,kFAAkF,CACnF,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAChC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEL,IAAI,CAAC,OAAO,CAAC,CAAC;AAEd,OAAO,CAAC,KAAK,EAAE,CAAC","sourcesContent":["#!/usr/bin/env node\n\nimport dotenv from 'dotenv';\n\ndotenv.config({ path: '.env' });\ndotenv.config({ path: '.env.local', override: true });\ndotenv.config({ path: '.env.production', override: true });\n\nimport './utils/shutdown.js';\nimport { Command } from 'commander';\nimport { readFileSync } from 'node:fs';\nimport { fromPackageRoot } from './utils/getPaths.js';\nimport { main } from 'gt';\nimport { GT_DASHBOARD_URL } from 'gt/utils/constants';\nimport chalk from 'chalk';\nimport { displayHeader, logMessage } from './logging/console.js';\n\nconst packageJson = JSON.parse(\n readFileSync(fromPackageRoot('package.json'), 'utf8')\n);\n\nconst program = new Command();\n\nprogram\n .name('locadex')\n .description('AI agent for internationalization')\n .version(packageJson.version);\n\nprogram\n .command('start')\n .description('Get started with Locadex')\n .action(async () => {\n displayHeader();\n\n const urlToOpen = `${GT_DASHBOARD_URL}/locadex`;\n await import('open').then((open) =>\n open.default(urlToOpen, {\n wait: false,\n })\n );\n logMessage(\n `${chalk.dim(\n `If the browser window didn't open automatically, please open the following link:`\n )}\\n\\n${chalk.cyan(urlToOpen)}`\n );\n });\n\nmain(program);\n\nprogram.parse();\n"]}
1
+ {"version":3,"file":"cli.js","names":[],"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport dotenv from 'dotenv';\n\ndotenv.config({ path: '.env' });\ndotenv.config({ path: '.env.local', override: true });\ndotenv.config({ path: '.env.production', override: true });\n\nimport './utils/shutdown.js';\nimport { Command } from 'commander';\nimport { readFileSync } from 'node:fs';\nimport { fromPackageRoot } from './utils/getPaths.js';\nimport { main } from 'gt';\nimport { GT_DASHBOARD_URL } from 'gt/utils/constants';\nimport chalk from 'chalk';\nimport { displayHeader, logMessage } from './logging/console.js';\n\nconst packageJson = JSON.parse(\n readFileSync(fromPackageRoot('package.json'), 'utf8')\n);\n\nconst program = new Command();\n\nprogram\n .name('locadex')\n .description('AI agent for internationalization')\n .version(packageJson.version);\n\nprogram\n .command('start')\n .description('Get started with Locadex')\n .action(async () => {\n displayHeader();\n\n const urlToOpen = `${GT_DASHBOARD_URL}/locadex`;\n await import('open').then((open) =>\n open.default(urlToOpen, {\n wait: false,\n })\n );\n logMessage(\n `${chalk.dim(\n `If the browser window didn't open automatically, please open the following link:`\n )}\\n\\n${chalk.cyan(urlToOpen)}`\n );\n });\n\nmain(program);\n\nprogram.parse();\n"],"mappings":";;;;;;;;;;;AAIA,OAAO,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,OAAO;CAAE,MAAM;CAAc,UAAU;CAAM,CAAC;AACrD,OAAO,OAAO;CAAE,MAAM;CAAmB,UAAU;CAAM,CAAC;AAW1D,MAAM,cAAc,KAAK,MACvB,aAAa,gBAAgB,eAAe,EAAE,OAAO,CACtD;AAED,MAAM,UAAU,IAAI,SAAS;AAE7B,QACG,KAAK,UAAU,CACf,YAAY,oCAAoC,CAChD,QAAQ,YAAY,QAAQ;AAE/B,QACG,QAAQ,QAAQ,CAChB,YAAY,2BAA2B,CACvC,OAAO,YAAY;AAClB,gBAAe;CAEf,MAAM,YAAY,GAAG,iBAAiB;AACtC,OAAM,OAAO,QAAQ,MAAM,SACzB,KAAK,QAAQ,WAAW,EACtB,MAAM,OACP,CAAC,CACH;AACD,YACE,GAAG,MAAM,IACP,mFACD,CAAC,MAAM,MAAM,KAAK,UAAU,GAC9B;EACD;AAEJ,KAAK,QAAQ;AAEb,QAAQ,OAAO"}
package/dist/index.js CHANGED
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=index.js.map
@@ -1,46 +1,43 @@
1
- import { log, spinner, intro, outro, text, select, confirm, isCancel, cancel, multiselect, taskLog, progress, } from '@clack/prompts';
2
- import chalk from 'chalk';
3
- import { getLocadexVersion } from '../utils/getPaths.js';
4
- import { exit } from '../utils/shutdown.js';
5
- // Basic logging functions
6
- export function logInfo(message) {
7
- log.info(message);
1
+ import { getLocadexVersion } from "../utils/getPaths.js";
2
+ import { exit } from "../utils/shutdown.js";
3
+ import { cancel, confirm, intro, isCancel, log, multiselect, outro, progress, select, spinner, taskLog, text } from "@clack/prompts";
4
+ import chalk from "chalk";
5
+ //#region src/logging/console.ts
6
+ function logInfo(message) {
7
+ log.info(message);
8
8
  }
9
- export function logWarning(message) {
10
- log.warn(message);
9
+ function logWarning(message) {
10
+ log.warn(message);
11
11
  }
12
- export function logError(message) {
13
- log.error(message);
12
+ function logError(message) {
13
+ log.error(message);
14
14
  }
15
- export function logSuccess(message) {
16
- log.success(message);
15
+ function logSuccess(message) {
16
+ log.success(message);
17
17
  }
18
- export function logStep(message) {
19
- log.step(message);
18
+ function logStep(message) {
19
+ log.step(message);
20
20
  }
21
- export function logMessage(message) {
22
- log.message(message, { symbol: chalk.cyan('~') });
21
+ function logMessage(message) {
22
+ log.message(message, { symbol: chalk.cyan("~") });
23
23
  }
24
- export async function logErrorAndExit(message) {
25
- log.error(message);
26
- await exit(1);
24
+ async function logErrorAndExit(message) {
25
+ log.error(message);
26
+ await exit(1);
27
27
  }
28
- // Clack prompts
29
- export function startCommand(message) {
30
- intro(chalk.cyan(message));
28
+ function startCommand(message) {
29
+ intro(chalk.cyan(message));
31
30
  }
32
- export function endCommand(message) {
33
- outro(chalk.cyan(message));
31
+ function endCommand(message) {
32
+ outro(chalk.cyan(message));
34
33
  }
35
- // GT specific logging
36
- export function displayHeader() {
37
- displayAsciiTitle();
38
- displayInitializingText();
39
- startCommand(chalk.cyan(`Locadex v${getLocadexVersion()}`));
34
+ function displayHeader() {
35
+ displayAsciiTitle();
36
+ displayInitializingText();
37
+ startCommand(chalk.cyan(`Locadex v${getLocadexVersion()}`));
40
38
  }
41
39
  function displayAsciiTitle() {
42
- // eslint-disable-next-line no-console
43
- console.log(chalk.cyan(`\n ,ad8888ba, 888888888888
40
+ console.log(chalk.cyan(`\n ,ad8888ba, 888888888888
44
41
  d8"' \`"8b 88
45
42
  d8' 88
46
43
  88 88
@@ -50,86 +47,80 @@ Y8, 88 88
50
47
  \`"Y88888P" 88 `));
51
48
  }
52
49
  function displayInitializingText() {
53
- // eslint-disable-next-line no-console
54
- console.log(`\n${chalk.bold.blue('General Translation, Inc.')}
55
- ${chalk.dim('https://generaltranslation.com/docs')}
50
+ console.log(`\n${chalk.bold.blue("General Translation, Inc.")}
51
+ ${chalk.dim("https://generaltranslation.com/docs")}
56
52
 
57
53
  Locadex is in research preview and may make mistakes. Report any bugs or issues to https://github.com/generaltranslation/gt/issues.
58
54
  `);
59
55
  }
60
- // Spinner functionality
61
- export function createSpinner(indicator = 'timer') {
62
- return spinner({ indicator });
63
- }
64
- export function createProgressBar(total) {
65
- return progress({ max: total });
66
- }
67
- // Input prompts
68
- export async function promptText({ message, defaultValue, validate, }) {
69
- const result = await text({
70
- message,
71
- placeholder: defaultValue,
72
- validate: validate
73
- ? (value) => {
74
- const validation = validate(value || '');
75
- return validation === true ? undefined : validation.toString();
76
- }
77
- : undefined,
78
- });
79
- if (isCancel(result)) {
80
- cancel('Operation cancelled');
81
- await exit(0);
82
- }
83
- return result;
84
- }
85
- export async function promptSelect({ message, options, defaultValue, }) {
86
- // Convert options to the format expected by clack
87
- const clackOptions = options.map((opt) => ({
88
- value: opt.value,
89
- label: opt.label,
90
- hint: opt.hint,
91
- }));
92
- const result = await select({
93
- message,
94
- options: clackOptions,
95
- initialValue: defaultValue,
96
- });
97
- if (isCancel(result)) {
98
- cancel('Operation cancelled');
99
- await exit(0);
100
- }
101
- return result;
102
- }
103
- export async function promptMultiSelect({ message, options, required = true, }) {
104
- // Convert options to the format expected by clack
105
- const clackOptions = options.map((opt) => ({
106
- value: opt.value,
107
- label: opt.label,
108
- hint: opt.hint,
109
- }));
110
- const result = await multiselect({
111
- message,
112
- options: clackOptions,
113
- required,
114
- });
115
- if (isCancel(result)) {
116
- cancel('Operation cancelled');
117
- await exit(0);
118
- }
119
- return result;
120
- }
121
- export async function promptConfirm({ message, defaultValue = true, cancelMessage = 'Operation cancelled', }) {
122
- const result = await confirm({
123
- message,
124
- initialValue: defaultValue,
125
- });
126
- if (isCancel(result)) {
127
- cancel(cancelMessage);
128
- await exit(0);
129
- }
130
- return result;
131
- }
132
- export function createTaskLogger(message) {
133
- return taskLog({ title: message });
134
- }
56
+ function createSpinner(indicator = "timer") {
57
+ return spinner({ indicator });
58
+ }
59
+ function createProgressBar(total) {
60
+ return progress({ max: total });
61
+ }
62
+ async function promptText({ message, defaultValue, validate }) {
63
+ const result = await text({
64
+ message,
65
+ placeholder: defaultValue,
66
+ validate: validate ? (value) => {
67
+ const validation = validate(value || "");
68
+ return validation === true ? void 0 : validation.toString();
69
+ } : void 0
70
+ });
71
+ if (isCancel(result)) {
72
+ cancel("Operation cancelled");
73
+ await exit(0);
74
+ }
75
+ return result;
76
+ }
77
+ async function promptSelect({ message, options, defaultValue }) {
78
+ const result = await select({
79
+ message,
80
+ options: options.map((opt) => ({
81
+ value: opt.value,
82
+ label: opt.label,
83
+ hint: opt.hint
84
+ })),
85
+ initialValue: defaultValue
86
+ });
87
+ if (isCancel(result)) {
88
+ cancel("Operation cancelled");
89
+ await exit(0);
90
+ }
91
+ return result;
92
+ }
93
+ async function promptMultiSelect({ message, options, required = true }) {
94
+ const result = await multiselect({
95
+ message,
96
+ options: options.map((opt) => ({
97
+ value: opt.value,
98
+ label: opt.label,
99
+ hint: opt.hint
100
+ })),
101
+ required
102
+ });
103
+ if (isCancel(result)) {
104
+ cancel("Operation cancelled");
105
+ await exit(0);
106
+ }
107
+ return result;
108
+ }
109
+ async function promptConfirm({ message, defaultValue = true, cancelMessage = "Operation cancelled" }) {
110
+ const result = await confirm({
111
+ message,
112
+ initialValue: defaultValue
113
+ });
114
+ if (isCancel(result)) {
115
+ cancel(cancelMessage);
116
+ await exit(0);
117
+ }
118
+ return result;
119
+ }
120
+ function createTaskLogger(message) {
121
+ return taskLog({ title: message });
122
+ }
123
+ //#endregion
124
+ export { createProgressBar, createSpinner, createTaskLogger, displayHeader, endCommand, logError, logErrorAndExit, logInfo, logMessage, logStep, logSuccess, logWarning, promptConfirm, promptMultiSelect, promptSelect, promptText, startCommand };
125
+
135
126
  //# sourceMappingURL=console.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"/","sources":["logging/console.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n log,\n spinner,\n intro,\n outro,\n text,\n select,\n confirm,\n isCancel,\n cancel,\n multiselect,\n taskLog,\n progress,\n} from '@clack/prompts';\nimport type { Option } from '@clack/prompts';\nimport chalk from 'chalk';\nimport { getLocadexVersion } from '../utils/getPaths.js';\nimport { exit } from '../utils/shutdown.js';\n\n// Basic logging functions\nexport function logInfo(message: string) {\n log.info(message);\n}\nexport function logWarning(message: string) {\n log.warn(message);\n}\nexport function logError(message: string) {\n log.error(message);\n}\nexport function logSuccess(message: string) {\n log.success(message);\n}\nexport function logStep(message: string) {\n log.step(message);\n}\nexport function logMessage(message: string) {\n log.message(message, { symbol: chalk.cyan('~') });\n}\n\nexport async function logErrorAndExit(message: string) {\n log.error(message);\n await exit(1);\n}\n\n// Clack prompts\nexport function startCommand(message: string) {\n intro(chalk.cyan(message));\n}\nexport function endCommand(message: string) {\n outro(chalk.cyan(message));\n}\n\n// GT specific logging\nexport function displayHeader() {\n displayAsciiTitle();\n displayInitializingText();\n startCommand(chalk.cyan(`Locadex v${getLocadexVersion()}`));\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 // 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\nLocadex is in research preview and may make mistakes. Report any bugs or issues to https://github.com/generaltranslation/gt/issues.\n`\n );\n}\n\n// Spinner functionality\nexport function createSpinner(indicator: 'dots' | 'timer' = 'timer') {\n return spinner({ indicator });\n}\n\nexport function createProgressBar(total: number) {\n return progress({ max: total });\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 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 await exit(0);\n }\n\n return result;\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 // 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 await exit(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 // 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 await exit(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 const result = await confirm({\n message,\n initialValue: defaultValue,\n });\n\n if (isCancel(result)) {\n cancel(cancelMessage);\n await exit(0);\n }\n\n return result;\n}\n\nexport function createTaskLogger(message: string) {\n return taskLog({ title: message });\n}\n"]}
1
+ {"version":3,"file":"console.js","names":[],"sources":["../../src/logging/console.ts"],"sourcesContent":["import {\n log,\n spinner,\n intro,\n outro,\n text,\n select,\n confirm,\n isCancel,\n cancel,\n multiselect,\n taskLog,\n progress,\n} from '@clack/prompts';\nimport type { Option } from '@clack/prompts';\nimport chalk from 'chalk';\nimport { getLocadexVersion } from '../utils/getPaths.js';\nimport { exit } from '../utils/shutdown.js';\n\n// Basic logging functions\nexport function logInfo(message: string) {\n log.info(message);\n}\nexport function logWarning(message: string) {\n log.warn(message);\n}\nexport function logError(message: string) {\n log.error(message);\n}\nexport function logSuccess(message: string) {\n log.success(message);\n}\nexport function logStep(message: string) {\n log.step(message);\n}\nexport function logMessage(message: string) {\n log.message(message, { symbol: chalk.cyan('~') });\n}\n\nexport async function logErrorAndExit(message: string) {\n log.error(message);\n await exit(1);\n}\n\n// Clack prompts\nexport function startCommand(message: string) {\n intro(chalk.cyan(message));\n}\nexport function endCommand(message: string) {\n outro(chalk.cyan(message));\n}\n\n// GT specific logging\nexport function displayHeader() {\n displayAsciiTitle();\n displayInitializingText();\n startCommand(chalk.cyan(`Locadex v${getLocadexVersion()}`));\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 // 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\nLocadex is in research preview and may make mistakes. Report any bugs or issues to https://github.com/generaltranslation/gt/issues.\n`\n );\n}\n\n// Spinner functionality\nexport function createSpinner(indicator: 'dots' | 'timer' = 'timer') {\n return spinner({ indicator });\n}\n\nexport function createProgressBar(total: number) {\n return progress({ max: total });\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 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 await exit(0);\n }\n\n return result;\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 // 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 await exit(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 // 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 await exit(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 const result = await confirm({\n message,\n initialValue: defaultValue,\n });\n\n if (isCancel(result)) {\n cancel(cancelMessage);\n await exit(0);\n }\n\n return result;\n}\n\nexport function createTaskLogger(message: string) {\n return taskLog({ title: message });\n}\n"],"mappings":";;;;;AAoBA,SAAgB,QAAQ,SAAiB;AACvC,KAAI,KAAK,QAAQ;;AAEnB,SAAgB,WAAW,SAAiB;AAC1C,KAAI,KAAK,QAAQ;;AAEnB,SAAgB,SAAS,SAAiB;AACxC,KAAI,MAAM,QAAQ;;AAEpB,SAAgB,WAAW,SAAiB;AAC1C,KAAI,QAAQ,QAAQ;;AAEtB,SAAgB,QAAQ,SAAiB;AACvC,KAAI,KAAK,QAAQ;;AAEnB,SAAgB,WAAW,SAAiB;AAC1C,KAAI,QAAQ,SAAS,EAAE,QAAQ,MAAM,KAAK,IAAI,EAAE,CAAC;;AAGnD,eAAsB,gBAAgB,SAAiB;AACrD,KAAI,MAAM,QAAQ;AAClB,OAAM,KAAK,EAAE;;AAIf,SAAgB,aAAa,SAAiB;AAC5C,OAAM,MAAM,KAAK,QAAQ,CAAC;;AAE5B,SAAgB,WAAW,SAAiB;AAC1C,OAAM,MAAM,KAAK,QAAQ,CAAC;;AAI5B,SAAgB,gBAAgB;AAC9B,oBAAmB;AACnB,0BAAyB;AACzB,cAAa,MAAM,KAAK,YAAY,mBAAmB,GAAG,CAAC;;AAG7D,SAAS,oBAAoB;AAE3B,SAAQ,IACN,MAAM,KACJ;;;;;;;+BAQD,CACF;;AAGH,SAAS,0BAA0B;AAEjC,SAAQ,IACN,KAAK,MAAM,KAAK,KAAK,4BAA4B,CAAC;EACpD,MAAM,IAAI,sCAAsC,CAAC;;;EAIhD;;AAIH,SAAgB,cAAc,YAA8B,SAAS;AACnE,QAAO,QAAQ,EAAE,WAAW,CAAC;;AAG/B,SAAgB,kBAAkB,OAAe;AAC/C,QAAO,SAAS,EAAE,KAAK,OAAO,CAAC;;AAIjC,eAAsB,WAAW,EAC/B,SACA,cACA,YAKC;CACD,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,QAAM,KAAK,EAAE;;AAGf,QAAO;;AAGT,eAAsB,aAAgB,EACpC,SACA,SACA,gBAKC;CAQD,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,QAAM,KAAK,EAAE;;AAGf,QAAO;;AAGT,eAAsB,kBAAoC,EACxD,SACA,SACA,WAAW,QAKV;CAQD,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,QAAM,KAAK,EAAE;;AAGf,QAAO;;AAGT,eAAsB,cAAc,EAClC,SACA,eAAe,MACf,gBAAgB,yBAKf;CACD,MAAM,SAAS,MAAM,QAAQ;EAC3B;EACA,cAAc;EACf,CAAC;AAEF,KAAI,SAAS,OAAO,EAAE;AACpB,SAAO,cAAc;AACrB,QAAM,KAAK,EAAE;;AAGf,QAAO;;AAGT,SAAgB,iBAAiB,SAAiB;AAChD,QAAO,QAAQ,EAAE,OAAO,SAAS,CAAC"}
@@ -1,165 +1,130 @@
1
- import { logInfo, logWarning, logError, logSuccess, logStep, logMessage, logErrorAndExit, createProgressBar, createSpinner, } from './console.js';
2
- import { appendFileSync } from 'node:fs';
3
- class ProgressBar {
4
- progressBar;
5
- constructor() { }
6
- init(total) {
7
- if (!this.progressBar) {
8
- this.progressBar = createProgressBar(total);
9
- }
10
- }
11
- start(message) {
12
- if (this.progressBar) {
13
- this.progressBar.start(message);
14
- }
15
- }
16
- advance(amount, message) {
17
- if (this.progressBar) {
18
- this.progressBar.advance(amount, message);
19
- }
20
- }
21
- stop(message) {
22
- if (this.progressBar) {
23
- try {
24
- this.progressBar.stop(message);
25
- this.progressBar = undefined;
26
- }
27
- catch {
28
- this.progressBar = undefined;
29
- }
30
- }
31
- }
32
- }
33
- class Spinner {
34
- spinner;
35
- constructor() { }
36
- init() {
37
- if (!this.spinner) {
38
- this.spinner = createSpinner();
39
- }
40
- }
41
- start(message) {
42
- if (this.spinner) {
43
- this.spinner.start(message);
44
- }
45
- }
46
- update(message) {
47
- if (this.spinner) {
48
- this.spinner.message(message);
49
- }
50
- }
51
- stop(message) {
52
- if (this.spinner) {
53
- try {
54
- this.spinner.stop(message);
55
- this.spinner = undefined;
56
- }
57
- catch {
58
- this.spinner = undefined;
59
- }
60
- }
61
- }
62
- }
63
- class Logger {
64
- static instance;
65
- _verbose = false;
66
- _debug = false;
67
- logFile;
68
- progressBar = new ProgressBar();
69
- spinner = new Spinner();
70
- constructor() { }
71
- static getInstance() {
72
- if (!Logger.instance) {
73
- Logger.instance = new Logger();
74
- }
75
- return Logger.instance;
76
- }
77
- initialize(options, logFile) {
78
- if (options.debug) {
79
- this._debug = true;
80
- this._verbose = true;
81
- }
82
- if (options.verbose) {
83
- this._verbose = true;
84
- }
85
- if (logFile) {
86
- this.logFile = logFile;
87
- }
88
- }
89
- get verbose() {
90
- return this._verbose;
91
- }
92
- get debug() {
93
- return this._debug;
94
- }
95
- reset() {
96
- this._verbose = false;
97
- this._debug = false;
98
- }
99
- // Basic logging methods using existing console functions
100
- info(message) {
101
- this.log(message);
102
- logInfo(message);
103
- }
104
- warning(message) {
105
- this.log(message);
106
- logWarning(message);
107
- }
108
- error(message) {
109
- this.log(message);
110
- logError(message);
111
- }
112
- success(message) {
113
- this.log(message);
114
- logSuccess(message);
115
- }
116
- step(message) {
117
- this.log(message);
118
- logStep(message);
119
- }
120
- message(message) {
121
- this.log(message);
122
- logMessage(message);
123
- }
124
- async errorAndExit(message) {
125
- this.log(message);
126
- await logErrorAndExit(message);
127
- }
128
- // Conditional logging methods
129
- verboseMessage(message) {
130
- this.log(message);
131
- if (this._verbose) {
132
- logMessage(message);
133
- }
134
- }
135
- debugMessage(message) {
136
- this.log(message);
137
- if (this._debug) {
138
- logMessage(message);
139
- }
140
- }
141
- log(message) {
142
- if (this.logFile) {
143
- const timestamp = new Date().toISOString();
144
- appendFileSync(this.logFile, `[${timestamp}] ${message}\n`);
145
- }
146
- }
147
- initializeProgressBar(total) {
148
- if (!this._verbose && !this._debug) {
149
- this.progressBar.init(total);
150
- }
151
- if (this.logFile) {
152
- appendFileSync(this.logFile, `Initializing progress bar with total: ${total}\n`);
153
- }
154
- }
155
- initializeSpinner() {
156
- if (!this._verbose && !this._debug) {
157
- this.spinner.init();
158
- }
159
- if (this.logFile) {
160
- appendFileSync(this.logFile, `Initializing spinner\n`);
161
- }
162
- }
163
- }
164
- export const logger = Logger.getInstance();
1
+ import { createProgressBar, createSpinner, logError, logErrorAndExit, logInfo, logMessage, logStep, logSuccess, logWarning } from "./console.js";
2
+ import { appendFileSync } from "node:fs";
3
+ //#region src/logging/logger.ts
4
+ var ProgressBar = class {
5
+ progressBar;
6
+ constructor() {}
7
+ init(total) {
8
+ if (!this.progressBar) this.progressBar = createProgressBar(total);
9
+ }
10
+ start(message) {
11
+ if (this.progressBar) this.progressBar.start(message);
12
+ }
13
+ advance(amount, message) {
14
+ if (this.progressBar) this.progressBar.advance(amount, message);
15
+ }
16
+ stop(message) {
17
+ if (this.progressBar) try {
18
+ this.progressBar.stop(message);
19
+ this.progressBar = void 0;
20
+ } catch {
21
+ this.progressBar = void 0;
22
+ }
23
+ }
24
+ };
25
+ var Spinner = class {
26
+ spinner;
27
+ constructor() {}
28
+ init() {
29
+ if (!this.spinner) this.spinner = createSpinner();
30
+ }
31
+ start(message) {
32
+ if (this.spinner) this.spinner.start(message);
33
+ }
34
+ update(message) {
35
+ if (this.spinner) this.spinner.message(message);
36
+ }
37
+ stop(message) {
38
+ if (this.spinner) try {
39
+ this.spinner.stop(message);
40
+ this.spinner = void 0;
41
+ } catch {
42
+ this.spinner = void 0;
43
+ }
44
+ }
45
+ };
46
+ const logger = class Logger {
47
+ static instance;
48
+ _verbose = false;
49
+ _debug = false;
50
+ logFile;
51
+ progressBar = new ProgressBar();
52
+ spinner = new Spinner();
53
+ constructor() {}
54
+ static getInstance() {
55
+ if (!Logger.instance) Logger.instance = new Logger();
56
+ return Logger.instance;
57
+ }
58
+ initialize(options, logFile) {
59
+ if (options.debug) {
60
+ this._debug = true;
61
+ this._verbose = true;
62
+ }
63
+ if (options.verbose) this._verbose = true;
64
+ if (logFile) this.logFile = logFile;
65
+ }
66
+ get verbose() {
67
+ return this._verbose;
68
+ }
69
+ get debug() {
70
+ return this._debug;
71
+ }
72
+ reset() {
73
+ this._verbose = false;
74
+ this._debug = false;
75
+ }
76
+ info(message) {
77
+ this.log(message);
78
+ logInfo(message);
79
+ }
80
+ warning(message) {
81
+ this.log(message);
82
+ logWarning(message);
83
+ }
84
+ error(message) {
85
+ this.log(message);
86
+ logError(message);
87
+ }
88
+ success(message) {
89
+ this.log(message);
90
+ logSuccess(message);
91
+ }
92
+ step(message) {
93
+ this.log(message);
94
+ logStep(message);
95
+ }
96
+ message(message) {
97
+ this.log(message);
98
+ logMessage(message);
99
+ }
100
+ async errorAndExit(message) {
101
+ this.log(message);
102
+ await logErrorAndExit(message);
103
+ }
104
+ verboseMessage(message) {
105
+ this.log(message);
106
+ if (this._verbose) logMessage(message);
107
+ }
108
+ debugMessage(message) {
109
+ this.log(message);
110
+ if (this._debug) logMessage(message);
111
+ }
112
+ log(message) {
113
+ if (this.logFile) {
114
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
115
+ appendFileSync(this.logFile, `[${timestamp}] ${message}\n`);
116
+ }
117
+ }
118
+ initializeProgressBar(total) {
119
+ if (!this._verbose && !this._debug) this.progressBar.init(total);
120
+ if (this.logFile) appendFileSync(this.logFile, `Initializing progress bar with total: ${total}\n`);
121
+ }
122
+ initializeSpinner() {
123
+ if (!this._verbose && !this._debug) this.spinner.init();
124
+ if (this.logFile) appendFileSync(this.logFile, `Initializing spinner\n`);
125
+ }
126
+ }.getInstance();
127
+ //#endregion
128
+ export { logger };
129
+
165
130
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"/","sources":["logging/logger.ts"],"names":[],"mappings":"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","sourcesContent":["import { ProgressResult, SpinnerResult } from '@clack/prompts';\nimport {\n logInfo,\n logWarning,\n logError,\n logSuccess,\n logStep,\n logMessage,\n logErrorAndExit,\n createProgressBar,\n createSpinner,\n} from './console.js';\nimport { appendFileSync } from 'node:fs';\n\nclass ProgressBar {\n private progressBar: ProgressResult | undefined;\n constructor() {}\n\n init(total: number): void {\n if (!this.progressBar) {\n this.progressBar = createProgressBar(total);\n }\n }\n\n start(message?: string): void {\n if (this.progressBar) {\n this.progressBar.start(message);\n }\n }\n\n advance(amount: number, message?: string): void {\n if (this.progressBar) {\n this.progressBar.advance(amount, message);\n }\n }\n\n stop(message?: string): void {\n if (this.progressBar) {\n try {\n this.progressBar.stop(message);\n this.progressBar = undefined;\n } catch {\n this.progressBar = undefined;\n }\n }\n }\n}\n\nclass Spinner {\n private spinner: SpinnerResult | undefined;\n constructor() {}\n\n init(): void {\n if (!this.spinner) {\n this.spinner = createSpinner();\n }\n }\n\n start(message?: string): void {\n if (this.spinner) {\n this.spinner.start(message);\n }\n }\n\n update(message?: string): void {\n if (this.spinner) {\n this.spinner.message(message);\n }\n }\n\n stop(message?: string): void {\n if (this.spinner) {\n try {\n this.spinner.stop(message);\n this.spinner = undefined;\n } catch {\n this.spinner = undefined;\n }\n }\n }\n}\n\nclass Logger {\n private static instance: Logger;\n private _verbose: boolean = false;\n private _debug: boolean = false;\n private logFile: string | undefined;\n progressBar: ProgressBar = new ProgressBar();\n spinner: Spinner = new Spinner();\n private constructor() {}\n\n static getInstance(): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger();\n }\n return Logger.instance;\n }\n\n initialize(\n options: { verbose?: boolean; debug?: boolean },\n logFile?: string\n ): void {\n if (options.debug) {\n this._debug = true;\n this._verbose = true;\n }\n if (options.verbose) {\n this._verbose = true;\n }\n if (logFile) {\n this.logFile = logFile;\n }\n }\n\n get verbose(): boolean {\n return this._verbose;\n }\n\n get debug(): boolean {\n return this._debug;\n }\n\n reset(): void {\n this._verbose = false;\n this._debug = false;\n }\n\n // Basic logging methods using existing console functions\n info(message: string): void {\n this.log(message);\n logInfo(message);\n }\n\n warning(message: string): void {\n this.log(message);\n logWarning(message);\n }\n\n error(message: string): void {\n this.log(message);\n logError(message);\n }\n\n success(message: string): void {\n this.log(message);\n logSuccess(message);\n }\n\n step(message: string): void {\n this.log(message);\n logStep(message);\n }\n\n message(message: string): void {\n this.log(message);\n logMessage(message);\n }\n\n async errorAndExit(message: string) {\n this.log(message);\n await logErrorAndExit(message);\n }\n\n // Conditional logging methods\n verboseMessage(message: string): void {\n this.log(message);\n if (this._verbose) {\n logMessage(message);\n }\n }\n\n debugMessage(message: string): void {\n this.log(message);\n if (this._debug) {\n logMessage(message);\n }\n }\n\n log(message: string): void {\n if (this.logFile) {\n const timestamp = new Date().toISOString();\n appendFileSync(this.logFile, `[${timestamp}] ${message}\\n`);\n }\n }\n\n initializeProgressBar(total: number): void {\n if (!this._verbose && !this._debug) {\n this.progressBar.init(total);\n }\n if (this.logFile) {\n appendFileSync(\n this.logFile,\n `Initializing progress bar with total: ${total}\\n`\n );\n }\n }\n initializeSpinner(): void {\n if (!this._verbose && !this._debug) {\n this.spinner.init();\n }\n if (this.logFile) {\n appendFileSync(this.logFile, `Initializing spinner\\n`);\n }\n }\n}\n\nexport const logger = Logger.getInstance();\n"]}
1
+ {"version":3,"file":"logger.js","names":[],"sources":["../../src/logging/logger.ts"],"sourcesContent":["import { ProgressResult, SpinnerResult } from '@clack/prompts';\nimport {\n logInfo,\n logWarning,\n logError,\n logSuccess,\n logStep,\n logMessage,\n logErrorAndExit,\n createProgressBar,\n createSpinner,\n} from './console.js';\nimport { appendFileSync } from 'node:fs';\n\nclass ProgressBar {\n private progressBar: ProgressResult | undefined;\n constructor() {}\n\n init(total: number): void {\n if (!this.progressBar) {\n this.progressBar = createProgressBar(total);\n }\n }\n\n start(message?: string): void {\n if (this.progressBar) {\n this.progressBar.start(message);\n }\n }\n\n advance(amount: number, message?: string): void {\n if (this.progressBar) {\n this.progressBar.advance(amount, message);\n }\n }\n\n stop(message?: string): void {\n if (this.progressBar) {\n try {\n this.progressBar.stop(message);\n this.progressBar = undefined;\n } catch {\n this.progressBar = undefined;\n }\n }\n }\n}\n\nclass Spinner {\n private spinner: SpinnerResult | undefined;\n constructor() {}\n\n init(): void {\n if (!this.spinner) {\n this.spinner = createSpinner();\n }\n }\n\n start(message?: string): void {\n if (this.spinner) {\n this.spinner.start(message);\n }\n }\n\n update(message?: string): void {\n if (this.spinner) {\n this.spinner.message(message);\n }\n }\n\n stop(message?: string): void {\n if (this.spinner) {\n try {\n this.spinner.stop(message);\n this.spinner = undefined;\n } catch {\n this.spinner = undefined;\n }\n }\n }\n}\n\nclass Logger {\n private static instance: Logger;\n private _verbose: boolean = false;\n private _debug: boolean = false;\n private logFile: string | undefined;\n progressBar: ProgressBar = new ProgressBar();\n spinner: Spinner = new Spinner();\n private constructor() {}\n\n static getInstance(): Logger {\n if (!Logger.instance) {\n Logger.instance = new Logger();\n }\n return Logger.instance;\n }\n\n initialize(\n options: { verbose?: boolean; debug?: boolean },\n logFile?: string\n ): void {\n if (options.debug) {\n this._debug = true;\n this._verbose = true;\n }\n if (options.verbose) {\n this._verbose = true;\n }\n if (logFile) {\n this.logFile = logFile;\n }\n }\n\n get verbose(): boolean {\n return this._verbose;\n }\n\n get debug(): boolean {\n return this._debug;\n }\n\n reset(): void {\n this._verbose = false;\n this._debug = false;\n }\n\n // Basic logging methods using existing console functions\n info(message: string): void {\n this.log(message);\n logInfo(message);\n }\n\n warning(message: string): void {\n this.log(message);\n logWarning(message);\n }\n\n error(message: string): void {\n this.log(message);\n logError(message);\n }\n\n success(message: string): void {\n this.log(message);\n logSuccess(message);\n }\n\n step(message: string): void {\n this.log(message);\n logStep(message);\n }\n\n message(message: string): void {\n this.log(message);\n logMessage(message);\n }\n\n async errorAndExit(message: string) {\n this.log(message);\n await logErrorAndExit(message);\n }\n\n // Conditional logging methods\n verboseMessage(message: string): void {\n this.log(message);\n if (this._verbose) {\n logMessage(message);\n }\n }\n\n debugMessage(message: string): void {\n this.log(message);\n if (this._debug) {\n logMessage(message);\n }\n }\n\n log(message: string): void {\n if (this.logFile) {\n const timestamp = new Date().toISOString();\n appendFileSync(this.logFile, `[${timestamp}] ${message}\\n`);\n }\n }\n\n initializeProgressBar(total: number): void {\n if (!this._verbose && !this._debug) {\n this.progressBar.init(total);\n }\n if (this.logFile) {\n appendFileSync(\n this.logFile,\n `Initializing progress bar with total: ${total}\\n`\n );\n }\n }\n initializeSpinner(): void {\n if (!this._verbose && !this._debug) {\n this.spinner.init();\n }\n if (this.logFile) {\n appendFileSync(this.logFile, `Initializing spinner\\n`);\n }\n }\n}\n\nexport const logger = Logger.getInstance();\n"],"mappings":"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"}
@@ -1,20 +1,21 @@
1
- import path, { dirname } from 'node:path';
2
- import { fileURLToPath } from 'node:url';
3
- import fs from 'node:fs';
1
+ import path, { dirname } from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import fs from "node:fs";
4
+ //#region src/utils/getPaths.ts
4
5
  const __dirname = dirname(fileURLToPath(import.meta.url));
5
- export function fromPackageRoot(relative) {
6
- return path.resolve(__dirname, `../../`, relative);
6
+ function fromPackageRoot(relative) {
7
+ return path.resolve(__dirname, `../../`, relative);
7
8
  }
8
- export function getLocadexVersion() {
9
- const packageJsonPath = fromPackageRoot('package.json');
10
- if (!fs.existsSync(packageJsonPath)) {
11
- return 'unknown';
12
- }
13
- try {
14
- return JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')).version;
15
- }
16
- catch {
17
- return 'unknown';
18
- }
9
+ function getLocadexVersion() {
10
+ const packageJsonPath = fromPackageRoot("package.json");
11
+ if (!fs.existsSync(packageJsonPath)) return "unknown";
12
+ try {
13
+ return JSON.parse(fs.readFileSync(packageJsonPath, "utf8")).version;
14
+ } catch {
15
+ return "unknown";
16
+ }
19
17
  }
18
+ //#endregion
19
+ export { fromPackageRoot, getLocadexVersion };
20
+
20
21
  //# sourceMappingURL=getPaths.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getPaths.js","sourceRoot":"/","sources":["utils/getPaths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,MAAM,eAAe,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;IAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC","sourcesContent":["import path, { dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport fs from 'node:fs';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport function fromPackageRoot(relative: string) {\n return path.resolve(__dirname, `../../`, relative);\n}\n\nexport function getLocadexVersion(): string {\n const packageJsonPath = fromPackageRoot('package.json');\n\n if (!fs.existsSync(packageJsonPath)) {\n return 'unknown';\n }\n try {\n return JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')).version;\n } catch {\n return 'unknown';\n }\n}\n"]}
1
+ {"version":3,"file":"getPaths.js","names":[],"sources":["../../src/utils/getPaths.ts"],"sourcesContent":["import path, { dirname } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport fs from 'node:fs';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nexport function fromPackageRoot(relative: string) {\n return path.resolve(__dirname, `../../`, relative);\n}\n\nexport function getLocadexVersion(): string {\n const packageJsonPath = fromPackageRoot('package.json');\n\n if (!fs.existsSync(packageJsonPath)) {\n return 'unknown';\n }\n try {\n return JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')).version;\n } catch {\n return 'unknown';\n }\n}\n"],"mappings":";;;;AAIA,MAAM,YAAY,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC;AAEzD,SAAgB,gBAAgB,UAAkB;AAChD,QAAO,KAAK,QAAQ,WAAW,UAAU,SAAS;;AAGpD,SAAgB,oBAA4B;CAC1C,MAAM,kBAAkB,gBAAgB,eAAe;AAEvD,KAAI,CAAC,GAAG,WAAW,gBAAgB,CACjC,QAAO;AAET,KAAI;AACF,SAAO,KAAK,MAAM,GAAG,aAAa,iBAAiB,OAAO,CAAC,CAAC;SACtD;AACN,SAAO"}
@@ -1,50 +1,46 @@
1
- import { logger } from '../logging/logger.js';
2
- class GracefulShutdown {
3
- shutdownHandlers = [];
4
- isShuttingDown = false;
5
- exitCode = 0;
6
- constructor() {
7
- process.on('SIGINT', () => this.handleSignal('SIGINT'));
8
- process.on('SIGTERM', () => this.handleSignal('SIGTERM'));
9
- process.on('SIGUSR2', () => this.handleSignal('SIGUSR2')); // nodemon restart
10
- process.on('exit', () => this.handleSignal('exit')); // in case other libraries override the signal handlers such as @clack/prompts
11
- }
12
- async handleSignal(signal) {
13
- logger.debugMessage(`Received ${signal}, initiating graceful shutdown with exit code 0...`);
14
- await this.shutdown(0);
15
- }
16
- addHandler(handler) {
17
- this.shutdownHandlers.push(handler);
18
- }
19
- async shutdown(exitCode = 0) {
20
- if (this.isShuttingDown) {
21
- return;
22
- }
23
- this.isShuttingDown = true;
24
- this.exitCode = exitCode;
25
- // Execute shutdown handlers in reverse order (LIFO)
26
- const handlers = [...this.shutdownHandlers].reverse();
27
- for (const { name, handler, timeout = 5000 } of handlers) {
28
- try {
29
- logger.debugMessage(`Executing shutdown handler: ${name}`);
30
- const timeoutPromise = new Promise((_, reject) => {
31
- global.setTimeout(() => reject(new Error(`Timeout: ${name}`)), timeout);
32
- });
33
- await Promise.race([Promise.resolve(handler()), timeoutPromise]);
34
- logger.debugMessage(`Completed shutdown handler: ${name}`);
35
- }
36
- catch (error) {
37
- logger.error(`Error in shutdown handler ${name}: ${error}`);
38
- }
39
- }
40
- logger.debugMessage('Graceful shutdown complete');
41
- process.exit(this.exitCode);
42
- }
43
- }
44
- // Export singleton instance
45
- export const gracefulShutdown = new GracefulShutdown();
46
- // Export convenience function for backward compatibility
47
- export function exit(code = 0) {
48
- return gracefulShutdown.shutdown(code);
1
+ import { logger } from "../logging/logger.js";
2
+ //#region src/utils/shutdown.ts
3
+ var GracefulShutdown = class {
4
+ shutdownHandlers = [];
5
+ isShuttingDown = false;
6
+ exitCode = 0;
7
+ constructor() {
8
+ process.on("SIGINT", () => this.handleSignal("SIGINT"));
9
+ process.on("SIGTERM", () => this.handleSignal("SIGTERM"));
10
+ process.on("SIGUSR2", () => this.handleSignal("SIGUSR2"));
11
+ process.on("exit", () => this.handleSignal("exit"));
12
+ }
13
+ async handleSignal(signal) {
14
+ logger.debugMessage(`Received ${signal}, initiating graceful shutdown with exit code 0...`);
15
+ await this.shutdown(0);
16
+ }
17
+ addHandler(handler) {
18
+ this.shutdownHandlers.push(handler);
19
+ }
20
+ async shutdown(exitCode = 0) {
21
+ if (this.isShuttingDown) return;
22
+ this.isShuttingDown = true;
23
+ this.exitCode = exitCode;
24
+ const handlers = [...this.shutdownHandlers].reverse();
25
+ for (const { name, handler, timeout = 5e3 } of handlers) try {
26
+ logger.debugMessage(`Executing shutdown handler: ${name}`);
27
+ const timeoutPromise = new Promise((_, reject) => {
28
+ global.setTimeout(() => reject(/* @__PURE__ */ new Error(`Timeout: ${name}`)), timeout);
29
+ });
30
+ await Promise.race([Promise.resolve(handler()), timeoutPromise]);
31
+ logger.debugMessage(`Completed shutdown handler: ${name}`);
32
+ } catch (error) {
33
+ logger.error(`Error in shutdown handler ${name}: ${error}`);
34
+ }
35
+ logger.debugMessage("Graceful shutdown complete");
36
+ process.exit(this.exitCode);
37
+ }
38
+ };
39
+ const gracefulShutdown = new GracefulShutdown();
40
+ function exit(code = 0) {
41
+ return gracefulShutdown.shutdown(code);
49
42
  }
43
+ //#endregion
44
+ export { exit, gracefulShutdown };
45
+
50
46
  //# sourceMappingURL=shutdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shutdown.js","sourceRoot":"/","sources":["utils/shutdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAU9C,MAAM,gBAAgB;IACZ,gBAAgB,GAAsB,EAAE,CAAC;IACzC,cAAc,GAAG,KAAK,CAAC;IACvB,QAAQ,GAAa,CAAC,CAAC;IAE/B;QACE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,kBAAkB;QAC7E,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,8EAA8E;IACrI,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAc;QAC/B,MAAM,CAAC,YAAY,CACjB,YAAY,MAAM,oDAAoD,CACvE,CAAC;QACF,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,UAAU,CAAC,OAAwB;QACjC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,WAAqB,CAAC;QACnC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,oDAAoD;QACpD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC;QAEtD,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;YACzD,IAAI,CAAC;gBACH,MAAM,CAAC,YAAY,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;gBAE3D,MAAM,cAAc,GAAG,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBACrD,MAAM,CAAC,UAAU,CACf,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,EAC3C,OAAO,CACR,CAAC;gBACJ,CAAC,CAAC,CAAC;gBAEH,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;gBAEjE,MAAM,CAAC,YAAY,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,4BAA4B,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;CACF;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;AAEvD,yDAAyD;AACzD,MAAM,UAAU,IAAI,CAAC,OAAiB,CAAC;IACrC,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAmB,CAAC;AAC3D,CAAC","sourcesContent":["import { logger } from '../logging/logger.js';\n\nexport type ExitCode = 0 | 1;\n\ninterface ShutdownHandler {\n name: string;\n handler: () => Promise<void> | void;\n timeout?: number;\n}\n\nclass GracefulShutdown {\n private shutdownHandlers: ShutdownHandler[] = [];\n private isShuttingDown = false;\n private exitCode: ExitCode = 0;\n\n constructor() {\n process.on('SIGINT', () => this.handleSignal('SIGINT'));\n process.on('SIGTERM', () => this.handleSignal('SIGTERM'));\n process.on('SIGUSR2', () => this.handleSignal('SIGUSR2')); // nodemon restart\n process.on('exit', () => this.handleSignal('exit')); // in case other libraries override the signal handlers such as @clack/prompts\n }\n\n async handleSignal(signal: string) {\n logger.debugMessage(\n `Received ${signal}, initiating graceful shutdown with exit code 0...`\n );\n await this.shutdown(0);\n }\n\n addHandler(handler: ShutdownHandler) {\n this.shutdownHandlers.push(handler);\n }\n\n async shutdown(exitCode: ExitCode = 0) {\n if (this.isShuttingDown) {\n return;\n }\n\n this.isShuttingDown = true;\n this.exitCode = exitCode;\n\n // Execute shutdown handlers in reverse order (LIFO)\n const handlers = [...this.shutdownHandlers].reverse();\n\n for (const { name, handler, timeout = 5000 } of handlers) {\n try {\n logger.debugMessage(`Executing shutdown handler: ${name}`);\n\n const timeoutPromise = new Promise<void>((_, reject) => {\n global.setTimeout(\n () => reject(new Error(`Timeout: ${name}`)),\n timeout\n );\n });\n\n await Promise.race([Promise.resolve(handler()), timeoutPromise]);\n\n logger.debugMessage(`Completed shutdown handler: ${name}`);\n } catch (error) {\n logger.error(`Error in shutdown handler ${name}: ${error}`);\n }\n }\n\n logger.debugMessage('Graceful shutdown complete');\n process.exit(this.exitCode);\n }\n}\n\n// Export singleton instance\nexport const gracefulShutdown = new GracefulShutdown();\n\n// Export convenience function for backward compatibility\nexport function exit(code: ExitCode = 0): Promise<never> {\n return gracefulShutdown.shutdown(code) as Promise<never>;\n}\n"]}
1
+ {"version":3,"file":"shutdown.js","names":[],"sources":["../../src/utils/shutdown.ts"],"sourcesContent":["import { logger } from '../logging/logger.js';\n\nexport type ExitCode = 0 | 1;\n\ninterface ShutdownHandler {\n name: string;\n handler: () => Promise<void> | void;\n timeout?: number;\n}\n\nclass GracefulShutdown {\n private shutdownHandlers: ShutdownHandler[] = [];\n private isShuttingDown = false;\n private exitCode: ExitCode = 0;\n\n constructor() {\n process.on('SIGINT', () => this.handleSignal('SIGINT'));\n process.on('SIGTERM', () => this.handleSignal('SIGTERM'));\n process.on('SIGUSR2', () => this.handleSignal('SIGUSR2')); // nodemon restart\n process.on('exit', () => this.handleSignal('exit')); // in case other libraries override the signal handlers such as @clack/prompts\n }\n\n async handleSignal(signal: string) {\n logger.debugMessage(\n `Received ${signal}, initiating graceful shutdown with exit code 0...`\n );\n await this.shutdown(0);\n }\n\n addHandler(handler: ShutdownHandler) {\n this.shutdownHandlers.push(handler);\n }\n\n async shutdown(exitCode: ExitCode = 0) {\n if (this.isShuttingDown) {\n return;\n }\n\n this.isShuttingDown = true;\n this.exitCode = exitCode;\n\n // Execute shutdown handlers in reverse order (LIFO)\n const handlers = [...this.shutdownHandlers].reverse();\n\n for (const { name, handler, timeout = 5000 } of handlers) {\n try {\n logger.debugMessage(`Executing shutdown handler: ${name}`);\n\n const timeoutPromise = new Promise<void>((_, reject) => {\n global.setTimeout(\n () => reject(new Error(`Timeout: ${name}`)),\n timeout\n );\n });\n\n await Promise.race([Promise.resolve(handler()), timeoutPromise]);\n\n logger.debugMessage(`Completed shutdown handler: ${name}`);\n } catch (error) {\n logger.error(`Error in shutdown handler ${name}: ${error}`);\n }\n }\n\n logger.debugMessage('Graceful shutdown complete');\n process.exit(this.exitCode);\n }\n}\n\n// Export singleton instance\nexport const gracefulShutdown = new GracefulShutdown();\n\n// Export convenience function for backward compatibility\nexport function exit(code: ExitCode = 0): Promise<never> {\n return gracefulShutdown.shutdown(code) as Promise<never>;\n}\n"],"mappings":";;AAUA,IAAM,mBAAN,MAAuB;CACrB,mBAA8C,EAAE;CAChD,iBAAyB;CACzB,WAA6B;CAE7B,cAAc;AACZ,UAAQ,GAAG,gBAAgB,KAAK,aAAa,SAAS,CAAC;AACvD,UAAQ,GAAG,iBAAiB,KAAK,aAAa,UAAU,CAAC;AACzD,UAAQ,GAAG,iBAAiB,KAAK,aAAa,UAAU,CAAC;AACzD,UAAQ,GAAG,cAAc,KAAK,aAAa,OAAO,CAAC;;CAGrD,MAAM,aAAa,QAAgB;AACjC,SAAO,aACL,YAAY,OAAO,oDACpB;AACD,QAAM,KAAK,SAAS,EAAE;;CAGxB,WAAW,SAA0B;AACnC,OAAK,iBAAiB,KAAK,QAAQ;;CAGrC,MAAM,SAAS,WAAqB,GAAG;AACrC,MAAI,KAAK,eACP;AAGF,OAAK,iBAAiB;AACtB,OAAK,WAAW;EAGhB,MAAM,WAAW,CAAC,GAAG,KAAK,iBAAiB,CAAC,SAAS;AAErD,OAAK,MAAM,EAAE,MAAM,SAAS,UAAU,SAAU,SAC9C,KAAI;AACF,UAAO,aAAa,+BAA+B,OAAO;GAE1D,MAAM,iBAAiB,IAAI,SAAe,GAAG,WAAW;AACtD,WAAO,iBACC,uBAAO,IAAI,MAAM,YAAY,OAAO,CAAC,EAC3C,QACD;KACD;AAEF,SAAM,QAAQ,KAAK,CAAC,QAAQ,QAAQ,SAAS,CAAC,EAAE,eAAe,CAAC;AAEhE,UAAO,aAAa,+BAA+B,OAAO;WACnD,OAAO;AACd,UAAO,MAAM,6BAA6B,KAAK,IAAI,QAAQ;;AAI/D,SAAO,aAAa,6BAA6B;AACjD,UAAQ,KAAK,KAAK,SAAS;;;AAK/B,MAAa,mBAAmB,IAAI,kBAAkB;AAGtD,SAAgB,KAAK,OAAiB,GAAmB;AACvD,QAAO,iBAAiB,SAAS,KAAK"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "locadex",
3
- "version": "1.0.170",
3
+ "version": "1.0.171",
4
4
  "description": "An AI agent for internationalization",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -17,12 +17,13 @@
17
17
  "commander": "^12.1.0",
18
18
  "dotenv": "^16.4.5",
19
19
  "open": "^10.1.1",
20
- "gt": "2.14.35"
20
+ "gt": "2.14.36"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/jest": "^29.5.14",
24
24
  "@types/micromatch": "^4.0.9",
25
25
  "@types/node": "^22.13.5",
26
+ "tsdown": "^0.21.10",
26
27
  "tsx": "^4.16.5",
27
28
  "typescript": "^5.9.2"
28
29
  },
@@ -50,7 +51,9 @@
50
51
  ],
51
52
  "scripts": {
52
53
  "patch": "pnpm version patch",
53
- "build": "tsc",
54
+ "emit-types": "sh ../../scripts/emit-types.sh",
55
+ "transpile": "tsdown && pnpm run emit-types",
56
+ "build": "pnpm run transpile",
54
57
  "build:release": "pnpm run build:clean",
55
58
  "build:clean": "sh ../../scripts/clean.sh && pnpm run build",
56
59
  "dev": "pnpm run build && node dist/index.js",
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.ts"],"names":[],"mappings":"","sourcesContent":["export {};\n"]}