hybridtm 0.4.0 → 0.6.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 (112) hide show
  1. package/dist/hybridtm.js +1 -1
  2. package/dist/hybridtm.js.map +1 -1
  3. package/dist/match.d.ts +7 -2
  4. package/dist/match.js +14 -2
  5. package/dist/match.js.map +1 -1
  6. package/package.json +13 -7
  7. package/dist/batchimporter.d.ts +0 -22
  8. package/dist/batchimporter.js +0 -203
  9. package/dist/constants.d.ts +0 -15
  10. package/dist/constants.js +0 -16
  11. package/dist/constants.js.map +0 -1
  12. package/dist/debug-progress.d.ts +0 -12
  13. package/dist/debug-progress.js +0 -49
  14. package/dist/debug-progress.js.map +0 -1
  15. package/dist/ngramIndex.d.ts +0 -31
  16. package/dist/ngramIndex.js +0 -132
  17. package/dist/ngramIndex.js.map +0 -1
  18. package/dist/ngrams.d.ts +0 -21
  19. package/dist/ngrams.js +0 -73
  20. package/dist/ngrams.js.map +0 -1
  21. package/dist/package.json +0 -35
  22. package/dist/progressProvider.d.ts +0 -17
  23. package/dist/progressProvider.js +0 -14
  24. package/dist/progressProvider.js.map +0 -1
  25. package/dist/simplexlifftest.d.ts +0 -1
  26. package/dist/simplexlifftest.js +0 -23
  27. package/dist/simplexlifftest.js.map +0 -1
  28. package/dist/test-import.d.ts +0 -12
  29. package/dist/test-import.js +0 -101
  30. package/dist/test-import.js.map +0 -1
  31. package/dist/test-progress-fix.d.ts +0 -1
  32. package/dist/test-progress-fix.js +0 -32
  33. package/dist/test-progress-fix.js.map +0 -1
  34. package/dist/test-progress.d.ts +0 -12
  35. package/dist/test-progress.js +0 -32
  36. package/dist/test-progress.js.map +0 -1
  37. package/dist/tests/vectorSimilarityComparison.d.ts +0 -12
  38. package/dist/tests/vectorSimilarityComparison.js +0 -153
  39. package/dist/tests/vectorSimilarityComparison.js.map +0 -1
  40. package/dist/tmxreader.d.ts +0 -25
  41. package/dist/tmxreader.js +0 -51
  42. package/dist/tmxtest.d.ts +0 -16
  43. package/dist/tmxtest.js +0 -316
  44. package/dist/tmxtest.js.map +0 -1
  45. package/dist/ts/batchImporter.js.map +0 -1
  46. package/dist/ts/hybridtm.d.ts +0 -67
  47. package/dist/ts/hybridtm.js +0 -932
  48. package/dist/ts/hybridtm.js.map +0 -1
  49. package/dist/ts/hybridtmFactory.d.ts +0 -43
  50. package/dist/ts/hybridtmFactory.js +0 -165
  51. package/dist/ts/hybridtmFactory.js.map +0 -1
  52. package/dist/ts/importOptions.d.ts +0 -21
  53. package/dist/ts/importOptions.js +0 -24
  54. package/dist/ts/importOptions.js.map +0 -1
  55. package/dist/ts/index.d.ts +0 -25
  56. package/dist/ts/index.js +0 -22
  57. package/dist/ts/index.js.map +0 -1
  58. package/dist/ts/langEntry.d.ts +0 -64
  59. package/dist/ts/langEntry.js +0 -13
  60. package/dist/ts/langEntry.js.map +0 -1
  61. package/dist/ts/match.d.ts +0 -22
  62. package/dist/ts/match.js +0 -38
  63. package/dist/ts/match.js.map +0 -1
  64. package/dist/ts/matchQuality.d.ts +0 -16
  65. package/dist/ts/matchQuality.js +0 -83
  66. package/dist/ts/matchQuality.js.map +0 -1
  67. package/dist/ts/pendingEntry.d.ts +0 -24
  68. package/dist/ts/pendingEntry.js +0 -13
  69. package/dist/ts/pendingEntry.js.map +0 -1
  70. package/dist/ts/searchFilters.d.ts +0 -24
  71. package/dist/ts/searchFilters.js +0 -13
  72. package/dist/ts/searchFilters.js.map +0 -1
  73. package/dist/ts/tmxHandler.d.ts +0 -61
  74. package/dist/ts/tmxHandler.js +0 -347
  75. package/dist/ts/tmxHandler.js.map +0 -1
  76. package/dist/ts/tmxReader.js.map +0 -1
  77. package/dist/ts/tmxtest.d.ts +0 -16
  78. package/dist/ts/tmxtest.js +0 -316
  79. package/dist/ts/tmxtest.js.map +0 -1
  80. package/dist/ts/utils.d.ts +0 -17
  81. package/dist/ts/utils.js +0 -49
  82. package/dist/ts/utils.js.map +0 -1
  83. package/dist/ts/xliffHandler.d.ts +0 -67
  84. package/dist/ts/xliffHandler.js +0 -522
  85. package/dist/ts/xliffHandler.js.map +0 -1
  86. package/dist/ts/xliffReader.js.map +0 -1
  87. package/dist/ts/xlifftest.d.ts +0 -54
  88. package/dist/ts/xlifftest.js +0 -245
  89. package/dist/ts/xlifftest.js.map +0 -1
  90. package/dist/vectorSimilarityTester.d.ts +0 -56
  91. package/dist/vectorSimilarityTester.js +0 -164
  92. package/dist/vectorSimilarityTester.js.map +0 -1
  93. package/dist/xliffreader.d.ts +0 -25
  94. package/dist/xliffreader.js +0 -50
  95. package/dist/xlifftest.d.ts +0 -54
  96. package/dist/xlifftest.js +0 -245
  97. package/dist/xlifftest.js.map +0 -1
  98. /package/dist/{ts/batchImporter.d.ts → batchImporter.d.ts} +0 -0
  99. /package/dist/{ts/batchImporter.js → batchImporter.js} +0 -0
  100. /package/dist/{batchimporter.js.map → batchImporter.js.map} +0 -0
  101. /package/dist/{tmxhandler.d.ts → tmxHandler.d.ts} +0 -0
  102. /package/dist/{tmxhandler.js → tmxHandler.js} +0 -0
  103. /package/dist/{tmxhandler.js.map → tmxHandler.js.map} +0 -0
  104. /package/dist/{ts/tmxReader.d.ts → tmxReader.d.ts} +0 -0
  105. /package/dist/{ts/tmxReader.js → tmxReader.js} +0 -0
  106. /package/dist/{tmxreader.js.map → tmxReader.js.map} +0 -0
  107. /package/dist/{xliffhandler.d.ts → xliffHandler.d.ts} +0 -0
  108. /package/dist/{xliffhandler.js → xliffHandler.js} +0 -0
  109. /package/dist/{xliffhandler.js.map → xliffHandler.js.map} +0 -0
  110. /package/dist/{ts/xliffReader.d.ts → xliffReader.d.ts} +0 -0
  111. /package/dist/{ts/xliffReader.js → xliffReader.js} +0 -0
  112. /package/dist/{xliffreader.js.map → xliffReader.js.map} +0 -0
