hybridtm 0.7.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +32 -11
  2. package/dist/backupHandler.d.ts +60 -0
  3. package/dist/backupHandler.js +335 -0
  4. package/dist/backupHandler.js.map +1 -0
  5. package/dist/backupReader.d.ts +26 -0
  6. package/dist/backupReader.js +55 -0
  7. package/dist/backupReader.js.map +1 -0
  8. package/dist/batchImporter.d.ts +1 -1
  9. package/dist/batchImporter.js +4 -3
  10. package/dist/batchImporter.js.map +1 -1
  11. package/dist/cli/backupCommand.d.ts +15 -0
  12. package/dist/cli/backupCommand.js +49 -0
  13. package/dist/cli/backupCommand.js.map +1 -0
  14. package/dist/cli/cliUtils.d.ts +2 -1
  15. package/dist/cli/cliUtils.js +23 -10
  16. package/dist/cli/cliUtils.js.map +1 -1
  17. package/dist/cli/createCommand.d.ts +5 -3
  18. package/dist/cli/createCommand.js +33 -28
  19. package/dist/cli/createCommand.js.map +1 -1
  20. package/dist/cli/hybridtmCli.d.ts +1 -1
  21. package/dist/cli/hybridtmCli.js +35 -15
  22. package/dist/cli/hybridtmCli.js.map +1 -1
  23. package/dist/cli/importCommand.d.ts +11 -3
  24. package/dist/cli/importCommand.js +75 -78
  25. package/dist/cli/importCommand.js.map +1 -1
  26. package/dist/cli/matchCommand.d.ts +17 -3
  27. package/dist/cli/matchCommand.js +99 -129
  28. package/dist/cli/matchCommand.js.map +1 -1
  29. package/dist/cli/registryCommands.d.ts +8 -5
  30. package/dist/cli/registryCommands.js +63 -61
  31. package/dist/cli/registryCommands.js.map +1 -1
  32. package/dist/cli/restoreCommand.d.ts +18 -0
  33. package/dist/cli/restoreCommand.js +100 -0
  34. package/dist/cli/restoreCommand.js.map +1 -0
  35. package/dist/cli/serveCommand.d.ts +17 -0
  36. package/dist/cli/serveCommand.js +87 -0
  37. package/dist/cli/serveCommand.js.map +1 -0
  38. package/dist/cli/stopCommand.d.ts +15 -0
  39. package/dist/cli/stopCommand.js +73 -0
  40. package/dist/cli/stopCommand.js.map +1 -0
  41. package/dist/hybridtm.d.ts +11 -4
  42. package/dist/hybridtm.js +308 -89
  43. package/dist/hybridtm.js.map +1 -1
  44. package/dist/hybridtmFactory.d.ts +1 -1
  45. package/dist/hybridtmFactory.js +6 -1
  46. package/dist/hybridtmFactory.js.map +1 -1
  47. package/dist/importOptions.d.ts +5 -5
  48. package/dist/importOptions.js +11 -11
  49. package/dist/importOptions.js.map +1 -1
  50. package/dist/index.d.ts +4 -1
  51. package/dist/index.js +4 -1
  52. package/dist/index.js.map +1 -1
  53. package/dist/langEntry.d.ts +1 -1
  54. package/dist/langEntry.js +1 -1
  55. package/dist/match.d.ts +1 -1
  56. package/dist/match.js +1 -1
  57. package/dist/matchQuality.d.ts +1 -1
  58. package/dist/matchQuality.js +1 -1
  59. package/dist/pendingEntry.d.ts +1 -1
  60. package/dist/pendingEntry.js +1 -1
  61. package/dist/searchFilters.d.ts +1 -1
  62. package/dist/searchFilters.js +1 -1
  63. package/dist/server/hybridtmServer.d.ts +40 -0
  64. package/dist/server/hybridtmServer.js +527 -0
  65. package/dist/server/hybridtmServer.js.map +1 -0
  66. package/dist/server/hybridtmServerMain.d.ts +12 -0
  67. package/dist/server/hybridtmServerMain.js +18 -0
  68. package/dist/server/hybridtmServerMain.js.map +1 -0
  69. package/dist/tmxHandler.d.ts +2 -1
  70. package/dist/tmxHandler.js +13 -7
  71. package/dist/tmxHandler.js.map +1 -1
  72. package/dist/tmxReader.d.ts +1 -1
  73. package/dist/tmxReader.js +4 -4
  74. package/dist/tmxReader.js.map +1 -1
  75. package/dist/utils.d.ts +28 -2
  76. package/dist/utils.js +163 -2
  77. package/dist/utils.js.map +1 -1
  78. package/dist/xliffHandler.d.ts +1 -2
  79. package/dist/xliffHandler.js +34 -30
  80. package/dist/xliffHandler.js.map +1 -1
  81. package/dist/xliffReader.d.ts +1 -1
  82. package/dist/xliffReader.js +4 -4
  83. package/dist/xliffReader.js.map +1 -1
  84. package/package.json +5 -4
