@platformos/platformos-language-server-common 0.0.12 → 0.0.16

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 (75) hide show
  1. package/CHANGELOG.md +67 -0
  2. package/dist/PropertyShapeInference.d.ts +5 -0
  3. package/dist/PropertyShapeInference.js +28 -0
  4. package/dist/PropertyShapeInference.js.map +1 -1
  5. package/dist/TypeSystem.js +106 -55
  6. package/dist/TypeSystem.js.map +1 -1
  7. package/dist/VariableShapeExtractor.js +2 -4
  8. package/dist/VariableShapeExtractor.js.map +1 -1
  9. package/dist/codeActions/CodeActionsProvider.d.ts +1 -1
  10. package/dist/completions/CompletionsProvider.d.ts +1 -0
  11. package/dist/completions/CompletionsProvider.js +6 -0
  12. package/dist/completions/CompletionsProvider.js.map +1 -1
  13. package/dist/completions/providers/GraphQLFieldCompletionProvider.d.ts +12 -0
  14. package/dist/completions/providers/GraphQLFieldCompletionProvider.js +75 -0
  15. package/dist/completions/providers/GraphQLFieldCompletionProvider.js.map +1 -0
  16. package/dist/definitions/DefinitionProvider.d.ts +19 -1
  17. package/dist/definitions/DefinitionProvider.js +33 -1
  18. package/dist/definitions/DefinitionProvider.js.map +1 -1
  19. package/dist/definitions/providers/PageRouteDefinitionProvider.d.ts +51 -0
  20. package/dist/definitions/providers/PageRouteDefinitionProvider.js +204 -0
  21. package/dist/definitions/providers/PageRouteDefinitionProvider.js.map +1 -0
  22. package/dist/definitions/providers/RenderPartialDefinitionProvider.d.ts +14 -0
  23. package/dist/definitions/providers/RenderPartialDefinitionProvider.js +50 -0
  24. package/dist/definitions/providers/RenderPartialDefinitionProvider.js.map +1 -0
  25. package/dist/diagnostics/runChecks.d.ts +3 -1
  26. package/dist/diagnostics/runChecks.js +2 -1
  27. package/dist/diagnostics/runChecks.js.map +1 -1
  28. package/dist/documentLinks/DocumentLinksProvider.d.ts +3 -1
  29. package/dist/documentLinks/DocumentLinksProvider.js +18 -20
  30. package/dist/documentLinks/DocumentLinksProvider.js.map +1 -1
  31. package/dist/hover/HoverProvider.d.ts +1 -0
  32. package/dist/hover/HoverProvider.js +6 -0
  33. package/dist/hover/HoverProvider.js.map +1 -1
  34. package/dist/hover/providers/GraphQLFieldHoverProvider.d.ts +12 -0
  35. package/dist/hover/providers/GraphQLFieldHoverProvider.js +85 -0
  36. package/dist/hover/providers/GraphQLFieldHoverProvider.js.map +1 -0
  37. package/dist/server/AppGraphManager.js +3 -4
  38. package/dist/server/AppGraphManager.js.map +1 -1
  39. package/dist/server/CachedFileSystem.js +7 -2
  40. package/dist/server/CachedFileSystem.js.map +1 -1
  41. package/dist/server/startServer.js +71 -5
  42. package/dist/server/startServer.js.map +1 -1
  43. package/dist/test/MockConnection.d.ts +1 -1
  44. package/dist/test/MockConnection.js +11 -4
  45. package/dist/test/MockConnection.js.map +1 -1
  46. package/dist/tsconfig.tsbuildinfo +1 -1
  47. package/dist/utils/searchPaths.d.ts +21 -0
  48. package/dist/utils/searchPaths.js +34 -0
  49. package/dist/utils/searchPaths.js.map +1 -0
  50. package/package.json +6 -4
  51. package/src/PropertyShapeInference.spec.ts +44 -0
  52. package/src/PropertyShapeInference.ts +27 -0
  53. package/src/TypeSystem.spec.ts +59 -0
  54. package/src/TypeSystem.ts +119 -58
  55. package/src/VariableShapeExtractor.ts +2 -4
  56. package/src/completions/CompletionsProvider.ts +11 -0
  57. package/src/completions/providers/GraphQLFieldCompletionProvider.ts +78 -0
  58. package/src/definitions/DefinitionProvider.ts +52 -0
  59. package/src/definitions/providers/PageRouteDefinitionProvider.spec.ts +776 -0
  60. package/src/definitions/providers/PageRouteDefinitionProvider.ts +250 -0
  61. package/src/definitions/providers/RenderPartialDefinitionProvider.spec.ts +226 -0
  62. package/src/definitions/providers/RenderPartialDefinitionProvider.ts +70 -0
  63. package/src/diagnostics/runChecks.ts +4 -0
  64. package/src/documentLinks/DocumentLinksProvider.spec.ts +131 -10
  65. package/src/documentLinks/DocumentLinksProvider.ts +27 -35
  66. package/src/hover/HoverProvider.ts +11 -0
  67. package/src/hover/providers/GraphQLFieldHoverProvider.spec.ts +124 -0
  68. package/src/hover/providers/GraphQLFieldHoverProvider.ts +90 -0
  69. package/src/server/AppGraphManager.ts +3 -5
  70. package/src/server/CachedFileSystem.ts +11 -2
  71. package/src/server/startServer.spec.ts +62 -0
  72. package/src/server/startServer.ts +85 -5
  73. package/src/test/MockConnection.ts +16 -4
  74. package/src/utils/searchPaths.spec.ts +101 -0
  75. package/src/utils/searchPaths.ts +32 -0
@@ -1,8 +1,10 @@
1
+ import { RouteTable } from '@platformos/platformos-common';
1
2
  import { DocumentManager } from '../documents';