@@ -1,153 +0,0 @@
1
- "use strict";
2
- /*******************************************************************************
3
- * Copyright (c) 2025 Maxprograms.
4
- *
5
- * This program and the accompanying materials
6
- * are made available under the terms of the Eclipse Public License 1.0
7
- * which accompanies this distribution, and is available at
8
- * https://www.eclipse.org/org/documents/epl-v10.html
9
- *
10
- * Contributors:
11
- * Maxprograms - initial API and implementation
12
- *******************************************************************************/
13
- Object.defineProperty(exports, "__esModule", { value: true });
14
- const lancedb_1 = require("@lancedb/lancedb");
15
- const node_path_1 = require("node:path");
16
- const hybridtm_1 = require("../hybridtm");
17
- const hybridtmFactory_1 = require("../hybridtmFactory");
18
- const FRIENDLY_NAME = 'XLIFF Test TM';
19
- const DB_PATH = 'my-tm.lancedb';
20
- const DEFAULT_LIMIT = 5;
21
- const EVALUATION_QUERIES = [
22
- { query: 'Generate XLIFF files and optional word counts', src: 'en', tgt: 'es', similarity: 70 },
23
- { query: 'Use the following parameters to import a translated XLIFF file', src: 'en', tgt: 'es', similarity: 65 },
24
- { query: 'Select the Ignore Inline Tag Errors check box', src: 'en', tgt: 'es', similarity: 60 },
25
- { query: 'Select inline tag errors ignore', src: 'en', tgt: 'es', similarity: 55 },
26
- { query: 'Reuse ICE matches to translate reused content', src: 'en', tgt: 'es', similarity: 55 },
27
- { query: 'Type the folder for XLIFF output', src: 'en', tgt: 'es', similarity: 50 }
28
- ];
29
- function cosineSimilarity(vecA, vecB) {
30
- if (vecA.length !== vecB.length) {
31
- throw new Error('Vectors must have the same length');
32
- }
33
- let dotProduct = 0;
34
- let normA = 0;
35
- let normB = 0;
36
- for (let i = 0; i < vecA.length; i++) {
37
- const a = vecA[i];
38
- const b = vecB[i];
39
- dotProduct += a * b;
40
- normA += a * a;
41
- normB += b * b;
42
- }
43
- if (normA === 0 || normB === 0) {
44
- return 0;
45
- }
46
- return dotProduct / (Math.sqrt(normA) * Math.sqrt(normB));
47
- }
48
- async function acquireInstance(factory) {
49
- const instances = await factory.listInstances();
50
- const existing = instances.find(function (metadata) {
51
- return metadata.name === FRIENDLY_NAME;
52
- });
53
- if (!existing) {
54
- console.log('Creating translation memory for analysis: ' + FRIENDLY_NAME);
55
- const tm = await factory.createInstance(FRIENDLY_NAME, DB_PATH, hybridtm_1.HybridTM.SPEED_MODEL);
56
- return { tm, isNew: true };
57
- }
58
- const tm = await factory.openInstance(existing.name);
59
- return { tm, isNew: false };
60
- }
61
- function asNumberArray(vector) {
62
- if (Array.isArray(vector)) {
63
- return vector.map((value) => Number(value));
64
- }
65
- if (vector instanceof Float32Array || vector instanceof Float64Array) {
66
- return Array.from(vector);
67
- }
68
- if (vector && typeof vector === 'object' && 'toArray' in vector && typeof vector.toArray === 'function') {
69
- return vector.toArray();
70
- }
71
- throw new Error('Unsupported vector format: ' + String(vector));
72
- }
73
- async function getTargetText(table, sourceEntry, targetLang) {
74
- const targetId = sourceEntry.fileId + ':' + sourceEntry.unitId + ':' + targetLang;
75
- const candidates = (await table
76
- .query()
77
- .where('id = ' + '\'' + targetId.replace(/'/g, "''") + '\'')
78
- .toArray());
79
- if (candidates.length === 0) {
80
- return null;
81
- }
82
- return candidates[0].pureText ?? null;
83
- }
84
- async function ensureData(factory, tm, isNew) {
85
- if (!isNew) {
86
- return;
87
- }
88
- console.log('Importing sample XLIFF data into analysis TM...');
89
- await tm.importXLIFF('/Users/rmraya/Documents/GitHub/FluentaPRO/Localization/fluenta_es.ditamap.xlf');
90
- }
91
- async function analyzeQueries() {
92
- const factory = new hybridtmFactory_1.HybridTMFactory();
93
- const { tm, isNew } = await acquireInstance(factory);
94
- await ensureData(factory, tm, isNew);
95
- const dbTable = await (await (0, lancedb_1.connect)(DB_PATH)).openTable('langEntry');
96
- const embed = async function (text) {
97
- const generator = tm;
98
- return generator.generateEmbedding(text);
99
- };
100
- console.log('============================================================');
101
- console.log('Vector similarity analysis (Cosine only)');
102
- console.log('Database path: ' + (0, node_path_1.resolve)(DB_PATH));
103
- console.log('============================================================');
104
- for (const spec of EVALUATION_QUERIES) {
105
- console.log('');
106
- console.log('Query: "' + spec.query + '" [' + spec.src + ' -> ' + spec.tgt + ']');
107
- const queryEmbedding = await embed(spec.query);
108
- const candidates = (await dbTable
109
- .vectorSearch(queryEmbedding)
110
- .limit(DEFAULT_LIMIT)
111
- .toArray());
112
- const sourceCandidates = candidates.filter(function (candidate) {
113
- return candidate.language === spec.src;
114
- });
115
- if (sourceCandidates.length === 0) {
116
- console.log(' (no vector candidates for source language)');
117
- continue;
118
- }
119
- for (let index = 0; index < sourceCandidates.length; index++) {
120
- const candidate = sourceCandidates[index];
121
- if (!candidate.vector) {
122
- continue;
123
- }
124
- const candidateVector = asNumberArray(candidate.vector);
125
- const cosine = cosineSimilarity(queryEmbedding, candidateVector);
126
- const cosinePercent = Math.round(cosine * 100);
127
- const distance = typeof candidate._distance === 'number' ? ' distance=' + candidate._distance.toFixed(6) : '';
128
- const targetText = await getTargetText(dbTable, candidate, spec.tgt);
129
- console.log(' #' + (index + 1) +
130
- ' cosine=' + cosinePercent.toString().padStart(3, ' ') + '%'
131
- + distance);
132
- console.log(' source: ' + candidate.pureText);
133
- if (targetText) {
134
- console.log(' target: ' + targetText);
135
- }
136
- }
137
- }
138
- await tm.close();
139
- }
140
- async function main() {
141
- try {
142
- await analyzeQueries();
143
- console.log('\nAnalysis complete.');
144
- }
145
- catch (err) {
146
- console.error('Vector similarity analysis failed:', err);
147
- process.exitCode = 1;
148
- }
149
- }
150
- if (require.main === module) {
151
- void main();
152
- }
153
- //# sourceMappingURL=vectorSimilarityComparison.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"vectorSimilarityComparison.js","sourceRoot":"","sources":["../../ts/tests/vectorSimilarityComparison.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
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 License 1.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
- import { SAXParser } from "typesxml";
13
- import { ImportOptions } from './importOptions.js';
14
- import { TMXHandler } from './tmxHandler.js';
15
- export declare class TMXReader {
16
- parser: SAXParser;
17
- filePath: string;
18
- handler: TMXHandler;
19
- jsonlTempPath: string;
20
- private readonly options;
21
- constructor(filePath: string, options?: ImportOptions);
22
- parse(): Promise<void>;
23
- getTempFilePath(): string;
24
- getEntryCount(): number;
25
- }
package/dist/tmxreader.js DELETED
@@ -1,51 +0,0 @@
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 License 1.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
- import { tmpdir } from "node:os";
13
- import { basename, join } from 'node:path';
14
- import { SAXParser } from "typesxml";
15
- import { DEFAULT_IMPORT_OPTIONS, resolveImportOptions } from './importOptions.js';
16
- import { TMXHandler } from './tmxHandler.js';
17
- export class TMXReader {
18
- parser;
19
- filePath;
20
- handler;
21
- jsonlTempPath;
22
- options;
23
- constructor(filePath, options = DEFAULT_IMPORT_OPTIONS) {
24
- this.filePath = filePath;
25
- this.options = resolveImportOptions(options);
26
- const filename = basename(filePath);
27
- // Generate temp file path for the JSONL output
28
- const tempDir = tmpdir();
29
- const tempFileName = 'tmx_' + Date.now() + '_' + Math.random().toString(36).substring(7) + '.jsonl';
30
- this.jsonlTempPath = join(tempDir, tempFileName);
31
- this.parser = new SAXParser();
32
- this.handler = new TMXHandler(this.jsonlTempPath, filename, this.options);
33
- this.parser.setContentHandler(this.handler);
34
- }
35
- async parse() {
36
- try {
37
- this.parser.parseFile(this.filePath);
38
- await this.handler.waitForCompletion();
39
- }
40
- catch (error) {
41
- throw error instanceof Error ? error : new Error(String(error));
42
- }
43
- }
44
- getTempFilePath() {
45
- return this.jsonlTempPath;
46
- }
47
- getEntryCount() {
48
- return this.handler.getEntryCount();
49
- }
50
- }
51
- //# sourceMappingURL=tmxReader.js.map
package/dist/tmxtest.d.ts DELETED
@@ -1,16 +0,0 @@
1
- export declare class TMXTest {
2
- private static readonly NAME;
3
- private static readonly DB_PATH;
4
- private static readonly SAMPLE_TMX;
5
- private static readonly SWORD_FISH_TMX;
6
- runTest(): Promise<void>;
7
- private resetEnvironment;
8
- private verifyEntry;
9
- private verifySegmentMetadata;
10
- private expectTranslationMatch;
11
- private expectConcordanceMatch;
12
- private logConcordanceExample;
13
- private verifyMetadataRoundtrip;
14
- private verifyBatchImporterRoundtrip;
15
- private assertMetadataEquals;
16
- }
package/dist/tmxtest.js DELETED
@@ -1,316 +0,0 @@
1
- import { rmSync, writeFileSync } from 'node:fs';
2
- import { BatchImporter } from './batchImporter.js';
3
- import { HybridTM } from './hybridtm.js';
4
- import { HybridTMFactory } from './hybridtmFactory.js';
5
- import { Utils } from './utils.js';
6
- export class TMXTest {
7
- static NAME = 'TMX Test';
8
- static DB_PATH = 'my-tmx.lancedb';
9
- static SAMPLE_TMX = './samples/fluenta_sample.tmx';
10
- static SWORD_FISH_TMX = './samples/terms.xlf.tmx';
11
- async runTest() {
12
- try {
13
- this.resetEnvironment();
14
- const tm = HybridTMFactory.createInstance(TMXTest.NAME, TMXTest.DB_PATH, HybridTM.SPEED_MODEL);
15
- console.log('Created new HybridTM instance with name: ' + TMXTest.NAME);
16
- await tm.importTMX(TMXTest.SAMPLE_TMX)
17
- .then(() => {
18
- console.log('TMX file imported successfully.');
19
- })
20
- .catch(err => {
21
- console.error('Failed to import TMX file:', err);
22
- });
23
- await this.verifyEntry(tm, 'fluenta_sample.tmx', 'TMX-001', 'en', 0, 1);
24
- await this.verifyEntry(tm, 'fluenta_sample.tmx', 'TMX-001', 'es', 0, 1);
25
- await this.expectTranslationMatch(tm, 'Fluenta recovers exact matches from translations stored in the previous cycle.', 'en', 'es', 90, 'Fluenta recovers exact matches from translations stored in the previous cycle.', 'Fluenta recupera coincidencias exactas de las traducciones almacenadas en el ciclo anterior.', 'TMX exact match');
26
- await this.expectTranslationMatch(tm, 'Fluenta automatically recovers exact matches from the previous translation cycle.', 'en', 'es', 75, 'Fluenta recovers exact matches from translations stored in the previous cycle.', 'Fluenta recupera coincidencias exactas de las traducciones almacenadas en el ciclo anterior.', 'TMX fuzzy paraphrase');
27
- await this.expectTranslationMatch(tm, 'You do not need to pay again for content that stayed the same.', 'en', 'es', 65, 'You don\'t need to pay again for translation of content that didn\'t change.', 'No necesita pagar de nuevo por la traducción del contenido que no cambió.', 'TMX semantic reuse reminder');
28
- await this.expectConcordanceMatch(tm, 'translation memory for reuse', 'en', 'es', 'Archive the translation memory for reuse.', 'Archive la memoria de traducción para su reutilización.', 'TMX concordance reuse unit');
29
- await this.logConcordanceExample(tm, 'translation memory', 'en');
30
- await tm.importTMX(TMXTest.SWORD_FISH_TMX);
31
- await this.verifySegmentMetadata(tm, 'terms.xlf.tmx', '228667853-1-11-11', 'en', {
32
- fileHash: '228667853',
33
- fileId: '1',
34
- unitId: '11',
35
- segmentId: '11'
36
- });
37
- await this.verifyMetadataRoundtrip(tm);
38
- await this.verifyBatchImporterRoundtrip(tm);
39
- await tm.close();
40
- console.log('Test completed successfully');
41
- }
42
- catch (err) {
43
- console.error('Test failed:', err);
44
- throw err;
45
- }
46
- }
47
- resetEnvironment() {
48
- try {
49
- HybridTMFactory.removeInstance(TMXTest.NAME);
50
- }
51
- catch (err) {
52
- // ignore missing instance
53
- }
54
- try {
55
- rmSync(TMXTest.DB_PATH, { recursive: true, force: true });
56
- }
57
- catch (err) {
58
- // ignore cleanup issues
59
- }
60
- }
61
- async verifyEntry(tm, fileId, unitId, lang, segmentIndex, segmentCount) {
62
- const entry = await tm.getLangEntry(fileId, unitId, lang, segmentIndex);
63
- if (!entry) {
64
- throw new Error('Entry not found for ' + fileId + ':' + unitId + ':' + segmentIndex + ':' + lang);
65
- }
66
- if (entry.id !== fileId + ':' + unitId + ':' + segmentIndex + ':' + lang) {
67
- throw new Error('Unexpected entry id ' + entry.id);
68
- }
69
- if (entry.segmentIndex !== segmentIndex) {
70
- throw new Error('Segment index mismatch for ' + entry.id);
71
- }
72
- if (entry.segmentCount !== segmentCount) {
73
- throw new Error('Segment count mismatch for ' + entry.id);
74
- }
75
- if (!entry.metadata) {
76
- throw new Error('Metadata missing for ' + entry.id);
77
- }
78
- if (!entry.vector || entry.vector.length === 0) {
79
- throw new Error('Vector missing for ' + entry.id);
80
- }
81
- console.log('Verified entry ' + entry.id + ' with vector size ' + entry.vector.length);
82
- }
83
- async verifySegmentMetadata(tm, fileId, unitId, lang, expected) {
84
- const entry = await tm.getLangEntry(fileId, unitId, lang, 0);
85
- if (!entry || !entry.metadata || !entry.metadata.segment) {
86
- throw new Error('Missing segment metadata for ' + unitId);
87
- }
88
- const segmentMeta = entry.metadata.segment;
89
- if (segmentMeta.provider !== 'xliff-segment') {
90
- throw new Error('Unexpected metadata provider for ' + unitId);
91
- }
92
- if (segmentMeta.fileHash !== expected.fileHash ||
93
- segmentMeta.fileId !== expected.fileId ||
94
- segmentMeta.unitId !== expected.unitId ||
95
- segmentMeta.segmentId !== expected.segmentId) {
96
- throw new Error('Segment metadata mismatch for ' + unitId);
97
- }
98
- if (!segmentMeta.segmentKey || segmentMeta.segmentKey !== unitId) {
99
- throw new Error('Segment key missing on metadata for ' + unitId);
100
- }
101
- if (!entry.metadata.context || entry.metadata.context.indexOf('unit 10, segment 10') === -1) {
102
- throw new Error('Directional context not decoded for ' + unitId);
103
- }
104
- console.log('Verified segment metadata for ' + unitId + ' (' + segmentMeta.segmentKey + ')');
105
- }
106
- async expectTranslationMatch(tm, query, srcLang, tgtLang, similarity, expectedSourceSnippet, expectedTargetSnippet, label) {
107
- const matches = await tm.semanticTranslationSearch(query, srcLang, tgtLang, similarity);
108
- if (matches.length === 0) {
109
- throw new Error('No matches found for "' + label + '" query.');
110
- }
111
- const best = matches[0];
112
- const sourceXml = best.source.toString();
113
- const targetXml = best.target.toString();
114
- if (!sourceXml.includes(expectedSourceSnippet)) {
115
- throw new Error('Unexpected source match for "' + label + '": ' + sourceXml);
116
- }
117
- if (!targetXml.includes(expectedTargetSnippet)) {
118
- throw new Error('Unexpected target match for "' + label + '": ' + targetXml);
119
- }
120
- console.log('[' + label + '] matches=' + matches.length + ' semantic=' + best.semantic + ' fuzzy=' + best.fuzzy + ' hybrid=' + best.hybridScore());
121
- }
122
- async expectConcordanceMatch(tm, fragment, srcLang, tgtLang, expectedSourceSnippet, expectedTargetSnippet, label) {
123
- const results = await tm.concordanceSearch(fragment, srcLang, 5);
124
- if (results.length === 0) {
125
- throw new Error('No concordance matches found for "' + label + '" fragment.');
126
- }
127
- const best = results[0];
128
- const sourceElement = best.get(srcLang);
129
- const targetElement = best.get(tgtLang);
130
- if (!sourceElement || !sourceElement.toString().includes(expectedSourceSnippet)) {
131
- throw new Error('Unexpected concordance source for "' + label + '".');
132
- }
133
- if (!targetElement || !targetElement.toString().includes(expectedTargetSnippet)) {
134
- throw new Error('Unexpected concordance target for "' + label + '".');
135
- }
136
- console.log('[' + label + '] concordance languages=' + Array.from(best.keys()).join(', '));
137
- }
138
- async logConcordanceExample(tm, fragment, language) {
139
- const rows = await tm.concordanceSearch(fragment, language, 1);
140
- if (rows.length === 0) {
141
- console.log('No concordance example available for "' + fragment + '".');
142
- return;
143
- }
144
- console.log('Concordance example for "' + fragment + '":');
145
- const sample = rows[0];
146
- sample.forEach((element, langKey) => {
147
- const pureText = Utils.getPureText(element).trim().replace(/\s+/g, ' ');
148
- const flattened = pureText.length > 0
149
- ? pureText
150
- : element.toString().replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim();
151
- console.log(' [' + langKey + '] ' + flattened);
152
- });
153
- }
154
- async verifyMetadataRoundtrip(tm) {
155
- const fileId = 'metadata-roundtrip.tmx';
156
- const unitId = 'ROUNDTRIP-UNIT-1';
157
- const lang = 'en';
158
- const segmentIndex = 0;
159
- const sourceElement = Utils.buildXMLElement('<seg>Metadata roundtrip source</seg>');
160
- const metadata = {
161
- state: 'final',
162
- subState: 'approved',
163
- quality: 97,
164
- creationDate: '2024-12-01T10:00:00Z',
165
- creationId: 'author@example.com',
166
- changeDate: '2024-12-15T12:34:56Z',
167
- changeId: 'reviewer@example.com',
168
- creationTool: 'HybridTM Test Harness',
169
- creationToolVersion: '1.0.0',
170
- context: 'Roundtrip metadata context',
171
- notes: ['roundtrip-note-a', 'roundtrip-note-b'],
172
- usageCount: 7,
173
- lastUsageDate: '2025-01-01T08:30:00Z',
174
- properties: {
175
- product: 'HybridTM',
176
- channel: 'support'
177
- },
178
- segment: {
179
- provider: 'unit-test',
180
- fileHash: 'hash-rt-001',
181
- fileId: 'roundtrip-file',
182
- unitId,
183
- segmentId: 'seg-0',
184
- segmentIndex,
185
- segmentCount: 1,
186
- segmentKey: unitId + '-0'
187
- }
188
- };
189
- await tm.storeLangEntry(fileId, sourceElement.toString(), unitId, lang, 'Metadata roundtrip source', sourceElement, undefined, segmentIndex, 1, metadata);
190
- const fetched = await tm.getLangEntry(fileId, unitId, lang, segmentIndex);
191
- if (!fetched) {
192
- throw new Error('Metadata roundtrip entry missing for ' + unitId);
193
- }
194
- this.assertMetadataEquals(fetched.metadata, metadata);
195
- console.log('[Metadata roundtrip] state=' + fetched.metadata.state + ' quality=' + fetched.metadata.quality + ' properties=' + JSON.stringify(fetched.metadata.properties));
196
- }
197
- async verifyBatchImporterRoundtrip(tm) {
198
- const tempPath = './temp-jsonl-roundtrip.jsonl';
199
- const fileId = 'jsonl-batch-roundtrip.tmx';
200
- const enrichedMetadata = {
201
- state: 'reviewed',
202
- context: 'JSONL batch importer context',
203
- notes: ['jsonl-note-a', 'jsonl-note-b'],
204
- properties: {
205
- channel: 'jsonl-test',
206
- domain: 'batch-importer'
207
- }
208
- };
209
- const entries = [
210
- {
211
- language: 'en',
212
- fileId,
213
- original: fileId,
214
- unitId: 'JSONL-UNIT-1',
215
- pureText: 'JSONL batch importer roundtrip source',
216
- element: '<seg>JSONL batch importer roundtrip source</seg>',
217
- segmentIndex: 0,
218
- segmentCount: 1,
219
- metadata: enrichedMetadata
220
- },
221
- {
222
- language: 'es',
223
- fileId,
224
- original: fileId,
225
- unitId: 'JSONL-UNIT-2',
226
- pureText: 'JSONL batch importer roundtrip target',
227
- element: '<seg>JSONL batch importer roundtrip target</seg>',
228
- segmentIndex: 0,
229
- segmentCount: 1
230
- }
231
- ];
232
- const payload = entries
233
- .map((entry) => JSON.stringify(entry))
234
- .join('\n') + '\n';
235
- writeFileSync(tempPath, payload, { encoding: 'utf8' });
236
- const importer = new BatchImporter(tm, tempPath, entries.length);
237
- await importer.import();
238
- const enriched = await tm.getLangEntry(fileId, 'JSONL-UNIT-1', 'en', 0);
239
- if (!enriched) {
240
- throw new Error('BatchImporter JSONL entry with metadata missing');
241
- }
242
- this.assertMetadataEquals(enriched.metadata, enrichedMetadata);
243
- const minimal = await tm.getLangEntry(fileId, 'JSONL-UNIT-2', 'es', 0);
244
- if (!minimal) {
245
- throw new Error('BatchImporter JSONL entry without metadata missing');
246
- }
247
- if (Object.keys(minimal.metadata).length !== 0) {
248
- throw new Error('Expected empty metadata object for JSONL-UNIT-2 entry');
249
- }
250
- console.log('[BatchImporter JSONL roundtrip] enrichedKeys=' + Object.keys(enriched.metadata).length + ' minimalKeys=' + Object.keys(minimal.metadata).length);
251
- }
252
- assertMetadataEquals(actual, expected) {
253
- const fail = (field, actualValue, expectedValue) => {
254
- throw new Error('Metadata roundtrip mismatch for ' + field + ': expected ' + JSON.stringify(expectedValue) + ' but received ' + JSON.stringify(actualValue));
255
- };
256
- const scalarFields = [
257
- 'state',
258
- 'subState',
259
- 'quality',
260
- 'creationDate',
261
- 'creationId',
262
- 'changeDate',
263
- 'changeId',
264
- 'creationTool',
265
- 'creationToolVersion',
266
- 'context',
267
- 'usageCount',
268
- 'lastUsageDate'
269
- ];
270
- scalarFields.forEach((field) => {
271
- if ((actual[field] ?? null) !== (expected[field] ?? null)) {
272
- fail(field, actual[field], expected[field]);
273
- }
274
- });
275
- const expectedNotes = expected.notes ?? [];
276
- const actualNotes = actual.notes ?? [];
277
- if (actualNotes.length !== expectedNotes.length || !actualNotes.every((value, index) => value === expectedNotes[index])) {
278
- fail('notes', actualNotes, expectedNotes);
279
- }
280
- const normalizeObject = (value) => {
281
- if (!value) {
282
- return {};
283
- }
284
- const sortedKeys = Object.keys(value).sort();
285
- return sortedKeys.reduce((acc, key) => {
286
- acc[key] = value[key];
287
- return acc;
288
- }, {});
289
- };
290
- const actualProperties = normalizeObject(actual.properties);
291
- const expectedProperties = normalizeObject(expected.properties);
292
- if (JSON.stringify(actualProperties) !== JSON.stringify(expectedProperties)) {
293
- fail('properties', actualProperties, expectedProperties);
294
- }
295
- const actualSegment = normalizeObject(actual.segment);
296
- const expectedSegment = normalizeObject(expected.segment);
297
- if (JSON.stringify(actualSegment) !== JSON.stringify(expectedSegment)) {
298
- fail('segment', actualSegment, expectedSegment);
299
- }
300
- }
301
- }
302
- // Instantiate and run the test
303
- async function main() {
304
- const test = new TMXTest();
305
- try {
306
- await test.runTest();
307
- console.log('All done!');
308
- process.exit(0);
309
- }
310
- catch (error) {
311
- console.error('Test execution failed:', error);
312
- process.exit(1);
313
- }
314
- }
315
- main();
316
- //# sourceMappingURL=tmxtest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmxtest.js","sourceRoot":"","sources":["../ts/tmxtest.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"batchImporter.js","sourceRoot":"","sources":["../../ts/batchImporter.ts"],"names":[],"mappings":"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"}