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.
Files changed (46) hide show
  1. package/README.md +33 -10
  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.js +3 -2
  9. package/dist/batchImporter.js.map +1 -1
  10. package/dist/cli/backupCommand.d.ts +13 -0
  11. package/dist/cli/backupCommand.js +47 -0
  12. package/dist/cli/backupCommand.js.map +1 -0
  13. package/dist/cli/cliUtils.js +10 -9
  14. package/dist/cli/cliUtils.js.map +1 -1
  15. package/dist/cli/createCommand.js +5 -2
  16. package/dist/cli/createCommand.js.map +1 -1
  17. package/dist/cli/hybridtmCli.js +15 -5
  18. package/dist/cli/hybridtmCli.js.map +1 -1
  19. package/dist/cli/importCommand.js +1 -3
  20. package/dist/cli/importCommand.js.map +1 -1
  21. package/dist/cli/matchCommand.js +131 -15
  22. package/dist/cli/matchCommand.js.map +1 -1
  23. package/dist/cli/registryCommands.js +30 -6
  24. package/dist/cli/registryCommands.js.map +1 -1
  25. package/dist/cli/restoreCommand.d.ts +13 -0
  26. package/dist/cli/restoreCommand.js +98 -0
  27. package/dist/cli/restoreCommand.js.map +1 -0
  28. package/dist/hybridtm.d.ts +10 -3
  29. package/dist/hybridtm.js +267 -72
  30. package/dist/hybridtm.js.map +1 -1
  31. package/dist/importOptions.d.ts +0 -1
  32. package/dist/importOptions.js +0 -1
  33. package/dist/importOptions.js.map +1 -1
  34. package/dist/index.d.ts +2 -0
  35. package/dist/index.js +2 -0
  36. package/dist/index.js.map +1 -1
  37. package/dist/tmxHandler.d.ts +1 -0
  38. package/dist/tmxHandler.js +8 -2
  39. package/dist/tmxHandler.js.map +1 -1
  40. package/dist/utils.d.ts +2 -0
  41. package/dist/utils.js +10 -0
  42. package/dist/utils.js.map +1 -1
  43. package/dist/xliffHandler.d.ts +0 -1
  44. package/dist/xliffHandler.js +29 -25
  45. package/dist/xliffHandler.js.map +1 -1
  46. package/package.json +6 -6
package/README.md CHANGED
@@ -1,15 +1,16 @@
1
1
  # HybridTM
2
2
 
3
- HybridTM is a semantic translation memory engine that stores bilingual content in LanceDB and scores matches by combining semantic embeddings (Xenova/Transformers.js) with the built-in MatchQuality fuzzy metric.
3
+ HybridTM is a semantic translation memory engine that stores bilingual content in LanceDB and scores matches by combining semantic embeddings (Hugging Face Transformers.js) with the built-in MatchQuality fuzzy metric.
4
4
 
5
5
  ## Highlights
6
6
 
7
7
  - Imports XLIFF 2.x, TMX 1.4b, and SDLTM files, preserving metadata, notes, and custom properties
