@ninenity/neutrun 1.9.3 → 1.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CLI/Args.d.ts +24 -0
- package/dist/CLI/Args.d.ts.map +1 -0
- package/dist/CLI/Args.js +110 -0
- package/dist/CLI/Args.js.map +1 -0
- package/dist/CLI/Bootstrap.d.ts +7 -1
- package/dist/CLI/Bootstrap.d.ts.map +1 -1
- package/dist/CLI/Bootstrap.js +51 -50
- package/dist/CLI/Bootstrap.js.map +1 -1
- package/dist/CLI/Localize.d.ts +8 -1
- package/dist/CLI/Localize.d.ts.map +1 -1
- package/dist/CLI/Localize.js +42 -9
- package/dist/CLI/Localize.js.map +1 -1
- package/dist/CLI/Translate.d.ts +7 -1
- package/dist/CLI/Translate.d.ts.map +1 -1
- package/dist/CLI/Translate.js +97 -45
- package/dist/CLI/Translate.js.map +1 -1
- package/dist/CLI/Ui.d.ts +85 -0
- package/dist/CLI/Ui.d.ts.map +1 -0
- package/dist/CLI/Ui.js +246 -0
- package/dist/CLI/Ui.js.map +1 -0
- package/dist/CLI/bin.js +97 -25
- package/dist/CLI/bin.js.map +1 -1
- package/package.json +7 -2
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A leitura da linha de comando, separada de quem a executa.
|
|
3
|
+
*
|
|
4
|
+
* Fica em arquivo próprio porque é a parte que dá para testar sem terminal, sem rede e
|
|
5
|
+
* sem tocar em disco — e é onde mora a decisão mais fácil de errar de uma CLI: o que
|
|
6
|
+
* fazer com o que não se entendeu. Um comando digitado errado que cai no `help` e sai com
|
|
7
|
+
* `0` é uma CLI que mente para o `&&` do script de quem chamou.
|
|
8
|
+
*/
|
|
9
|
+
export type Command = 'bootstrap' | 'locate' | 'translate' | 'sync' | 'help' | 'version';
|
|
10
|
+
export interface Parsed {
|
|
11
|
+
command: Command;
|
|
12
|
+
/** Pasta do projeto onde o comando trabalha. */
|
|
13
|
+
dir?: string;
|
|
14
|
+
color?: boolean;
|
|
15
|
+
quiet: boolean;
|
|
16
|
+
/** Idiomas de destino do `translate`, quando alguém quis outros. */
|
|
17
|
+
langs?: string[];
|
|
18
|
+
/** O que veio e não foi entendido. Presente = a CLI recusa e sai com 1. */
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const COMANDOS: Array<[string, string]>;
|
|
22
|
+
export declare function parseArgs(argv: string[]): Parsed;
|
|
23
|
+
export declare function helpText(version: string): string;
|
|
24
|
+
//# sourceMappingURL=Args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Args.d.ts","sourceRoot":"","sources":["../../src/CLI/Args.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;AAExF,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAkBD,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAK5C,CAAA;AAED,wBAAgB,SAAS,CAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAwCjD;AAED,wBAAgB,QAAQ,CAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CA0BjD"}
|
package/dist/CLI/Args.js
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* A leitura da linha de comando, separada de quem a executa.
|
|
4
|
+
*
|
|
5
|
+
* Fica em arquivo próprio porque é a parte que dá para testar sem terminal, sem rede e
|
|
6
|
+
* sem tocar em disco — e é onde mora a decisão mais fácil de errar de uma CLI: o que
|
|
7
|
+
* fazer com o que não se entendeu. Um comando digitado errado que cai no `help` e sai com
|
|
8
|
+
* `0` é uma CLI que mente para o `&&` do script de quem chamou.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.COMANDOS = void 0;
|
|
12
|
+
exports.parseArgs = parseArgs;
|
|
13
|
+
exports.helpText = helpText;
|
|
14
|
+
const ALIAS = {
|
|
15
|
+
bootstrap: 'bootstrap',
|
|
16
|
+
init: 'bootstrap',
|
|
17
|
+
locate: 'locate',
|
|
18
|
+
localize: 'locate',
|
|
19
|
+
translate: 'translate',
|
|
20
|
+
sync: 'sync',
|
|
21
|
+
tsync: 'sync',
|
|
22
|
+
help: 'help',
|
|
23
|
+
'--help': 'help',
|
|
24
|
+
'-h': 'help',
|
|
25
|
+
version: 'version',
|
|
26
|
+
'--version': 'version',
|
|
27
|
+
'-v': 'version'
|
|
28
|
+
};
|
|
29
|
+
exports.COMANDOS = [
|
|
30
|
+
['bootstrap', 'cria os arquivos de tipagem em .ninenity/Generated'],
|
|
31
|
+
['locate', 'extrai os textos do código para os dicionários'],
|
|
32
|
+
['translate', 'traduz o dicionário base para os outros idiomas'],
|
|
33
|
+
['sync', 'locate e translate, nessa ordem']
|
|
34
|
+
];
|
|
35
|
+
function parseArgs(argv) {
|
|
36
|
+
const out = { command: 'help', quiet: false };
|
|
37
|
+
const [primeiro, ...resto] = argv;
|
|
38
|
+
if (primeiro === undefined)
|
|
39
|
+
return out;
|
|
40
|
+
const comando = ALIAS[primeiro.toLowerCase()];
|
|
41
|
+
if (!comando) {
|
|
42
|
+
return { ...out, error: `não conheço o comando "${primeiro}"` };
|
|
43
|
+
}
|
|
44
|
+
out.command = comando;
|
|
45
|
+
for (let i = 0; i < resto.length; i += 1) {
|
|
46
|
+
const flag = resto[i];
|
|
47
|
+
if (flag === '--quiet' || flag === '-q') {
|
|
48
|
+
out.quiet = true;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
if (flag === '--no-color') {
|
|
52
|
+
out.color = false;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (flag === '--color') {
|
|
56
|
+
out.color = true;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (flag === '--help' || flag === '-h') {
|
|
60
|
+
out.command = 'help';
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (flag === '--dir' || flag === '-C') {
|
|
64
|
+
const valor = resto[i + 1];
|
|
65
|
+
if (!valor || valor.startsWith('-'))
|
|
66
|
+
return { ...out, error: `${flag} precisa de um caminho` };
|
|
67
|
+
out.dir = valor;
|
|
68
|
+
i += 1;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (flag === '--lang' || flag === '-l') {
|
|
72
|
+
const valor = resto[i + 1];
|
|
73
|
+
if (!valor || valor.startsWith('-'))
|
|
74
|
+
return { ...out, error: `${flag} precisa de um idioma, como en-US` };
|
|
75
|
+
out.langs = [...(out.langs ?? []), ...valor.split(',').map(item => item.trim()).filter(Boolean)];
|
|
76
|
+
i += 1;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
return { ...out, error: `não conheço a opção "${flag}"` };
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
function helpText(version) {
|
|
84
|
+
const linhas = [
|
|
85
|
+
'',
|
|
86
|
+
` neutrun ${version}`,
|
|
87
|
+
'',
|
|
88
|
+
' USO',
|
|
89
|
+
' neutrun <comando> [opções]',
|
|
90
|
+
'',
|
|
91
|
+
' COMANDOS',
|
|
92
|
+
...exports.COMANDOS.map(([nome, texto]) => ` ${nome.padEnd(11)}${texto}`),
|
|
93
|
+
'',
|
|
94
|
+
' OPÇÕES',
|
|
95
|
+
' -C, --dir <path> pasta do projeto (padrão: onde você está)',
|
|
96
|
+
' -l, --lang <code> idioma de destino do translate; repita ou separe por vírgula',
|
|
97
|
+
' -q, --quiet só o resultado e os erros',
|
|
98
|
+
' --no-color sem cor e sem animação',
|
|
99
|
+
' -v, --version versão do Neutrun',
|
|
100
|
+
' -h, --help esta ajuda',
|
|
101
|
+
'',
|
|
102
|
+
' EXEMPLOS',
|
|
103
|
+
' neutrun bootstrap',
|
|
104
|
+
' neutrun sync',
|
|
105
|
+
' neutrun translate --lang en-US,fr-FR',
|
|
106
|
+
''
|
|
107
|
+
];
|
|
108
|
+
return linhas.join('\n');
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=Args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Args.js","sourceRoot":"","sources":["../../src/CLI/Args.ts"],"names":[],"mappings":"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"}
|
package/dist/CLI/Bootstrap.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { type Reporter } from './Ui';
|
|
2
|
+
export interface BootstrapResult {
|
|
3
|
+
criados: string[];
|
|
4
|
+
existiam: string[];
|
|
5
|
+
pasta: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function runBootstrap(projectDir?: string, report?: Reporter): BootstrapResult;
|
|
2
8
|
//# sourceMappingURL=Bootstrap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bootstrap.d.ts","sourceRoot":"","sources":["../../src/CLI/Bootstrap.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Bootstrap.d.ts","sourceRoot":"","sources":["../../src/CLI/Bootstrap.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAA;AA6CnD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAiBD,wBAAgB,YAAY,CAC1B,UAAU,GAAE,MAAsB,EAClC,MAAM,GAAE,QAAwB,GAC/B,eAAe,CA0BjB"}
|
package/dist/CLI/Bootstrap.js
CHANGED
|
@@ -6,66 +6,67 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.runBootstrap = runBootstrap;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const ConsoleLog_1 = require("../Shared/ConsoleLog");
|
|
10
9
|
const Neutrun_1 = __importDefault(require("../Shared/Neutrun"));
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (!fs_1.default.existsSync(genDir)) {
|
|
14
|
-
fs_1.default.mkdirSync(genDir, { recursive: true });
|
|
15
|
-
}
|
|
16
|
-
const rolesFile = path_1.default.join(genDir, 'Roles.ts');
|
|
17
|
-
if (!fs_1.default.existsSync(rolesFile)) {
|
|
18
|
-
const rolesOutput = `import type { RoleData } from '@ninenity/neutrun'
|
|
19
|
-
|
|
20
|
-
export interface AppRoles {
|
|
21
|
-
readonly [key: string]: RoleData
|
|
22
|
-
}
|
|
23
|
-
const Roles: AppRoles = {}
|
|
24
|
-
export default Roles
|
|
25
|
-
export type RoleName = keyof AppRoles
|
|
26
|
-
`;
|
|
27
|
-
fs_1.default.writeFileSync(rolesFile, rolesOutput, 'utf-8');
|
|
28
|
-
(0, ConsoleLog_1.logSuccess)('Arquivo Roles.ts gerado com placeholders em .ninenity/Generated/', 'Bootstrap');
|
|
29
|
-
}
|
|
30
|
-
const channelsFile = path_1.default.join(genDir, 'Channels.ts');
|
|
31
|
-
if (!fs_1.default.existsSync(channelsFile)) {
|
|
32
|
-
const channelsOutput = `import type { ChannelData } from '@ninenity/neutrun'
|
|
10
|
+
const Ui_1 = require("./Ui");
|
|
11
|
+
const tipagem = (nome, tipo) => `import type { ${tipo} } from '@ninenity/neutrun'
|
|
33
12
|
|
|
34
|
-
export interface
|
|
35
|
-
readonly [key: string]:
|
|
13
|
+
export interface App${nome} {
|
|
14
|
+
readonly [key: string]: ${tipo}
|
|
36
15
|
}
|
|
37
|
-
const
|
|
38
|
-
export default
|
|
39
|
-
export type
|
|
16
|
+
const ${nome}: App${nome} = {}
|
|
17
|
+
export default ${nome}
|
|
18
|
+
export type ${nome.replace(/s$/, '')}Name = keyof App${nome}
|
|
40
19
|
`;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
20
|
+
const MODELOS = [
|
|
21
|
+
{ arquivo: 'Roles.ts', conteudo: tipagem('Roles', 'RoleData') },
|
|
22
|
+
{ arquivo: 'Channels.ts', conteudo: tipagem('Channels', 'ChannelData') },
|
|
23
|
+
{ arquivo: 'Emojis.ts', conteudo: tipagem('Emojis', 'EmojiData') },
|
|
24
|
+
{
|
|
25
|
+
arquivo: 'Config.ts',
|
|
26
|
+
conteudo: `export interface AppConfig {
|
|
47
27
|
[key: string]: any
|
|
48
28
|
}
|
|
49
29
|
const Config: AppConfig = {}
|
|
50
30
|
export default Config
|
|
51
|
-
|
|
52
|
-
fs_1.default.writeFileSync(configFile, configOutput, 'utf-8');
|
|
53
|
-
(0, ConsoleLog_1.logSuccess)('Arquivo Config.ts gerado com placeholders em .ninenity/Generated/', 'Bootstrap');
|
|
31
|
+
`
|
|
54
32
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* Onde escrever, e por que não é só `Neutrun.getGeneratedPath()`.
|
|
36
|
+
*
|
|
37
|
+
* Aquele helper resolve sempre por `process.cwd()` — ignora o `projectDir` que esta
|
|
38
|
+
* função recebe. Com o `--dir` da CLI isso vira o pior tipo de erro: o comando diz que
|
|
39
|
+
* deu certo e escreve a tipagem na pasta errada, criando um `.ninenity` onde ninguém
|
|
40
|
+
* pediu. Quando o alvo é o próprio `cwd`, o helper continua valendo — ele respeita o
|
|
41
|
+
* caminho que `Neutrun.init` tiver configurado, e quem chama a função de dentro de um bot
|
|
42
|
+
* depende disso.
|
|
43
|
+
*/
|
|
44
|
+
function pastaGerada(projectDir) {
|
|
45
|
+
if (path_1.default.resolve(projectDir) === path_1.default.resolve(process.cwd()))
|
|
46
|
+
return Neutrun_1.default.getGeneratedPath();
|
|
47
|
+
return path_1.default.join(projectDir, '.ninenity', 'Generated');
|
|
61
48
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
(
|
|
49
|
+
function runBootstrap(projectDir = process.cwd(), report = Ui_1.plainReporter) {
|
|
50
|
+
const genDir = pastaGerada(projectDir);
|
|
51
|
+
const resultado = { criados: [], existiam: [], pasta: genDir };
|
|
52
|
+
report.start('preparando .ninenity/Generated');
|
|
53
|
+
if (!fs_1.default.existsSync(genDir))
|
|
54
|
+
fs_1.default.mkdirSync(genDir, { recursive: true });
|
|
55
|
+
report.total(MODELOS.length, 'tipagens');
|
|
56
|
+
for (const modelo of MODELOS) {
|
|
57
|
+
const destino = path_1.default.join(genDir, modelo.arquivo);
|
|
58
|
+
if (fs_1.default.existsSync(destino)) {
|
|
59
|
+
resultado.existiam.push(modelo.arquivo);
|
|
60
|
+
report.tick(`${modelo.arquivo} já existia`);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
fs_1.default.writeFileSync(destino, modelo.conteudo, 'utf-8');
|
|
64
|
+
resultado.criados.push(modelo.arquivo);
|
|
65
|
+
report.tick(`${modelo.arquivo} criado`);
|
|
68
66
|
}
|
|
69
|
-
|
|
67
|
+
report.ok(resultado.criados.length > 0
|
|
68
|
+
? `${resultado.criados.length} arquivo(s) de tipagem criado(s)`
|
|
69
|
+
: 'tipagens já estavam no lugar');
|
|
70
|
+
return resultado;
|
|
70
71
|
}
|
|
71
72
|
//# sourceMappingURL=Bootstrap.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Bootstrap.js","sourceRoot":"","sources":["../../src/CLI/Bootstrap.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Bootstrap.js","sourceRoot":"","sources":["../../src/CLI/Bootstrap.ts"],"names":[],"mappings":";;;;;AAqEA,oCA6BC;AAlGD,4CAAmB;AACnB,gDAAuB;AACvB,gEAAuC;AACvC,6BAAmD;AAmBnD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE,CACrD,iBAAiB,IAAI;;sBAED,IAAI;4BACE,IAAI;;QAExB,IAAI,QAAQ,IAAI;iBACP,IAAI;cACP,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI;CAC1D,CAAA;AAED,MAAM,OAAO,GAAa;IACxB,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE;IAC/D,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE;IACxE,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE;IAClE;QACE,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE;;;;;CAKb;KACE;CACF,CAAA;AAQD;;;;;;;;;GASG;AACH,SAAS,WAAW,CAAE,UAAkB;IACtC,IAAI,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QAAE,OAAO,iBAAO,CAAC,gBAAgB,EAAE,CAAA;IAC/F,OAAO,cAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA;AACxD,CAAC;AAED,SAAgB,YAAY,CAC1B,aAAqB,OAAO,CAAC,GAAG,EAAE,EAClC,SAAmB,kBAAa;IAEhC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;IACtC,MAAM,SAAS,GAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;IAE/E,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAA;IAC9C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,YAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAErE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACxC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACvC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,aAAa,CAAC,CAAA;YAC3C,SAAQ;QACV,CAAC;QACD,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACnD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACtC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,SAAS,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,EAAE,CACP,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAC1B,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,kCAAkC;QAC/D,CAAC,CAAC,8BAA8B,CACnC,CAAA;IACD,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
package/dist/CLI/Localize.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import { type Reporter } from './Ui';
|
|
1
2
|
/**
|
|
2
3
|
* Garante que o identificador runtime `I18n` exista no import do Neutrun.
|
|
3
4
|
* Importações nomeadas existentes são mescladas para evitar imports
|
|
4
5
|
* duplicados gerados pelo localizador.
|
|
5
6
|
*/
|
|
6
7
|
export declare function ensureI18nImport(content: string): string;
|
|
7
|
-
export
|
|
8
|
+
export interface LocalizeResult {
|
|
9
|
+
/** Arquivos que a passagem reescreveu. */
|
|
10
|
+
arquivos: number;
|
|
11
|
+
/** Chaves no dicionário depois da passagem. */
|
|
12
|
+
chaves: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function runLocalize(projectDir?: string, report?: Reporter): LocalizeResult;
|
|
8
15
|
//# sourceMappingURL=Localize.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Localize.d.ts","sourceRoot":"","sources":["../../src/CLI/Localize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Localize.d.ts","sourceRoot":"","sources":["../../src/CLI/Localize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAA;AAkBnD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+DxD;AAED,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAA;IAChB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,WAAW,CACzB,UAAU,GAAE,MAAsB,EAClC,MAAM,GAAE,QAAwB,GAC/B,cAAc,CA0RhB"}
|
package/dist/CLI/Localize.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.ensureI18nImport = ensureI18nImport;
|
|
|
7
7
|
exports.runLocalize = runLocalize;
|
|
8
8
|
const fs_1 = __importDefault(require("fs"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const
|
|
10
|
+
const Ui_1 = require("./Ui");
|
|
11
11
|
const KNOWN_CATEGORIES = [
|
|
12
12
|
'commands',
|
|
13
13
|
'components',
|
|
@@ -78,7 +78,7 @@ function ensureI18nImport(content) {
|
|
|
78
78
|
}
|
|
79
79
|
return `${importStatement}\n${normalized}`;
|
|
80
80
|
}
|
|
81
|
-
function runLocalize(projectDir = process.cwd()) {
|
|
81
|
+
function runLocalize(projectDir = process.cwd(), report = Ui_1.plainReporter) {
|
|
82
82
|
const discordDir = path_1.default.join(projectDir, 'src', 'Discord');
|
|
83
83
|
const targetSrcDir = fs_1.default.existsSync(discordDir)
|
|
84
84
|
? discordDir
|
|
@@ -88,6 +88,7 @@ function runLocalize(projectDir = process.cwd()) {
|
|
|
88
88
|
const ptBrFile = path_1.default.join(translateDir, 'pt_br.ts');
|
|
89
89
|
const extractedDict = {};
|
|
90
90
|
const migratedKeysMap = {};
|
|
91
|
+
let arquivosTocados = 0;
|
|
91
92
|
function buildFileCategoryMap() {
|
|
92
93
|
const map = {};
|
|
93
94
|
function scan(dir) {
|
|
@@ -144,7 +145,7 @@ function runLocalize(projectDir = process.cwd()) {
|
|
|
144
145
|
const newPath = `${targetCategory}.${topKey}.${subKey}`;
|
|
145
146
|
setDictValue(extractedDict, newPath.split('.'), val);
|
|
146
147
|
migratedKeysMap[oldPath] = newPath;
|
|
147
|
-
|
|
148
|
+
report.note(`migrando ${oldPath} -> ${newPath}`);
|
|
148
149
|
}
|
|
149
150
|
}
|
|
150
151
|
delete extractedDict[topKey];
|
|
@@ -164,7 +165,7 @@ function runLocalize(projectDir = process.cwd()) {
|
|
|
164
165
|
const existingDict = imported.default?.dict || imported.dict || {};
|
|
165
166
|
Object.assign(extractedDict, existingDict);
|
|
166
167
|
migrateUncategorizedKeys(extractedDict, categoryMap);
|
|
167
|
-
|
|
168
|
+
report.note(`dicionário existente preservado de ${path_1.default.basename(targetFile)}`);
|
|
168
169
|
}
|
|
169
170
|
catch (err) {
|
|
170
171
|
// Ignora se não conseguir carregar
|
|
@@ -258,7 +259,8 @@ function runLocalize(projectDir = process.cwd()) {
|
|
|
258
259
|
if (fileModified || content.includes('I18n.t(')) {
|
|
259
260
|
content = ensureI18nImport(content);
|
|
260
261
|
fs_1.default.writeFileSync(filePath, content, 'utf-8');
|
|
261
|
-
|
|
262
|
+
arquivosTocados += 1;
|
|
263
|
+
report.tick(path_1.default.relative(targetSrcDir, filePath));
|
|
262
264
|
}
|
|
263
265
|
}
|
|
264
266
|
function scanDirectory(dir) {
|
|
@@ -284,14 +286,45 @@ function runLocalize(projectDir = process.cwd()) {
|
|
|
284
286
|
const ptBrContent = `export default {\n locale: 'pt-BR',\n dict: ${JSON.stringify(extractedDict, null, 2)}\n}\n`;
|
|
285
287
|
fs_1.default.writeFileSync(tptFile, tptContent, 'utf-8');
|
|
286
288
|
fs_1.default.writeFileSync(ptBrFile, ptBrContent, 'utf-8');
|
|
287
|
-
|
|
288
|
-
(0, ConsoleLog_1.logSuccess)(`Dicionário PT-BR salvo em: Translate/pt_br.ts`, 'AutoLocate');
|
|
289
|
+
report.note('dicionários salvos em src/Shared/Translate');
|
|
289
290
|
}
|
|
290
|
-
|
|
291
|
+
report.start('procurando textos no código');
|
|
291
292
|
const categoryMap = buildFileCategoryMap();
|
|
292
293
|
loadExistingDictionary(categoryMap);
|
|
294
|
+
/*
|
|
295
|
+
* O total é sabido antes de reescrever qualquer coisa: é o que permite a barra de
|
|
296
|
+
* progresso em vez de um spinner que gira sem dizer quanto falta. Contar duas vezes a
|
|
297
|
+
* árvore de arquivos custa milissegundos; olhar para um spinner sem fim custa mais.
|
|
298
|
+
*/
|
|
299
|
+
report.total(contarArquivos(targetSrcDir), 'arquivos');
|
|
293
300
|
scanDirectory(targetSrcDir);
|
|
294
301
|
saveDictionaries();
|
|
295
|
-
|
|
302
|
+
const chaves = contarChaves(extractedDict);
|
|
303
|
+
report.ok(`${arquivosTocados} arquivo(s) refatorado(s), ${chaves} chave(s) no dicionário`);
|
|
304
|
+
return { arquivos: arquivosTocados, chaves };
|
|
305
|
+
}
|
|
306
|
+
/** Quantos `.ts`/`.js` existem debaixo de `dir`. Só para dimensionar a barra. */
|
|
307
|
+
function contarArquivos(dir) {
|
|
308
|
+
if (!fs_1.default.existsSync(dir))
|
|
309
|
+
return 0;
|
|
310
|
+
let total = 0;
|
|
311
|
+
for (const entry of fs_1.default.readdirSync(dir, { withFileTypes: true })) {
|
|
312
|
+
const full = path_1.default.join(dir, entry.name);
|
|
313
|
+
if (entry.isDirectory())
|
|
314
|
+
total += contarArquivos(full);
|
|
315
|
+
else if (entry.isFile() && /\.(ts|js)$/.test(entry.name))
|
|
316
|
+
total += 1;
|
|
317
|
+
}
|
|
318
|
+
return total;
|
|
319
|
+
}
|
|
320
|
+
function contarChaves(dict) {
|
|
321
|
+
let total = 0;
|
|
322
|
+
for (const valor of Object.values(dict)) {
|
|
323
|
+
if (typeof valor === 'string')
|
|
324
|
+
total += 1;
|
|
325
|
+
else if (valor && typeof valor === 'object')
|
|
326
|
+
total += contarChaves(valor);
|
|
327
|
+
}
|
|
328
|
+
return total;
|
|
296
329
|
}
|
|
297
330
|
//# sourceMappingURL=Localize.js.map
|
package/dist/CLI/Localize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Localize.js","sourceRoot":"","sources":["../../src/CLI/Localize.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Localize.js","sourceRoot":"","sources":["../../src/CLI/Localize.ts"],"names":[],"mappings":"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"}
|
package/dist/CLI/Translate.d.ts
CHANGED
|
@@ -1,2 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { type Reporter } from './Ui';
|
|
2
|
+
export interface TranslateResult {
|
|
3
|
+
chaves: number;
|
|
4
|
+
idiomas: string[];
|
|
5
|
+
falhas: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function runTranslate(projectDir?: string, report?: Reporter, idiomas?: string[]): Promise<TranslateResult>;
|
|
2
8
|
//# sourceMappingURL=Translate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Translate.d.ts","sourceRoot":"","sources":["../../src/CLI/Translate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Translate.d.ts","sourceRoot":"","sources":["../../src/CLI/Translate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,MAAM,CAAA;AAoCnD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AA8ED,wBAAsB,YAAY,CAChC,UAAU,GAAE,MAAsB,EAClC,MAAM,GAAE,QAAwB,EAChC,OAAO,CAAC,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,eAAe,CAAC,CAsD1B"}
|
package/dist/CLI/Translate.js
CHANGED
|
@@ -6,77 +6,129 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.runTranslate = runTranslate;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const
|
|
10
|
-
|
|
9
|
+
const Ui_1 = require("./Ui");
|
|
10
|
+
const PADRAO = [
|
|
11
|
+
{ code: 'en-US', fileName: 'en_us.ts' },
|
|
12
|
+
{ code: 'es-ES', fileName: 'es_es.ts' }
|
|
13
|
+
];
|
|
14
|
+
/** Quantas traduções ao mesmo tempo. Acima disso o endpoint começa a responder 429. */
|
|
15
|
+
const EM_PARALELO = 6;
|
|
16
|
+
/** `en-US` → `en_us.ts`. Para quem passou um idioma que não está na tabela padrão. */
|
|
17
|
+
const arquivoDe = (code) => `${code.toLowerCase().replace(/-/g, '_')}.ts`;
|
|
18
|
+
/**
|
|
19
|
+
* As variáveis do texto saem antes de traduzir e voltam depois.
|
|
20
|
+
*
|
|
21
|
+
* `{user}` traduzido vira `{usuário}`, e a chave deixa de casar com o que o código passa —
|
|
22
|
+
* um bug que só aparece em produção, no idioma que ninguém testou.
|
|
23
|
+
*/
|
|
24
|
+
async function traduzirTexto(text, targetLang) {
|
|
11
25
|
if (!text || typeof text !== 'string')
|
|
12
|
-
return text;
|
|
26
|
+
return { texto: text, ok: true };
|
|
13
27
|
const variables = [];
|
|
14
|
-
const
|
|
28
|
+
const mascarado = text.replace(/\{([^}]+)\}/g, match => {
|
|
15
29
|
variables.push(match);
|
|
16
30
|
return `__VAR_${variables.length - 1}__`;
|
|
17
31
|
});
|
|
18
32
|
try {
|
|
19
33
|
const langCode = targetLang.split('-')[0];
|
|
20
|
-
const url = `https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=${langCode}&dt=t&q=${encodeURIComponent(
|
|
34
|
+
const url = `https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=${langCode}&dt=t&q=${encodeURIComponent(mascarado)}`;
|
|
21
35
|
const response = await fetch(url);
|
|
36
|
+
if (!response.ok)
|
|
37
|
+
throw new Error(`HTTP ${response.status}`);
|
|
22
38
|
const data = await response.json();
|
|
23
|
-
let
|
|
39
|
+
let traduzido = '';
|
|
24
40
|
if (Array.isArray(data[0])) {
|
|
25
|
-
for (const sentence of data[0])
|
|
41
|
+
for (const sentence of data[0])
|
|
26
42
|
if (sentence[0])
|
|
27
|
-
|
|
28
|
-
}
|
|
43
|
+
traduzido += sentence[0];
|
|
29
44
|
}
|
|
30
|
-
if (!
|
|
31
|
-
|
|
32
|
-
let
|
|
45
|
+
if (!traduzido)
|
|
46
|
+
return { texto: text, ok: false };
|
|
47
|
+
let restaurado = traduzido;
|
|
33
48
|
variables.forEach((variable, index) => {
|
|
34
|
-
|
|
35
|
-
|
|
49
|
+
restaurado = restaurado.replace(new RegExp(`__VAR_${index}__`, 'gi'), variable);
|
|
50
|
+
restaurado = restaurado.replace(new RegExp(`__VAR_ ${index} __`, 'gi'), variable);
|
|
36
51
|
});
|
|
37
|
-
return
|
|
52
|
+
return { texto: restaurado, ok: true };
|
|
38
53
|
}
|
|
39
|
-
catch
|
|
40
|
-
|
|
41
|
-
return text;
|
|
54
|
+
catch {
|
|
55
|
+
return { texto: text, ok: false };
|
|
42
56
|
}
|
|
43
57
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
else if (typeof
|
|
51
|
-
(
|
|
52
|
-
result[key] = await translateText(value, targetLang);
|
|
53
|
-
}
|
|
58
|
+
/** Todo texto do dicionário, achatado num caminho de chaves. */
|
|
59
|
+
function colher(dict, caminho = []) {
|
|
60
|
+
const saida = [];
|
|
61
|
+
for (const [chave, valor] of Object.entries(dict)) {
|
|
62
|
+
if (typeof valor === 'string')
|
|
63
|
+
saida.push({ caminho: [...caminho, chave], texto: valor });
|
|
64
|
+
else if (valor && typeof valor === 'object')
|
|
65
|
+
saida.push(...colher(valor, [...caminho, chave]));
|
|
54
66
|
}
|
|
55
|
-
return
|
|
67
|
+
return saida;
|
|
56
68
|
}
|
|
57
|
-
|
|
69
|
+
const plantar = (dict, caminho, texto) => {
|
|
70
|
+
let atual = dict;
|
|
71
|
+
for (let i = 0; i < caminho.length - 1; i += 1) {
|
|
72
|
+
const chave = caminho[i];
|
|
73
|
+
if (!atual[chave] || typeof atual[chave] !== 'object')
|
|
74
|
+
atual[chave] = {};
|
|
75
|
+
atual = atual[chave];
|
|
76
|
+
}
|
|
77
|
+
atual[caminho[caminho.length - 1]] = texto;
|
|
78
|
+
};
|
|
79
|
+
/** Roda `trabalho` sobre a lista com no máximo `teto` em voo ao mesmo tempo. */
|
|
80
|
+
async function comTeto(itens, teto, trabalho) {
|
|
81
|
+
let proximo = 0;
|
|
82
|
+
const trilhas = Array.from({ length: Math.min(teto, itens.length) }, async () => {
|
|
83
|
+
while (proximo < itens.length) {
|
|
84
|
+
const meu = proximo;
|
|
85
|
+
proximo += 1;
|
|
86
|
+
await trabalho(itens[meu]);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
await Promise.all(trilhas);
|
|
90
|
+
}
|
|
91
|
+
async function runTranslate(projectDir = process.cwd(), report = Ui_1.plainReporter, idiomas) {
|
|
58
92
|
const translateDir = path_1.default.join(projectDir, 'src', 'Shared', 'Translate');
|
|
59
93
|
const tptFile = path_1.default.join(translateDir, 'tpt_tsl.ts');
|
|
60
94
|
if (!fs_1.default.existsSync(tptFile)) {
|
|
61
|
-
|
|
62
|
-
return;
|
|
95
|
+
throw new Error(`não achei o template tpt_tsl.ts em ${translateDir}. Rode \`neutrun locate\` antes — é ele que gera o dicionário base.`);
|
|
63
96
|
}
|
|
64
97
|
delete require.cache[require.resolve(tptFile)];
|
|
65
98
|
const templateModule = require(tptFile);
|
|
66
99
|
const baseDict = templateModule.default?.dict || templateModule.dict || {};
|
|
67
|
-
const
|
|
68
|
-
{ code
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
(
|
|
100
|
+
const alvos = idiomas?.length
|
|
101
|
+
? idiomas.map(code => ({ code, fileName: arquivoDe(code) }))
|
|
102
|
+
: PADRAO;
|
|
103
|
+
const textos = colher(baseDict);
|
|
104
|
+
const resultado = { chaves: textos.length, idiomas: [], falhas: 0 };
|
|
105
|
+
if (textos.length === 0) {
|
|
106
|
+
report.warn('o dicionário base está vazio — nada para traduzir');
|
|
107
|
+
return resultado;
|
|
108
|
+
}
|
|
109
|
+
for (const alvo of alvos) {
|
|
110
|
+
report.start(`traduzindo para ${alvo.code}`);
|
|
111
|
+
report.total(textos.length, alvo.code);
|
|
112
|
+
const traduzido = {};
|
|
113
|
+
let falhasDoIdioma = 0;
|
|
114
|
+
await comTeto(textos, EM_PARALELO, async (item) => {
|
|
115
|
+
const { texto, ok } = await traduzirTexto(item.texto, alvo.code);
|
|
116
|
+
if (!ok)
|
|
117
|
+
falhasDoIdioma += 1;
|
|
118
|
+
plantar(traduzido, item.caminho, texto);
|
|
119
|
+
report.tick(item.caminho.join('.'));
|
|
120
|
+
});
|
|
121
|
+
const conteudo = `export default {\n locale: '${alvo.code}',\n dict: ${JSON.stringify(traduzido, null, 2)}\n}\n`;
|
|
122
|
+
fs_1.default.writeFileSync(path_1.default.join(translateDir, alvo.fileName), conteudo, 'utf-8');
|
|
123
|
+
resultado.idiomas.push(alvo.code);
|
|
124
|
+
resultado.falhas += falhasDoIdioma;
|
|
125
|
+
if (falhasDoIdioma > 0) {
|
|
126
|
+
report.warn(`${alvo.fileName}: ${textos.length - falhasDoIdioma}/${textos.length} chaves — ${falhasDoIdioma} ficaram em português`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
report.ok(`${alvo.fileName}: ${textos.length} chaves`);
|
|
130
|
+
}
|
|
79
131
|
}
|
|
80
|
-
|
|
132
|
+
return resultado;
|
|
81
133
|
}
|
|
82
134
|
//# sourceMappingURL=Translate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Translate.js","sourceRoot":"","sources":["../../src/CLI/Translate.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"Translate.js","sourceRoot":"","sources":["../../src/CLI/Translate.ts"],"names":[],"mappings":"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"}
|
package/dist/CLI/Ui.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A cara da CLI: banner, spinner, barra de progresso e o resumo do fim.
|
|
3
|
+
*
|
|
4
|
+
* A regra que governa o arquivo inteiro: **animação só quando alguém está olhando.**
|
|
5
|
+
* Spinner e barra de progresso funcionam reescrevendo a linha atual com códigos de
|
|
6
|
+
* escape; num terminal isso é movimento, e num arquivo de log é lixo — `\r` e sequências
|
|
7
|
+
* `[2K` empilhadas em cada linha, num arquivo que alguém vai ler depois justamente
|
|
8
|
+
* porque algo deu errado. Por isso `rich` olha para o TTY, para `CI` e para `NO_COLOR`
|
|
9
|
+
* antes de decidir, e o modo pobre imprime uma linha por evento — que é o que se quer ler
|
|
10
|
+
* num `docker logs`.
|
|
11
|
+
*
|
|
12
|
+
* Nada aqui decide o que a CLI faz; só como ela aparece. Os comandos falam com o
|
|
13
|
+
* `Reporter`, e é a `Ui` que escolhe entre desenhar um spinner e escrever uma linha.
|
|
14
|
+
*/
|
|
15
|
+
export interface UiOptions {
|
|
16
|
+
/** `false` desliga cor e animação. Ausente = decide pelo ambiente. */
|
|
17
|
+
color?: boolean;
|
|
18
|
+
/** Só erros e o resultado. Para quem chama a CLI de dentro de um script. */
|
|
19
|
+
quiet?: boolean;
|
|
20
|
+
stream?: NodeJS.WriteStream;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* O que um comando conta para quem está olhando.
|
|
24
|
+
*
|
|
25
|
+
* Fica separado da `Ui` porque `runLocalize` e `runTranslate` também rodam fora da CLI —
|
|
26
|
+
* o bot chama os dois por `tsx -e` — e ali não deve existir spinner nenhum. O comando
|
|
27
|
+
* reporta o que aconteceu; quem escolhe a forma é o dono da saída.
|
|
28
|
+
*/
|
|
29
|
+
export interface Reporter {
|
|
30
|
+
/** Começou uma etapa longa. */
|
|
31
|
+
start(label: string): void;
|
|
32
|
+
/** A mesma etapa, com texto novo. Não cria linha nova no modo rico. */
|
|
33
|
+
update(label: string): void;
|
|
34
|
+
/** O total de itens ficou conhecido: dá para trocar o spinner por uma barra. */
|
|
35
|
+
total(count: number, label?: string): void;
|
|
36
|
+
/** Mais um item pronto. */
|
|
37
|
+
tick(label?: string): void;
|
|
38
|
+
ok(label: string): void;
|
|
39
|
+
warn(label: string): void;
|
|
40
|
+
fail(label: string): void;
|
|
41
|
+
/** Uma linha solta, sem estado. */
|
|
42
|
+
note(label: string): void;
|
|
43
|
+
}
|
|
44
|
+
/** O reporter de quem não tem terminal: uma linha por evento, e nada mais. */
|
|
45
|
+
export declare const plainReporter: Reporter;
|
|
46
|
+
/** O reporter de quem chamou a função direto e não quer saída nenhuma. */
|
|
47
|
+
export declare const silentReporter: Reporter;
|
|
48
|
+
/** `1m03s`, `840ms`. Duração que se lê de relance. */
|
|
49
|
+
export declare const duracao: (ms: number) => string;
|
|
50
|
+
export declare class Ui implements Reporter {
|
|
51
|
+
/** Pode animar: tem terminal, tem cor, e ninguém pediu silêncio. */
|
|
52
|
+
readonly rich: boolean;
|
|
53
|
+
private readonly quiet;
|
|
54
|
+
private readonly stream;
|
|
55
|
+
private fiando?;
|
|
56
|
+
private barra?;
|
|
57
|
+
private feitos;
|
|
58
|
+
private readonly inicio;
|
|
59
|
+
constructor(options?: UiOptions);
|
|
60
|
+
/** O logotipo. Só aparece com terminal: num log ele é seis linhas de nada. */
|
|
61
|
+
banner(version: string): void;
|
|
62
|
+
titulo(texto: string, detalhe?: string): void;
|
|
63
|
+
start(label: string): void;
|
|
64
|
+
update(label: string): void;
|
|
65
|
+
/**
|
|
66
|
+
* Troca o spinner por uma barra quando o total aparece.
|
|
67
|
+
*
|
|
68
|
+
* Enquanto não se sabe quantos são, "traduzindo…" é tudo que dá para dizer com verdade.
|
|
69
|
+
* Assim que o total é conhecido, a barra passa a responder a única pergunta que
|
|
70
|
+
* interessa numa espera longa — quanto falta —, e é por isso que a troca acontece no
|
|
71
|
+
* meio do comando em vez de escolher um dos dois no começo.
|
|
72
|
+
*/
|
|
73
|
+
total(count: number, label?: string): void;
|
|
74
|
+
tick(label?: string): void;
|
|
75
|
+
ok(label: string): void;
|
|
76
|
+
warn(label: string): void;
|
|
77
|
+
/** Erro sai mesmo em `--quiet`: silêncio sobre falha é o silêncio errado. */
|
|
78
|
+
fail(label: string): void;
|
|
79
|
+
note(label: string): void;
|
|
80
|
+
/** O resumo do fim: o que foi feito, em quanto tempo. */
|
|
81
|
+
resumo(linhas: Array<[string, string]>, titulo?: string): void;
|
|
82
|
+
/** Fecha o que estiver animando. Idempotente, e chamado antes de qualquer escrita. */
|
|
83
|
+
parar(): void;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=Ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ui.d.ts","sourceRoot":"","sources":["../../src/CLI/Ui.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,SAAS;IACxB,sEAAsE;IACtE,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,+BAA+B;IAC/B,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,uEAAuE;IACvE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,gFAAgF;IAChF,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1C,2BAA2B;IAC3B,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mCAAmC;IACnC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,8EAA8E;AAC9E,eAAO,MAAM,aAAa,EAAE,QAS3B,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,cAAc,EAAE,QAS5B,CAAA;AAsCD,sDAAsD;AACtD,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,KAAG,MAKpC,CAAA;AAED,qBAAa,EAAG,YAAW,QAAQ;IACjC,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,MAAM,CAAC,CAAK;IACpB,OAAO,CAAC,KAAK,CAAC,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAEvB,OAAO,GAAE,SAAc;IAqBpC,8EAA8E;IAC9E,MAAM,CAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAW9B,MAAM,CAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAK9C,KAAK,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAU3B,MAAM,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5B;;;;;;;OAOG;IACH,KAAK,CAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAc,GAAG,IAAI;IA8BhD,IAAI,CAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI;IAO3B,EAAE,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAWxB,IAAI,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAW1B,6EAA6E;IAC7E,IAAI,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAU1B,IAAI,CAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAU1B,yDAAyD;IACzD,MAAM,CAAE,MAAM,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,SAAW,GAAG,IAAI;IAWjE,sFAAsF;IACtF,KAAK,IAAK,IAAI;CAUf"}
|
package/dist/CLI/Ui.js
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Ui = exports.duracao = exports.silentReporter = exports.plainReporter = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const cli_progress_1 = __importDefault(require("cli-progress"));
|
|
9
|
+
const ora_1 = __importDefault(require("ora"));
|
|
10
|
+
/** O reporter de quem não tem terminal: uma linha por evento, e nada mais. */
|
|
11
|
+
exports.plainReporter = {
|
|
12
|
+
start: label => console.log(chalk_1.default.cyan(`→ ${label}`)),
|
|
13
|
+
update: () => undefined,
|
|
14
|
+
total: () => undefined,
|
|
15
|
+
tick: () => undefined,
|
|
16
|
+
ok: label => console.log(chalk_1.default.green(`✓ ${label}`)),
|
|
17
|
+
warn: label => console.log(chalk_1.default.yellow(`! ${label}`)),
|
|
18
|
+
fail: label => console.log(chalk_1.default.red(`✗ ${label}`)),
|
|
19
|
+
note: label => console.log(chalk_1.default.gray(` ${label}`))
|
|
20
|
+
};
|
|
21
|
+
/** O reporter de quem chamou a função direto e não quer saída nenhuma. */
|
|
22
|
+
exports.silentReporter = {
|
|
23
|
+
start: () => undefined,
|
|
24
|
+
update: () => undefined,
|
|
25
|
+
total: () => undefined,
|
|
26
|
+
tick: () => undefined,
|
|
27
|
+
ok: () => undefined,
|
|
28
|
+
warn: () => undefined,
|
|
29
|
+
fail: () => undefined,
|
|
30
|
+
note: () => undefined
|
|
31
|
+
};
|
|
32
|
+
const SIMBOLO = {
|
|
33
|
+
ok: '✔',
|
|
34
|
+
warn: '▲',
|
|
35
|
+
fail: '✖',
|
|
36
|
+
seta: '›',
|
|
37
|
+
ponto: '·'
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* O degradê do banner, do ciano ao magenta.
|
|
41
|
+
*
|
|
42
|
+
* Sem `gradient-string` de propósito: é mais uma dependência num pacote que já é
|
|
43
|
+
* dependência de todo bot do ecossistema, para pintar sete letras. `chalk` já faz cor de
|
|
44
|
+
* 256 e a conta cabe em três linhas.
|
|
45
|
+
*/
|
|
46
|
+
const degrade = (texto, passo, total) => {
|
|
47
|
+
const t = total <= 1 ? 0 : passo / (total - 1);
|
|
48
|
+
const r = Math.round(120 + t * 100);
|
|
49
|
+
const g = Math.round(220 - t * 110);
|
|
50
|
+
const b = 255;
|
|
51
|
+
return chalk_1.default.rgb(r, g, b)(texto);
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* A marca, em uma linha.
|
|
55
|
+
*
|
|
56
|
+
* Não é arte ASCII de seis linhas, e por dois motivos. Blocos como `█` e `╗` dependem da
|
|
57
|
+
* fonte do terminal: no `cmd.exe` com fonte raster, num `ssh` de celular, num log de
|
|
58
|
+
* container, aquilo vira uma cerca de quadrados — a primeira impressão da ferramenta
|
|
59
|
+
* sendo um bug de encoding. E uma CLI que se roda dez vezes por dia não pode gastar oito
|
|
60
|
+
* linhas se apresentando em cada uma.
|
|
61
|
+
*
|
|
62
|
+
* O degradê fica nas letras, que são ASCII e existem em qualquer fonte.
|
|
63
|
+
*/
|
|
64
|
+
const MARCA = 'NEUTRUN';
|
|
65
|
+
/** `1m03s`, `840ms`. Duração que se lê de relance. */
|
|
66
|
+
const duracao = (ms) => {
|
|
67
|
+
if (ms < 1_000)
|
|
68
|
+
return `${Math.round(ms)}ms`;
|
|
69
|
+
if (ms < 60_000)
|
|
70
|
+
return `${(ms / 1_000).toFixed(1)}s`;
|
|
71
|
+
const minutos = Math.floor(ms / 60_000);
|
|
72
|
+
return `${minutos}m${String(Math.round((ms % 60_000) / 1_000)).padStart(2, '0')}s`;
|
|
73
|
+
};
|
|
74
|
+
exports.duracao = duracao;
|
|
75
|
+
class Ui {
|
|
76
|
+
/** Pode animar: tem terminal, tem cor, e ninguém pediu silêncio. */
|
|
77
|
+
rich;
|
|
78
|
+
quiet;
|
|
79
|
+
stream;
|
|
80
|
+
fiando;
|
|
81
|
+
barra;
|
|
82
|
+
feitos = 0;
|
|
83
|
+
inicio = Date.now();
|
|
84
|
+
constructor(options = {}) {
|
|
85
|
+
this.stream = options.stream ?? process.stdout;
|
|
86
|
+
this.quiet = options.quiet === true;
|
|
87
|
+
/*
|
|
88
|
+
* `CI` e `NO_COLOR` entram na conta junto com o TTY.
|
|
89
|
+
*
|
|
90
|
+
* O TTY sozinho não basta: um runner de CI pode alocar pseudo-terminal e ainda assim
|
|
91
|
+
* guardar a saída num arquivo, que é onde o spinner vira ruído. E `NO_COLOR` é a
|
|
92
|
+
* convenção que já existe para "não pinte nada" — respeitar é de graça.
|
|
93
|
+
*/
|
|
94
|
+
const ambienteDeixa = this.stream.isTTY === true &&
|
|
95
|
+
!process.env.CI &&
|
|
96
|
+
!process.env.NO_COLOR &&
|
|
97
|
+
process.env.TERM !== 'dumb';
|
|
98
|
+
this.rich = (options.color ?? ambienteDeixa) && !this.quiet;
|
|
99
|
+
if (options.color === false)
|
|
100
|
+
chalk_1.default.level = 0;
|
|
101
|
+
}
|
|
102
|
+
/** O logotipo. Só aparece com terminal: num log ele é seis linhas de nada. */
|
|
103
|
+
banner(version) {
|
|
104
|
+
if (!this.rich)
|
|
105
|
+
return;
|
|
106
|
+
const letras = [...MARCA]
|
|
107
|
+
.map((letra, indice) => chalk_1.default.bold(degrade(letra, indice, MARCA.length)))
|
|
108
|
+
.join('');
|
|
109
|
+
this.stream.write(`\n ${chalk_1.default.dim('◆')} ${letras} ${chalk_1.default.dim(SIMBOLO.ponto)} ${chalk_1.default.cyan(`v${version}`)}\n` +
|
|
110
|
+
` ${chalk_1.default.gray('framework do ecossistema Ninenity')}\n\n`);
|
|
111
|
+
}
|
|
112
|
+
titulo(texto, detalhe) {
|
|
113
|
+
if (this.quiet)
|
|
114
|
+
return;
|
|
115
|
+
this.stream.write(`${chalk_1.default.bold.white(texto)}${detalhe ? chalk_1.default.gray(` ${detalhe}`) : ''}\n`);
|
|
116
|
+
}
|
|
117
|
+
start(label) {
|
|
118
|
+
if (this.quiet)
|
|
119
|
+
return;
|
|
120
|
+
this.parar();
|
|
121
|
+
if (!this.rich) {
|
|
122
|
+
this.stream.write(`${chalk_1.default.cyan(SIMBOLO.seta)} ${label}\n`);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
this.fiando = (0, ora_1.default)({ text: label, stream: this.stream, spinner: 'dots' }).start();
|
|
126
|
+
}
|
|
127
|
+
update(label) {
|
|
128
|
+
if (this.quiet)
|
|
129
|
+
return;
|
|
130
|
+
if (this.fiando)
|
|
131
|
+
this.fiando.text = label;
|
|
132
|
+
else if (this.barra)
|
|
133
|
+
this.barra.update(this.feitos, { label });
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Troca o spinner por uma barra quando o total aparece.
|
|
137
|
+
*
|
|
138
|
+
* Enquanto não se sabe quantos são, "traduzindo…" é tudo que dá para dizer com verdade.
|
|
139
|
+
* Assim que o total é conhecido, a barra passa a responder a única pergunta que
|
|
140
|
+
* interessa numa espera longa — quanto falta —, e é por isso que a troca acontece no
|
|
141
|
+
* meio do comando em vez de escolher um dos dois no começo.
|
|
142
|
+
*/
|
|
143
|
+
total(count, label = 'progresso') {
|
|
144
|
+
if (this.quiet || count <= 0)
|
|
145
|
+
return;
|
|
146
|
+
this.parar();
|
|
147
|
+
this.feitos = 0;
|
|
148
|
+
/*
|
|
149
|
+
* A barra exige TTY de verdade, e não só `rich`.
|
|
150
|
+
*
|
|
151
|
+
* `--color` liga `rich` à força — o que faz sentido para cor e para o spinner, que o
|
|
152
|
+
* `ora` degrada sozinho imprimindo uma linha por quadro. A barra não degrada: sem TTY
|
|
153
|
+
* ela simplesmente não desenha, e o total sumia da saída sem deixar rastro.
|
|
154
|
+
*/
|
|
155
|
+
if (!this.rich || this.stream.isTTY !== true) {
|
|
156
|
+
this.stream.write(`${chalk_1.default.cyan(SIMBOLO.seta)} ${label}: ${count} item(ns)\n`);
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
this.barra = new cli_progress_1.default.SingleBar({
|
|
160
|
+
format: ` ${chalk_1.default.cyan('{bar}')} ${chalk_1.default.bold('{percentage}%')} ${chalk_1.default.gray('{value}/{total}')} ${chalk_1.default.dim('{label}')}`,
|
|
161
|
+
barCompleteChar: '█',
|
|
162
|
+
barIncompleteChar: '░',
|
|
163
|
+
hideCursor: true,
|
|
164
|
+
stream: this.stream,
|
|
165
|
+
barsize: 24,
|
|
166
|
+
clearOnComplete: true
|
|
167
|
+
}, cli_progress_1.default.Presets.shades_classic);
|
|
168
|
+
this.barra.start(count, 0, { label });
|
|
169
|
+
}
|
|
170
|
+
tick(label) {
|
|
171
|
+
if (this.quiet)
|
|
172
|
+
return;
|
|
173
|
+
this.feitos += 1;
|
|
174
|
+
if (this.barra)
|
|
175
|
+
this.barra.update(this.feitos, { label: label ?? '' });
|
|
176
|
+
else if (this.fiando && label)
|
|
177
|
+
this.fiando.text = label;
|
|
178
|
+
}
|
|
179
|
+
ok(label) {
|
|
180
|
+
if (this.quiet)
|
|
181
|
+
return;
|
|
182
|
+
if (this.fiando) {
|
|
183
|
+
this.fiando.succeed(label);
|
|
184
|
+
this.fiando = undefined;
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
this.parar();
|
|
188
|
+
this.stream.write(`${chalk_1.default.green(SIMBOLO.ok)} ${label}\n`);
|
|
189
|
+
}
|
|
190
|
+
warn(label) {
|
|
191
|
+
if (this.quiet)
|
|
192
|
+
return;
|
|
193
|
+
if (this.fiando) {
|
|
194
|
+
this.fiando.warn(label);
|
|
195
|
+
this.fiando = undefined;
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
this.parar();
|
|
199
|
+
this.stream.write(`${chalk_1.default.yellow(SIMBOLO.warn)} ${label}\n`);
|
|
200
|
+
}
|
|
201
|
+
/** Erro sai mesmo em `--quiet`: silêncio sobre falha é o silêncio errado. */
|
|
202
|
+
fail(label) {
|
|
203
|
+
if (this.fiando) {
|
|
204
|
+
this.fiando.fail(label);
|
|
205
|
+
this.fiando = undefined;
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
this.parar();
|
|
209
|
+
process.stderr.write(`${chalk_1.default.red(SIMBOLO.fail)} ${label}\n`);
|
|
210
|
+
}
|
|
211
|
+
note(label) {
|
|
212
|
+
if (this.quiet)
|
|
213
|
+
return;
|
|
214
|
+
if (this.fiando || this.barra) {
|
|
215
|
+
// Escrever por baixo de um spinner embaralha a linha dele: vira texto do próprio.
|
|
216
|
+
this.update(label);
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
this.stream.write(` ${chalk_1.default.gray(label)}\n`);
|
|
220
|
+
}
|
|
221
|
+
/** O resumo do fim: o que foi feito, em quanto tempo. */
|
|
222
|
+
resumo(linhas, titulo = 'Pronto') {
|
|
223
|
+
this.parar();
|
|
224
|
+
if (this.quiet)
|
|
225
|
+
return;
|
|
226
|
+
const largura = Math.max(...linhas.map(([rotulo]) => rotulo.length), 0);
|
|
227
|
+
this.stream.write(`\n${chalk_1.default.green.bold(`${SIMBOLO.ok} ${titulo}`)} ${chalk_1.default.gray(`em ${(0, exports.duracao)(Date.now() - this.inicio)}`)}\n`);
|
|
228
|
+
for (const [rotulo, valor] of linhas) {
|
|
229
|
+
this.stream.write(` ${chalk_1.default.gray(rotulo.padEnd(largura))} ${chalk_1.default.white(valor)}\n`);
|
|
230
|
+
}
|
|
231
|
+
this.stream.write('\n');
|
|
232
|
+
}
|
|
233
|
+
/** Fecha o que estiver animando. Idempotente, e chamado antes de qualquer escrita. */
|
|
234
|
+
parar() {
|
|
235
|
+
if (this.barra) {
|
|
236
|
+
this.barra.stop();
|
|
237
|
+
this.barra = undefined;
|
|
238
|
+
}
|
|
239
|
+
if (this.fiando) {
|
|
240
|
+
this.fiando.stop();
|
|
241
|
+
this.fiando = undefined;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
exports.Ui = Ui;
|
|
246
|
+
//# sourceMappingURL=Ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ui.js","sourceRoot":"","sources":["../../src/CLI/Ui.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AACzB,gEAAsC;AACtC,8CAAmC;AAgDnC,8EAA8E;AACjE,QAAA,aAAa,GAAa;IACrC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;IACvB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACnD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACtD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IACnD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;CACrD,CAAA;AAED,0EAA0E;AAC7D,QAAA,cAAc,GAAa;IACtC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS;IACvB,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS;IACtB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS;IACnB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;IACrB,IAAI,EAAE,GAAG,EAAE,CAAC,SAAS;CACtB,CAAA;AAED,MAAM,OAAO,GAAG;IACd,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;CACX,CAAA;AAED;;;;;;GAMG;AACH,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,KAAa,EAAU,EAAE;IACtE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAC9C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;IACnC,MAAM,CAAC,GAAG,GAAG,CAAA;IACb,OAAO,eAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,KAAK,GAAG,SAAS,CAAA;AAEvB,sDAAsD;AAC/C,MAAM,OAAO,GAAG,CAAC,EAAU,EAAU,EAAE;IAC5C,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;IAC5C,IAAI,EAAE,GAAG,MAAM;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAA;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAA;IACvC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;AACpF,CAAC,CAAA;AALY,QAAA,OAAO,WAKnB;AAED,MAAa,EAAE;IACb,oEAAoE;IAC3D,IAAI,CAAS;IACL,KAAK,CAAS;IACd,MAAM,CAAoB;IACnC,MAAM,CAAM;IACZ,KAAK,CAAwB;IAC7B,MAAM,GAAG,CAAC,CAAA;IACD,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAEpC,YAAa,UAAqB,EAAE;QAClC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAA;QAC9C,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,KAAK,IAAI,CAAA;QAEnC;;;;;;WAMG;QACH,MAAM,aAAa,GACjB,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI;YAC1B,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACf,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ;YACrB,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAA;QAE7B,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;QAC3D,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK;YAAE,eAAK,CAAC,KAAK,GAAG,CAAC,CAAA;IAC9C,CAAC;IAED,8EAA8E;IAC9E,MAAM,CAAE,OAAe;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QACtB,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC;aACtB,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;aACxE,IAAI,CAAC,EAAE,CAAC,CAAA;QACX,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,OAAO,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,IAAI,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC,IAAI;YAC5F,OAAO,eAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAC7D,CAAA;IACH,CAAC;IAED,MAAM,CAAE,KAAa,EAAE,OAAgB;QACrC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IAC/F,CAAC;IAED,KAAK,CAAE,KAAa;QAClB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;YAC3D,OAAM;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAA,aAAG,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;IAClF,CAAC;IAED,MAAM,CAAE,KAAa;QACnB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAA;aACpC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAChE,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAE,KAAa,EAAE,KAAK,GAAG,WAAW;QACvC,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,IAAI,CAAC;YAAE,OAAM;QACpC,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf;;;;;;WAMG;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,KAAK,aAAa,CAAC,CAAA;YAC9E,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,sBAAW,CAAC,SAAS,CACpC;YACE,MAAM,EAAE,KAAK,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,eAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YAC1H,eAAe,EAAE,GAAG;YACpB,iBAAiB,EAAE,GAAG;YACtB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,EAAE;YACX,eAAe,EAAE,IAAI;SACtB,EACD,sBAAW,CAAC,OAAO,CAAC,cAAc,CACnC,CAAA;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IACvC,CAAC;IAED,IAAI,CAAE,KAAc;QAClB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAA;QAChB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAA;aACjE,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAA;IACzD,CAAC;IAED,EAAE,CAAE,KAAa;QACf,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;YACvB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC5D,CAAC;IAED,IAAI,CAAE,KAAa;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;YACvB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC/D,CAAC;IAED,6EAA6E;IAC7E,IAAI,CAAE,KAAa;QACjB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;YACvB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;IAC/D,CAAC;IAED,IAAI,CAAE,KAAa;QACjB,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,kFAAkF;YAClF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClB,OAAM;QACR,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC/C,CAAC;IAED,yDAAyD;IACzD,MAAM,CAAE,MAA+B,EAAE,MAAM,GAAG,QAAQ;QACxD,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAI,IAAI,CAAC,KAAK;YAAE,OAAM;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACvE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,IAAI,MAAM,EAAE,CAAC,IAAI,eAAK,CAAC,IAAI,CAAC,MAAM,IAAA,eAAO,EAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;QAChI,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,sFAAsF;IACtF,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;YACjB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;YAClB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;QACzB,CAAC;IACH,CAAC;CACF;AA/KD,gBA+KC"}
|
package/dist/CLI/bin.js
CHANGED
|
@@ -1,36 +1,108 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
3
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
4
9
|
const Localize_1 = require("./Localize");
|
|
5
10
|
const Translate_1 = require("./Translate");
|
|
6
11
|
const Bootstrap_1 = require("./Bootstrap");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
12
|
+
const Args_1 = require("./Args");
|
|
13
|
+
const Ui_1 = require("./Ui");
|
|
14
|
+
/**
|
|
15
|
+
* A porta de entrada da CLI.
|
|
16
|
+
*
|
|
17
|
+
* O que este arquivo garante, e a versão anterior não: **o código de saída diz a
|
|
18
|
+
* verdade.** Antes, comando desconhecido caía no texto de ajuda e saía com `0` — um
|
|
19
|
+
* `neutrun sinc && npm publish` publicava mesmo com o erro de digitação. Agora o que não
|
|
20
|
+
* foi entendido sai com `1`, e o que quebrou no meio também.
|
|
21
|
+
*
|
|
22
|
+
* A `Ui` é construída aqui e passada para baixo. Os comandos não sabem se existe terminal;
|
|
23
|
+
* eles reportam, e quem desenha é ela.
|
|
24
|
+
*/
|
|
25
|
+
/** A versão sai do `package.json` do pacote, ande ele em `src` ou em `dist`. */
|
|
26
|
+
function versaoDoPacote() {
|
|
27
|
+
const candidatos = [
|
|
28
|
+
path_1.default.join(__dirname, '..', '..', 'package.json'),
|
|
29
|
+
path_1.default.join(__dirname, '..', '..', '..', 'package.json')
|
|
30
|
+
];
|
|
31
|
+
for (const caminho of candidatos) {
|
|
32
|
+
try {
|
|
33
|
+
const bruto = JSON.parse(fs_1.default.readFileSync(caminho, 'utf-8'));
|
|
34
|
+
if (bruto.name === '@ninenity/neutrun' && bruto.version)
|
|
35
|
+
return bruto.version;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
/* tenta o próximo */
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return '0.0.0';
|
|
42
|
+
}
|
|
9
43
|
async function main() {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
44
|
+
const parsed = (0, Args_1.parseArgs)(process.argv.slice(2));
|
|
45
|
+
const version = versaoDoPacote();
|
|
46
|
+
const ui = new Ui_1.Ui({ color: parsed.color, quiet: parsed.quiet });
|
|
47
|
+
if (parsed.error) {
|
|
48
|
+
ui.fail(`${parsed.error}. Veja \`neutrun help\`.`);
|
|
49
|
+
return 1;
|
|
50
|
+
}
|
|
51
|
+
if (parsed.command === 'version') {
|
|
52
|
+
process.stdout.write(`${version}\n`);
|
|
53
|
+
return 0;
|
|
54
|
+
}
|
|
55
|
+
if (parsed.command === 'help') {
|
|
56
|
+
process.stdout.write(`${(0, Args_1.helpText)(version)}\n`);
|
|
57
|
+
return 0;
|
|
58
|
+
}
|
|
59
|
+
const dir = parsed.dir ? path_1.default.resolve(parsed.dir) : process.cwd();
|
|
60
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
61
|
+
ui.fail(`a pasta "${dir}" não existe`);
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
ui.banner(version);
|
|
65
|
+
ui.titulo(`neutrun ${parsed.command}`, path_1.default.basename(dir));
|
|
66
|
+
try {
|
|
67
|
+
if (parsed.command === 'bootstrap') {
|
|
68
|
+
const feitos = (0, Bootstrap_1.runBootstrap)(dir, ui);
|
|
69
|
+
ui.resumo([
|
|
70
|
+
['arquivos criados', String(feitos.criados.length)],
|
|
71
|
+
['já existiam', String(feitos.existiam.length)],
|
|
72
|
+
['pasta', feitos.pasta]
|
|
73
|
+
], 'Tipagens prontas');
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
if (parsed.command === 'locate' || parsed.command === 'sync') {
|
|
77
|
+
const local = (0, Localize_1.runLocalize)(dir, ui);
|
|
78
|
+
ui.resumo([
|
|
79
|
+
['arquivos refatorados', String(local.arquivos)],
|
|
80
|
+
['chaves no dicionário', String(local.chaves)],
|
|
81
|
+
['dicionários', 'tpt_tsl.ts, pt_br.ts']
|
|
82
|
+
], 'Localização concluída');
|
|
83
|
+
if (parsed.command === 'locate')
|
|
84
|
+
return 0;
|
|
85
|
+
}
|
|
86
|
+
const traduzido = await (0, Translate_1.runTranslate)(dir, ui, parsed.langs);
|
|
87
|
+
ui.resumo([
|
|
88
|
+
['chaves traduzidas', String(traduzido.chaves)],
|
|
89
|
+
['idiomas', traduzido.idiomas.join(', ') || '—'],
|
|
90
|
+
['falhas', String(traduzido.falhas)]
|
|
91
|
+
], traduzido.falhas > 0 ? 'Tradução concluída com falhas' : 'Tradução concluída');
|
|
92
|
+
return traduzido.falhas > 0 ? 1 : 0;
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
ui.parar();
|
|
96
|
+
ui.fail(error.message);
|
|
97
|
+
if (process.env.NEUTRUN_DEBUG)
|
|
98
|
+
console.error(error);
|
|
99
|
+
return 1;
|
|
30
100
|
}
|
|
31
101
|
}
|
|
32
|
-
main()
|
|
33
|
-
|
|
34
|
-
|
|
102
|
+
void main()
|
|
103
|
+
.then(codigo => { process.exitCode = codigo; })
|
|
104
|
+
.catch(error => {
|
|
105
|
+
process.stderr.write(`erro inesperado na CLI: ${String(error)}\n`);
|
|
106
|
+
process.exitCode = 1;
|
|
35
107
|
});
|
|
36
108
|
//# sourceMappingURL=bin.js.map
|
package/dist/CLI/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/CLI/bin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/CLI/bin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ninenity/neutrun",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.4",
|
|
4
4
|
"description": "Framework do ecossistema Ninenity.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
"files": [
|
|
9
9
|
"dist"
|
|
10
10
|
],
|
|
11
|
+
"bin": {
|
|
12
|
+
"neutrun": "dist/CLI/bin.js",
|
|
13
|
+
"ninenity-cli": "dist/CLI/bin.js"
|
|
14
|
+
},
|
|
11
15
|
"main": "dist/index.js",
|
|
12
16
|
"types": "dist/index.d.ts",
|
|
13
17
|
"exports": {
|
|
@@ -46,7 +50,8 @@
|
|
|
46
50
|
"build": "tsc",
|
|
47
51
|
"typecheck": "tsc --noEmit",
|
|
48
52
|
"prepack": "npm run build",
|
|
49
|
-
"pack:check": "
|
|
53
|
+
"pack:check": "node scripts/check-pack.mjs dist/",
|
|
54
|
+
"cli": "node dist/CLI/bin.js",
|
|
50
55
|
"dev": "tsc --watch",
|
|
51
56
|
"test": "jest --config ../jest.config.js --runInBand"
|
|
52
57
|
},
|