volar-service-json 0.0.51 → 0.0.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.d.ts +2 -0
  2. package/index.js +29 -4
  3. package/package.json +3 -3
package/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import type { LanguageServicePlugin, DocumentSelector, LanguageServiceContext, Disposable, ProviderResult, FormattingOptions } from '@volar/language-service';
2
2
  import * as json from 'vscode-json-languageservice';
3
3
  import type { TextDocument } from 'vscode-languageserver-textdocument';
4
+ import { URI } from 'vscode-uri';
4
5
  export interface Provide {
5
6
  'json/jsonDocument': (document: TextDocument) => json.JSONDocument | undefined;
6
7
  'json/languageService': () => json.LanguageService;
@@ -11,6 +12,7 @@ export interface JSONSchemaSettings {
11
12
  schema?: json.JSONSchema;
12
13
  folderUri?: string;
13
14
  }
15
+ export declare function resolveReference(ref: string, baseUri: URI, workspaceFolders: URI[]): string;
14
16
  export declare function create({ documentSelector, getWorkspaceContextService, isFormattingEnabled, getFormattingOptions, getLanguageSettings, getDocumentLanguageSettings, onDidChangeLanguageSettings, }?: {
15
17
  documentSelector?: DocumentSelector;
16
18
  getWorkspaceContextService?(context: LanguageServiceContext): json.WorkspaceContextService;
package/index.js CHANGED
@@ -1,18 +1,44 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.create = void 0;
3
+ exports.resolveReference = resolveReference;
4
+ exports.create = create;
4
5
  const json = require("vscode-json-languageservice");
5
6
  const vscode_uri_1 = require("vscode-uri");
7
+ function resolveReference(ref, baseUri, workspaceFolders) {
8
+ if (ref.match(/^\w[\w\d+.-]*:/)) {
9
+ // starts with a schema
10
+ return ref;
11
+ }
12
+ if (ref[0] === '/') { // resolve absolute path against the current workspace folder
13
+ const folderUri = getRootFolder();
14
+ if (folderUri) {
15
+ return folderUri + ref.substr(1);
16
+ }
17
+ }
18
+ const baseUriDir = baseUri.path.endsWith('/') ? baseUri : vscode_uri_1.Utils.dirname(baseUri);
19
+ return vscode_uri_1.Utils.resolvePath(baseUriDir, ref).toString(true);
20
+ function getRootFolder() {
21
+ for (const folder of workspaceFolders) {
22
+ let folderURI = folder.toString();
23
+ if (!folderURI.endsWith('/')) {
24
+ folderURI = folderURI + '/';
25
+ }
26
+ if (baseUri.toString().startsWith(folderURI)) {
27
+ return folderURI;
28
+ }
29
+ }
30
+ }
31
+ }
6
32
  function create({ documentSelector = ['json', 'jsonc'], getWorkspaceContextService = context => {
7
33
  return {
8
- resolveRelativePath(relativePath, resource) {
34
+ resolveRelativePath(ref, resource) {
9
35
  const base = resource.substring(0, resource.lastIndexOf('/') + 1);
10
36
  let baseUri = vscode_uri_1.URI.parse(base);
11
37
  const decoded = context.decodeEmbeddedDocumentUri(baseUri);
12
38
  if (decoded) {
13
39
  baseUri = decoded[0];
14
40
  }
15
- return vscode_uri_1.Utils.resolvePath(baseUri, relativePath).toString();
41
+ return resolveReference(ref, baseUri, context.env.workspaceFolders);
16
42
  },
17
43
  };
18
44
  }, isFormattingEnabled = async (_document, context) => {
@@ -179,7 +205,6 @@ function create({ documentSelector = ['json', 'jsonc'], getWorkspaceContextServi
179
205
  },
180
206
  };
181
207
  }
182
- exports.create = create;
183
208
  function matchDocument(selector, document) {
184
209
  for (const sel of selector) {
185
210
  if (sel === document.languageId || (typeof sel === 'object' && sel.language === document.languageId)) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "volar-service-json",
3
- "version": "0.0.51",
3
+ "version": "0.0.53",
4
4
  "description": "Integrate vscode-json-languageservice into Volar",
5
5
  "homepage": "https://github.com/volarjs/services/tree/master/packages/json",
6
6
  "bugs": "https://github.com/volarjs/services/issues",
@@ -31,12 +31,12 @@
31
31
  "vscode-languageserver-textdocument": "^1.0.11"
32
32
  },
33
33
  "peerDependencies": {
34
- "@volar/language-service": "~2.3.0"
34
+ "@volar/language-service": "~2.3.1"
35
35
  },
36
36
  "peerDependenciesMeta": {
37
37
  "@volar/language-service": {
38
38
  "optional": true
39
39
  }
40
40
  },
41
- "gitHead": "7af242537b552e0fb4391a38fdeb8115580085dc"
41
+ "gitHead": "8c61d6a8acc354e68c726727f72be7d318c583da"
42
42
  }