in src/services/jsonCompletion.ts [500:527]
private getContributedValueCompletions(doc: Parser.JSONDocument, node: ASTNode | undefined, offset: number, document: TextDocument, collector: CompletionsCollector, collectionPromises: Thenable<any>[]) {
if (!node) {
this.contributions.forEach((contribution) => {
const collectPromise = contribution.collectDefaultCompletions(document.uri, collector);
if (collectPromise) {
collectionPromises.push(collectPromise);
}
});
} else {
if (node.type === 'string' || node.type === 'number' || node.type === 'boolean' || node.type === 'null') {
node = node.parent;
}
if (node && (node.type === 'property') && offset > (node.colonOffset || 0)) {
const parentKey = node.keyNode.value;
const valueNode = node.valueNode;
if ((!valueNode || offset <= (valueNode.offset + valueNode.length)) && node.parent) {
const location = Parser.getNodePath(node.parent);
this.contributions.forEach((contribution) => {
const collectPromise = contribution.collectValueCompletions(document.uri, location, parentKey, collector);
if (collectPromise) {
collectionPromises.push(collectPromise);
}
});
}
}
}
}