in sqlite/src/store.ts [25:91]
async run(): Promise<void> {
return new Promise((resolve, _reject) => {
const rd = readline.createInterface(this.input);
rd.on('line', (line) => {
if (!line) {
return;
}
let element: Edge | Vertex;
try {
element = JSON.parse(line);
} catch (err) {
console.log(`Parsing failed for line:\n${line}`);
throw err;
}
if (element.type === ElementTypes.vertex && element.label === VertexLabels.metaData) {
const convertMetaData = (data: CompressorProperty): CompressorPropertyDescription => {
const result: CompressorPropertyDescription = {
name: data.name as string,
index: data.index,
compressionKind: data.compressionKind
};
if (data.shortForm !== undefined) {
const long: Set<string> = new Set();
const short: Set<string | number> = new Set();
result.shortForm = [];
for (const elem of data.shortForm) {
const [key, value] = elem;
if (long.has(key)) {
throw new Error(`Duplicate key ${key} in short form.`);
}
long.add(key);
if (short.has(value)) {
throw new Error(`Duplicate value ${value} in short form.`);
}
short.add(value);
result.shortForm.push([key, value]);
}
}
return result;
};
const compressors = Compressor.allCompressors();
if (compressors.length > 0) {
const compressMetaData: MetaData = element as MetaData;
compressMetaData.compressors = {
vertexCompressor: vertexCompressor.id,
edgeCompressor: edge11Compressor.id,
itemEdgeCompressor: itemEdgeCompressor.id,
all: []
};
for (let compressor of compressors) {
compressMetaData.compressors.all.push({
id: compressor.id,
parent: compressor.parent !== undefined ? compressor.parent.id : undefined,
properties: compressor.metaData().map(convertMetaData)
});
}
}
this.insert(element);
} else {
this.insert(element);
}
});
rd.on('close', () => {
resolve();
});
});
}