From 6e8f6596175fda10b69ee9ba33caf45b5ad7e579 Mon Sep 17 00:00:00 2001 From: Martin Aeschlimann Date: Wed, 20 Apr 2016 14:07:41 +0200 Subject: [PATCH] update to jsonc-parser 0.2.0 --- extensions/javascript/package.json | 2 +- .../src/features/bowerJSONContribution.ts | 20 ++-- .../src/features/jsonContributions.ts | 4 +- .../src/features/packageJSONContribution.ts | 94 ++++++++++--------- extensions/json/server/package.json | 2 +- 5 files changed, 63 insertions(+), 59 deletions(-) diff --git a/extensions/javascript/package.json b/extensions/javascript/package.json index 479cadd13ce..b1fd77b9a87 100644 --- a/extensions/javascript/package.json +++ b/extensions/javascript/package.json @@ -10,7 +10,7 @@ "dependencies": { "vscode-nls": "^1.0.4", "request-light": "^0.1.0", - "jsonc-parser": "^0.1.0" + "jsonc-parser": "^0.2.0" }, "scripts": { "compile": "gulp compile-extension:javascript", diff --git a/extensions/javascript/src/features/bowerJSONContribution.ts b/extensions/javascript/src/features/bowerJSONContribution.ts index cc0eec533cd..d5886e0468a 100644 --- a/extensions/javascript/src/features/bowerJSONContribution.ts +++ b/extensions/javascript/src/features/bowerJSONContribution.ts @@ -162,15 +162,17 @@ export class BowerJSONContribution implements IJSONContribution { public getInfoContribution(resource: string, location: Location): Thenable { if ((location.matches(['dependencies', '*']) || location.matches(['devDependencies', '*']))) { - let pack = location.segments[location.segments.length - 1]; - let htmlContent : MarkedString[] = []; - htmlContent.push(localize('json.bower.package.hover', '{0}', pack)); - return this.getInfo(pack).then(documentation => { - if (documentation) { - htmlContent.push(documentation); - } - return htmlContent; - }); + let pack = location.path[location.path.length - 1]; + if (typeof pack === 'string') { + let htmlContent : MarkedString[] = []; + htmlContent.push(localize('json.bower.package.hover', '{0}', pack)); + return this.getInfo(pack).then(documentation => { + if (documentation) { + htmlContent.push(documentation); + } + return htmlContent; + }); + } } return null; } diff --git a/extensions/javascript/src/features/jsonContributions.ts b/extensions/javascript/src/features/jsonContributions.ts index d193b289c7b..1926b38fab7 100644 --- a/extensions/javascript/src/features/jsonContributions.ts +++ b/extensions/javascript/src/features/jsonContributions.ts @@ -120,7 +120,7 @@ export class JSONCompletionItemProvider implements CompletionItemProvider { let collectPromise : Thenable = null; - if (location.completeProperty) { + if (location.isAtPropertyKey) { let addValue = !location.previousNode || !location.previousNode.columnOffset; let scanner = createScanner(document.getText(), true); scanner.setPosition(offset); @@ -128,7 +128,7 @@ export class JSONCompletionItemProvider implements CompletionItemProvider { let isLast = scanner.getToken() === SyntaxKind.CloseBraceToken || scanner.getToken() === SyntaxKind.EOF; collectPromise = this.jsonContribution.collectPropertySuggestions(fileName, location, currentWord, addValue, isLast, collector); } else { - if (location.segments.length === 0) { + if (location.path.length === 0) { collectPromise = this.jsonContribution.collectDefaultSuggestions(fileName, collector); } else { collectPromise = this.jsonContribution.collectValueSuggestions(fileName, location, collector); diff --git a/extensions/javascript/src/features/packageJSONContribution.ts b/extensions/javascript/src/features/packageJSONContribution.ts index f41b1f3d4fa..c3565a75606 100644 --- a/extensions/javascript/src/features/packageJSONContribution.ts +++ b/extensions/javascript/src/features/packageJSONContribution.ts @@ -117,44 +117,45 @@ export class PackageJSONContribution implements IJSONContribution { public collectValueSuggestions(fileName: string, location: Location, result: ISuggestionsCollector): Thenable { if ((location.matches(['dependencies', '*']) || location.matches(['devDependencies', '*']) || location.matches(['optionalDependencies', '*']) || location.matches(['peerDependencies', '*']))) { - let currentKey = location.segments[location.segments.length - 1]; - let queryUrl = 'http://registry.npmjs.org/' + encodeURIComponent(currentKey) + '/latest'; - - return this.xhr({ - url : queryUrl - }).then((success) => { - try { - let obj = JSON.parse(success.responseText); - if (obj && obj.version) { - let version = obj.version; - let name = JSON.stringify(version); - let proposal = new CompletionItem(name); - proposal.kind = CompletionItemKind.Property; - proposal.insertText = name; - proposal.documentation = localize('json.npm.latestversion', 'The currently latest version of the package'); - result.add(proposal); - - name = JSON.stringify('^' + version); - proposal = new CompletionItem(name); - proposal.kind = CompletionItemKind.Property; - proposal.insertText = name; - proposal.documentation = localize('json.npm.majorversion', 'Matches the most recent major version (1.x.x)'); - result.add(proposal); - - name = JSON.stringify('~' + version); - proposal = new CompletionItem(name); - proposal.kind = CompletionItemKind.Property; - proposal.insertText = name; - proposal.documentation = localize('json.npm.minorversion', 'Matches the most recent minor version (1.2.x)'); - result.add(proposal); + let currentKey = location.path[location.path.length - 1]; + if (typeof currentKey === 'string') { + let queryUrl = 'http://registry.npmjs.org/' + encodeURIComponent(currentKey) + '/latest'; + return this.xhr({ + url : queryUrl + }).then((success) => { + try { + let obj = JSON.parse(success.responseText); + if (obj && obj.version) { + let version = obj.version; + let name = JSON.stringify(version); + let proposal = new CompletionItem(name); + proposal.kind = CompletionItemKind.Property; + proposal.insertText = name; + proposal.documentation = localize('json.npm.latestversion', 'The currently latest version of the package'); + result.add(proposal); + + name = JSON.stringify('^' + version); + proposal = new CompletionItem(name); + proposal.kind = CompletionItemKind.Property; + proposal.insertText = name; + proposal.documentation = localize('json.npm.majorversion', 'Matches the most recent major version (1.x.x)'); + result.add(proposal); + + name = JSON.stringify('~' + version); + proposal = new CompletionItem(name); + proposal.kind = CompletionItemKind.Property; + proposal.insertText = name; + proposal.documentation = localize('json.npm.minorversion', 'Matches the most recent minor version (1.2.x)'); + result.add(proposal); + } + } catch (e) { + // ignore } - } catch (e) { - // ignore - } - return 0; - }, (error) => { - return 0; - }); + return 0; + }, (error) => { + return 0; + }); + } } return null; } @@ -204,16 +205,17 @@ export class PackageJSONContribution implements IJSONContribution { public getInfoContribution(fileName: string, location: Location): Thenable { if ((location.matches(['dependencies', '*']) || location.matches(['devDependencies', '*']) || location.matches(['optionalDependencies', '*']) || location.matches(['peerDependencies', '*']))) { - let pack = location.segments[location.segments.length - 1]; - - let htmlContent : MarkedString[] = []; - htmlContent.push(localize('json.npm.package.hover', '{0}', pack)); - return this.getInfo(pack).then(infos => { - infos.forEach(info => { - htmlContent.push(info); + let pack = location.path[location.path.length - 1]; + if (typeof pack === 'string') { + let htmlContent : MarkedString[] = []; + htmlContent.push(localize('json.npm.package.hover', '{0}', pack)); + return this.getInfo(pack).then(infos => { + infos.forEach(info => { + htmlContent.push(info); + }); + return htmlContent; }); - return htmlContent; - }); + } } return null; } diff --git a/extensions/json/server/package.json b/extensions/json/server/package.json index 0d57b8a7ffe..5afc0268f70 100644 --- a/extensions/json/server/package.json +++ b/extensions/json/server/package.json @@ -9,7 +9,7 @@ }, "dependencies": { "request-light": "^0.1.0", - "jsonc-parser": "^0.1.0", + "jsonc-parser": "^0.2.0", "vscode-languageserver": "^1.3.0", "vscode-nls": "^1.0.4" }, -- GitLab