in sqlite/src/blobStore.ts [274:338]
private addReferencedData(_id: Id, item: RangeData | ResultSetData): void {
let moniker: MonikerData | undefined;
if (item.moniker !== undefined) {
moniker = assertDefined(this.provider.getMonikerData(item.moniker));
this.addMoniker(item.moniker, moniker);
}
if (item.next !== undefined) {
this.addResultSetData(item.next, assertDefined(this.provider.getResultData(item.next)));
}
if (item.hoverResult !== undefined) {
moniker = assertDefined(moniker);
if (Monikers.isLocal(moniker)) {
if (this.blob.hovers === undefined) {
this.blob.hovers = LiteralMap.create();
}
if (this.blob.hovers[item.hoverResult] === undefined) {
this.blob.hovers[item.hoverResult] = assertDefined(this.provider.getAndDeleteHoverData(item.hoverResult));
}
} else {
this.provider.storeHover(moniker, item.hoverResult);
}
}
if (item.declarationResult) {
moniker = assertDefined(moniker);
const declarations = this.provider.getAndDeleteDeclarations(item.declarationResult, this.id);
if (declarations !== undefined) {
if (Monikers.isLocal(moniker)) {
if (this.blob.declarationResults === undefined) {
this.blob.declarationResults = LiteralMap.create();
}
this.blob.declarationResults[item.declarationResult] = declarations;
} else {
this.declarations.push({ moniker, data: declarations});
}
}
}
if (item.definitionResult) {
moniker = assertDefined(moniker);
const definitions = this.provider.getAndDeleteDefinitions(item.definitionResult, this.id);
if (definitions !== undefined) {
if (Monikers.isLocal(moniker)) {
if (this.blob.definitionResults === undefined) {
this.blob.definitionResults = LiteralMap.create();
}
this.blob.definitionResults[item.definitionResult] = definitions;
} else {
this.definitions.push({ moniker, data: definitions });
}
}
}
if (item.referenceResult) {
moniker = assertDefined(moniker);
const references = this.provider.getAndDeleteReferences(item.referenceResult, this.id);
if (references !== undefined) {
if (Monikers.isLocal(moniker)) {
if (this.blob.referenceResults === undefined) {
this.blob.referenceResults = LiteralMap.create();
}
this.blob.referenceResults[item.referenceResult] = references;
} else {
this.references.push({ moniker, data: references });
}
}
}
}