@meerrec/cli 0.0.0-stage → 2.0.2
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/LICENSE +201 -0
- package/README.md +142 -2
- package/dist/args.d.ts +48 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +256 -0
- package/dist/args.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -0
- package/dist/convert.d.ts +27 -0
- package/dist/convert.d.ts.map +1 -0
- package/dist/convert.js +69 -0
- package/dist/convert.js.map +1 -0
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +15 -0
- package/dist/errors.js.map +1 -0
- package/dist/expand.d.ts +25 -0
- package/dist/expand.d.ts.map +1 -0
- package/dist/expand.js +148 -0
- package/dist/expand.js.map +1 -0
- package/dist/formats.d.ts +26 -0
- package/dist/formats.d.ts.map +1 -0
- package/dist/formats.js +71 -0
- package/dist/formats.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/pool.d.ts +36 -0
- package/dist/pool.d.ts.map +1 -0
- package/dist/pool.js +149 -0
- package/dist/pool.js.map +1 -0
- package/dist/progress.d.ts +30 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +67 -0
- package/dist/progress.js.map +1 -0
- package/dist/run.d.ts +10 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +138 -0
- package/dist/run.js.map +1 -0
- package/dist/runtime-deno.d.ts +17 -0
- package/dist/runtime-deno.d.ts.map +1 -0
- package/dist/runtime-deno.js +116 -0
- package/dist/runtime-deno.js.map +1 -0
- package/dist/runtime-node.d.ts +13 -0
- package/dist/runtime-node.d.ts.map +1 -0
- package/dist/runtime-node.js +30 -0
- package/dist/runtime-node.js.map +1 -0
- package/dist/runtime.d.ts +45 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +41 -0
- package/dist/runtime.js.map +1 -0
- package/dist/wasm.d.ts +23 -0
- package/dist/wasm.d.ts.map +1 -0
- package/dist/wasm.js +50 -0
- package/dist/wasm.js.map +1 -0
- package/dist/worker-deno.d.ts +10 -0
- package/dist/worker-deno.d.ts.map +1 -0
- package/dist/worker-deno.js +28 -0
- package/dist/worker-deno.js.map +1 -0
- package/dist/worker-protocol.d.ts +20 -0
- package/dist/worker-protocol.d.ts.map +1 -0
- package/dist/worker-protocol.js +7 -0
- package/dist/worker-protocol.js.map +1 -0
- package/dist/worker.d.ts +10 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +28 -0
- package/dist/worker.js.map +1 -0
- package/package.json +50 -3
package/dist/args.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,uCAAuC"}
|
package/dist/cli.js
ADDED
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,uCAAuC;AAEvC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Конвертация одного файла: общая для `convert` в текущем процессе и для
|
|
3
|
+
* задач, которые исполняет воркер пула.
|
|
4
|
+
*/
|
|
5
|
+
import type { PdfOptions } from '@meerrec/core';
|
|
6
|
+
import { type OutputFormat } from './formats.js';
|
|
7
|
+
export interface ConvertJob {
|
|
8
|
+
input: string;
|
|
9
|
+
output: string;
|
|
10
|
+
format: OutputFormat;
|
|
11
|
+
pdf: PdfOptions;
|
|
12
|
+
}
|
|
13
|
+
export interface ConvertResult {
|
|
14
|
+
input: string;
|
|
15
|
+
output: string;
|
|
16
|
+
bytes: number;
|
|
17
|
+
ms: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Прочитать `input`, записать `output` в нужном формате.
|
|
21
|
+
*
|
|
22
|
+
* # Errors
|
|
23
|
+
* Если расширение входа или пара «вход → выход» не поддерживается, файл не
|
|
24
|
+
* читается, wasm-модуль не разобрал документ или выход не записался.
|
|
25
|
+
*/
|
|
26
|
+
export declare function convertFile(job: ConvertJob): Promise<ConvertResult>;
|
|
27
|
+
//# sourceMappingURL=convert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,EAA8C,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAG7F,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,UAAU,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,CAezE"}
|
package/dist/convert.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Конвертация одного файла: общая для `convert` в текущем процессе и для
|
|
3
|
+
* задач, которые исполняет воркер пула.
|
|
4
|
+
*/
|
|
5
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
6
|
+
import { dirname } from 'node:path';
|
|
7
|
+
import { CliError } from './errors.js';
|
|
8
|
+
import { assertSupported, inputKind } from './formats.js';
|
|
9
|
+
import { loadDocxWasm, loadPdfWasm } from './wasm.js';
|
|
10
|
+
/**
|
|
11
|
+
* Прочитать `input`, записать `output` в нужном формате.
|
|
12
|
+
*
|
|
13
|
+
* # Errors
|
|
14
|
+
* Если расширение входа или пара «вход → выход» не поддерживается, файл не
|
|
15
|
+
* читается, wasm-модуль не разобрал документ или выход не записался.
|
|
16
|
+
*/
|
|
17
|
+
export async function convertFile(job) {
|
|
18
|
+
const started = Date.now();
|
|
19
|
+
const kind = inputKind(job.input);
|
|
20
|
+
if (kind === null) {
|
|
21
|
+
throw new CliError(`unsupported input '${job.input}': expected .docx or .xlsx`);
|
|
22
|
+
}
|
|
23
|
+
assertSupported(kind, job.format);
|
|
24
|
+
const input = await readFile(job.input);
|
|
25
|
+
const data = job.format === 'pdf' ? await toPdf(kind, input, job.pdf) : await toText(kind, input, job.format);
|
|
26
|
+
await mkdir(dirname(job.output), { recursive: true });
|
|
27
|
+
await writeFile(job.output, data);
|
|
28
|
+
return { input: job.input, output: job.output, bytes: data.byteLength, ms: Date.now() - started };
|
|
29
|
+
}
|
|
30
|
+
async function toPdf(kind, bytes, pdf) {
|
|
31
|
+
const wasm = await loadPdfWasm();
|
|
32
|
+
// Опции для wasm-модуля: только заданные ключи (exactOptionalPropertyTypes).
|
|
33
|
+
// Имена — camelCase, как в `PdfOptionsWire`; `allSheets` CLI не знает и не шлёт.
|
|
34
|
+
const options = {};
|
|
35
|
+
if (pdf.pageSize !== undefined)
|
|
36
|
+
options.pageSize = pdf.pageSize;
|
|
37
|
+
if (pdf.orientation !== undefined)
|
|
38
|
+
options.orientation = pdf.orientation;
|
|
39
|
+
if (pdf.scale !== undefined)
|
|
40
|
+
options.scale = pdf.scale;
|
|
41
|
+
if (pdf.margins !== undefined)
|
|
42
|
+
options.margins = pdf.margins;
|
|
43
|
+
if (pdf.sheetIndex !== undefined)
|
|
44
|
+
options.sheetIndex = pdf.sheetIndex;
|
|
45
|
+
if (pdf.fitToPage !== undefined)
|
|
46
|
+
options.fitToPage = pdf.fitToPage;
|
|
47
|
+
if (pdf.fitToWidth !== undefined)
|
|
48
|
+
options.fitToWidth = pdf.fitToWidth;
|
|
49
|
+
if (pdf.fitToHeight !== undefined)
|
|
50
|
+
options.fitToHeight = pdf.fitToHeight;
|
|
51
|
+
if (kind === 'docx')
|
|
52
|
+
return wasm.export_docx_pdf(bytes, options);
|
|
53
|
+
return pdf.sheetIndex === undefined
|
|
54
|
+
? wasm.export_pdf_book(bytes, options)
|
|
55
|
+
: wasm.export_pdf(bytes, pdf.sheetIndex, options);
|
|
56
|
+
}
|
|
57
|
+
async function toText(kind, bytes, format) {
|
|
58
|
+
// XLSX сюда не доходит: `assertSupported` выше разрешает ему только PDF.
|
|
59
|
+
if (kind !== 'docx')
|
|
60
|
+
throw new CliError(`${kind} → ${format} is not supported`);
|
|
61
|
+
const wasm = await loadDocxWasm();
|
|
62
|
+
const text = format === 'md'
|
|
63
|
+
? wasm.docx_export_markdown(bytes)
|
|
64
|
+
: format === 'html'
|
|
65
|
+
? wasm.docx_export_html(bytes)
|
|
66
|
+
: wasm.docx_export_text(bytes);
|
|
67
|
+
return Buffer.from(text, 'utf8');
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../src/convert.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ошибка, которую CLI показывает человеку как есть.
|
|
3
|
+
*
|
|
4
|
+
* `exitCode` — 2 для ошибок в аргументах и путях (пользователь может
|
|
5
|
+
* исправить вызов) и 1 для неудачи самой конвертации.
|
|
6
|
+
*/
|
|
7
|
+
export declare class CliError extends Error {
|
|
8
|
+
readonly exitCode: number;
|
|
9
|
+
constructor(message: string, exitCode?: number);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAI;CAK1C"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ошибка, которую CLI показывает человеку как есть.
|
|
3
|
+
*
|
|
4
|
+
* `exitCode` — 2 для ошибок в аргументах и путях (пользователь может
|
|
5
|
+
* исправить вызов) и 1 для неудачи самой конвертации.
|
|
6
|
+
*/
|
|
7
|
+
export class CliError extends Error {
|
|
8
|
+
exitCode;
|
|
9
|
+
constructor(message, exitCode = 2) {
|
|
10
|
+
super(message);
|
|
11
|
+
this.name = 'CliError';
|
|
12
|
+
this.exitCode = exitCode;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,QAAQ,CAAS;IAE1B,YAAY,OAAe,EAAE,QAAQ,GAAG,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
|
package/dist/expand.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Разворачивание входов `batch`: файлы, каталоги и glob-шаблоны.
|
|
3
|
+
*
|
|
4
|
+
* Своего glob-движка в зависимостях нет намеренно: нужны `*`, `**`, `?` и
|
|
5
|
+
* `[...]`, а не полноценный micromatch, и лишняя зависимость в CLI, который
|
|
6
|
+
* запускают на голом `node`, дороже полусотни строк здесь.
|
|
7
|
+
*/
|
|
8
|
+
/** Есть ли в шаблоне спецсимволы glob. */
|
|
9
|
+
export declare function hasMagic(pattern: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Перевести glob в регулярное выражение по правилам оболочки:
|
|
12
|
+
* `*` — всё, кроме `/`; `**` — вместе с `/`; `?` — один символ;
|
|
13
|
+
* `[...]` — класс символов.
|
|
14
|
+
*/
|
|
15
|
+
export declare function globToRegExp(glob: string): RegExp;
|
|
16
|
+
/**
|
|
17
|
+
* Развернуть входы в список существующих `.docx`/`.xlsx`.
|
|
18
|
+
*
|
|
19
|
+
* Каталоги обходятся рекурсивно, скрытые каталоги пропускаются. Каждый шаблон
|
|
20
|
+
* обязан дать хотя бы один файл — иначе это опечатка, и о ней нужно сказать
|
|
21
|
+
* до запуска воркеров. Файлы с чужими расширениями молча отбрасываются:
|
|
22
|
+
* `batch ./in` не должен падать из-за `readme.txt` рядом с книгами.
|
|
23
|
+
*/
|
|
24
|
+
export declare function expandInputs(patterns: readonly string[]): Promise<string[]>;
|
|
25
|
+
//# sourceMappingURL=expand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.d.ts","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,0CAA0C;AAC1C,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAmCjD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAUjF"}
|
package/dist/expand.js
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Разворачивание входов `batch`: файлы, каталоги и glob-шаблоны.
|
|
3
|
+
*
|
|
4
|
+
* Своего glob-движка в зависимостях нет намеренно: нужны `*`, `**`, `?` и
|
|
5
|
+
* `[...]`, а не полноценный micromatch, и лишняя зависимость в CLI, который
|
|
6
|
+
* запускают на голом `node`, дороже полусотни строк здесь.
|
|
7
|
+
*/
|
|
8
|
+
import { readdir, stat } from 'node:fs/promises';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { CliError } from './errors.js';
|
|
11
|
+
import { inputKind } from './formats.js';
|
|
12
|
+
/** Есть ли в шаблоне спецсимволы glob. */
|
|
13
|
+
export function hasMagic(pattern) {
|
|
14
|
+
return /[*?[]/.test(pattern);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Перевести glob в регулярное выражение по правилам оболочки:
|
|
18
|
+
* `*` — всё, кроме `/`; `**` — вместе с `/`; `?` — один символ;
|
|
19
|
+
* `[...]` — класс символов.
|
|
20
|
+
*/
|
|
21
|
+
export function globToRegExp(glob) {
|
|
22
|
+
let source = '';
|
|
23
|
+
for (let i = 0; i < glob.length; i += 1) {
|
|
24
|
+
const char = glob[i];
|
|
25
|
+
if (char === '*') {
|
|
26
|
+
if (glob[i + 1] === '*') {
|
|
27
|
+
i += 1;
|
|
28
|
+
if (glob[i + 1] === '/') {
|
|
29
|
+
// `**/` покрывает и ноль каталогов: `**/*.xlsx` матчит `a.xlsx`.
|
|
30
|
+
i += 1;
|
|
31
|
+
source += '(?:[^/]+/)*';
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
source += '.*';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
source += '[^/]*';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (char === '?') {
|
|
42
|
+
source += '[^/]';
|
|
43
|
+
}
|
|
44
|
+
else if (char === '[') {
|
|
45
|
+
const closing = glob.indexOf(']', i + 2);
|
|
46
|
+
if (closing === -1) {
|
|
47
|
+
source += '\\[';
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
const body = glob.slice(i + 1, closing);
|
|
51
|
+
const negated = body.startsWith('!') || body.startsWith('^');
|
|
52
|
+
const chars = negated ? body.slice(1) : body;
|
|
53
|
+
source += `[${negated ? '^' : ''}${chars.replace(/[\\^\]]/g, '\\$&')}]`;
|
|
54
|
+
i = closing;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
source += char.replace(/[.+^${}()|\\\]]/g, '\\$&');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return new RegExp(`^${source}$`);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Развернуть входы в список существующих `.docx`/`.xlsx`.
|
|
65
|
+
*
|
|
66
|
+
* Каталоги обходятся рекурсивно, скрытые каталоги пропускаются. Каждый шаблон
|
|
67
|
+
* обязан дать хотя бы один файл — иначе это опечатка, и о ней нужно сказать
|
|
68
|
+
* до запуска воркеров. Файлы с чужими расширениями молча отбрасываются:
|
|
69
|
+
* `batch ./in` не должен падать из-за `readme.txt` рядом с книгами.
|
|
70
|
+
*/
|
|
71
|
+
export async function expandInputs(patterns) {
|
|
72
|
+
const found = new Set();
|
|
73
|
+
for (const pattern of patterns) {
|
|
74
|
+
const matches = await expandOne(pattern);
|
|
75
|
+
if (matches.length === 0) {
|
|
76
|
+
throw new CliError(`no .docx/.xlsx files matched '${pattern}'`);
|
|
77
|
+
}
|
|
78
|
+
for (const match of matches)
|
|
79
|
+
found.add(match);
|
|
80
|
+
}
|
|
81
|
+
return [...found].sort();
|
|
82
|
+
}
|
|
83
|
+
async function expandOne(pattern) {
|
|
84
|
+
const info = await statOrNull(pattern);
|
|
85
|
+
if (info?.isDirectory() === true)
|
|
86
|
+
return walk(pattern, () => true);
|
|
87
|
+
if (info?.isFile() === true)
|
|
88
|
+
return inputKind(pattern) === null ? [] : [pattern];
|
|
89
|
+
if (info !== null)
|
|
90
|
+
return [];
|
|
91
|
+
if (!hasMagic(pattern)) {
|
|
92
|
+
throw new CliError(`input not found: ${pattern}`);
|
|
93
|
+
}
|
|
94
|
+
const root = staticPrefix(pattern);
|
|
95
|
+
if (root === null) {
|
|
96
|
+
// Шаблон начинается с магии — обходить пришлось бы всё дерево от корня.
|
|
97
|
+
throw new CliError(`glob '${pattern}' must start with a literal directory, e.g. './in/**/*.xlsx'`);
|
|
98
|
+
}
|
|
99
|
+
const relative = globToRegExp(pattern.slice(root.length));
|
|
100
|
+
return walk(root, (path) => relative.test(path));
|
|
101
|
+
}
|
|
102
|
+
/** Каталог до первого сегмента со спецсимволами — точка отсчёта обхода. */
|
|
103
|
+
function staticPrefix(pattern) {
|
|
104
|
+
const segments = pattern.split('/');
|
|
105
|
+
const staticSegments = [];
|
|
106
|
+
for (const segment of segments) {
|
|
107
|
+
if (hasMagic(segment))
|
|
108
|
+
break;
|
|
109
|
+
staticSegments.push(segment);
|
|
110
|
+
}
|
|
111
|
+
if (staticSegments.length === 0)
|
|
112
|
+
return null;
|
|
113
|
+
// Последний уцелевший сегмент — имя файла, а не каталог.
|
|
114
|
+
staticSegments.pop();
|
|
115
|
+
const root = staticSegments.join('/');
|
|
116
|
+
return root === '' ? (pattern.startsWith('/') ? '/' : './') : `${root}/`;
|
|
117
|
+
}
|
|
118
|
+
/** Рекурсивный обход: `match` получает путь относительно `root`. */
|
|
119
|
+
async function walk(root, match) {
|
|
120
|
+
const found = [];
|
|
121
|
+
const visit = async (dir, prefix) => {
|
|
122
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
123
|
+
for (const entry of entries) {
|
|
124
|
+
const relativePath = prefix === '' ? entry.name : `${prefix}/${entry.name}`;
|
|
125
|
+
const path = join(dir, entry.name);
|
|
126
|
+
if (entry.isDirectory()) {
|
|
127
|
+
// Скрытые каталоги (`.git`, `.turbo`) — не источник документов.
|
|
128
|
+
if (entry.name.startsWith('.'))
|
|
129
|
+
continue;
|
|
130
|
+
await visit(path, relativePath);
|
|
131
|
+
}
|
|
132
|
+
else if (entry.isFile() && inputKind(entry.name) !== null && match(relativePath)) {
|
|
133
|
+
found.push(path);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
await visit(root, '');
|
|
138
|
+
return found.sort();
|
|
139
|
+
}
|
|
140
|
+
async function statOrNull(path) {
|
|
141
|
+
try {
|
|
142
|
+
return await stat(path);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=expand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expand.js","sourceRoot":"","sources":["../src/expand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Форматы ввода и вывода: единственное место, где сказано, что во что
|
|
3
|
+
* конвертируется. Оба фронта — `convert` и `batch` — спрашивают здесь,
|
|
4
|
+
* поэтому неподдерживаемая пара расширений ловится до запуска воркеров.
|
|
5
|
+
*/
|
|
6
|
+
/** Формат, в который CLI умеет писать. */
|
|
7
|
+
export type OutputFormat = 'pdf' | 'md' | 'html' | 'txt';
|
|
8
|
+
/** Формат ввода: разбирается по расширению. */
|
|
9
|
+
export type InputKind = 'docx' | 'xlsx';
|
|
10
|
+
/** Расширение выходного файла, с точкой. */
|
|
11
|
+
export declare const OUTPUT_EXTENSION: Record<OutputFormat, string>;
|
|
12
|
+
/** Что во что конвертируется. У XLSX путь только один — PDF. */
|
|
13
|
+
export declare const SUPPORTED: Record<InputKind, readonly OutputFormat[]>;
|
|
14
|
+
/** Расширение пути в нижнем регистре, вместе с точкой; `''`, если его нет. */
|
|
15
|
+
export declare function extensionOf(path: string): string;
|
|
16
|
+
/** Формат ввода по расширению или `null`, если расширение чужое. */
|
|
17
|
+
export declare function inputKind(path: string): InputKind | null;
|
|
18
|
+
/** Формат вывода по расширению или `null`. */
|
|
19
|
+
export declare function formatFromPath(path: string): OutputFormat | null;
|
|
20
|
+
/** Разобрать значение `--format`; регистр не важен. */
|
|
21
|
+
export declare function parseFormat(value: string): OutputFormat;
|
|
22
|
+
/** Проверить, что пара «вход → выход» поддерживается. */
|
|
23
|
+
export declare function assertSupported(kind: InputKind, format: OutputFormat): void;
|
|
24
|
+
/** Заменить расширение пути на расширение формата. */
|
|
25
|
+
export declare function withExtension(path: string, format: OutputFormat): string;
|
|
26
|
+
//# sourceMappingURL=formats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzD,+CAA+C;AAC/C,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAKzD,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAGhE,CAAC;AAmBF,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAExD;AAED,8CAA8C;AAC9C,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAEhE;AAED,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAOvD;AAED,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAQ3E;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM,CAKxE"}
|
package/dist/formats.js
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Форматы ввода и вывода: единственное место, где сказано, что во что
|
|
3
|
+
* конвертируется. Оба фронта — `convert` и `batch` — спрашивают здесь,
|
|
4
|
+
* поэтому неподдерживаемая пара расширений ловится до запуска воркеров.
|
|
5
|
+
*/
|
|
6
|
+
import { CliError } from './errors.js';
|
|
7
|
+
/** Расширение выходного файла, с точкой. */
|
|
8
|
+
export const OUTPUT_EXTENSION = {
|
|
9
|
+
pdf: '.pdf',
|
|
10
|
+
md: '.md',
|
|
11
|
+
html: '.html',
|
|
12
|
+
txt: '.txt',
|
|
13
|
+
};
|
|
14
|
+
/** Что во что конвертируется. У XLSX путь только один — PDF. */
|
|
15
|
+
export const SUPPORTED = {
|
|
16
|
+
docx: ['pdf', 'md', 'html', 'txt'],
|
|
17
|
+
xlsx: ['pdf'],
|
|
18
|
+
};
|
|
19
|
+
const INPUT_KIND_BY_EXTENSION = {
|
|
20
|
+
'.docx': 'docx',
|
|
21
|
+
'.xlsx': 'xlsx',
|
|
22
|
+
};
|
|
23
|
+
const FORMAT_BY_EXTENSION = {
|
|
24
|
+
'.pdf': 'pdf',
|
|
25
|
+
'.md': 'md',
|
|
26
|
+
'.markdown': 'md',
|
|
27
|
+
'.html': 'html',
|
|
28
|
+
'.htm': 'html',
|
|
29
|
+
'.txt': 'txt',
|
|
30
|
+
'.text': 'txt',
|
|
31
|
+
};
|
|
32
|
+
const FORMATS = ['pdf', 'md', 'html', 'txt'];
|
|
33
|
+
/** Расширение пути в нижнем регистре, вместе с точкой; `''`, если его нет. */
|
|
34
|
+
export function extensionOf(path) {
|
|
35
|
+
const base = path.slice(path.lastIndexOf('/') + 1);
|
|
36
|
+
const dot = base.lastIndexOf('.');
|
|
37
|
+
return dot <= 0 ? '' : base.slice(dot).toLowerCase();
|
|
38
|
+
}
|
|
39
|
+
/** Формат ввода по расширению или `null`, если расширение чужое. */
|
|
40
|
+
export function inputKind(path) {
|
|
41
|
+
return INPUT_KIND_BY_EXTENSION[extensionOf(path)] ?? null;
|
|
42
|
+
}
|
|
43
|
+
/** Формат вывода по расширению или `null`. */
|
|
44
|
+
export function formatFromPath(path) {
|
|
45
|
+
return FORMAT_BY_EXTENSION[extensionOf(path)] ?? null;
|
|
46
|
+
}
|
|
47
|
+
/** Разобрать значение `--format`; регистр не важен. */
|
|
48
|
+
export function parseFormat(value) {
|
|
49
|
+
const normalized = value.replace(/^\./, '').toLowerCase();
|
|
50
|
+
const format = FORMATS.find((candidate) => candidate === normalized);
|
|
51
|
+
if (format === undefined) {
|
|
52
|
+
throw new CliError(`unknown format '${value}': expected one of ${FORMATS.join(', ')}`);
|
|
53
|
+
}
|
|
54
|
+
return format;
|
|
55
|
+
}
|
|
56
|
+
/** Проверить, что пара «вход → выход» поддерживается. */
|
|
57
|
+
export function assertSupported(kind, format) {
|
|
58
|
+
if (!SUPPORTED[kind].includes(format)) {
|
|
59
|
+
throw new CliError(`${kind} → ${format} is not supported: .${kind} can only be written to ${SUPPORTED[kind]
|
|
60
|
+
.map((f) => OUTPUT_EXTENSION[f])
|
|
61
|
+
.join(', ')}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** Заменить расширение пути на расширение формата. */
|
|
65
|
+
export function withExtension(path, format) {
|
|
66
|
+
const extension = OUTPUT_EXTENSION[format];
|
|
67
|
+
const slash = path.lastIndexOf('/');
|
|
68
|
+
const dot = path.lastIndexOf('.');
|
|
69
|
+
return dot > slash ? `${path.slice(0, dot)}${extension}` : `${path}${extension}`;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Программный вход `@meerrec/cli`: то же, что делает bin, но из кода —
|
|
3
|
+
* без разбора `process.argv` и без завершения процесса.
|
|
4
|
+
*/
|
|
5
|
+
export { parseArgs, USAGE, defaultWorkers, type BatchCommand, type Command, type ConvertCommand } from './args.js';
|
|
6
|
+
export { convertFile, type ConvertJob, type ConvertResult } from './convert.js';
|
|
7
|
+
export { CliError } from './errors.js';
|
|
8
|
+
export { expandInputs, globToRegExp } from './expand.js';
|
|
9
|
+
export { assertSupported, extensionOf, formatFromPath, inputKind, OUTPUT_EXTENSION, parseFormat, SUPPORTED, withExtension, type InputKind, type OutputFormat, } from './formats.js';
|
|
10
|
+
export { WorkerPool, type WorkerFactory, type WorkerLike } from './pool.js';
|
|
11
|
+
export { formatBytes, ProgressReporter } from './progress.js';
|
|
12
|
+
export { run } from './run.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AACnH,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,aAAa,EACb,KAAK,SAAS,EACd,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Программный вход `@meerrec/cli`: то же, что делает bin, но из кода —
|
|
3
|
+
* без разбора `process.argv` и без завершения процесса.
|
|
4
|
+
*/
|
|
5
|
+
export { parseArgs, USAGE, defaultWorkers } from './args.js';
|
|
6
|
+
export { convertFile } from './convert.js';
|
|
7
|
+
export { CliError } from './errors.js';
|
|
8
|
+
export { expandInputs, globToRegExp } from './expand.js';
|
|
9
|
+
export { assertSupported, extensionOf, formatFromPath, inputKind, OUTPUT_EXTENSION, parseFormat, SUPPORTED, withExtension, } from './formats.js';
|
|
10
|
+
export { WorkerPool } from './pool.js';
|
|
11
|
+
export { formatBytes, ProgressReporter } from './progress.js';
|
|
12
|
+
export { run } from './run.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAwD,MAAM,WAAW,CAAC;AACnH,OAAO,EAAE,WAAW,EAAuC,MAAM,cAAc,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,aAAa,GAGd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,UAAU,EAAuC,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/pool.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Пул воркеров для `batch`.
|
|
3
|
+
*
|
|
4
|
+
* Каждая задача — конвертация одного файла. Воркеров ровно `size`, очередь
|
|
5
|
+
* общая: воркер, закончивший файл, берёт следующий, поэтому медленный файл
|
|
6
|
+
* не держит остальных. Упавший воркер не роняет прогон — его задача
|
|
7
|
+
* помечается неудачной, а место занимает новый воркер, пока есть работа.
|
|
8
|
+
*/
|
|
9
|
+
import type { ConvertJob, ConvertResult } from './convert.js';
|
|
10
|
+
import type { WorkerRequest, WorkerResponse } from './worker-protocol.js';
|
|
11
|
+
/**
|
|
12
|
+
* Часть API воркера, которой пользуется пул (в тестах — двойник).
|
|
13
|
+
*
|
|
14
|
+
* Модуль не знает о транспорте: `node:worker_threads`, веб-воркер Deno или
|
|
15
|
+
* заглушка теста прячутся за этим интерфейсом.
|
|
16
|
+
*/
|
|
17
|
+
export interface WorkerLike {
|
|
18
|
+
postMessage(message: WorkerRequest): void;
|
|
19
|
+
on(event: 'message', listener: (message: WorkerResponse) => void): void;
|
|
20
|
+
on(event: 'error', listener: (error: Error) => void): void;
|
|
21
|
+
on(event: 'exit', listener: (code: number) => void): void;
|
|
22
|
+
terminate(): Promise<number>;
|
|
23
|
+
}
|
|
24
|
+
export type WorkerFactory = () => WorkerLike;
|
|
25
|
+
export declare class WorkerPool {
|
|
26
|
+
#private;
|
|
27
|
+
readonly size: number;
|
|
28
|
+
constructor(size: number, factory?: WorkerFactory);
|
|
29
|
+
/** Сколько воркеров живо: тесты и диагностика. */
|
|
30
|
+
get live(): number;
|
|
31
|
+
/** Поставить задачу в очередь; ответ придёт по завершении файла. */
|
|
32
|
+
run(job: ConvertJob): Promise<ConvertResult>;
|
|
33
|
+
/** Дождаться завершения всех задач и погасить воркеры. */
|
|
34
|
+
close(): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC1C,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,GAAG,IAAI,CAAC;IACxE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3D,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9B;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC;AAQ7C,qBAAa,UAAU;;IAYnB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EACrB,OAAO,GAAE,aAAiC;IAS5C,kDAAkD;IAClD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,oEAAoE;IACpE,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAW5C,0DAA0D;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAoF7B"}
|