driftdetect-lsp 0.9.31 → 0.9.33

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 (60) hide show
  1. package/dist/capabilities.d.ts.map +1 -0
  2. package/dist/capabilities.js +183 -0
  3. package/dist/capabilities.js.map +1 -0
  4. package/dist/commands/show-patterns.d.ts +30 -0
  5. package/dist/commands/show-patterns.d.ts.map +1 -1
  6. package/dist/commands/show-patterns.js +175 -0
  7. package/dist/commands/show-patterns.js.map +1 -0
  8. package/dist/handlers/code-actions.d.ts +32 -0
  9. package/dist/handlers/code-actions.d.ts.map +1 -1
  10. package/dist/handlers/code-actions.js +184 -0
  11. package/dist/handlers/code-actions.js.map +1 -0
  12. package/dist/handlers/code-lens.d.ts +32 -0
  13. package/dist/handlers/code-lens.d.ts.map +1 -1
  14. package/dist/handlers/code-lens.js +162 -0
  15. package/dist/handlers/code-lens.js.map +1 -0
  16. package/dist/handlers/commands.d.ts +48 -0
  17. package/dist/handlers/commands.d.ts.map +1 -1
  18. package/dist/handlers/commands.js +360 -0
  19. package/dist/handlers/commands.js.map +1 -0
  20. package/dist/handlers/diagnostics.d.ts +73 -0
  21. package/dist/handlers/diagnostics.d.ts.map +1 -1
  22. package/dist/handlers/diagnostics.js +259 -0
  23. package/dist/handlers/diagnostics.js.map +1 -0
  24. package/dist/handlers/document-sync.d.ts +37 -0
  25. package/dist/handlers/document-sync.d.ts.map +1 -1
  26. package/dist/handlers/document-sync.js +49 -0
  27. package/dist/handlers/document-sync.js.map +1 -0
  28. package/dist/handlers/hover.d.ts +30 -0
  29. package/dist/handlers/hover.d.ts.map +1 -1
  30. package/dist/handlers/hover.js +119 -0
  31. package/dist/handlers/hover.js.map +1 -0
  32. package/dist/integration/core-scanner.d.ts.map +1 -1
  33. package/dist/integration/core-scanner.js +309 -0
  34. package/dist/integration/core-scanner.js.map +1 -0
  35. package/dist/integration/pattern-store-adapter.d.ts +117 -0
  36. package/dist/integration/pattern-store-adapter.d.ts.map +1 -1
  37. package/dist/integration/pattern-store-adapter.js +349 -0
  38. package/dist/integration/pattern-store-adapter.js.map +1 -0
  39. package/dist/integration/types.d.ts +134 -0
  40. package/dist/integration/types.d.ts.map +1 -1
  41. package/dist/integration/types.js +39 -0
  42. package/dist/integration/types.js.map +1 -0
  43. package/dist/server/types.d.ts +139 -0
  44. package/dist/server/types.d.ts.map +1 -1
  45. package/dist/server/types.js +8 -0
  46. package/dist/server/types.js.map +1 -0
  47. package/dist/server.d.ts.map +1 -1
  48. package/dist/server.js +208 -0
  49. package/dist/server.js.map +1 -0
  50. package/dist/utils/diagnostic.js +263 -0
  51. package/dist/utils/diagnostic.js.map +1 -0
  52. package/dist/utils/document.d.ts +40 -0
  53. package/dist/utils/document.d.ts.map +1 -0
  54. package/dist/utils/document.js +138 -0
  55. package/dist/utils/document.js.map +1 -0
  56. package/dist/utils/index.d.ts.map +1 -0
  57. package/dist/utils/workspace.d.ts.map +1 -1
  58. package/dist/utils/workspace.js +241 -0
  59. package/dist/utils/workspace.js.map +1 -0
  60. package/package.json +1 -1
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Document Utilities
3
+ *
4
+ * Helper functions for working with LSP text documents.
5
+ */
6
+ /**
7
+ * Get the text at a specific range in a document
8
+ */
9
+ export function getTextAtRange(document, range) {
10
+ return document.getText(range);
11
+ }
12
+ /**
13
+ * Get the line text at a specific line number
14
+ */
15
+ export function getLineText(document, line) {
16
+ const lineRange = {
17
+ start: { line, character: 0 },
18
+ end: { line, character: Number.MAX_SAFE_INTEGER },
19
+ };
20
+ return document.getText(lineRange);
21
+ }
22
+ /**
23
+ * Get the word at a specific position
24
+ */
25
+ export function getWordAtPosition(document, position) {
26
+ const lineText = getLineText(document, position.line);
27
+ const character = position.character;
28
+ // Find word boundaries
29
+ let start = character;
30
+ let end = character;
31
+ // Move start backwards to find word start
32
+ while (start > 0) {
33
+ const char = lineText[start - 1];
34
+ if (char === undefined || !isWordChar(char)) {
35
+ break;
36
+ }
37
+ start--;
38
+ }
39
+ // Move end forwards to find word end
40
+ while (end < lineText.length) {
41
+ const char = lineText[end];
42
+ if (char === undefined || !isWordChar(char)) {
43
+ break;
44
+ }
45
+ end++;
46
+ }
47
+ if (start === end) {
48
+ return null;
49
+ }
50
+ return lineText.substring(start, end);
51
+ }
52
+ /**
53
+ * Check if a character is a word character
54
+ */
55
+ function isWordChar(char) {
56
+ return /[\w$]/.test(char);
57
+ }
58
+ /**
59
+ * Get the file name from a URI
60
+ */
61
+ export function getFileName(uri) {
62
+ const parts = uri.split('/');
63
+ return parts[parts.length - 1] ?? uri;
64
+ }
65
+ /**
66
+ * Get the file extension from a URI
67
+ */
68
+ export function getFileExtension(uri) {
69
+ const fileName = getFileName(uri);
70
+ const dotIndex = fileName.lastIndexOf('.');
71
+ if (dotIndex === -1) {
72
+ return '';
73
+ }
74
+ return fileName.substring(dotIndex + 1);
75
+ }
76
+ /**
77
+ * Check if a URI matches a glob pattern (simple implementation)
78
+ */
79
+ export function matchesGlob(uri, pattern) {
80
+ // Convert glob to regex
81
+ const regexPattern = pattern
82
+ .replace(/\*\*/g, '.*')
83
+ .replace(/\*/g, '[^/]*')
84
+ .replace(/\?/g, '.')
85
+ .replace(/\./g, '\\.');
86
+ const regex = new RegExp(`^${regexPattern}$`);
87
+ return regex.test(uri);
88
+ }
89
+ /**
90
+ * Get the language ID for a file based on extension
91
+ */
92
+ export function getLanguageId(uri) {
93
+ const ext = getFileExtension(uri).toLowerCase();
94
+ const languageMap = {
95
+ ts: 'typescript',
96
+ tsx: 'typescriptreact',
97
+ js: 'javascript',
98
+ jsx: 'javascriptreact',
99
+ py: 'python',
100
+ java: 'java',
101
+ cs: 'csharp',
102
+ php: 'php',
103
+ css: 'css',
104
+ scss: 'scss',
105
+ less: 'less',
106
+ json: 'json',
107
+ yaml: 'yaml',
108
+ yml: 'yaml',
109
+ md: 'markdown',
110
+ html: 'html',
111
+ vue: 'vue',
112
+ svelte: 'svelte',
113
+ };
114
+ return languageMap[ext] ?? 'plaintext';
115
+ }
116
+ /**
117
+ * Check if a document is a supported language
118
+ */
119
+ export function isSupportedLanguage(document) {
120
+ const supportedLanguages = [
121
+ 'typescript',
122
+ 'typescriptreact',
123
+ 'javascript',
124
+ 'javascriptreact',
125
+ 'python',
126
+ 'java',
127
+ 'csharp',
128
+ 'php',
129
+ 'css',
130
+ 'scss',
131
+ 'less',
132
+ 'json',
133
+ 'yaml',
134
+ 'markdown',
135
+ ];
136
+ return supportedLanguages.includes(document.languageId);
137
+ }
138
+ //# sourceMappingURL=document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/utils/document.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAsB,EAAE,KAAY;IACjE,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,QAAsB,EAAE,IAAY;IAC9D,MAAM,SAAS,GAAU;QACvB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE;QAC7B,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAE;KAClD,CAAC;IACF,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAsB,EACtB,QAAkB;IAElB,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC;IAErC,uBAAuB;IACvB,IAAI,KAAK,GAAG,SAAS,CAAC;IACtB,IAAI,GAAG,GAAG,SAAS,CAAC;IAEpB,0CAA0C;IAC1C,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM;QACR,CAAC;QACD,KAAK,EAAE,CAAC;IACV,CAAC;IAED,qCAAqC;IACrC,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,MAAM;QACR,CAAC;QACD,GAAG,EAAE,CAAC;IACR,CAAC;IAED,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,OAAe;IACtD,wBAAwB;IACxB,MAAM,YAAY,GAAG,OAAO;SACzB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;SACtB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAEzB,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAEhD,MAAM,WAAW,GAA2B;QAC1C,EAAE,EAAE,YAAY;QAChB,GAAG,EAAE,iBAAiB;QACtB,EAAE,EAAE,YAAY;QAChB,GAAG,EAAE,iBAAiB;QACtB,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,QAAQ;QACZ,GAAG,EAAE,KAAK;QACV,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;QACX,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,KAAK;QACV,MAAM,EAAE,QAAQ;KACjB,CAAC;IAEF,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,WAAW,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,MAAM,kBAAkB,GAAG;QACzB,YAAY;QACZ,iBAAiB;QACjB,YAAY;QACZ,iBAAiB;QACjB,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,KAAK;QACL,KAAK;QACL,MAAM;QACN,MAAM;QACN,MAAM;QACN,MAAM;QACN,UAAU;KACX,CAAC;IAEF,OAAO,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/utils/workspace.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAKnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAS1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKtE;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,eAAe,EAAE,GAClC,eAAe,GAAG,SAAS,CAO7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,SAAS,CAExF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,OAAO,CAEvF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAE9E;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAEvE;AAmBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,eAAe,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAchH;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAejD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAU/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAc7E"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/utils/workspace.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI/C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAKnE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAS1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKtE;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,gBAAgB,EAAE,eAAe,EAAE,GAClC,eAAe,GAAG,SAAS,CAO7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,GAAG,SAAS,CAExF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,OAAO,CAEvF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAE9E;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAEvE;AAmBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,eAAe,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAchH;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGrD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG9C;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAG/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAejD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAU/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAc7E"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Workspace Utilities - Workspace helpers
3
+ * @requirements 27.1
4
+ */
5
+ import { URI } from 'vscode-uri';
6
+ // ============================================================================
7
+ // URI Utilities
8
+ // ============================================================================
9
+ /**
10
+ * Convert file path to URI
11
+ */
12
+ export function pathToUri(path) {
13
+ return URI.file(path).toString();
14
+ }
15
+ /**
16
+ * Convert URI to file path
17
+ */
18
+ export function uriToPath(uri) {
19
+ return URI.parse(uri).fsPath;
20
+ }
21
+ /**
22
+ * Get file name from URI
23
+ */
24
+ export function getFileName(uri) {
25
+ const parsed = URI.parse(uri);
26
+ const path = parsed.fsPath;
27
+ return path.split(/[/\\]/).pop() ?? '';
28
+ }
29
+ /**
30
+ * Get file extension from URI
31
+ */
32
+ export function getFileExtension(uri) {
33
+ const fileName = getFileName(uri);
34
+ const parts = fileName.split('.');
35
+ return parts.length > 1 ? parts.pop() ?? '' : '';
36
+ }
37
+ /**
38
+ * Get directory from URI
39
+ */
40
+ export function getDirectory(uri) {
41
+ const parsed = URI.parse(uri);
42
+ const path = parsed.fsPath;
43
+ const parts = path.split(/[/\\]/);
44
+ parts.pop();
45
+ return parts.join('/');
46
+ }
47
+ /**
48
+ * Join URI with path segments
49
+ */
50
+ export function joinUri(base, ...segments) {
51
+ const parsed = URI.parse(base);
52
+ const basePath = parsed.fsPath;
53
+ const joined = [basePath, ...segments].join('/');
54
+ return URI.file(joined).toString();
55
+ }
56
+ /**
57
+ * Get relative path from base URI
58
+ */
59
+ export function getRelativePath(baseUri, targetUri) {
60
+ const basePath = uriToPath(baseUri);
61
+ const targetPath = uriToPath(targetUri);
62
+ if (targetPath.startsWith(basePath)) {
63
+ return targetPath.substring(basePath.length).replace(/^[/\\]/, '');
64
+ }
65
+ return targetPath;
66
+ }
67
+ /**
68
+ * Check if URI is a child of another URI
69
+ */
70
+ export function isChildOf(parentUri, childUri) {
71
+ const parentPath = uriToPath(parentUri);
72
+ const childPath = uriToPath(childUri);
73
+ return childPath.startsWith(parentPath + '/') || childPath.startsWith(parentPath + '\\');
74
+ }
75
+ // ============================================================================
76
+ // Workspace Utilities
77
+ // ============================================================================
78
+ /**
79
+ * Find workspace folder for URI
80
+ */
81
+ export function findWorkspaceFolder(uri, workspaceFolders) {
82
+ for (const folder of workspaceFolders) {
83
+ if (isChildOf(folder.uri, uri) || folder.uri === uri) {
84
+ return folder;
85
+ }
86
+ }
87
+ return undefined;
88
+ }
89
+ /**
90
+ * Get workspace root URI
91
+ */
92
+ export function getWorkspaceRoot(workspaceFolders) {
93
+ return workspaceFolders[0]?.uri;
94
+ }
95
+ /**
96
+ * Check if URI is in workspace
97
+ */
98
+ export function isInWorkspace(uri, workspaceFolders) {
99
+ return findWorkspaceFolder(uri, workspaceFolders) !== undefined;
100
+ }
101
+ /**
102
+ * Get all workspace URIs
103
+ */
104
+ export function getWorkspaceUris(workspaceFolders) {
105
+ return workspaceFolders.map((f) => f.uri);
106
+ }
107
+ // ============================================================================
108
+ // Pattern Matching
109
+ // ============================================================================
110
+ /**
111
+ * Check if URI matches a glob pattern
112
+ */
113
+ export function matchesGlob(uri, pattern) {
114
+ const path = uriToPath(uri);
115
+ const regex = globToRegex(pattern);
116
+ return regex.test(path);
117
+ }
118
+ /**
119
+ * Check if URI matches any of the glob patterns
120
+ */
121
+ export function matchesAnyGlob(uri, patterns) {
122
+ return patterns.some((pattern) => matchesGlob(uri, pattern));
123
+ }
124
+ /**
125
+ * Convert glob pattern to regex
126
+ */
127
+ function globToRegex(glob) {
128
+ const regex = glob
129
+ // Escape special regex characters except * and ?
130
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
131
+ // Convert ** to match any path
132
+ .replace(/\*\*/g, '.*')
133
+ // Convert * to match any characters except /
134
+ .replace(/\*/g, '[^/\\\\]*')
135
+ // Convert ? to match single character
136
+ .replace(/\?/g, '.');
137
+ return new RegExp(`^${regex}$`, 'i');
138
+ }
139
+ /**
140
+ * Filter URIs by glob patterns
141
+ */
142
+ export function filterByGlob(uris, includePatterns, excludePatterns = []) {
143
+ return uris.filter((uri) => {
144
+ // Must match at least one include pattern
145
+ if (includePatterns.length > 0 && !matchesAnyGlob(uri, includePatterns)) {
146
+ return false;
147
+ }
148
+ // Must not match any exclude pattern
149
+ if (excludePatterns.length > 0 && matchesAnyGlob(uri, excludePatterns)) {
150
+ return false;
151
+ }
152
+ return true;
153
+ });
154
+ }
155
+ // ============================================================================
156
+ // File Type Utilities
157
+ // ============================================================================
158
+ /**
159
+ * Check if URI is a TypeScript file
160
+ */
161
+ export function isTypeScriptFile(uri) {
162
+ const ext = getFileExtension(uri).toLowerCase();
163
+ return ['ts', 'tsx', 'mts', 'cts'].includes(ext);
164
+ }
165
+ /**
166
+ * Check if URI is a JavaScript file
167
+ */
168
+ export function isJavaScriptFile(uri) {
169
+ const ext = getFileExtension(uri).toLowerCase();
170
+ return ['js', 'jsx', 'mjs', 'cjs'].includes(ext);
171
+ }
172
+ /**
173
+ * Check if URI is a CSS file
174
+ */
175
+ export function isCssFile(uri) {
176
+ const ext = getFileExtension(uri).toLowerCase();
177
+ return ['css', 'scss', 'sass', 'less'].includes(ext);
178
+ }
179
+ /**
180
+ * Check if URI is a JSON file
181
+ */
182
+ export function isJsonFile(uri) {
183
+ const ext = getFileExtension(uri).toLowerCase();
184
+ return ['json', 'jsonc'].includes(ext);
185
+ }
186
+ /**
187
+ * Check if URI is a Markdown file
188
+ */
189
+ export function isMarkdownFile(uri) {
190
+ const ext = getFileExtension(uri).toLowerCase();
191
+ return ['md', 'markdown'].includes(ext);
192
+ }
193
+ /**
194
+ * Check if URI is a configuration file
195
+ */
196
+ export function isConfigFile(uri) {
197
+ const fileName = getFileName(uri).toLowerCase();
198
+ const configPatterns = [
199
+ /^\..*rc$/,
200
+ /^\..*rc\.json$/,
201
+ /^\..*rc\.js$/,
202
+ /^\..*rc\.cjs$/,
203
+ /^\..*rc\.mjs$/,
204
+ /^.*\.config\.(js|ts|json|cjs|mjs)$/,
205
+ /^tsconfig.*\.json$/,
206
+ /^package\.json$/,
207
+ /^\.env.*$/,
208
+ ];
209
+ return configPatterns.some((pattern) => pattern.test(fileName));
210
+ }
211
+ /**
212
+ * Check if URI is a test file
213
+ */
214
+ export function isTestFile(uri) {
215
+ const fileName = getFileName(uri).toLowerCase();
216
+ const testPatterns = [
217
+ /\.test\.(ts|tsx|js|jsx)$/,
218
+ /\.spec\.(ts|tsx|js|jsx)$/,
219
+ /_test\.(ts|tsx|js|jsx)$/,
220
+ /test_.*\.(ts|tsx|js|jsx)$/,
221
+ ];
222
+ return testPatterns.some((pattern) => pattern.test(fileName));
223
+ }
224
+ /**
225
+ * Check if URI should be excluded from scanning
226
+ */
227
+ export function shouldExclude(uri, excludePatterns) {
228
+ // Default exclusions
229
+ const defaultExclusions = [
230
+ '**/node_modules/**',
231
+ '**/dist/**',
232
+ '**/build/**',
233
+ '**/.git/**',
234
+ '**/coverage/**',
235
+ '**/.next/**',
236
+ '**/.nuxt/**',
237
+ ];
238
+ const allPatterns = [...defaultExclusions, ...excludePatterns];
239
+ return matchesAnyGlob(uri, allPatterns);
240
+ }
241
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/utils/workspace.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "driftdetect-lsp",
3
- "version": "0.9.31",
3
+ "version": "0.9.33",
4
4
  "description": "Language Server Protocol implementation for Drift",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {