hybridtm 0.7.0 → 0.8.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.
- package/README.md +33 -10
- package/dist/backupHandler.d.ts +60 -0
- package/dist/backupHandler.js +335 -0
- package/dist/backupHandler.js.map +1 -0
- package/dist/backupReader.d.ts +26 -0
- package/dist/backupReader.js +55 -0
- package/dist/backupReader.js.map +1 -0
- package/dist/batchImporter.js +3 -2
- package/dist/batchImporter.js.map +1 -1
- package/dist/cli/backupCommand.d.ts +13 -0
- package/dist/cli/backupCommand.js +47 -0
- package/dist/cli/backupCommand.js.map +1 -0
- package/dist/cli/cliUtils.js +10 -9
- package/dist/cli/cliUtils.js.map +1 -1
- package/dist/cli/createCommand.js +5 -2
- package/dist/cli/createCommand.js.map +1 -1
- package/dist/cli/hybridtmCli.js +15 -5
- package/dist/cli/hybridtmCli.js.map +1 -1
- package/dist/cli/importCommand.js +1 -3
- package/dist/cli/importCommand.js.map +1 -1
- package/dist/cli/matchCommand.js +131 -15
- package/dist/cli/matchCommand.js.map +1 -1
- package/dist/cli/registryCommands.js +30 -6
- package/dist/cli/registryCommands.js.map +1 -1
- package/dist/cli/restoreCommand.d.ts +13 -0
- package/dist/cli/restoreCommand.js +98 -0
- package/dist/cli/restoreCommand.js.map +1 -0
- package/dist/hybridtm.d.ts +10 -3
- package/dist/hybridtm.js +267 -72
- package/dist/hybridtm.js.map +1 -1
- package/dist/importOptions.d.ts +0 -1
- package/dist/importOptions.js +0 -1
- package/dist/importOptions.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/tmxHandler.d.ts +1 -0
- package/dist/tmxHandler.js +8 -2
- package/dist/tmxHandler.js.map +1 -1
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +10 -0
- package/dist/utils.js.map +1 -1
- package/dist/xliffHandler.d.ts +0 -1
- package/dist/xliffHandler.js +29 -25
- package/dist/xliffHandler.js.map +1 -1
- package/package.json +6 -6
|
@@ -0,0 +1,98 @@
|
|
|
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 { existsSync, unlinkSync } from "node:fs";
|
|
13
|
+
import { BackupReader, HybridTMFactory } from '../index.js';
|
|
14
|
+
import { CliUtils } from './cliUtils.js';
|
|
15
|
+
export function usage() {
|
|
16
|
+
console.log('Usage: hybridtm restore -file <path> -name <name>');
|
|
17
|
+
console.log(' hybridtm restore -file <path> -create -path <dir> [-name <name>] [-model compact|standard|large|<model id>]');
|
|
18
|
+
console.log();
|
|
19
|
+
console.log(' -file Backup XML file to restore (required)');
|
|
20
|
+
console.log(' -name Existing instance to restore into, appending its entries. With');
|
|
21
|
+
console.log(' -create, the name for the new instance (default: the name');
|
|
22
|
+
console.log(' recorded in the backup file)');
|
|
23
|
+
console.log(' -create Create a fresh instance before restoring, instead of appending');
|
|
24
|
+
console.log(' to an existing one');
|
|
25
|
+
console.log(' -path Directory for the new instance\'s LanceDB data (required with -create)');
|
|
26
|
+
console.log(' -model Embedding model for the new instance (default: the model recorded');
|
|
27
|
+
console.log(' in the backup file)');
|
|
28
|
+
}
|
|
29
|
+
export async function runRestoreCommand(args) {
|
|
30
|
+
if (CliUtils.hasFlag(args, '-help')) {
|
|
31
|
+
usage();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const rawFile = CliUtils.getFlag(args, '-file');
|
|
35
|
+
if (!rawFile) {
|
|
36
|
+
usage();
|
|
37
|
+
CliUtils.fail('Missing required -file.');
|
|
38
|
+
}
|
|
39
|
+
const filePath = CliUtils.requireExistingFile(rawFile, 'Backup file');
|
|
40
|
+
const target = CliUtils.hasFlag(args, '-create')
|
|
41
|
+
? await createTargetInstance(args, filePath)
|
|
42
|
+
: getExistingTargetInstance(args);
|
|
43
|
+
try {
|
|
44
|
+
const count = await target.tm.restore(filePath);
|
|
45
|
+
console.log('Restored ' + count + ' entries from ' + filePath + ' into "' + target.name + '".');
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
CliUtils.fail(error instanceof Error ? error.message : String(error));
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
await target.tm.close();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function getExistingTargetInstance(args) {
|
|
55
|
+
const name = CliUtils.getFlag(args, '-name');
|
|
56
|
+
if (!name) {
|
|
57
|
+
usage();
|
|
58
|
+
CliUtils.fail('Missing required -name (or pass -create to make a new instance).');
|
|
59
|
+
}
|
|
60
|
+
const tm = HybridTMFactory.getInstance(name);
|
|
61
|
+
if (!tm) {
|
|
62
|
+
CliUtils.fail('No instance named "' + name + '". Run "hybridtm create" or "hybridtm list" first.');
|
|
63
|
+
}
|
|
64
|
+
return { tm, name };
|
|
65
|
+
}
|
|
66
|
+
async function createTargetInstance(args, filePath) {
|
|
67
|
+
const rawPath = CliUtils.getFlag(args, '-path');
|
|
68
|
+
if (!rawPath) {
|
|
69
|
+
usage();
|
|
70
|
+
CliUtils.fail('Missing required -path when using -create.');
|
|
71
|
+
}
|
|
72
|
+
const resolvedPath = CliUtils.resolvePath(rawPath);
|
|
73
|
+
let name = CliUtils.getFlag(args, '-name');
|
|
74
|
+
const modelAlias = CliUtils.getFlag(args, '-model');
|
|
75
|
+
let modelName = modelAlias ? CliUtils.resolveModelName(modelAlias) : undefined;
|
|
76
|
+
if (!name || !modelName) {
|
|
77
|
+
const header = await peekBackupHeader(filePath);
|
|
78
|
+
name = name || header.name || undefined;
|
|
79
|
+
modelName = modelName || header.model || undefined;
|
|
80
|
+
}
|
|
81
|
+
if (!name) {
|
|
82
|
+
CliUtils.fail('Could not determine an instance name; pass -name or restore from a backup file with a recorded name.');
|
|
83
|
+
}
|
|
84
|
+
if (!modelName) {
|
|
85
|
+
CliUtils.fail('Could not determine an embedding model; pass -model or restore from a backup file with a recorded model.');
|
|
86
|
+
}
|
|
87
|
+
const tm = HybridTMFactory.createInstance(name, resolvedPath, modelName);
|
|
88
|
+
return { tm, name };
|
|
89
|
+
}
|
|
90
|
+
async function peekBackupHeader(filePath) {
|
|
91
|
+
const reader = new BackupReader(filePath);
|
|
92
|
+
await reader.parse();
|
|
93
|
+
if (existsSync(reader.getTempFilePath())) {
|
|
94
|
+
unlinkSync(reader.getTempFilePath());
|
|
95
|
+
}
|
|
96
|
+
return { name: reader.getBackupName(), model: reader.getBackupModel() };
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=restoreCommand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restoreCommand.js","sourceRoot":"","sources":["../../ts/cli/restoreCommand.ts"],"names":[],"mappings":"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"}
|
package/dist/hybridtm.d.ts
CHANGED
|
@@ -16,14 +16,15 @@ import { Match } from './match.js';
|
|
|
16
16
|
import { PendingEntry } from './pendingEntry.js';
|
|
17
17
|
import { MetadataFilter, TranslationSearchFilters } from './searchFilters.js';
|
|
18
18
|
export declare class HybridTM {
|
|
19
|
-
static readonly
|
|
20
|
-
static readonly
|
|
21
|
-
static readonly
|
|
19
|
+
static readonly COMPACT_MODEL: string;
|
|
20
|
+
static readonly STANDARD_MODEL: string;
|
|
21
|
+
static readonly LARGE_MODEL: string;
|
|
22
22
|
private name;
|
|
23
23
|
private db;
|
|
24
24
|
private table;
|
|
25
25
|
private dbPath;
|
|
26
26
|
private embedder;
|
|
27
|
+
private embedderPromise;
|
|
27
28
|
private modelName;
|
|
28
29
|
private initialized;
|
|
29
30
|
private initializationPromise;
|
|
@@ -32,6 +33,7 @@ export declare class HybridTM {
|
|
|
32
33
|
private initialize;
|
|
33
34
|
private initializeDatabase;
|
|
34
35
|
private initializeEmbedder;
|
|
36
|
+
private loadEmbedder;
|
|
35
37
|
private generateEmbedding;
|
|
36
38
|
private ensureInitialized;
|
|
37
39
|
private ensureTable;
|
|
@@ -64,4 +66,9 @@ export declare class HybridTM {
|
|
|
64
66
|
importXLIFF(filePath: string, options?: ImportOptions): Promise<number>;
|
|
65
67
|
importTMX(filePath: string, options?: ImportOptions): Promise<number>;
|
|
66
68
|
importSDLTM(filePath: string, options?: ImportOptions): Promise<number>;
|
|
69
|
+
restore(filePath: string): Promise<number>;
|
|
70
|
+
backup(outputPath: string): Promise<number>;
|
|
71
|
+
private buildBackupEntryElement;
|
|
72
|
+
private buildBackupMetadataElement;
|
|
73
|
+
private appendTextElement;
|
|
67
74
|
}
|