8
- - Generates semantic vectors with any Xenova-compatible text model (default: `HybridTM.QUALITY_MODEL`, LaBSE)
8
+ - Generates semantic vectors with any Transformers.js-compatible text model — ships three ready-to-use presets (`compact`/`standard`/`large`, default: `HybridTM.LARGE_MODEL`) plus support for bringing your own model id (see [Choosing an embedding model](#choosing-an-embedding-model))
9
9
  - Provides `semanticTranslationSearch`, `semanticSearch`, and `concordanceSearch` APIs with metadata-aware filtering
10
10
  - Streams data into LanceDB through a JSONL-based batch importer to keep memory usage predictable
11
11
  - Prevents duplicate segments by rewriting entries with deterministic IDs (`fileId:unitId:segmentIndex:lang`)
12
- - Ships a `hybridtm` command-line tool for creating instances, importing files, and enriching XLIFF files with TM match candidates from the shell
12
+ - Backs up any instance to a single format-agnostic XML file and restores it into an existing or brand-new instance, optionally under a different embedding model
13
+ - Ships a `hybridtm` command-line tool for creating instances, importing files, backing up/restoring data, and enriching XLIFF files with TM match candidates from the shell
13
14
 
14
15
  Models download automatically the first time you initialize an instance and are cached in the standard Hugging Face directory.
15
16
 
@@ -36,7 +37,7 @@ const DB_PATH = path.resolve('.hybridtm', INSTANCE_NAME + '.lancedb');
36
37
 
37
38
  function getOrCreateTM(): HybridTM {
38
39
  return HybridTMFactory.getInstance(INSTANCE_NAME)
39
- ?? HybridTMFactory.createInstance(INSTANCE_NAME, DB_PATH, HybridTM.QUALITY_MODEL);
40
+ ?? HybridTMFactory.createInstance(INSTANCE_NAME, DB_PATH, HybridTM.LARGE_MODEL);
40
41
  }
41
42
 
42
43
  async function main(): Promise<void> {
@@ -73,6 +74,25 @@ await tm.importSDLTM('./translations/legacy.sdltm');
73
74
 
74
75
  `semanticTranslationSearch` automatically pairs every source hit with its matching target segment (same `fileId`, `unitId`, and `segmentIndex`), making the output ready for CAT integrations.
75
76
 
77
+ ## Choosing an embedding model
78
+
79
+ HybridTM ships three ready-to-use presets, but it is **not limited to them** — the `modelName` constructor argument (and the CLI's `-model` flag) accepts *any* Hugging Face `feature-extraction`-compatible model id, so you can bring your own (e.g. `-model intfloat/multilingual-e5-large`) if none of the presets fit.
80
+
81
+ | Preset | Constant | Model | Dimensions |
82
+ | --- | --- | --- | --- |
83
+ | `compact` | `HybridTM.COMPACT_MODEL` | `Xenova/multilingual-e5-small` | 384 |
84
+ | `standard` | `HybridTM.STANDARD_MODEL` | `Xenova/paraphrase-multilingual-MiniLM-L12-v2` | 384 |
85
+ | `large` (default) | `HybridTM.LARGE_MODEL` | `onnx-community/gte-multilingual-base` | 768 |
86
+
87
+ The names describe model **size/footprint**, not a quality ranking — an internal benchmark across English, Spanish, Japanese, and Finnish content found no preset winning on every language: `standard` led on English/Spanish/Japanese while matching or beating `large` on accuracy, `large` was the clear leader specifically on Finnish (a highly inflected language), and `compact` had the smallest footprint but never won outright on accuracy in that test. This is because HybridTM's translation matching pairs source and target segments by `fileId`/`unitId`/`segmentIndex` structure, not by comparing embeddings across languages — so model choice mostly affects how well a model clusters semantically similar text *within* the language you search in, and that can vary a lot by language family and script.
88
+
89
+ Practical guidance:
90
+
91
+ - **Unsure, or mostly Western European languages?** Start with `standard` — smallest footprint tier, and it matched or beat `large` in our tests while being faster.
92
+ - **Morphologically rich languages** (e.g. Finnish, other Uralic or heavily case-inflected languages)? `large` is worth its extra latency and storage — it was the clear leader there.
93
+ - **Memory/disk is the binding constraint?** `compact` is the smallest option, but treat it as a deliberate tradeoff, not a safe default — it trailed on accuracy in every language we tested.
94
+ - Our benchmark was small (dozens of queries per language, a handful of language pairs) — informative, not exhaustive. If model choice matters a lot for your deployment, benchmark with your own representative content and target languages using `semanticSearch`/`semanticTranslationSearch` before committing, especially for languages we didn't test.
95
+
76
96
  ## Command-line interface
77
97
 
78
98
  Installing HybridTM globally also adds a `hybridtm` command:
@@ -80,11 +100,13 @@ Installing HybridTM globally also adds a `hybridtm` command:
80
100
  ```bash
81
101
  npm install -g hybridtm
82
102
 
83
- hybridtm create -name project -path ./project.lancedb
84
- hybridtm import -name project -file ./translations/project.xlf
85
- hybridtm match -name project -file ./new-content.xlf -output ./new-content.matches.xlf
103
+ hybridtm create -name project -path ./project.lancedb
104
+ hybridtm import -name project -file ./translations/project.xlf
105
+ hybridtm match -name project -file ./new-content.xlf -output ./new-content.matches.xlf
106
+ hybridtm backup -name project -file ./project-backup.xml
107
+ hybridtm restore -file ./project-backup.xml -name project
86
108
  hybridtm list
87
- hybridtm remove -name project -yes
109
+ hybridtm remove -name project
88
110
  ```
89
111
 
90
112
  `match` never touches `<target>` — it adds spec Translation Candidates
@@ -99,6 +121,7 @@ see [05 · Command-Line Interface](docs/05-command-line-interface.md).
99
121
  - [03 · Search and Filtering](docs/03-search-and-filtering.md)
100
122
  - [04 · Sample Scenarios](docs/04-sample-scenarios.md)
101
123
  - [05 · Command-Line Interface](docs/05-command-line-interface.md)
124
+ - [06 · Backup and Restore](docs/06-backup-and-restore.md)
102
125
 
103
126
  Each guide is short and task-oriented, so you can jump directly to the workflow you need.
104
127
 
@@ -125,12 +148,12 @@ If you copy `samples/` elsewhere, update `samples/package.json` so the `hybridtm
125
148
  - `dist/` – compiled JavaScript and declarations (`npm run build`)
126
149
  - `docs/` – task-focused tutorials referenced above
127
150
  - `samples/` – standalone TypeScript project with runnable workflows
128
- - `models/` – local cache for pre-downloaded Xenova models (optional)
151
+ - `models/` – local cache for pre-downloaded embedding models (optional)
129
152
 
130
153
  ## Development
131
154
 
132
155
  - `npm run build` – compile TypeScript to `dist/`
133
- - `node dist/tmxtest.js` and `node dist/xlifftest.js` regression checks for the TMX and XLIFF importers (run after building)
156
+ - The [samples](docs/04-sample-scenarios.md) project doubles as a manual regression check for the importers and search APIs
134
157
 
135
158
  Contributions should include unit or integration coverage when you touch importer or search logic. Use `HybridTMFactory.removeInstance(name)` to clean up any throwaway databases you create during manual tests.
136
159
 
@@ -0,0 +1,60 @@
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 { Catalog, ContentHandler, Grammar, XMLAttribute } from "typesxml";
13
+ export declare class BackupHandler implements ContentHandler {
14
+ private writeStream;
15
+ private readonly completionPromise;
16
+ private entryCount;
17
+ private name;
18
+ private model;
19
+ private date;
20
+ private inEntry;
21
+ private stack;
22
+ private entryChildren;
23
+ private entryLanguage;
24
+ private entryFileId;
25
+ private entryOriginal;
26
+ private entryUnitId;
27
+ private entrySegmentIndex;
28
+ private entrySegmentCount;
29
+ constructor(tempFilePath: string);
30
+ getEntryCount(): number;
31
+ waitForCompletion(): Promise<void>;
32
+ getBackupName(): string;
33
+ getBackupModel(): string;
34
+ getBackupDate(): string;
35
+ setGrammar(grammar: Grammar | undefined): void;
36
+ getGrammar(): Grammar | undefined;
37
+ initialize(): void;
38
+ setCatalog(catalog: Catalog): void;
39
+ startDocument(): void;
40
+ endDocument(): void;
41
+ xmlDeclaration(version: string, encoding: string, standalone: string | undefined): void;
42
+ startElement(name: string, atts: Array<XMLAttribute>): void;
43
+ endElement(name: string): void;
44
+ internalSubset(declaration: string): void;
45
+ characters(ch: string): void;
46
+ ignorableWhitespace(ch: string): void;
47
+ comment(ch: string): void;
48
+ processingInstruction(target: string, data: string): void;
49
+ startCDATA(): void;
50
+ endCDATA(): void;
51
+ startDTD(name: string, publicId: string, systemId: string): void;
52
+ endDTD(): void;
53
+ skippedEntity(name: string): void;
54
+ getCurrentText(): string;
55
+ private emitEntry;
56
+ private parseMetadataElement;
57
+ private parseSegmentElement;
58
+ private parseOptionalNumber;
59
+ private parseNumber;
60
+ }
@@ -0,0 +1,335 @@
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 { createWriteStream } from "node:fs";
13
+ import { XMLElement } from "typesxml";
14
+ export class BackupHandler {
15
+ writeStream;
16
+ completionPromise;
17
+ entryCount = 0;
18
+ name = '';
19
+ model = '';
20
+ date = '';
21
+ inEntry = false;
22
+ stack = [];
23
+ entryChildren = [];
24
+ entryLanguage = '';
25
+ entryFileId = '';
26
+ entryOriginal = '';
27
+ entryUnitId = '';
28
+ entrySegmentIndex = 0;
29
+ entrySegmentCount = 1;
30
+ constructor(tempFilePath) {
31
+ this.writeStream = createWriteStream(tempFilePath, { encoding: 'utf8' });
32
+ this.completionPromise = new Promise((resolve, reject) => {
33
+ this.writeStream.once('finish', resolve);
34
+ this.writeStream.once('error', reject);
35
+ });
36
+ }
37
+ getEntryCount() {
38
+ return this.entryCount;
39
+ }
40
+ waitForCompletion() {
41
+ return this.completionPromise;
42
+ }
43
+ getBackupName() {
44
+ return this.name;
45
+ }
46
+ getBackupModel() {
47
+ return this.model;
48
+ }
49
+ getBackupDate() {
50
+ return this.date;
51
+ }
52
+ setGrammar(grammar) {
53
+ // do nothing
54
+ }
55
+ getGrammar() {
56
+ return undefined;
57
+ }
58
+ initialize() {
59
+ this.stack = [];
60
+ this.entryChildren = [];
61
+ this.inEntry = false;
62
+ }
63
+ setCatalog(catalog) {
64
+ // do nothing
65
+ }
66
+ startDocument() {
67
+ // do nothing
68
+ }
69
+ endDocument() {
70
+ this.writeStream.end();
71
+ }
72
+ xmlDeclaration(version, encoding, standalone) {
73
+ // do nothing
74
+ }
75
+ startElement(name, atts) {
76
+ if ('backup' === name) {
77
+ const element = new XMLElement(name);
78
+ atts.forEach((att) => element.setAttribute(att));
79
+ this.name = element.getAttribute('name')?.getValue() ?? '';
80
+ this.model = element.getAttribute('model')?.getValue() ?? '';
81
+ this.date = element.getAttribute('date')?.getValue() ?? '';
82
+ return;
83
+ }
84
+ if ('entry' === name) {
85
+ const element = new XMLElement(name);
86
+ atts.forEach((att) => element.setAttribute(att));
87
+ this.inEntry = true;
88
+ this.stack = [];
89
+ this.entryChildren = [];
90
+ this.entryLanguage = element.getAttribute('language')?.getValue() ?? '';
91
+ this.entryFileId = element.getAttribute('fileId')?.getValue() ?? '';
92
+ this.entryOriginal = element.getAttribute('original')?.getValue() ?? '';
93
+ this.entryUnitId = element.getAttribute('unitId')?.getValue() ?? '';
94
+ this.entrySegmentIndex = this.parseNumber(element.getAttribute('segmentIndex')?.getValue(), 0);
95
+ this.entrySegmentCount = this.parseNumber(element.getAttribute('segmentCount')?.getValue(), 1);
96
+ return;
97
+ }
98
+ if (!this.inEntry) {
99
+ return;
100
+ }
101
+ const element = new XMLElement(name);
102
+ atts.forEach((att) => element.setAttribute(att));
103
+ if (this.stack.length > 0) {
104
+ this.stack[this.stack.length - 1].addElement(element);
105
+ }
106
+ this.stack.push(element);
107
+ }
108
+ endElement(name) {
109
+ if ('backup' === name) {
110
+ return;
111
+ }
112
+ if ('entry' === name) {
113
+ this.emitEntry();
114
+ this.inEntry = false;
115
+ this.stack = [];
116
+ this.entryChildren = [];
117
+ return;
118
+ }
119
+ if (!this.inEntry) {
120
+ return;
121
+ }
122
+ const finished = this.stack.pop();
123
+ if (finished && this.stack.length === 0) {
124
+ this.entryChildren.push(finished);
125
+ }
126
+ }
127
+ internalSubset(declaration) {
128
+ // do nothing
129
+ }
130
+ characters(ch) {
131
+ if (!this.inEntry || this.stack.length === 0) {
132
+ return;
133
+ }
134
+ this.stack[this.stack.length - 1].addString(ch);
135
+ }
136
+ ignorableWhitespace(ch) {
137
+ this.characters(ch);
138
+ }
139
+ comment(ch) {
140
+ // do nothing
141
+ }
142
+ processingInstruction(target, data) {
143
+ // do nothing
144
+ }
145
+ startCDATA() {
146
+ // do nothing
147
+ }
148
+ endCDATA() {
149
+ // do nothing
150
+ }
151
+ startDTD(name, publicId, systemId) {
152
+ // do nothing
153
+ }
154
+ endDTD() {
155
+ // do nothing
156
+ }
157
+ skippedEntity(name) {
158
+ // do nothing
159
+ }
160
+ getCurrentText() {
161
+ return '';
162
+ }
163
+ emitEntry() {
164
+ const pureTextElement = this.entryChildren.find((child) => child.getName() === 'pureText');
165
+ const elementWrapper = this.entryChildren.find((child) => child.getName() === 'element');
166
+ const metadataElement = this.entryChildren.find((child) => child.getName() === 'metadata');
167
+ if (!pureTextElement || !elementWrapper) {
168
+ return;
169
+ }
170
+ const innerElements = elementWrapper.getChildren();
171
+ if (innerElements.length === 0) {
172
+ return;
173
+ }
174
+ const jsonEntry = {
175
+ language: this.entryLanguage,
176
+ fileId: this.entryFileId,
177
+ original: this.entryOriginal,
178
+ unitId: this.entryUnitId,
179
+ pureText: pureTextElement.getText(),
180
+ element: innerElements[0].toString(),
181
+ segmentIndex: this.entrySegmentIndex,
182
+ segmentCount: this.entrySegmentCount
183
+ };
184
+ if (metadataElement) {
185
+ const metadata = this.parseMetadataElement(metadataElement);
186
+ if (Object.keys(metadata).length > 0) {
187
+ jsonEntry.metadata = metadata;
188
+ }
189
+ }
190
+ this.writeStream.write(JSON.stringify(jsonEntry) + '\n');
191
+ this.entryCount++;
192
+ }
193
+ parseMetadataElement(metadataElement) {
194
+ const metadata = {};
195
+ const childText = (childName) => {
196
+ const child = metadataElement.getChild(childName);
197
+ if (!child) {
198
+ return undefined;
199
+ }
200
+ const text = child.getText();
201
+ return text.length > 0 ? text : undefined;
202
+ };
203
+ const state = childText('state');
204
+ const validStates = ['initial', 'translated', 'reviewed', 'final'];
205
+ if (state && validStates.includes(state)) {
206
+ metadata.state = state;
207
+ }
208
+ const subState = childText('subState');
209
+ if (subState) {
210
+ metadata.subState = subState;
211
+ }
212
+ const quality = this.parseOptionalNumber(childText('quality'));
213
+ if (quality !== undefined) {
214
+ metadata.quality = quality;
215
+ }
216
+ const creationDate = childText('creationDate');
217
+ if (creationDate) {
218
+ metadata.creationDate = creationDate;
219
+ }
220
+ const creationId = childText('creationId');
221
+ if (creationId) {
222
+ metadata.creationId = creationId;
223
+ }
224
+ const changeDate = childText('changeDate');
225
+ if (changeDate) {
226
+ metadata.changeDate = changeDate;
227
+ }
228
+ const changeId = childText('changeId');
229
+ if (changeId) {
230
+ metadata.changeId = changeId;
231
+ }
232
+ const creationTool = childText('creationTool');
233
+ if (creationTool) {
234
+ metadata.creationTool = creationTool;
235
+ }
236
+ const creationToolVersion = childText('creationToolVersion');
237
+ if (creationToolVersion) {
238
+ metadata.creationToolVersion = creationToolVersion;
239
+ }
240
+ const context = childText('context');
241
+ if (context) {
242
+ metadata.context = context;
243
+ }
244
+ const usageCount = this.parseOptionalNumber(childText('usageCount'));
245
+ if (usageCount !== undefined) {
246
+ metadata.usageCount = usageCount;
247
+ }
248
+ const lastUsageDate = childText('lastUsageDate');
249
+ if (lastUsageDate) {
250
+ metadata.lastUsageDate = lastUsageDate;
251
+ }
252
+ const notesElement = metadataElement.getChild('notes');
253
+ if (notesElement) {
254
+ const notes = notesElement.getChildren()
255
+ .filter((child) => child.getName() === 'note')
256
+ .map((child) => child.getText())
257
+ .filter((text) => text.length > 0);
258
+ if (notes.length > 0) {
259
+ metadata.notes = notes;
260
+ }
261
+ }
262
+ const propertiesElement = metadataElement.getChild('properties');
263
+ if (propertiesElement) {
264
+ const properties = {};
265
+ propertiesElement.getChildren().forEach((child) => {
266
+ if (child.getName() === 'property') {
267
+ const key = child.getAttribute('name')?.getValue();
268
+ if (key && key.length > 0) {
269
+ properties[key] = child.getText();
270
+ }
271
+ }
272
+ });
273
+ if (Object.keys(properties).length > 0) {
274
+ metadata.properties = properties;
275
+ }
276
+ }
277
+ const segmentElement = metadataElement.getChild('segment');
278
+ if (segmentElement) {
279
+ const segment = this.parseSegmentElement(segmentElement);
280
+ if (Object.keys(segment).length > 0) {
281
+ metadata.segment = segment;
282
+ }
283
+ }
284
+ return metadata;
285
+ }
286
+ parseSegmentElement(segmentElement) {
287
+ const segment = {};
288
+ const attr = (attrName) => segmentElement.getAttribute(attrName)?.getValue();
289
+ const provider = attr('provider');
290
+ if (provider) {
291
+ segment.provider = provider;
292
+ }
293
+ const fileHash = attr('fileHash');
294
+ if (fileHash) {
295
+ segment.fileHash = fileHash;
296
+ }
297
+ const fileId = attr('fileId');
298
+ if (fileId) {
299
+ segment.fileId = fileId;
300
+ }
301
+ const unitId = attr('unitId');
302
+ if (unitId) {
303
+ segment.unitId = unitId;
304
+ }
305
+ const segmentId = attr('segmentId');
306
+ if (segmentId) {
307
+ segment.segmentId = segmentId;
308
+ }
309
+ const segmentKey = attr('segmentKey');
310
+ if (segmentKey) {
311
+ segment.segmentKey = segmentKey;
312
+ }
313
+ const segmentIndex = this.parseOptionalNumber(attr('segmentIndex'));
314
+ if (segmentIndex !== undefined) {
315
+ segment.segmentIndex = segmentIndex;
316
+ }
317
+ const segmentCount = this.parseOptionalNumber(attr('segmentCount'));
318
+ if (segmentCount !== undefined) {
319
+ segment.segmentCount = segmentCount;
320
+ }
321
+ return segment;
322
+ }
323
+ parseOptionalNumber(value) {
324
+ if (!value) {
325
+ return undefined;
326
+ }
327
+ const parsed = Number(value);
328
+ return Number.isNaN(parsed) ? undefined : parsed;
329
+ }
330
+ parseNumber(value, fallback) {
331
+ const parsed = this.parseOptionalNumber(value);
332
+ return parsed !== undefined ? parsed : fallback;
333
+ }
334
+ }
335
+ //# sourceMappingURL=backupHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backupHandler.js","sourceRoot":"","sources":["../ts/backupHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
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 { BackupHandler } from './backupHandler.js';
14
+ export declare class BackupReader {
15
+ parser: SAXParser;
16
+ filePath: string;
17
+ handler: BackupHandler;
18
+ jsonlTempPath: string;
19
+ constructor(filePath: string);
20
+ parse(): Promise<void>;
21
+ getTempFilePath(): string;
22
+ getEntryCount(): number;
23
+ getBackupName(): string;
24
+ getBackupModel(): string;
25
+ getBackupDate(): string;
26
+ }
@@ -0,0 +1,55 @@
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 { join } from 'node:path';
14
+ import { SAXParser } from "typesxml";
15
+ import { BackupHandler } from './backupHandler.js';
16
+ export class BackupReader {
17
+ parser;
18
+ filePath;
19
+ handler;
20
+ jsonlTempPath;
21
+ constructor(filePath) {
22
+ this.filePath = filePath;
23
+ const tempDir = tmpdir();
24
+ const tempFileName = 'backup_' + Date.now() + '_' + Math.random().toString(36).substring(7) + '.jsonl';
25
+ this.jsonlTempPath = join(tempDir, tempFileName);
26
+ this.parser = new SAXParser();
27
+ this.handler = new BackupHandler(this.jsonlTempPath);
28
+ this.parser.setContentHandler(this.handler);
29
+ }
30
+ async parse() {
31
+ try {
32
+ this.parser.parseFile(this.filePath);
33
+ await this.handler.waitForCompletion();
34
+ }
35
+ catch (error) {
36
+ throw error instanceof Error ? error : new Error(String(error));
37
+ }
38
+ }
39
+ getTempFilePath() {
40
+ return this.jsonlTempPath;
41
+ }
42
+ getEntryCount() {
43
+ return this.handler.getEntryCount();
44
+ }
45
+ getBackupName() {
46
+ return this.handler.getBackupName();
47
+ }
48
+ getBackupModel() {
49
+ return this.handler.getBackupModel();
50
+ }
51
+ getBackupDate() {
52
+ return this.handler.getBackupDate();
53
+ }
54
+ }
55
+ //# sourceMappingURL=backupReader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backupReader.js","sourceRoot":"","sources":["../ts/backupReader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,OAAO,YAAY;IAErB,MAAM,CAAY;IAClB,QAAQ,CAAS;IACjB,OAAO,CAAgB;IACvB,aAAa,CAAS;IAEtB,YAAY,QAAgB;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QACvG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,MAAM,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,CAAC;IACL,CAAC;IAED,eAAe;QACX,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC;IAED,cAAc;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACzC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;IACxC,CAAC;CACJ"}
@@ -101,13 +101,14 @@ export class BatchImporter {
101
101
  console.log('Total entries imported: ' + totalProcessed.toLocaleString());
102
102
  console.log('Total time: ' + minutes + 'm ' + seconds + 's');
103
103
  console.log('Average rate: ' + avgRate.toFixed(1) + ' entries/sec');
104
- // Clean up the temporary file
105
- await this.cleanup();
106
104
  }
107
105
  catch (err) {
108
106
  console.error('Error during batch import:', err);
109
107
  throw err;
110
108
  }
109
+ finally {
110
+ await this.cleanup();
111
+ }
111
112
  }
112
113
  parseMetadata(metadata) {
113
114
  if (!metadata || typeof metadata !== 'object') {
@@ -1 +1 @@
1
- {"version":3,"file":"batchImporter.js","sourceRoot":"","sources":["../ts/batchImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAa,MAAM,eAAe,CAAC;AAI3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,aAAa;IACd,EAAE,CAAW;IACb,YAAY,CAAS;IACrB,SAAS,CAAS;IAClB,YAAY,CAAS;IAE7B,YAAY,EAAY,EAAE,YAAoB,EAAE,eAAuB,CAAC,EAAE,YAAoB,IAAI;QAC9F,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM;QACR,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,MAAM,UAAU,GAAe,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACzF,MAAM,EAAE,GAAc,eAAe,CAAC;gBAClC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,QAAQ;aACtB,CAAC,CAAC;YAEH,IAAI,KAAK,GAAmB,EAAE,CAAC;YAC/B,IAAI,cAAc,GAAW,CAAC,CAAC;YAC/B,IAAI,UAAU,GAAW,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;YAErC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACf,SAAS,CAAC,mBAAmB;gBACjC,CAAC;gBAED,IAAI,CAAC;oBACD,MAAM,SAAS,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAExC,MAAM,YAAY,GAAW,OAAO,SAAS,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrG,MAAM,YAAY,GAAW,OAAO,SAAS,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrG,MAAM,QAAQ,GAAkB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAEvE,qCAAqC;oBACrC,MAAM,KAAK,GAAiB;wBACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;wBAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;wBACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;wBAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;wBACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;wBAC5B,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC;wBACjD,YAAY;wBACZ,YAAY;wBACZ,QAAQ;qBACX,CAAC;oBAEF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAElB,+CAA+C;oBAC/C,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjC,UAAU,EAAE,CAAC;wBACb,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBACvC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;wBAE/B,6BAA6B;wBAC7B,MAAM,OAAO,GAAW,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;wBAC/C,MAAM,IAAI,GAAW,cAAc,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB;wBAE7E,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;4BACxB,MAAM,QAAQ,GAAW,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;4BACpE,MAAM,SAAS,GAAW,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;4BAC7D,MAAM,UAAU,GAAW,SAAS,GAAG,IAAI,CAAC;4BAC5C,MAAM,UAAU,GAAW,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;4BACvD,MAAM,mBAAmB,GAAW,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;4BAEhE,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC,cAAc,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,GAAG,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;wBAC7O,CAAC;6BAAM,CAAC;4BACJ,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,cAAc,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;wBACpH,CAAC;wBAED,KAAK,GAAG,EAAE,CAAC;oBACf,CAAC;gBACL,CAAC;gBAAC,OAAO,QAAQ,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,QAAQ,CAAC,CAAC;oBACvD,0BAA0B;gBAC9B,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,UAAU,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACvC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;YACnC,CAAC;YAED,MAAM,SAAS,GAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;YAC1D,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YACnD,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YACnD,MAAM,OAAO,GAAW,cAAc,GAAG,SAAS,CAAC;YAEnD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;YAEpE,8BAA8B;YAC9B,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;YACjD,MAAM,GAAG,CAAC;QACd,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,QAAiB;QACnC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,MAAM,GAA4B,QAAmC,CAAC;QAC5E,MAAM,UAAU,GAAG,CAAC,GAAwB,EAAQ,EAAE;YAClD,MAAM,KAAK,GAAY,MAAM,CAAC,GAAa,CAAC,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAkC,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;YAC/D,CAAC;QACL,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,GAAwB,EAAQ,EAAE;YAClD,MAAM,KAAK,GAAY,MAAM,CAAC,GAAa,CAAC,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAkC,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;YAC/D,CAAC;QACL,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,UAAU,CAAC,UAAU,CAAC,CAAC;QACvB,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,UAAU,CAAC,YAAY,CAAC,CAAC;QACzB,UAAU,CAAC,YAAY,CAAC,CAAC;QACzB,UAAU,CAAC,UAAU,CAAC,CAAC;QACvB,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAClC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,UAAU,CAAC,YAAY,CAAC,CAAC;QACzB,UAAU,CAAC,eAAe,CAAC,CAAC;QAE5B,MAAM,KAAK,GAAY,MAAM,CAAC,KAAK,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAa,KAAK,CAAC,MAAM,CAAC,CAAC,IAAa,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAY,MAAM,CAAC,UAAU,CAAC;QAC9C,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,UAAqC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAoB,EAAE,EAAE;gBAC9F,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACvB,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAa,MAAkC,CAAC,OAAO,CAAC;QACrE,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,aAAa,GAA4B,OAAkC,CAAC;YAClF,MAAM,eAAe,GAAoB,EAAE,CAAC;YAC5C,MAAM,iBAAiB,GAAG,CAAC,GAA0B,EAAQ,EAAE;gBAC3D,MAAM,KAAK,GAAY,aAAa,CAAC,GAAa,CAAC,CAAC;gBACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,eAA2C,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;gBACxE,CAAC;YACL,CAAC,CAAC;YACF,MAAM,iBAAiB,GAAG,CAAC,GAA0B,EAAQ,EAAE;gBAC3D,MAAM,KAAK,GAAY,aAAa,CAAC,GAAa,CAAC,CAAC;gBACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnD,eAA2C,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;gBACxE,CAAC;YACL,CAAC,CAAC;YAEF,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9B,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9B,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5B,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5B,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC/B,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAChC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAClC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAElC,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;YACrC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,OAAO;QACjB,IAAI,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;YAClF,0DAA0D;QAC9D,CAAC;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"batchImporter.js","sourceRoot":"","sources":["../ts/batchImporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;iFAUiF;AAEjF,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAc,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAa,MAAM,eAAe,CAAC;AAI3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,OAAO,aAAa;IACd,EAAE,CAAW;IACb,YAAY,CAAS;IACrB,SAAS,CAAS;IAClB,YAAY,CAAS;IAE7B,YAAY,EAAY,EAAE,YAAoB,EAAE,eAAuB,CAAC,EAAE,YAAoB,IAAI;QAC9F,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM;QACR,IAAI,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;YACvE,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,MAAM,UAAU,GAAe,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YACzF,MAAM,EAAE,GAAc,eAAe,CAAC;gBAClC,KAAK,EAAE,UAAU;gBACjB,SAAS,EAAE,QAAQ;aACtB,CAAC,CAAC;YAEH,IAAI,KAAK,GAAmB,EAAE,CAAC;YAC/B,IAAI,cAAc,GAAW,CAAC,CAAC;YAC/B,IAAI,UAAU,GAAW,CAAC,CAAC;YAC3B,MAAM,SAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;YAErC,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBACf,SAAS,CAAC,mBAAmB;gBACjC,CAAC;gBAED,IAAI,CAAC;oBACD,MAAM,SAAS,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAExC,MAAM,YAAY,GAAW,OAAO,SAAS,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrG,MAAM,YAAY,GAAW,OAAO,SAAS,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrG,MAAM,QAAQ,GAAkB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAEvE,qCAAqC;oBACrC,MAAM,KAAK,GAAiB;wBACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;wBAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;wBACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;wBAC5B,MAAM,EAAE,SAAS,CAAC,MAAM;wBACxB,QAAQ,EAAE,SAAS,CAAC,QAAQ;wBAC5B,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC;wBACjD,YAAY;wBACZ,YAAY;wBACZ,QAAQ;qBACX,CAAC;oBAEF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAElB,+CAA+C;oBAC/C,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBACjC,UAAU,EAAE,CAAC;wBACb,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;wBACvC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;wBAE/B,6BAA6B;wBAC7B,MAAM,OAAO,GAAW,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;wBAC/C,MAAM,IAAI,GAAW,cAAc,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB;wBAE7E,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;4BACxB,MAAM,QAAQ,GAAW,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;4BACpE,MAAM,SAAS,GAAW,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC;4BAC7D,MAAM,UAAU,GAAW,SAAS,GAAG,IAAI,CAAC;4BAC5C,MAAM,UAAU,GAAW,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;4BACvD,MAAM,mBAAmB,GAAW,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;4BAEhE,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC,cAAc,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,UAAU,GAAG,IAAI,GAAG,mBAAmB,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;wBAC7O,CAAC;6BAAM,CAAC;4BACJ,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,cAAc,EAAE,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;wBACpH,CAAC;wBAED,KAAK,GAAG,EAAE,CAAC;oBACf,CAAC;gBACL,CAAC;gBAAC,OAAO,QAAQ,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,QAAQ,CAAC,CAAC;oBACvD,0BAA0B;gBAC9B,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,UAAU,EAAE,CAAC;gBACb,MAAM,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;gBACvC,cAAc,IAAI,KAAK,CAAC,MAAM,CAAC;YACnC,CAAC;YAED,MAAM,SAAS,GAAW,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;YAC1D,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YACnD,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;YACnD,MAAM,OAAO,GAAW,cAAc,GAAG,SAAS,CAAC;YAEnD,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,0BAA0B,GAAG,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,GAAG,IAAI,GAAG,OAAO,GAAG,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;YACjD,MAAM,GAAG,CAAC;QACd,CAAC;gBAAS,CAAC;YACP,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,QAAiB;QACnC,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,EAAE,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,MAAM,GAA4B,QAAmC,CAAC;QAC5E,MAAM,UAAU,GAAG,CAAC,GAAwB,EAAQ,EAAE;YAClD,MAAM,KAAK,GAAY,MAAM,CAAC,GAAa,CAAC,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAkC,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;YAC/D,CAAC;QACL,CAAC,CAAC;QACF,MAAM,UAAU,GAAG,CAAC,GAAwB,EAAQ,EAAE;YAClD,MAAM,KAAK,GAAY,MAAM,CAAC,GAAa,CAAC,CAAC;YAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAkC,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;YAC/D,CAAC;QACL,CAAC,CAAC;QAEF,UAAU,CAAC,OAAO,CAAC,CAAC;QACpB,UAAU,CAAC,UAAU,CAAC,CAAC;QACvB,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,UAAU,CAAC,YAAY,CAAC,CAAC;QACzB,UAAU,CAAC,YAAY,CAAC,CAAC;QACzB,UAAU,CAAC,UAAU,CAAC,CAAC;QACvB,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,UAAU,CAAC,qBAAqB,CAAC,CAAC;QAClC,UAAU,CAAC,SAAS,CAAC,CAAC;QACtB,UAAU,CAAC,YAAY,CAAC,CAAC;QACzB,UAAU,CAAC,eAAe,CAAC,CAAC;QAE5B,MAAM,KAAK,GAAY,MAAM,CAAC,KAAK,CAAC;QACpC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAa,KAAK,CAAC,MAAM,CAAC,CAAC,IAAa,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACxH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,MAAM,UAAU,GAAY,MAAM,CAAC,UAAU,CAAC;QAC9C,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,KAAK,GAA2B,EAAE,CAAC;YACzC,MAAM,CAAC,OAAO,CAAC,UAAqC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAoB,EAAE,EAAE;gBAC9F,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACvB,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAa,MAAkC,CAAC,OAAO,CAAC;QACrE,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,aAAa,GAA4B,OAAkC,CAAC;YAClF,MAAM,eAAe,GAAoB,EAAE,CAAC;YAC5C,MAAM,iBAAiB,GAAG,CAAC,GAA0B,EAAQ,EAAE;gBAC3D,MAAM,KAAK,GAAY,aAAa,CAAC,GAAa,CAAC,CAAC;gBACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC/C,eAA2C,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;gBACxE,CAAC;YACL,CAAC,CAAC;YACF,MAAM,iBAAiB,GAAG,CAAC,GAA0B,EAAQ,EAAE;gBAC3D,MAAM,KAAK,GAAY,aAAa,CAAC,GAAa,CAAC,CAAC;gBACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnD,eAA2C,CAAC,GAAa,CAAC,GAAG,KAAK,CAAC;gBACxE,CAAC;YACL,CAAC,CAAC;YAEF,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9B,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAC9B,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5B,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5B,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAC/B,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAChC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAClC,iBAAiB,CAAC,cAAc,CAAC,CAAC;YAElC,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,OAAO,GAAG,eAAe,CAAC;YACrC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,OAAO;QACjB,IAAI,CAAC;YACD,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAClC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,IAAI,CAAC,YAAY,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;YAClF,0DAA0D;QAC9D,CAAC;IACL,CAAC;CACJ"}