11import * as ts from 'typescript' ;
2+ import createDebug from 'debug' ;
3+
4+ const debugLog = createDebug ( 'ts-autocomplete:log' ) ;
5+ const debugTrace = createDebug ( 'ts-autocomplete:trace' ) ;
6+ const debugError = createDebug ( 'ts-autocomplete:error' ) ;
27
38type TypeFilename = string ;
49
@@ -18,13 +23,17 @@ function getVirtualLanguageService(): [
1823 const updateCode = ( newDef : Record < TypeFilename , string > ) : void => {
1924 for ( const [ key , value ] of Object . entries ( newDef ) ) {
2025 codeHolder [ key ] = value ;
21- versions [ key ] = ( versions [ key ] ?? 1 ) + 1 ;
26+ versions [ key ] = ( versions [ key ] ?? 0 ) + 1 ;
2227 }
2328 } ;
2429
2530 const servicesHost : ts . LanguageServiceHost = {
26- getScriptFileNames : ( ) => Object . keys ( codeHolder ) ,
27- getScriptVersion : ( fileName ) => ( versions [ fileName ] ?? 1 ) . toString ( ) ,
31+ getScriptFileNames : ( ) => {
32+ return Object . keys ( codeHolder ) ;
33+ } ,
34+ getScriptVersion : ( fileName ) => {
35+ return ( versions [ fileName ] ?? 1 ) . toString ( ) ;
36+ } ,
2837 getScriptSnapshot : ( fileName ) => {
2938 if ( fileName in codeHolder ) {
3039 return ts . ScriptSnapshot . fromString ( codeHolder [ fileName ] ) ;
@@ -35,8 +44,9 @@ function getVirtualLanguageService(): [
3544 getCurrentDirectory : ( ) => process . cwd ( ) ,
3645 getCompilationSettings : ( ) => options ,
3746 getDefaultLibFileName : ( options ) => ts . getDefaultLibFilePath ( options ) ,
38- fileExists : ( fileName ) =>
39- fileName in codeHolder || ts . sys . fileExists ( fileName ) ,
47+ fileExists : ( fileName ) => {
48+ return fileName in codeHolder || ts . sys . fileExists ( fileName ) ;
49+ } ,
4050 readFile : ( fileName ) => {
4151 if ( fileName in codeHolder ) {
4252 return codeHolder [ fileName ] ;
@@ -46,6 +56,10 @@ function getVirtualLanguageService(): [
4656 readDirectory : ( ...args ) => ts . sys . readDirectory ( ...args ) ,
4757 directoryExists : ( ...args ) => ts . sys . directoryExists ( ...args ) ,
4858 getDirectories : ( ...args ) => ts . sys . getDirectories ( ...args ) ,
59+
60+ log : ( ...args ) => debugLog ( args ) ,
61+ trace : ( ...args ) => debugTrace ( args ) ,
62+ error : ( ...args ) => debugError ( args ) ,
4963 } ;
5064
5165 return [
@@ -62,6 +76,7 @@ type AutoCompletion = {
6276
6377function mapCompletions ( completions : ts . CompletionInfo ) : AutoCompletion [ ] {
6478 return completions . entries . map ( ( entry ) => {
79+ //console.log(entry.symbol?.getDeclarations());
6580 const declarations = entry . symbol ?. getDeclarations ( ) ;
6681 let type = 'any' ;
6782 if ( declarations ?. [ 0 ] ) {
@@ -105,6 +120,18 @@ export default class Autocompleter {
105120
106121 if ( completions ?. isMemberCompletion ) {
107122 return mapCompletions ( completions ) ;
123+ } else {
124+ /*
125+ // TOOD: trying to find examples of things that are not member completions..
126+ if (completions) {
127+ console.log(completions.entries?.length, 'entries');
128+ if (completions.entries?.length > 100) {
129+ completions.entries = [];// so I can see something
130+ }
131+ console.log(completions);
132+ //console.log(completions?.entries.map((entry) => entry.name).filter((name) => name.includes('param')));
133+ }
134+ */
108135 }
109136
110137 return [ ] ;
0 commit comments