in sqlite/src/blobStore.ts [930:981]
private handleDocumentEnd(event: DocumentEvent) {
const documentData = this.getEnsureDocumentData(event.data);
const contains = this.containsDatas.get(event.data);
if (contains !== undefined) {
for (let id of contains) {
const range = assertDefined(this.rangeDatas.get(id));
documentData.addRangeData(id, range);
}
}
let data = documentData.finalize();
if (this.knownHashes.has(data.hash)) {
this.versionInserter.do(this.version, data.hash);
} else {
this.blobInserter.do(data.hash, BlobFormat.utf8Json, Buffer.from(data.blob, 'utf8'));
this.documentInserter.do(data.hash, documentData.uri);
this.versionInserter.do(this.version, data.hash);
if (data.declarations) {
for (let declaration of data.declarations) {
for (let range in declaration.ranges) {
this.declarationInserter.do(declaration.scheme, declaration.indentifier, data.hash, range[0], range[1], range[2], range[3]);
}
}
}
if (data.definitions) {
for (let definition of data.definitions) {
for (let range of definition.ranges) {
this.definitionInserter.do(definition.scheme, definition.indentifier, data.hash, range[0], range[1], range[2], range[3]);
}
}
}
if (data.references) {
for (let reference of data.references) {
if (reference.declarations) {
for (let range of reference.declarations) {
this.referneceInserter.do(reference.scheme, reference.indentifier, data.hash, 0, range[0], range[1], range[2], range[3]);
}
}
if (reference.definitions) {
for (let range of reference.definitions) {
this.referneceInserter.do(reference.scheme, reference.indentifier, data.hash, 1, range[0], range[1], range[2], range[3]);
}
}
if (reference.references) {
for (let range of reference.references) {
this.referneceInserter.do(reference.scheme, reference.indentifier, data.hash, 2, range[0], range[1], range[2], range[3]);
}
}
}
}
}
this.documentDatas.set(event.id, null);
}