2
3
  import { Dependencies } from '../types';
3
4
  import { DiagnosticsManager } from './DiagnosticsManager';
4
5
  import { AppGraphManager } from '../server/AppGraphManager';
5
- export declare function makeRunChecks(documentManager: DocumentManager, diagnosticsManager: DiagnosticsManager, { fs, loadConfig, platformosDocset, jsonValidationSet, appGraphManager, includeFilesFromDisk, }: Pick<Dependencies, 'fs' | 'loadConfig' | 'platformosDocset' | 'jsonValidationSet'> & {
6
+ export declare function makeRunChecks(documentManager: DocumentManager, diagnosticsManager: DiagnosticsManager, { fs, loadConfig, platformosDocset, jsonValidationSet, appGraphManager, includeFilesFromDisk, getRouteTable, }: Pick<Dependencies, 'fs' | 'loadConfig' | 'platformosDocset' | 'jsonValidationSet'> & {
6
7
  appGraphManager?: AppGraphManager;
7
8
  includeFilesFromDisk?: () => boolean;
9
+ getRouteTable?: () => RouteTable | undefined;
8
10
  }): (triggerURIs: string[]) => Promise<void>;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.makeRunChecks = makeRunChecks;
4
4
  const platformos_check_common_1 = require("@platformos/platformos-check-common");
5
- function makeRunChecks(documentManager, diagnosticsManager, { fs, loadConfig, platformosDocset, jsonValidationSet, appGraphManager, includeFilesFromDisk, }) {
5
+ function makeRunChecks(documentManager, diagnosticsManager, { fs, loadConfig, platformosDocset, jsonValidationSet, appGraphManager, includeFilesFromDisk, getRouteTable, }) {
6
6
  return async function runChecks(triggerURIs) {
7
7
  // This function takes an array of triggerURIs so that we can correctly
8
8
  // recheck on file renames that came from out of bounds in a
@@ -25,6 +25,7 @@ function makeRunChecks(documentManager, diagnosticsManager, { fs, loadConfig, pl
25
25
  fs,
26
26
  platformosDocset,
27
27
  jsonValidationSet,
28
+ routeTable: getRouteTable?.(),
28
29
  async getReferences(uri) {
29
30
  if (!appGraphManager)
30
31
  return [];
@@ -1 +1 @@
1
- {"version":3,"file":"runChecks.js","sourceRoot":"","sources":["../../src/diagnostics/runChecks.ts"],"names":[],"mappings":";;AAcA,sCA+DC;AA7ED,iFAO6C;AAO7C,SAAgB,aAAa,CAC3B,eAAgC,EAChC,kBAAsC,EACtC,EACE,EAAE,EACF,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,GAIrB;IAED,OAAO,KAAK,UAAU,SAAS,CAAC,WAAqB;QACnD,uEAAuE;QACvE,4DAA4D;QAC5D,cAAc;QACd,EAAE;QACF,yBAAyB;QACzB,uCAAuC;QACvC,oCAAoC;QACpC,EAAE;QACF,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAA,wCAAc,EAAC,EAAE,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,kCAAQ,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEnE,OAAO;QAEP,KAAK,UAAU,gBAAgB,CAAC,iBAAyB;YACvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;YAE1E,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAK,EAAC,GAAG,EAAE,MAAM,EAAE;gBAC3C,EAAE;gBACF,gBAAgB;gBAChB,iBAAiB;gBAEjB,KAAK,CAAC,aAAa,CAAC,GAAW;oBAC7B,IAAI,CAAC,eAAe;wBAAE,OAAO,EAAE,CAAC;oBAChC,OAAO,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC;gBAED,KAAK,CAAC,gBAAgB,CAAC,YAAY;oBACjC,MAAM,GAAG,GAAG,8BAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;oBACpD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,GAAG,EAAE,IAAI,KAAK,wCAAc,CAAC,UAAU;wBAAE,OAAO,SAAS,CAAC;oBAC9D,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC5B,CAAC;aACF,CAAC,CAAC;YAEH,oEAAoE;YACpE,sEAAsE;YACtE,QAAQ;YACR,KAAK,MAAM,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC7B,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC3F,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"runChecks.js","sourceRoot":"","sources":["../../src/diagnostics/runChecks.ts"],"names":[],"mappings":";;AAeA,sCAkEC;AAjFD,iFAO6C;AAQ7C,SAAgB,aAAa,CAC3B,eAAgC,EAChC,kBAAsC,EACtC,EACE,EAAE,EACF,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,oBAAoB,EACpB,aAAa,GAKd;IAED,OAAO,KAAK,UAAU,SAAS,CAAC,WAAqB;QACnD,uEAAuE;QACvE,4DAA4D;QAC5D,cAAc;QACd,EAAE;QACF,yBAAyB;QACzB,uCAAuC;QACvC,oCAAoC;QACpC,EAAE;QACF,uBAAuB;QACvB,MAAM,UAAU,GAAG,IAAA,wCAAc,EAAC,EAAE,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,kCAAQ,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;QACxF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEnE,OAAO;QAEP,KAAK,UAAU,gBAAgB,CAAC,iBAAyB;YACvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;YACvD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC;YAE1E,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAK,EAAC,GAAG,EAAE,MAAM,EAAE;gBAC3C,EAAE;gBACF,gBAAgB;gBAChB,iBAAiB;gBACjB,UAAU,EAAE,aAAa,EAAE,EAAE;gBAE7B,KAAK,CAAC,aAAa,CAAC,GAAW;oBAC7B,IAAI,CAAC,eAAe;wBAAE,OAAO,EAAE,CAAC;oBAChC,OAAO,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC;gBAED,KAAK,CAAC,gBAAgB,CAAC,YAAY;oBACjC,MAAM,GAAG,GAAG,8BAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;oBACpD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,GAAG,EAAE,IAAI,KAAK,wCAAc,CAAC,UAAU;wBAAE,OAAO,SAAS,CAAC;oBAC9D,OAAO,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC5B,CAAC;aACF,CAAC,CAAC;YAEH,oEAAoE;YACpE,sEAAsE;YACtE,QAAQ;YACR,KAAK,MAAM,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC7B,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC3F,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -2,11 +2,13 @@ import { DocumentLink } from 'vscode-languageserver';
2
2
  import { DocumentManager } from '../documents';
3
3
  import { FindAppRootURI } from '../internal-types';
4
4
  import { DocumentsLocator, TranslationProvider } from '@platformos/platformos-common';
5
+ import { SearchPathsLoader } from '../utils/searchPaths';
5
6
  export declare class DocumentLinksProvider {
6
7
  private documentManager;
7
8
  private findAppRootURI;
8
9
  private documentsLocator;
9
10
  private translationProvider;
10
- constructor(documentManager: DocumentManager, findAppRootURI: FindAppRootURI, documentsLocator: DocumentsLocator, translationProvider: TranslationProvider);
11
+ private searchPathsCache;
12
+ constructor(documentManager: DocumentManager, findAppRootURI: FindAppRootURI, documentsLocator: DocumentsLocator, translationProvider: TranslationProvider, searchPathsCache: SearchPathsLoader);
11
13
  documentLinks(uriString: string): Promise<DocumentLink[]>;
12
14
  }
@@ -7,11 +7,12 @@ const vscode_languageserver_1 = require("vscode-languageserver");
7
7
  const vscode_uri_1 = require("vscode-uri");
8
8
  const platformos_check_common_2 = require("@platformos/platformos-check-common");
9
9
  class DocumentLinksProvider {
10
- constructor(documentManager, findAppRootURI, documentsLocator, translationProvider) {
10
+ constructor(documentManager, findAppRootURI, documentsLocator, translationProvider, searchPathsCache) {
11
11
  this.documentManager = documentManager;
12
12
  this.findAppRootURI = findAppRootURI;
13
13
  this.documentsLocator = documentsLocator;
14
14
  this.translationProvider = translationProvider;
15
+ this.searchPathsCache = searchPathsCache;
15
16
  }
16
17
  async documentLinks(uriString) {
17
18
  const sourceCode = this.documentManager.get(uriString);
@@ -24,32 +25,29 @@ class DocumentLinksProvider {
24
25
  if (!rootUri) {
25
26
  return [];
26
27
  }
27
- const visitor = documentLinksVisitor(sourceCode.textDocument, vscode_uri_1.URI.parse(rootUri), this.documentsLocator, this.translationProvider);
28
+ const root = vscode_uri_1.URI.parse(rootUri);
29
+ const searchPaths = await this.searchPathsCache.get(root);
30
+ const visitor = documentLinksVisitor(sourceCode.textDocument, root, this.documentsLocator, this.translationProvider, searchPaths);
28
31
  return (0, platformos_check_common_2.visit)(sourceCode.ast, visitor);
29
32
  }
30
33
  }
31
34
  exports.DocumentLinksProvider = DocumentLinksProvider;
32
- function documentLinksVisitor(textDocument, root, documentsLocator, translationProvider) {
35
+ function documentLinksVisitor(textDocument, root, documentsLocator, translationProvider, searchPaths) {
33
36
  return {
34
37
  async LiquidTag(node) {
35
- if ((node.name === 'render' || node.name === 'include') &&
36
- typeof node.markup !== 'string' &&
37
- isLiquidString(node.markup.partial)) {
38
- const partial = node.markup.partial;
39
- return vscode_languageserver_1.DocumentLink.create(range(textDocument, partial), await documentsLocator.locate(root, node.name, partial.value));
40
- }
41
- if (node.name === 'function' &&
42
- typeof node.markup !== 'string' &&
43
- isLiquidString(node.markup.partial)) {
44
- const partial = node.markup.partial;
45
- return vscode_languageserver_1.DocumentLink.create(range(textDocument, partial), await documentsLocator.locate(root, node.name, partial.value));
38
+ const markup = node.markup;
39
+ if (typeof markup === 'string' || markup === null)
40
+ return;
41
+ const name = node.name;
42
+ // render, include, function, theme_render_rc all have a .partial field
43
+ if ('partial' in markup && isLiquidString(markup.partial)) {
44
+ const uri = await documentsLocator.locateOrDefault(root, name, markup.partial.value, searchPaths);
45
+ return vscode_languageserver_1.DocumentLink.create(range(textDocument, markup.partial), uri);
46
46
  }
47
- if (node.name === 'graphql' &&
48
- typeof node.markup !== 'string' &&
49
- 'graphql' in node.markup &&
50
- isLiquidString(node.markup.graphql)) {
51
- const snippet = node.markup.graphql;
52
- return vscode_languageserver_1.DocumentLink.create(range(textDocument, snippet), await documentsLocator.locate(root, node.name, snippet.value));
47
+ // graphql has a .graphql field
48
+ if ('graphql' in markup && isLiquidString(markup.graphql)) {
49
+ const uri = await documentsLocator.locateOrDefault(root, name, markup.graphql.value);
50
+ return vscode_languageserver_1.DocumentLink.create(range(textDocument, markup.graphql), uri);
53
51
  }
54
52
  },
55
53
  async LiquidVariable(node) {
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentLinksProvider.js","sourceRoot":"","sources":["../../src/documentLinks/DocumentLinksProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DocumentLinksProvider.js","sourceRoot":"","sources":["../../src/documentLinks/DocumentLinksProvider.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare class HoverProvider {
12
12
  readonly getDocDefinitionForURI: GetDocDefinitionForURI;
13
13
  readonly findAppRootURI: FindAppRootURI;
14
14
  private providers;
15
+ private graphqlFieldHoverProvider;
15
16
  constructor(documentManager: DocumentManager, platformosDocset: PlatformOSDocset, translationProvider: TranslationProvider, getTranslationsForURI?: GetTranslationsForURI, getDocDefinitionForURI?: GetDocDefinitionForURI, findAppRootURI?: FindAppRootURI);
16
17
  hover(params: HoverParams): Promise<Hover | null>;
17
18
  }
@@ -7,6 +7,7 @@ const providers_1 = require("./providers");
7
7
  const HtmlAttributeValueHoverProvider_1 = require("./providers/HtmlAttributeValueHoverProvider");
8
8
  const platformos_check_common_2 = require("@platformos/platformos-check-common");
9
9
  const LiquidDocTagHoverProvider_1 = require("./providers/LiquidDocTagHoverProvider");
10
+ const GraphQLFieldHoverProvider_1 = require("./providers/GraphQLFieldHoverProvider");
10
11
  class HoverProvider {
11
12
  constructor(documentManager, platformosDocset, translationProvider, getTranslationsForURI = async () => ({}), getDocDefinitionForURI = async () => undefined, findAppRootURI = async () => null) {
12
13
  this.documentManager = documentManager;
@@ -17,6 +18,7 @@ class HoverProvider {
17
18
  this.findAppRootURI = findAppRootURI;
18
19
  this.providers = [];
19
20
  const typeSystem = new TypeSystem_1.TypeSystem(platformosDocset);
21
+ this.graphqlFieldHoverProvider = new GraphQLFieldHoverProvider_1.GraphQLFieldHoverProvider(platformosDocset, documentManager);
20
22
  this.providers = [
21
23
  new providers_1.LiquidTagHoverProvider(platformosDocset),
22
24
  new providers_1.LiquidFilterArgumentHoverProvider(platformosDocset),
@@ -35,6 +37,10 @@ class HoverProvider {
35
37
  async hover(params) {
36
38
  const uri = params.textDocument.uri;
37
39
  const document = this.documentManager.get(uri);
40
+ // GraphQL files get dedicated hover support
41
+ if (document?.type === platformos_check_common_1.SourceCodeType.GraphQL) {
42
+ return this.graphqlFieldHoverProvider.hover(params);
43
+ }
38
44
  // Supports only Liquid resources
39
45
  if (document?.type !== platformos_check_common_1.SourceCodeType.LiquidHtml || document.ast instanceof Error) {
40
46
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"HoverProvider.js","sourceRoot":"","sources":["../../src/hover/HoverProvider.ts"],"names":[],"mappings":";;;AAAA,iFAI6C;AAE7C,8CAA2C;AAI3C,2CAWqB;AACrB,iGAA8F;AAC9F,iFAAsE;AACtE,qFAAkF;AAGlF,MAAa,aAAa;IAGxB,YACW,eAAgC,EAChC,gBAAkC,EAClC,mBAAwC,EACxC,wBAA+C,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAC/D,yBAAiD,KAAK,IAAI,EAAE,CAAC,SAAS,EACtE,iBAAiC,KAAK,IAAI,EAAE,CAAC,IAAI;QALjD,oBAAe,GAAf,eAAe,CAAiB;QAChC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,0BAAqB,GAArB,qBAAqB,CAA0C;QAC/D,2BAAsB,GAAtB,sBAAsB,CAAgD;QACtE,mBAAc,GAAd,cAAc,CAAmC;QARpD,cAAS,GAAwB,EAAE,CAAC;QAU1C,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,gBAAgB,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,GAAG;YACf,IAAI,kCAAsB,CAAC,gBAAgB,CAAC;YAC5C,IAAI,6CAAiC,CAAC,gBAAgB,CAAC;YACvD,IAAI,qCAAyB,CAAC,gBAAgB,CAAC;YAC/C,IAAI,qCAAyB,CAAC,UAAU,CAAC;YACzC,IAAI,8CAAkC,CAAC,UAAU,CAAC;YAClD,IAAI,gCAAoB,EAAE;YAC1B,IAAI,sCAA0B,EAAE;YAChC,IAAI,iEAA+B,EAAE;YACrC,IAAI,oCAAwB,CAAC,eAAe,EAAE,mBAAmB,EAAE,cAAc,CAAC;YAClF,IAAI,sCAA0B,CAAC,sBAAsB,CAAC;YACtD,IAAI,+CAAmC,CAAC,sBAAsB,CAAC;YAC/D,IAAI,qDAAyB,CAAC,eAAe,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAmB;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/C,iCAAiC;QACjC,IAAI,QAAQ,EAAE,IAAI,KAAK,wCAAc,CAAC,UAAU,IAAI,QAAQ,CAAC,GAAG,YAAY,KAAK,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,IAAA,yCAAe,EAC9C,QAAQ,CAAC,GAAG,EACZ,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAChD,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;CACF;AA9CD,sCA8CC"}
1
+ {"version":3,"file":"HoverProvider.js","sourceRoot":"","sources":["../../src/hover/HoverProvider.ts"],"names":[],"mappings":";;;AAAA,iFAI6C;AAE7C,8CAA2C;AAI3C,2CAWqB;AACrB,iGAA8F;AAC9F,iFAAsE;AACtE,qFAAkF;AAClF,qFAAkF;AAGlF,MAAa,aAAa;IAIxB,YACW,eAAgC,EAChC,gBAAkC,EAClC,mBAAwC,EACxC,wBAA+C,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAC/D,yBAAiD,KAAK,IAAI,EAAE,CAAC,SAAS,EACtE,iBAAiC,KAAK,IAAI,EAAE,CAAC,IAAI;QALjD,oBAAe,GAAf,eAAe,CAAiB;QAChC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,0BAAqB,GAArB,qBAAqB,CAA0C;QAC/D,2BAAsB,GAAtB,sBAAsB,CAAgD;QACtE,mBAAc,GAAd,cAAc,CAAmC;QATpD,cAAS,GAAwB,EAAE,CAAC;QAW1C,MAAM,UAAU,GAAG,IAAI,uBAAU,CAAC,gBAAgB,CAAC,CAAC;QACpD,IAAI,CAAC,yBAAyB,GAAG,IAAI,qDAAyB,CAC5D,gBAAgB,EAChB,eAAe,CAChB,CAAC;QACF,IAAI,CAAC,SAAS,GAAG;YACf,IAAI,kCAAsB,CAAC,gBAAgB,CAAC;YAC5C,IAAI,6CAAiC,CAAC,gBAAgB,CAAC;YACvD,IAAI,qCAAyB,CAAC,gBAAgB,CAAC;YAC/C,IAAI,qCAAyB,CAAC,UAAU,CAAC;YACzC,IAAI,8CAAkC,CAAC,UAAU,CAAC;YAClD,IAAI,gCAAoB,EAAE;YAC1B,IAAI,sCAA0B,EAAE;YAChC,IAAI,iEAA+B,EAAE;YACrC,IAAI,oCAAwB,CAAC,eAAe,EAAE,mBAAmB,EAAE,cAAc,CAAC;YAClF,IAAI,sCAA0B,CAAC,sBAAsB,CAAC;YACtD,IAAI,+CAAmC,CAAC,sBAAsB,CAAC;YAC/D,IAAI,qDAAyB,CAAC,eAAe,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAmB;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE/C,4CAA4C;QAC5C,IAAI,QAAQ,EAAE,IAAI,KAAK,wCAAc,CAAC,OAAO,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QAED,iCAAiC;QACjC,IAAI,QAAQ,EAAE,IAAI,KAAK,wCAAc,CAAC,UAAU,IAAI,QAAQ,CAAC,GAAG,YAAY,KAAK,EAAE,CAAC;YAClF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,IAAA,yCAAe,EAC9C,QAAQ,CAAC,GAAG,EACZ,QAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAChD,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACpF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IACvC,CAAC;CACF;AAxDD,sCAwDC"}
@@ -0,0 +1,12 @@
1
+ import { Hover, HoverParams } from 'vscode-languageserver';
2
+ import { DocumentManager } from '../../documents';
3
+ import { PlatformOSDocset } from '@platformos/platformos-check-common';
4
+ export declare class GraphQLFieldHoverProvider {
5
+ private platformosDocset;
6
+ private documentManager;
7
+ private schemaCache;
8
+ private schemaLoaded;
9
+ constructor(platformosDocset: PlatformOSDocset, documentManager: DocumentManager);
10
+ private getSchema;
11
+ hover(params: HoverParams): Promise<Hover | null>;
12
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraphQLFieldHoverProvider = void 0;
4
+ /**
5
+ * graphql-language-service and graphql must be loaded dynamically to avoid
6
+ * the "Cannot use GraphQLList from another module or realm" error that occurs
7
+ * when vitest transforms the graphql ESM module into separate instances.
8
+ * By requiring at runtime, we ensure a single shared module instance.
9
+ */
10
+ let _glsMod;
11
+ function getGLS() {
12
+ if (!_glsMod)
13
+ _glsMod = require('graphql-language-service');
14
+ return _glsMod;
15
+ }
16
+ let _graphqlMod;
17
+ function getGraphQL() {
18
+ if (!_graphqlMod)
19
+ _graphqlMod = require('graphql');
20
+ return _graphqlMod;
21
+ }
22
+ class GraphQLFieldHoverProvider {
23
+ constructor(platformosDocset, documentManager) {
24
+ this.platformosDocset = platformosDocset;
25
+ this.documentManager = documentManager;
26
+ this.schemaLoaded = false;
27
+ }
28
+ async getSchema() {
29
+ if (!this.schemaLoaded) {
30
+ const sdl = await this.platformosDocset.graphQL();
31
+ if (sdl) {
32
+ try {
33
+ this.schemaCache = getGraphQL().buildSchema(sdl);
34
+ }
35
+ catch {
36
+ // Invalid schema SDL
37
+ }
38
+ }
39
+ this.schemaLoaded = true;
40
+ }
41
+ return this.schemaCache;
42
+ }
43
+ async hover(params) {
44
+ const uri = params.textDocument.uri;
45
+ const document = this.documentManager.get(uri);
46
+ if (!document)
47
+ return null;
48
+ const schema = await this.getSchema();
49
+ if (!schema)
50
+ return null;
51
+ const content = document.textDocument.getText();
52
+ const gls = getGLS();
53
+ // graphql-language-service's getHoverInformation uses the character *before* the cursor
54
+ // position to identify the token. We try offset +1 first, then the original position,
55
+ // to handle the case where the cursor is at the start of a token.
56
+ const positions = [
57
+ new gls.Position(params.position.line, params.position.character + 1),
58
+ new gls.Position(params.position.line, params.position.character),
59
+ ];
60
+ try {
61
+ let hoverInfo;
62
+ for (const position of positions) {
63
+ const info = gls.getHoverInformation(schema, content, position);
64
+ if (info && info !== '' && info !== 'null') {
65
+ hoverInfo = typeof info === 'string' ? info : String(info);
66
+ break;
67
+ }
68
+ }
69
+ if (!hoverInfo) {
70
+ return null;
71
+ }
72
+ return {
73
+ contents: {
74
+ kind: 'markdown',
75
+ value: hoverInfo,
76
+ },
77
+ };
78
+ }
79
+ catch {
80
+ return null;
81
+ }
82
+ }
83
+ }
84
+ exports.GraphQLFieldHoverProvider = GraphQLFieldHoverProvider;
85
+ //# sourceMappingURL=GraphQLFieldHoverProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphQLFieldHoverProvider.js","sourceRoot":"","sources":["../../../src/hover/providers/GraphQLFieldHoverProvider.ts"],"names":[],"mappings":"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"}
@@ -22,9 +22,7 @@ class AppGraphManager {
22
22
  const rootUri = await this.findAppRootURI(anyUri);
23
23
  if (!rootUri)
24
24
  return;
25
- const graph = await this.graphs.get(rootUri);
26
- if (!graph)
27
- return;
25
+ // Delete existing graph to force rebuild
28
26
  this.graphs.delete(rootUri);
29
27
  await this.getAppGraphForURI(rootUri);
30
28
  this.connection.sendNotification(types_1.AppGraphDidUpdateNotification.type, { uri: rootUri });
@@ -33,7 +31,8 @@ class AppGraphManager {
33
31
  const { documentManager } = this;
34
32
  await documentManager.preload(rootUri);
35
33
  const dependencies = await this.graphDependencies(rootUri);
36
- return (0, platformos_graph_1.buildAppGraph)(rootUri, dependencies, entryPoints);
34
+ const graph = await (0, platformos_graph_1.buildAppGraph)(rootUri, dependencies, entryPoints);
35
+ return graph;
37
36
  };
38
37
  this.getSourceCode = async (uri) => {
39
38
  const doc = this.documentManager.get(uri);
@@ -1 +1 @@
1
- {"version":3,"file":"AppGraphManager.js","sourceRoot":"","sources":["../../src/server/AppGraphManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppGraphManager.js","sourceRoot":"","sources":["../../src/server/AppGraphManager.ts"],"names":[],"mappings":";;;AAEA,mEAOsC;AACtC,6EAAoD;AAEpD,2FAAkE;AAElE,oCAKkB;AAClB,oCAAoC;AAGpC,MAAa,eAAe;IAE1B,YACU,UAAsB,EACtB,eAAgC,EAChC,EAAsB,EACtB,cAA8B;QAH9B,eAAU,GAAV,UAAU,CAAY;QACtB,oBAAe,GAAf,eAAe,CAAiB;QAChC,OAAE,GAAF,EAAE,CAAoB;QACtB,mBAAc,GAAd,cAAc,CAAgB;QALxC,WAAM,GAAkD,IAAI,GAAG,EAAE,CAAC;QAmG3D,mBAAc,GAAa,EAAE,CAAC;QAuB7B,iBAAY,GAAG,IAAA,gBAAQ,EAAC,KAAK,IAAI,EAAE;YACzC,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3F,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEpC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5B,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,qCAA6B,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC,EAAE,GAAG,CAAC,CAAC;QAEA,kBAAa,GAAG,KAAK,EAAE,OAAe,EAAE,WAAsB,EAAE,EAAE;YACxE,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;YACjC,MAAM,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAEvC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAa,EAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEM,kBAAa,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC;YAEpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,IAAA,+BAAY,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC,CAAC;IAjJC,CAAC;IAEJ,KAAK,CAAC,iBAAiB,CAAC,GAAW;QACjC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAW,EAAE,MAAe,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,EAAE;QAC/E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,aAAa,GAA+C;YAChE,QAAQ;YACR,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SACzC,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAEjF,OAAO,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;gBAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;aACnC,CAAC,CAAC;YACH,OAAO;gBACL,GAAG,GAAG;gBACN,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;aACO,CAAC;QAC1B,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAW,EAAE,MAAe,EAAE,EAAE,eAAe,GAAG,IAAI,EAAE,GAAG,EAAE;QACjF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,aAAa,GAA+C;YAChE,QAAQ;YACR,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SACzC,CAAC;QAEF,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAEzF,OAAO,OAAO,CAAC,GAAG,CAChB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YACrB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBACzC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;gBAClC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;aACnC,CAAC,CAAC;YACH,OAAO;gBACL,GAAG,GAAG;gBACN,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;aACO,CAAC;QAC1B,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAa;QACnC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;QAC3B,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK;YACvB,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,GAAG,GAAG,EAAoC,CAAC;QAE5E,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;QAC1D,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,iDAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;QACnF,CAAC;QAED,OAAO;YACL,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,KAAK;YACZ,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACpD,QAAQ,EAAE,mCAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1E,MAAM,EAAE,IAAI,EAAE,mCAAmC;SAClD,CAAC;IACJ,CAAC;IAID,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,MAAc;QACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAiCO,kBAAkB,CAAC,OAAe;QACxC,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QACnC,OAAO,IAAA,qCAAkB,EAAC,OAAO,EAAE,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,OAAe;QAC7C,MAAM,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO;YACL,EAAE,EAAE,EAAE;YACN,aAAa,EAAE,aAAa;YAC5B,kCAAkC,CAAC,iBAAyB;gBAC1D,OAAO,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACjD,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AA1KD,0CA0KC"}
@@ -3,15 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CachedFileSystem = void 0;
4
4
  class CachedFileSystem {
5
5
  constructor(fs) {
6
- this.readFile = cachedByUri(fs.readFile.bind(fs));
6
+ this.readFile = cachedByUri(fs.readFile.bind(fs),
7
+ // app/config.yml can change externally (e.g. vim) without a file watcher
8
+ // notification. Always read it fresh — it's small and rarely accessed.
9
+ (uri) => uri.endsWith('/app/config.yml'));
7
10
  this.readDirectory = cachedByUri(fs.readDirectory.bind(fs));
8
11
  this.stat = cachedByUri(fs.stat.bind(fs));
9
12
  }
10
13
  }
11
14
  exports.CachedFileSystem = CachedFileSystem;
12
- function cachedByUri(fn) {
15
+ function cachedByUri(fn, skipCache) {
13
16
  const cache = new Map();
14
17
  function cached(uri) {
18
+ if (skipCache?.(uri))
19
+ return fn(uri);
15
20
  if (!cache.has(uri)) {
16
21
  // I'm intentionally leaving this comment here for debugging purposes :)
17
22
  // console.error('cache miss', fn.name, uri);
@@ -1 +1 @@
1
- {"version":3,"file":"CachedFileSystem.js","sourceRoot":"","sources":["../../src/server/CachedFileSystem.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAK3B,YAAY,EAAsB;QAChC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF;AAVD,4CAUC;AAOD,SAAS,WAAW,CAAI,EAA+B;IACrD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5C,SAAS,MAAM,CAAC,GAAW;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,wEAAwE;YACxE,6CAA6C;YAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;QAClC,wEAAwE;QACxE,mDAAmD;QACnD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"CachedFileSystem.js","sourceRoot":"","sources":["../../src/server/CachedFileSystem.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAK3B,YAAY,EAAsB;QAChC,IAAI,CAAC,QAAQ,GAAG,WAAW,CACzB,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,yEAAyE;QACzE,uEAAuE;QACvE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CACzC,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF;AAfD,4CAeC;AAOD,SAAS,WAAW,CAClB,EAA+B,EAC/B,SAAoC;IAEpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE5C,SAAS,MAAM,CAAC,GAAW;QACzB,IAAI,SAAS,EAAE,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,wEAAwE;YACxE,6CAA6C;YAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;QAClC,wEAAwE;QACxE,mDAAmD;QACnD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -22,6 +22,7 @@ const RenameProvider_1 = require("../rename/RenameProvider");
22
22
  const RenameHandler_1 = require("../renamed/RenameHandler");
23
23
  const types_1 = require("../types");
24
24
  const utils_1 = require("../utils");
25
+ const searchPaths_1 = require("../utils/searchPaths");
25
26
  const version_1 = require("../version");
26
27
  const CachedFileSystem_1 = require("./CachedFileSystem");
27
28
  const Configuration_1 = require("./Configuration");
@@ -30,6 +31,12 @@ const AppGraphManager_1 = require("./AppGraphManager");
30
31
  const platformos_common_2 = require("@platformos/platformos-common");
31
32
  const vscode_uri_1 = require("vscode-uri");
32
33
  const defaultLogger = () => { };
34
+ /**
35
+ * When a file-watcher batch contains this many page-file changes, we
36
+ * assume a bulk operation (git checkout, branch switch, stash pop) and
37
+ * fully rebuild the route table instead of applying incremental updates.
38
+ */
39
+ const BULK_PAGE_CHANGE_THRESHOLD = 10;
33
40
  /**
34
41
  * The `git:` VFS does not support the `fs.readDirectory` call and makes most things break.
35
42
  * `git` URIs are the ones you'd encounter when doing a git diff in VS Code. They're not
@@ -65,7 +72,8 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
65
72
  const diagnosticsManager = new diagnostics_1.DiagnosticsManager(connection);
66
73
  const documentsLocator = new platformos_common_2.DocumentsLocator(fs);
67
74
  const translationProvider = new platformos_common_1.TranslationProvider(fs);
68
- const documentLinksProvider = new documentLinks_1.DocumentLinksProvider(documentManager, findAppRootURI, documentsLocator, translationProvider);
75
+ const searchPathsCache = new searchPaths_1.SearchPathsLoader(fs);
76
+ const documentLinksProvider = new documentLinks_1.DocumentLinksProvider(documentManager, findAppRootURI, documentsLocator, translationProvider, searchPathsCache);
69
77
  const codeActionsProvider = new codeActions_1.CodeActionsProvider(documentManager, diagnosticsManager);
70
78
  const onTypeFormattingProvider = new formatting_1.OnTypeFormattingProvider(documentManager, async function setCursorPosition(textDocument, position) {
71
79
  if (!clientCapabilities.hasShowDocumentSupport)
@@ -99,6 +107,7 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
99
107
  jsonValidationSet,
100
108
  appGraphManager,
101
109
  includeFilesFromDisk: () => configuration[Configuration_1.INCLUDE_FILES_FROM_DISK],
110
+ getRouteTable: () => definitionsProvider.getRouteTable(),
102
111
  }), 100);
103
112
  // In platformOS, there are no built-in system translations. User-defined translations
104
113
  // are resolved via TranslationProvider at the point of lookup.
@@ -137,7 +146,7 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
137
146
  return null;
138
147
  return documentManager.get(defaultLocaleFileUri) ?? null;
139
148
  }
140
- const definitionsProvider = new DefinitionProvider_1.DefinitionProvider(documentManager, getDefaultLocaleSourceCode);
149
+ const definitionsProvider = new DefinitionProvider_1.DefinitionProvider(documentManager, getDefaultLocaleSourceCode, fs, findAppRootURI, documentsLocator, searchPathsCache);
141
150
  const jsonLanguageService = new JSONLanguageService_1.JSONLanguageService(documentManager, jsonValidationSet);
142
151
  const cssLanguageService = new CSSLanguageService_1.CSSLanguageService(documentManager);
143
152
  const completionsProvider = new completions_1.CompletionsProvider({
@@ -243,6 +252,9 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
243
252
  {
244
253
  globPattern: '**/*.css',
245
254
  },
255
+ {
256
+ globPattern: '**/app/config.yml',
257
+ },
246
258
  ],
247
259
  });
248
260
  });
@@ -287,7 +299,11 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
287
299
  cssLanguageService.change(uri, params.contentChanges[0].text, version);
288
300
  return;
289
301
  }
290
- documentManager.change(uri, params.contentChanges[0].text, version);
302
+ const text = params.contentChanges[0].text;
303
+ documentManager.change(uri, text, version);
304
+ if ((0, platformos_common_1.isPage)(uri)) {
305
+ definitionsProvider.onPageFileChanged(uri, text);
306
+ }
291
307
  if (await configuration.shouldCheckOnChange()) {
292
308
  runChecks([uri]);
293
309
  }
@@ -300,6 +316,13 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
300
316
  if (hasUnsupportedDocument(params))
301
317
  return;
302
318
  const { uri } = params.textDocument;
319
+ // onDidChangeWatchedFiles also fires for in-editor saves, but it arrives after
320
+ // onDidSaveTextDocument. Invalidate the search-paths cache here immediately so
321
+ // that go-to-definition requests triggered by the same save don't see stale data
322
+ // while waiting for the file-watcher notification.
323
+ if (uri.endsWith('/app/config.yml')) {
324
+ searchPathsCache.invalidate();
325
+ }
303
326
  if (await configuration.shouldCheckOnSave()) {
304
327
  runChecks([uri]);
305
328
  }
@@ -418,6 +441,14 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
418
441
  if (params.changes.length === 0)
419
442
  return;
420
443
  const triggerUris = params.changes.map((change) => change.uri);
444
+ // When many page files change at once (e.g., git checkout, branch switch, stash pop),
445
+ // incremental updates aren't reliable — files not open in the editor won't get
446
+ // individual onDidChangeTextDocument events. VS Code reports branch-switch changes
447
+ // as FileChangeType.Changed, so we count all change types.
448
+ const bulkPageChanges = params.changes.filter((c) => (0, platformos_common_1.isPage)(c.uri));
449
+ if (bulkPageChanges.length >= BULK_PAGE_CHANGE_THRESHOLD) {
450
+ definitionsProvider.invalidateRouteTable();
451
+ }
421
452
  const updates = [];
422
453
  for (const change of params.changes) {
423
454
  // App Check config changes should clear the config cache
@@ -425,6 +456,19 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
425
456
  loadConfig.clearCache();
426
457
  continue;
427
458
  }
459
+ // app/config.yml changes should clear expanded search paths cache
460
+ // and force re-check of all open documents.
461
+ // Note: readFile for config.yml bypasses the CachedFileSystem cache,
462
+ // so we don't need to invalidate it — reads are always fresh.
463
+ if (change.uri.endsWith('/app/config.yml')) {
464
+ documentsLocator.clearExpandedPathsCache();
465
+ searchPathsCache.invalidate();
466
+ // Ensure open liquid files are re-checked with the new search paths
467
+ for (const doc of documentManager.openDocuments) {
468
+ triggerUris.push(doc.uri);
469
+ }
470
+ continue;
471
+ }
428
472
  // Rename cache invalidation is handled by onDidRenameFiles
429
473
  if (documentManager.hasRecentRename(change.uri)) {
430
474
  documentManager.clearRecentRename(change.uri);
@@ -438,7 +482,13 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
438
482
  fs.stat.invalidate(change.uri);
439
483
  appGraphManager.create(change.uri);
440
484
  // If a file is created under out feet, we update its contents.
441
- updates.push(documentManager.changeFromDisk(change.uri));
485
+ updates.push(documentManager.changeFromDisk(change.uri).then(() => {
486
+ if ((0, platformos_common_1.isPage)(change.uri)) {
487
+ const doc = documentManager.get(change.uri);
488
+ if (doc)
489
+ definitionsProvider.onPageFileChanged(change.uri, doc.source);
490
+ }
491
+ }));
442
492
  break;
443
493
  case vscode_languageserver_1.FileChangeType.Changed:
444
494
  // A changed file invalidates readFile and stat (but not readDirectory)
@@ -449,7 +499,21 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
449
499
  // If it is open, then we don't need to update it because the document manager
450
500
  // will have the version from the editor.
451
501
  if (documentManager.get(change.uri)?.version === undefined) {
452
- updates.push(documentManager.changeFromDisk(change.uri));
502
+ updates.push(documentManager.changeFromDisk(change.uri).then(() => {
503
+ if ((0, platformos_common_1.isPage)(change.uri)) {
504
+ const doc = documentManager.get(change.uri);
505
+ if (doc)
506
+ definitionsProvider.onPageFileChanged(change.uri, doc.source);
507
+ }
508
+ }));
509
+ }
510
+ else if ((0, platformos_common_1.isPage)(change.uri)) {
511
+ // File is open in editor but changed externally (e.g. git checkout).
512
+ // The doc manager already has the editor version, but the route table
513
+ // may be stale — update it from whatever the doc manager holds.
514
+ const doc = documentManager.get(change.uri);
515
+ if (doc)
516
+ definitionsProvider.onPageFileChanged(change.uri, doc.source);
453
517
  }
454
518
  break;
455
519
  case vscode_languageserver_1.FileChangeType.Deleted:
@@ -458,6 +522,8 @@ function startServer(connection, { fs: injectedFs, loadConfig: injectedLoadConfi
458
522
  fs.readFile.invalidate(change.uri);
459
523
  fs.stat.invalidate(change.uri);
460
524
  appGraphManager.delete(change.uri);
525
+ if ((0, platformos_common_1.isPage)(change.uri))
526
+ definitionsProvider.onPageFileDeleted(change.uri);
461
527
  // If a file is deleted, it's removed from the document manager
462
528
  documentManager.delete(change.uri);
463
529
  break;