internal/filesystem/types.go (45 lines of code) (raw):

package filesystem import ( "io/fs" "log" "os" "github.com/Azure/azapi-lsp/internal/source" ) type Document interface { DocumentHandler Text() ([]byte, error) Lines() source.Lines LanguageID() string Version() int } type DocumentHandler interface { URI() string FullPath() string Dir() string Filename() string } type VersionedDocumentHandler interface { DocumentHandler Version() int } type DocumentChange interface { Text() string Range() *Range } type DocumentChanges []DocumentChange type DocumentStorage interface { // LS-specific methods CreateDocument(DocumentHandler, string, []byte) error CreateAndOpenDocument(DocumentHandler, string, []byte) error GetDocument(DocumentHandler) (Document, error) CloseAndRemoveDocument(DocumentHandler) error ChangeDocument(VersionedDocumentHandler, DocumentChanges) error HasOpenFiles(path string) (bool, error) } type Filesystem interface { DocumentStorage SetLogger(*log.Logger) // direct FS methods ReadFile(name string) ([]byte, error) ReadDir(name string) ([]fs.DirEntry, error) Open(name string) (fs.File, error) Stat(name string) (os.FileInfo, error) }