private addReferencedData()

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 });
				}
			}
		}
	}