@@ -1 +1 @@
1
- {"version":3,"file":"importCommand.js","sourceRoot":"","sources":["../../ts/cli/importCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"importCommand.js","sourceRoot":"","sources":["../../ts/cli/importCommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAY,eAAe,EAAmC,MAAM,aAAa,CAAC;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,MAAM,OAAO,aAAa;IAEtB,MAAM,CAAC,KAAK;QACR,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAc;QAC3B,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;YAClC,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,MAAM,IAAI,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACjE,MAAM,OAAO,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,aAAa,CAAC,KAAK,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,QAAQ,GAAW,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAkB,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAEtE,MAAM,EAAE,GAAyB,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,qBAAqB,GAAG,IAAI,GAAG,oDAAoD,CAAC,CAAC;QACvG,CAAC;QAED,IAAI,CAAC;YACD,MAAM,IAAI,GAAe,aAAa,CAAC,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;YACpG,MAAM,KAAK,GAAW,MAAM,aAAa,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAClF,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,KAAK,GAAG,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,CAAC;gBAAS,CAAC;YACP,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAY,EAAE,QAAgB,EAAE,IAAgB,EAAE,OAAsB;QAC5F,QAAQ,IAAI,EAAE,CAAC;YACX,KAAK,OAAO;gBACR,OAAO,MAAM,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,KAAK,KAAK;gBACN,OAAO,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,KAAK,OAAO;gBACR,OAAO,MAAM,EAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;IACL,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,QAA4B,EAAE,QAAgB;QACnE,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACrE,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,QAAQ,GAAG,mCAAmC,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,GAAG,GAAW,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACjB,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,QAAQ,GAAG,2BAA2B,CAAC,CAAC;IACnG,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,KAAa;QACnC,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,YAAY,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,OAAO,CAAC;IACtG,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,IAAc;QAC5C,MAAM,OAAO,GAAkB;YAC3B,eAAe,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC;SAC1D,CAAC;QACF,MAAM,QAAQ,GAAuB,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,QAAQ,CAAC,IAAI,CAAC,2BAA2B,GAAG,QAAQ,GAAG,sDAAsD,CAAC,CAAC;YACnH,CAAC;YACD,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAChC,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ"}
@@ -2,12 +2,26 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
9
9
  * Contributors:
10
10
  * Maxprograms - initial API and implementation
11
11
  *******************************************************************************/
12
- export declare function usage(): void;
13
- export declare function runMatchCommand(args: string[]): Promise<void>;
12
+ import { HybridTM } from '../index.js';
13
+ export interface MatchResult {
14
+ segmentsProcessed: number;
15
+ segmentsWithMatches: number;
16
+ totalMatches: number;
17
+ outputPath: string;
18
+ }
19
+ export declare class MatchCommand {
20
+ static usage(): void;
21
+ static run(args: string[]): Promise<void>;
22
+ static matchXliffFile(tm: HybridTM, filePath: string, outputPath: string, similarity: number, limit?: number): Promise<MatchResult>;
23
+ static resolveOutputPath(explicit: string | undefined, inputPath: string): string;
24
+ private static collectUnits;
25
+ private static declareMatchesNamespace;
26
+ private static parseIntOption;
27
+ }
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -10,58 +10,75 @@
10
10
  * Maxprograms - initial API and implementation
11
11
  *******************************************************************************/
12
12
  import { basename, dirname, extname, join } from "node:path";
13
- import { XliffGroup, XliffMatch, XliffMatches, XliffMrk, XliffParser, XliffPc, XliffSegment, XliffSource, XliffTarget } from 'typesxliff';
13
+ import { XliffGroup, XliffMatches, XliffParser, XliffSegment } from 'typesxliff';
14
14
  import { HybridTMFactory, Utils } from '../index.js';
15
15
  import { CliUtils } from './cliUtils.js';
16
- const MATCHES_NAMESPACE = 'urn:oasis:names:tc:xliff:matches:2.0';
17
- const DEFAULT_PREFIX = 'mtc';
18
- const DEFAULT_LIMIT = 5;
19
- const DEFAULT_SIMILARITY = 60;
20
- export function usage() {
21
- console.log('Usage: hybridtm match -name <name> -file <path> [-output <path>]');
22
- console.log(' [-limit N] [-similarity N] [-all]');
23
- console.log();
24
- console.log(' -name TM instance to search against (required)');
25
- console.log(' -file XLIFF file to enrich with match candidates (required)');
26
- console.log(' -output Output path (default: <file-without-ext>.matches.xlf)');
27
- console.log(' -limit Max candidates per segment (default: ' + DEFAULT_LIMIT + ')');
28
- console.log(' -similarity Minimum hybrid match score 0-100 (default: ' + DEFAULT_SIMILARITY + ')');
29
- console.log(' -all Consider every segment, not just untranslated ones');
30
- console.log();
31
- console.log('Never modifies <target>. Adds spec Translation Candidates module');
32
- console.log('(<mtc:matches>/<mtc:match>) entries and writes the result to a new file.');
33
- }
34
- export async function runMatchCommand(args) {
35
- if (CliUtils.hasFlag(args, '-help')) {
36
- usage();
37
- return;
38
- }
39
- const name = CliUtils.getFlag(args, '-name');
40
- const rawFile = CliUtils.getFlag(args, '-file');
41
- if (!name || !rawFile) {
42
- usage();
43
- CliUtils.fail('Missing required -name or -file.');
16
+ export class MatchCommand {
17
+ static usage() {
18
+ console.log('Usage: hybridtm match -name <name> -file <path> -similarity N [-output <path>]');
19
+ console.log(' [-limit N]');
20
+ console.log();
21
+ console.log(' -name TM instance to search against (required)');
22
+ console.log(' -file XLIFF file to enrich with match candidates (required)');
23
+ console.log(' -similarity Minimum hybrid match score 0-100 (required)');
24
+ console.log(' -output Output path (default: <file-without-ext>.matches.xlf)');
25
+ console.log(' -limit Max candidates per segment (default: HybridTM.semanticTranslationSearch\'s own default)');
26
+ console.log();
44
27
  }
45
- const filePath = CliUtils.requireExistingFile(rawFile, 'XLIFF file');
46
- const limit = parsePositiveInt(CliUtils.getFlag(args, '-limit'), DEFAULT_LIMIT, '-limit');
47
- const similarity = parsePositiveInt(CliUtils.getFlag(args, '-similarity'), DEFAULT_SIMILARITY, '-similarity');
48
- const processAll = CliUtils.hasFlag(args, '-all');
49
- const outputPath = resolveOutputPath(CliUtils.getFlag(args, '-output'), filePath);
50
- const tm = HybridTMFactory.getInstance(name);
51
- if (!tm) {
52
- CliUtils.fail('No instance named "' + name + '". Run "hybridtm create" or "hybridtm list" first.');
28
+ static async run(args) {
29
+ if (CliUtils.hasFlag(args, '-help')) {
30
+ MatchCommand.usage();
31
+ return;
32
+ }
33
+ const name = CliUtils.getFlag(args, '-name');
34
+ const rawFile = CliUtils.getFlag(args, '-file');
35
+ const rawSimilarity = CliUtils.getFlag(args, '-similarity');
36
+ if (!name || !rawFile || !rawSimilarity) {
37
+ MatchCommand.usage();
38
+ CliUtils.fail('Missing required -name, -file, or -similarity.');
39
+ }
40
+ const filePath = CliUtils.requireExistingFile(rawFile, 'XLIFF file');
41
+ const rawLimit = CliUtils.getFlag(args, '-limit');
42
+ const limit = rawLimit !== undefined ? MatchCommand.parseIntOption(rawLimit, '-limit', 1) : undefined;
43
+ const similarity = MatchCommand.parseIntOption(rawSimilarity, '-similarity', 0, 100);
44
+ const outputPath = MatchCommand.resolveOutputPath(CliUtils.getFlag(args, '-output'), filePath);
45
+ const tm = HybridTMFactory.getInstance(name);
46
+ if (!tm) {
47
+ CliUtils.fail('No instance named "' + name + '". Run "hybridtm create" or "hybridtm list" first.');
48
+ }
49
+ try {
50
+ const result = await MatchCommand.matchXliffFile(tm, filePath, outputPath, similarity, limit);
51
+ console.log('Segments processed: ' + result.segmentsProcessed);
52
+ console.log('Segments with matches: ' + result.segmentsWithMatches);
53
+ console.log('Total match candidates: ' + result.totalMatches);
54
+ console.log('Output: ' + result.outputPath);
55
+ }
56
+ catch (error) {
57
+ CliUtils.fail(error instanceof Error ? error.message : String(error));
58
+ }
59
+ finally {
60
+ await tm.close();
61
+ }
53
62
  }
54
- try {
63
+ static async matchXliffFile(tm, filePath, outputPath, similarity, limit) {
55
64
  const parser = new XliffParser();
56
65
  parser.parseFile(filePath);
57
66
  const document = parser.getXliffDocument();
58
67
  if (!document) {
59
- CliUtils.fail('Unable to parse "' + filePath + '".');
68
+ throw new Error('Unable to parse "' + filePath + '".');
69
+ }
70
+ const rawSrcLang = document.getSrcLang();
71
+ const srcLang = Utils.normalizeLanguage(rawSrcLang);
72
+ if (!srcLang) {
73
+ throw new Error('"' + filePath + '" has an invalid @srcLang value "' + rawSrcLang + '".');
60
74
  }
61
- const srcLang = document.getSrcLang();
62
- const tgtLang = document.getTrgLang();
75
+ const rawTgtLang = document.getTrgLang();
76
+ if (!rawTgtLang) {
77
+ throw new Error('"' + filePath + '" is missing @trgLang; nothing to match against.');
78
+ }
79
+ const tgtLang = Utils.normalizeLanguage(rawTgtLang);
63
80
  if (!tgtLang) {
64
- CliUtils.fail('"' + filePath + '" is missing @trgLang; nothing to match against.');
81
+ throw new Error('"' + filePath + '" has an invalid @trgLang value "' + rawTgtLang + '".');
65
82
  }
66
83
  let segmentsProcessed = 0;
67
84
  let segmentsWithMatches = 0;
@@ -69,34 +86,36 @@ export async function runMatchCommand(args) {
69
86
  let usedModule = false;
70
87
  for (const file of document.getFiles()) {
71
88
  const fileId = file.getId();
72
- for (const unit of collectUnits(file.getEntries())) {
89
+ for (const unit of MatchCommand.collectUnits(file.getEntries())) {
73
90
  const unitMatches = [];
74
91
  const unitId = unit.getId();
92
+ // shared so <ph>/<data> ids stay unique across the whole unit
93
+ const dataCounter = { value: 0 };
75
94
  for (const item of unit.getItems()) {
76
95
  if (!(item instanceof XliffSegment)) {
77
96
  continue;
78
97
  }
79
- if (!processAll && !needsMatches(item)) {
98
+ if (item.getState() === 'final') {
80
99
  continue;
81
100
  }
82
101
  const source = item.getSource();
83
- const pureSource = source ? getPureText(source.getContent()) : '';
102
+ const pureSource = source ? Utils.getPureText(source.toElement()) : '';
84
103
  if (pureSource.trim().length === 0) {
85
104
  continue;
86
105
  }
87
106
  segmentsProcessed++;
88
- const results = await tm.semanticTranslationSearch(pureSource, srcLang, tgtLang, similarity, limit);
107
+ const results = Utils.dedupeMatches(await tm.semanticTranslationSearch(pureSource, srcLang, tgtLang, similarity, limit));
89
108
  if (results.length === 0) {
90
109
  continue;
91
110
  }
92
111
  segmentsWithMatches++;
93
112
  totalMatches += results.length;
94
- const ref = '#/f=' + fileId + '/u=' + unitId + (item.getId() ? '/' + item.getId() : '');
95
- results.forEach((match) => unitMatches.push(buildXliffMatch(ref, match)));
113
+ const ref = item.getId() ? '#' + item.getId() : '#/f=' + fileId + '/u=' + unitId;
114
+ results.forEach((match) => unitMatches.push(Utils.buildXliffMatch(ref, match, dataCounter)));
96
115
  }
97
116
  if (unitMatches.length > 0) {
98
117
  const matches = new XliffMatches();
99
- matches.setNamespacePrefix(DEFAULT_PREFIX);
118
+ matches.setNamespacePrefix(Utils.MTC_PREFIX);
100
119
  unitMatches.forEach((match) => matches.addMatch(match));
101
120
  unit.setMatches(matches);
102
121
  usedModule = true;
@@ -104,92 +123,43 @@ export async function runMatchCommand(args) {
104
123
  }
105
124
  }
106
125
  if (usedModule) {
107
- declareMatchesNamespace(document);
126
+ MatchCommand.declareMatchesNamespace(document);
108
127
  }
109
128
  document.writeDocument(outputPath, true);
110
- console.log('Segments processed: ' + segmentsProcessed);
111
- console.log('Segments with matches: ' + segmentsWithMatches);
112
- console.log('Total match candidates: ' + totalMatches);
113
- console.log('Output: ' + outputPath);
114
- }
115
- catch (error) {
116
- CliUtils.fail(error instanceof Error ? error.message : String(error));
129
+ return { segmentsProcessed, segmentsWithMatches, totalMatches, outputPath };
117
130
  }
118
- finally {
119
- await tm.close();
120
- }
121
- }
122
- function collectUnits(entries) {
123
- const units = [];
124
- entries.forEach((entry) => {
125
- if (entry instanceof XliffGroup) {
126
- units.push(...collectUnits(entry.getEntries()));
127
- }
128
- else {
129
- units.push(entry);
131
+ static resolveOutputPath(explicit, inputPath) {
132
+ if (explicit) {
133
+ return CliUtils.resolvePath(explicit);
130
134
  }
131
- });
132
- return units;
133
- }
134
- function needsMatches(segment) {
135
- const state = segment.getState();
136
- if (state === undefined || state === 'initial') {
137
- return true;
138
- }
139
- const target = segment.getTarget();
140
- if (!target) {
141
- return true;
142
- }
143
- return getPureText(target.getContent()).trim().length === 0;
144
- }
145
- function buildXliffMatch(ref, match) {
146
- const xliffMatch = new XliffMatch(ref);
147
- xliffMatch.setNamespacePrefix(DEFAULT_PREFIX);
148
- xliffMatch.setType('tm');
149
- xliffMatch.setOrigin(match.origin);
150
- xliffMatch.setSimilarity(String(match.similarity));
151
- const source = new XliffSource();
152
- source.addText(Utils.getPureText(match.source));
153
- xliffMatch.setSource(source);
154
- const target = new XliffTarget();
155
- target.addText(Utils.getPureText(match.target));
156
- xliffMatch.setTarget(target);
157
- return xliffMatch;
158
- }
159
- function declareMatchesNamespace(document) {
160
- const alreadyDeclared = document.getOtherAttributes().some((attribute) => attribute.getName().startsWith('xmlns:') && attribute.getValue() === MATCHES_NAMESPACE);
161
- if (!alreadyDeclared) {
162
- document.setOtherAttribute('xmlns:' + DEFAULT_PREFIX, MATCHES_NAMESPACE);
163
- }
164
- }
165
- function resolveOutputPath(explicit, inputPath) {
166
- if (explicit) {
167
- return CliUtils.resolvePath(explicit);
135
+ const ext = extname(inputPath);
136
+ const stem = basename(inputPath, ext);
137
+ return join(dirname(inputPath), stem + '.matches.xlf');
168
138
  }
169
- const ext = extname(inputPath);
170
- const stem = basename(inputPath, ext);
171
- return join(dirname(inputPath), stem + '.matches.xlf');
172
- }
173
- function parsePositiveInt(raw, fallback, flag) {
174
- if (raw === undefined) {
175
- return fallback;
176
- }
177
- const parsed = Number(raw);
178
- if (!Number.isInteger(parsed) || parsed <= 0) {
179
- CliUtils.fail('Invalid ' + flag + ' value "' + raw + '"; expected a positive integer.');
139
+ static collectUnits(entries) {
140
+ const units = [];
141
+ entries.forEach((entry) => {
142
+ if (entry instanceof XliffGroup) {
143
+ units.push(...MatchCommand.collectUnits(entry.getEntries()));
144
+ }
145
+ else {
146
+ units.push(entry);
147
+ }
148
+ });
149
+ return units;
180
150
  }
181
- return parsed;
182
- }
183
- function getPureText(content) {
184
- let text = '';
185
- content.forEach((item) => {
186
- if (typeof item === 'string') {
187
- text += item;
151
+ static declareMatchesNamespace(document) {
152
+ if (!Utils.isNamespaceDeclared(document.getOtherAttributes(), Utils.MATCHES_NAMESPACE)) {
153
+ document.setOtherAttribute('xmlns:' + Utils.MTC_PREFIX, Utils.MATCHES_NAMESPACE);
188
154
  }
189
- else if (item instanceof XliffPc || item instanceof XliffMrk) {
190
- text += getPureText(item.getContent());
155
+ }
156
+ static parseIntOption(raw, flag, min, max) {
157
+ const parsed = Number(raw);
158
+ if (!Number.isInteger(parsed) || parsed < min || (max !== undefined && parsed > max)) {
159
+ const range = max !== undefined ? 'an integer between ' + min + ' and ' + max : 'an integer of at least ' + min;
160
+ CliUtils.fail('Invalid ' + flag + ' value "' + raw + '"; expected ' + range + '.');
191
161
  }
192
- });
193
- return text;
162
+ return parsed;
163
+ }
194
164
  }
195
165
  //# sourceMappingURL=matchCommand.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"matchCommand.js","sourceRoot":"","sources":["../../ts/cli/matchCommand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"matchCommand.js","sourceRoot":"","sources":["../../ts/cli/matchCommand.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,17 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
9
9
  * Contributors:
10
10
  * Maxprograms - initial API and implementation
11
11
  *******************************************************************************/
12
- export declare function listUsage(): void;
13
- export declare function runListCommand(args: string[]): Promise<void>;
14
- export declare function removeUsage(): void;
15
- export declare function runRemoveCommand(args: string[]): Promise<void>;
12
+ export declare class RegistryCommands {
13
+ static listUsage(): void;
14
+ static runList(args: string[]): Promise<void>;
15
+ static removeUsage(): void;
16
+ static runRemove(args: string[]): Promise<void>;
17
+ private static confirm;
18
+ }
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2025-2026 Maxprograms.
3
3
  *
4
4
  * This program and the accompanying materials
5
- * are made available under the terms of the Eclipse License 1.0
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
6
  * which accompanies this distribution, and is available at
7
7
  * https://www.eclipse.org/org/documents/epl-v10.html
8
8
  *
@@ -12,72 +12,74 @@
12
12
  import { createInterface } from 'node:readline/promises';
13
13
  import { HybridTMFactory } from '../index.js';
14
14
  import { CliUtils } from './cliUtils.js';
15
- export function listUsage() {
16
- console.log('Usage: hybridtm list');
17
- }
18
- export async function runListCommand(args) {
19
- if (CliUtils.hasFlag(args, '-help')) {
20
- listUsage();
21
- return;
22
- }
23
- const instances = HybridTMFactory.listInstances();
24
- if (instances.length === 0) {
25
- console.log('No instances registered. Run "hybridtm create" to make one.');
26
- return;
27
- }
28
- instances.forEach((instance) => {
29
- console.log(instance.name + '\t' + instance.filePath + '\t' + instance.modelName + '\t' + instance.createdAt);
30
- });
31
- }
32
- export function removeUsage() {
33
- console.log('Usage: hybridtm remove -name <name> [-force]');
34
- console.log();
35
- console.log(' -name Instance to remove (required)');
36
- console.log(' -force Skip the interactive confirmation prompt (for scripts/automation)');
37
- }
38
- export async function runRemoveCommand(args) {
39
- if (CliUtils.hasFlag(args, '-help')) {
40
- removeUsage();
41
- return;
15
+ export class RegistryCommands {
16
+ static listUsage() {
17
+ console.log('Usage: hybridtm list');
42
18
  }
43
- const name = CliUtils.getFlag(args, '-name');
44
- if (!name) {
45
- removeUsage();
46
- CliUtils.fail('Missing required -name.');
47
- }
48
- const instances = HybridTMFactory.listInstances();
49
- const metadata = instances.find((instance) => instance.name === name);
50
- if (!metadata) {
51
- const hint = instances.length > 0
52
- ? ' Registered instances: ' + instances.map((instance) => '"' + instance.name + '"').join(', ') + '.'
53
- : ' No instances are registered yet.';
54
- CliUtils.fail('No instance named "' + name + '".' + hint);
55
- }
56
- if (!CliUtils.hasFlag(args, '-force')) {
57
- console.log('About to permanently delete instance "' + name + '" at ' + metadata.filePath + ' (model: ' + metadata.modelName + ').');
58
- console.log('This cannot be undone.');
59
- const confirmed = await confirm('Type "yes" to confirm: ');
60
- if (!confirmed) {
61
- console.log('Aborted; no changes made.');
19
+ static async runList(args) {
20
+ if (CliUtils.hasFlag(args, '-help')) {
21
+ RegistryCommands.listUsage();
62
22
  return;
63
23
  }
24
+ const instances = HybridTMFactory.listInstances();
25
+ if (instances.length === 0) {
26
+ console.log('No instances registered. Run "hybridtm create" to make one.');
27
+ return;
28
+ }
29
+ instances.forEach((instance) => {
30
+ console.log(instance.name + '\t' + instance.filePath + '\t' + instance.modelName + '\t' + instance.createdAt);
31
+ });
64
32
  }
65
- try {
66
- HybridTMFactory.removeInstance(name);
67
- console.log('Removed instance "' + name + '".');
68
- }
69
- catch (error) {
70
- CliUtils.fail(error instanceof Error ? error.message : String(error));
33
+ static removeUsage() {
34
+ console.log('Usage: hybridtm remove -name <name> [-force]');
35
+ console.log();
36
+ console.log(' -name Instance to remove (required)');
37
+ console.log(' -force Skip the interactive confirmation prompt (for scripts/automation)');
71
38
  }
72
- }
73
- async function confirm(promptText) {
74
- const rl = createInterface({ input: process.stdin, output: process.stdout });
75
- try {
76
- const answer = await rl.question(promptText);
77
- return answer.trim().toLowerCase() === 'yes';
39
+ static async runRemove(args) {
40
+ if (CliUtils.hasFlag(args, '-help')) {
41
+ RegistryCommands.removeUsage();
42
+ return;
43
+ }
44
+ const name = CliUtils.getFlag(args, '-name');
45
+ if (!name) {
46
+ RegistryCommands.removeUsage();
47
+ CliUtils.fail('Missing required -name.');
48
+ }
49
+ const instances = HybridTMFactory.listInstances();
50
+ const metadata = instances.find((instance) => instance.name === name);
51
+ if (!metadata) {
52
+ const hint = instances.length > 0
53
+ ? ' Registered instances: ' + instances.map((instance) => '"' + instance.name + '"').join(', ') + '.'
54
+ : ' No instances are registered yet.';
55
+ CliUtils.fail('No instance named "' + name + '".' + hint);
56
+ }
57
+ if (!CliUtils.hasFlag(args, '-force')) {
58
+ console.log('About to permanently delete instance "' + name + '" at ' + metadata.filePath + ' (model: ' + metadata.modelName + ').');
59
+ console.log('This cannot be undone.');
60
+ const confirmed = await RegistryCommands.confirm('Type "yes" to confirm: ');
61
+ if (!confirmed) {
62
+ console.log('Aborted; no changes made.');
63
+ return;
64
+ }
65
+ }
66
+ try {
67
+ HybridTMFactory.removeInstance(name);
68
+ console.log('Removed instance "' + name + '".');
69
+ }
70
+ catch (error) {
71
+ CliUtils.fail(error instanceof Error ? error.message : String(error));
72
+ }
78
73
  }
79
- finally {
80
- rl.close();
74
+ static async confirm(promptText) {
75
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
76
+ try {
77
+ const answer = await rl.question(promptText);
78
+ return answer.trim().toLowerCase() === 'yes';
79
+ }
80
+ finally {
81
+ rl.close();
82
+ }
81
83
  }
82
84
  }
83
85
  //# sourceMappingURL=registryCommands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registryCommands.js","sourceRoot":"","sources":["../../ts/cli/registryCommands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registryCommands.js","sourceRoot":"","sources":["../../ts/cli/registryCommands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /*******************************************************************************
2
+ * Copyright (c) 2025-2026 Maxprograms.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License v1.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/org/documents/epl-v10.html
8
+ *
9
+ * Contributors:
10
+ * Maxprograms - initial API and implementation
11
+ *******************************************************************************/
12
+ export declare class RestoreCommand {
13
+ static usage(): void;
14
+ static run(args: string[]): Promise<void>;
15
+ private static getExistingTargetInstance;
16
+ private static createTargetInstance;
17
+ private static peekBackupHeader;
18
+ }