@codingame/monaco-vscode-files-service-override 1.83.7 → 1.83.9

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.
@@ -0,0 +1,134 @@
1
+ import { isNumber } from 'monaco-editor/esm/vs/base/common/types.js';
2
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
3
+
4
+ var FileType;
5
+ ( (function(FileType) {
6
+ FileType[FileType["Unknown"] = 0] = "Unknown";
7
+ FileType[FileType["File"] = 1] = "File";
8
+ FileType[FileType["Directory"] = 2] = "Directory";
9
+ FileType[FileType["SymbolicLink"] = 64] = "SymbolicLink";
10
+ })(FileType || (FileType = {})));
11
+ var FilePermission;
12
+ ( (function(FilePermission) {
13
+ FilePermission[FilePermission["Readonly"] = 1] = "Readonly";
14
+ FilePermission[FilePermission["Locked"] = 2] = "Locked";
15
+ })(FilePermission || (FilePermission = {})));
16
+ var FileSystemProviderCapabilities;
17
+ ( (function(FileSystemProviderCapabilities) {
18
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["None"] = 0] = "None";
19
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileReadWrite"] = 2] = "FileReadWrite";
20
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileOpenReadWriteClose"] = 4] = "FileOpenReadWriteClose";
21
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileReadStream"] = 16] = "FileReadStream";
22
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileFolderCopy"] = 8] = "FileFolderCopy";
23
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["PathCaseSensitive"] = 1024] = "PathCaseSensitive";
24
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["Readonly"] = 2048] = "Readonly";
25
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["Trash"] = 4096] = "Trash";
26
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileWriteUnlock"] = 8192] = "FileWriteUnlock";
27
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileAtomicRead"] = 16384] = "FileAtomicRead";
28
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileAtomicWrite"] = 32768] = "FileAtomicWrite";
29
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileAtomicDelete"] = 65536] = "FileAtomicDelete";
30
+ FileSystemProviderCapabilities[FileSystemProviderCapabilities["FileClone"] = 131072] = "FileClone";
31
+ })(FileSystemProviderCapabilities || (FileSystemProviderCapabilities = {})));
32
+ var FileSystemProviderErrorCode;
33
+ ( (function(FileSystemProviderErrorCode) {
34
+ FileSystemProviderErrorCode["FileExists"] = "EntryExists";
35
+ FileSystemProviderErrorCode["FileNotFound"] = "EntryNotFound";
36
+ FileSystemProviderErrorCode["FileNotADirectory"] = "EntryNotADirectory";
37
+ FileSystemProviderErrorCode["FileIsADirectory"] = "EntryIsADirectory";
38
+ FileSystemProviderErrorCode["FileExceedsStorageQuota"] = "EntryExceedsStorageQuota";
39
+ FileSystemProviderErrorCode["FileTooLarge"] = "EntryTooLarge";
40
+ FileSystemProviderErrorCode["FileWriteLocked"] = "EntryWriteLocked";
41
+ FileSystemProviderErrorCode["NoPermissions"] = "NoPermissions";
42
+ FileSystemProviderErrorCode["Unavailable"] = "Unavailable";
43
+ FileSystemProviderErrorCode["Unknown"] = "Unknown";
44
+ })(FileSystemProviderErrorCode || (FileSystemProviderErrorCode = {})));
45
+ class FileSystemProviderError extends Error {
46
+ static create(error, code) {
47
+ const providerError = ( new FileSystemProviderError(( error.toString()), code));
48
+ markAsFileSystemProviderError(providerError, code);
49
+ return providerError;
50
+ }
51
+ constructor(message, code) {
52
+ super(message);
53
+ this.code = code;
54
+ }
55
+ }
56
+ function markAsFileSystemProviderError(error, code) {
57
+ error.name = code ? `${code} (FileSystemError)` : `FileSystemError`;
58
+ return error;
59
+ }
60
+ function toFileSystemProviderErrorCode(error) {
61
+ if (!error) {
62
+ return FileSystemProviderErrorCode.Unknown;
63
+ }
64
+ if (error instanceof FileSystemProviderError) {
65
+ return error.code;
66
+ }
67
+ const match = /^(.+) \(FileSystemError\)$/.exec(error.name);
68
+ if (!match) {
69
+ return FileSystemProviderErrorCode.Unknown;
70
+ }
71
+ switch (match[1]) {
72
+ case FileSystemProviderErrorCode.FileExists: return FileSystemProviderErrorCode.FileExists;
73
+ case FileSystemProviderErrorCode.FileIsADirectory: return FileSystemProviderErrorCode.FileIsADirectory;
74
+ case FileSystemProviderErrorCode.FileNotADirectory: return FileSystemProviderErrorCode.FileNotADirectory;
75
+ case FileSystemProviderErrorCode.FileNotFound: return FileSystemProviderErrorCode.FileNotFound;
76
+ case FileSystemProviderErrorCode.FileTooLarge: return FileSystemProviderErrorCode.FileTooLarge;
77
+ case FileSystemProviderErrorCode.FileWriteLocked: return FileSystemProviderErrorCode.FileWriteLocked;
78
+ case FileSystemProviderErrorCode.NoPermissions: return FileSystemProviderErrorCode.NoPermissions;
79
+ case FileSystemProviderErrorCode.Unavailable: return FileSystemProviderErrorCode.Unavailable;
80
+ }
81
+ return FileSystemProviderErrorCode.Unknown;
82
+ }
83
+ var FileChangeType;
84
+ ( (function(FileChangeType) {
85
+ FileChangeType[FileChangeType["UPDATED"] = 0] = "UPDATED";
86
+ FileChangeType[FileChangeType["ADDED"] = 1] = "ADDED";
87
+ FileChangeType[FileChangeType["DELETED"] = 2] = "DELETED";
88
+ })(FileChangeType || (FileChangeType = {})));
89
+ class ByteSize {
90
+ static { this.KB = 1024; }
91
+ static { this.MB = ByteSize.KB * ByteSize.KB; }
92
+ static { this.GB = ByteSize.MB * ByteSize.KB; }
93
+ static { this.TB = ByteSize.GB * ByteSize.KB; }
94
+ static formatSize(size) {
95
+ if (!isNumber(size)) {
96
+ size = 0;
97
+ }
98
+ if (size < ByteSize.KB) {
99
+ return ( localizeWithPath('vs/platform/files/common/files', 'sizeB', "{0}B", size.toFixed(0)));
100
+ }
101
+ if (size < ByteSize.MB) {
102
+ return ( localizeWithPath(
103
+ 'vs/platform/files/common/files',
104
+ 'sizeKB',
105
+ "{0}KB",
106
+ (size / ByteSize.KB).toFixed(2)
107
+ ));
108
+ }
109
+ if (size < ByteSize.GB) {
110
+ return ( localizeWithPath(
111
+ 'vs/platform/files/common/files',
112
+ 'sizeMB',
113
+ "{0}MB",
114
+ (size / ByteSize.MB).toFixed(2)
115
+ ));
116
+ }
117
+ if (size < ByteSize.TB) {
118
+ return ( localizeWithPath(
119
+ 'vs/platform/files/common/files',
120
+ 'sizeGB',
121
+ "{0}GB",
122
+ (size / ByteSize.GB).toFixed(2)
123
+ ));
124
+ }
125
+ return ( localizeWithPath(
126
+ 'vs/platform/files/common/files',
127
+ 'sizeTB',
128
+ "{0}TB",
129
+ (size / ByteSize.TB).toFixed(2)
130
+ ));
131
+ }
132
+ }
133
+
134
+ export { ByteSize, FileChangeType, FilePermission, FileSystemProviderCapabilities, FileSystemProviderError, FileSystemProviderErrorCode, FileType, markAsFileSystemProviderError, toFileSystemProviderErrorCode };
@@ -0,0 +1,222 @@
1
+ import { VSBuffer } from 'monaco-editor/esm/vs/base/common/buffer.js';
2
+ import { Emitter } from 'monaco-editor/esm/vs/base/common/event.js';
3
+ import { Disposable } from 'monaco-editor/esm/vs/base/common/lifecycle.js';
4
+ import * as resources from 'monaco-editor/esm/vs/base/common/resources.js';
5
+ import { newWriteableStream } from 'monaco-editor/esm/vs/base/common/stream.js';
6
+ import { createFileSystemProviderError, FileSystemProviderErrorCode, FileType } from 'monaco-editor/esm/vs/platform/files/common/files.js';
7
+
8
+ class File {
9
+ constructor(name) {
10
+ this.type = FileType.File;
11
+ this.ctime = Date.now();
12
+ this.mtime = Date.now();
13
+ this.size = 0;
14
+ this.name = name;
15
+ }
16
+ }
17
+ class Directory {
18
+ constructor(name) {
19
+ this.type = FileType.Directory;
20
+ this.ctime = Date.now();
21
+ this.mtime = Date.now();
22
+ this.size = 0;
23
+ this.name = name;
24
+ this.entries = ( new Map());
25
+ }
26
+ }
27
+ class InMemoryFileSystemProvider extends Disposable {
28
+ constructor() {
29
+ super(...arguments);
30
+ this.memoryFdCounter = 0;
31
+ this.fdMemory = ( new Map());
32
+ this._onDidChangeCapabilities = this._register(( new Emitter()));
33
+ this.onDidChangeCapabilities = this._onDidChangeCapabilities.event;
34
+ this._capabilities = 2 | 1024 ;
35
+ this.root = ( new Directory(''));
36
+ this._onDidChangeFile = this._register(( new Emitter()));
37
+ this.onDidChangeFile = this._onDidChangeFile.event;
38
+ this._bufferedChanges = [];
39
+ }
40
+ get capabilities() { return this._capabilities; }
41
+ setReadOnly(readonly) {
42
+ const isReadonly = !!((this._capabilities & 2048) );
43
+ if (readonly !== isReadonly) {
44
+ this._capabilities = readonly ? 2048 | 1024 | 2
45
+ : 2 | 1024 ;
46
+ this._onDidChangeCapabilities.fire();
47
+ }
48
+ }
49
+ async stat(resource) {
50
+ return this._lookup(resource, false);
51
+ }
52
+ async readdir(resource) {
53
+ const entry = this._lookupAsDirectory(resource, false);
54
+ const result = [];
55
+ entry.entries.forEach((child, name) => result.push([name, child.type]));
56
+ return result;
57
+ }
58
+ async readFile(resource) {
59
+ const data = this._lookupAsFile(resource, false).data;
60
+ if (data) {
61
+ return data;
62
+ }
63
+ throw createFileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
64
+ }
65
+ readFileStream(resource) {
66
+ const data = this._lookupAsFile(resource, false).data;
67
+ const stream = newWriteableStream(data => VSBuffer.concat(( data.map(data => VSBuffer.wrap(data)))).buffer);
68
+ stream.end(data);
69
+ return stream;
70
+ }
71
+ async writeFile(resource, content, opts) {
72
+ const basename = resources.basename(resource);
73
+ const parent = this._lookupParentDirectory(resource);
74
+ let entry = parent.entries.get(basename);
75
+ if (entry instanceof Directory) {
76
+ throw createFileSystemProviderError('file is directory', FileSystemProviderErrorCode.FileIsADirectory);
77
+ }
78
+ if (!entry && !opts.create) {
79
+ throw createFileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
80
+ }
81
+ if (entry && opts.create && !opts.overwrite) {
82
+ throw createFileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
83
+ }
84
+ if (!entry) {
85
+ entry = ( new File(basename));
86
+ parent.entries.set(basename, entry);
87
+ this._fireSoon({ type: 1 , resource });
88
+ }
89
+ entry.mtime = Date.now();
90
+ entry.size = content.byteLength;
91
+ entry.data = content;
92
+ this._fireSoon({ type: 0 , resource });
93
+ }
94
+ open(resource, opts) {
95
+ const data = this._lookupAsFile(resource, false).data;
96
+ if (data) {
97
+ const fd = this.memoryFdCounter++;
98
+ this.fdMemory.set(fd, data);
99
+ return Promise.resolve(fd);
100
+ }
101
+ throw createFileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
102
+ }
103
+ close(fd) {
104
+ this.fdMemory.delete(fd);
105
+ return Promise.resolve();
106
+ }
107
+ read(fd, pos, data, offset, length) {
108
+ const memory = this.fdMemory.get(fd);
109
+ if (!memory) {
110
+ throw createFileSystemProviderError(`No file with that descriptor open`, FileSystemProviderErrorCode.Unavailable);
111
+ }
112
+ const toWrite = VSBuffer.wrap(memory).slice(pos, pos + length);
113
+ data.set(toWrite.buffer, offset);
114
+ return Promise.resolve(toWrite.byteLength);
115
+ }
116
+ write(fd, pos, data, offset, length) {
117
+ const memory = this.fdMemory.get(fd);
118
+ if (!memory) {
119
+ throw createFileSystemProviderError(`No file with that descriptor open`, FileSystemProviderErrorCode.Unavailable);
120
+ }
121
+ const toWrite = VSBuffer.wrap(data).slice(offset, offset + length);
122
+ memory.set(toWrite.buffer, pos);
123
+ return Promise.resolve(toWrite.byteLength);
124
+ }
125
+ async rename(from, to, opts) {
126
+ if (!opts.overwrite && this._lookup(to, true)) {
127
+ throw createFileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
128
+ }
129
+ const entry = this._lookup(from, false);
130
+ const oldParent = this._lookupParentDirectory(from);
131
+ const newParent = this._lookupParentDirectory(to);
132
+ const newName = resources.basename(to);
133
+ oldParent.entries.delete(entry.name);
134
+ entry.name = newName;
135
+ newParent.entries.set(newName, entry);
136
+ this._fireSoon({ type: 2 , resource: from }, { type: 1 , resource: to });
137
+ }
138
+ async delete(resource, opts) {
139
+ const dirname = resources.dirname(resource);
140
+ const basename = resources.basename(resource);
141
+ const parent = this._lookupAsDirectory(dirname, false);
142
+ if (( parent.entries.has(basename))) {
143
+ parent.entries.delete(basename);
144
+ parent.mtime = Date.now();
145
+ parent.size -= 1;
146
+ this._fireSoon({ type: 0 , resource: dirname }, { resource, type: 2 });
147
+ }
148
+ }
149
+ async mkdir(resource) {
150
+ if (this._lookup(resource, true)) {
151
+ throw createFileSystemProviderError('file exists already', FileSystemProviderErrorCode.FileExists);
152
+ }
153
+ const basename = resources.basename(resource);
154
+ const dirname = resources.dirname(resource);
155
+ const parent = this._lookupAsDirectory(dirname, false);
156
+ const entry = ( new Directory(basename));
157
+ parent.entries.set(entry.name, entry);
158
+ parent.mtime = Date.now();
159
+ parent.size += 1;
160
+ this._fireSoon({ type: 0 , resource: dirname }, { type: 1 , resource });
161
+ }
162
+ _lookup(uri, silent) {
163
+ const parts = uri.path.split('/');
164
+ let entry = this.root;
165
+ for (const part of parts) {
166
+ if (!part) {
167
+ continue;
168
+ }
169
+ let child;
170
+ if (entry instanceof Directory) {
171
+ child = entry.entries.get(part);
172
+ }
173
+ if (!child) {
174
+ if (!silent) {
175
+ throw createFileSystemProviderError('file not found', FileSystemProviderErrorCode.FileNotFound);
176
+ }
177
+ else {
178
+ return undefined;
179
+ }
180
+ }
181
+ entry = child;
182
+ }
183
+ return entry;
184
+ }
185
+ _lookupAsDirectory(uri, silent) {
186
+ const entry = this._lookup(uri, silent);
187
+ if (entry instanceof Directory) {
188
+ return entry;
189
+ }
190
+ throw createFileSystemProviderError('file not a directory', FileSystemProviderErrorCode.FileNotADirectory);
191
+ }
192
+ _lookupAsFile(uri, silent) {
193
+ const entry = this._lookup(uri, silent);
194
+ if (entry instanceof File) {
195
+ return entry;
196
+ }
197
+ throw createFileSystemProviderError('file is a directory', FileSystemProviderErrorCode.FileIsADirectory);
198
+ }
199
+ _lookupParentDirectory(uri) {
200
+ const dirname = resources.dirname(uri);
201
+ return this._lookupAsDirectory(dirname, false);
202
+ }
203
+ watch(resource, opts) {
204
+ return Disposable.None;
205
+ }
206
+ _fireSoon(...changes) {
207
+ this._bufferedChanges.push(...changes);
208
+ if (this._fireSoonHandle) {
209
+ clearTimeout(this._fireSoonHandle);
210
+ }
211
+ this._fireSoonHandle = setTimeout(() => {
212
+ this._onDidChangeFile.fire(this._bufferedChanges);
213
+ this._bufferedChanges.length = 0;
214
+ }, 5);
215
+ }
216
+ dispose() {
217
+ super.dispose();
218
+ this.fdMemory.clear();
219
+ }
220
+ }
221
+
222
+ export { InMemoryFileSystemProvider };
@@ -0,0 +1,77 @@
1
+ import { VSBuffer } from 'monaco-editor/esm/vs/base/common/buffer.js';
2
+ import { canceled } from 'monaco-editor/esm/vs/base/common/errors.js';
3
+ import { localizeWithPath } from 'monaco-editor/esm/vs/nls.js';
4
+ import { ensureFileSystemProviderError, createFileSystemProviderError, FileSystemProviderErrorCode } from 'monaco-editor/esm/vs/platform/files/common/files.js';
5
+
6
+ async function readFileIntoStream(provider, resource, target, transformer, options, token) {
7
+ let error = undefined;
8
+ try {
9
+ await doReadFileIntoStream(provider, resource, target, transformer, options, token);
10
+ }
11
+ catch (err) {
12
+ error = err;
13
+ }
14
+ finally {
15
+ if (error && options.errorTransformer) {
16
+ error = options.errorTransformer(error);
17
+ }
18
+ if (typeof error !== 'undefined') {
19
+ target.error(error);
20
+ }
21
+ target.end();
22
+ }
23
+ }
24
+ async function doReadFileIntoStream(provider, resource, target, transformer, options, token) {
25
+ throwIfCancelled(token);
26
+ const handle = await provider.open(resource, { create: false });
27
+ try {
28
+ throwIfCancelled(token);
29
+ let totalBytesRead = 0;
30
+ let bytesRead = 0;
31
+ let allowedRemainingBytes = (options && typeof options.length === 'number') ? options.length : undefined;
32
+ let buffer = VSBuffer.alloc(Math.min(options.bufferSize, typeof allowedRemainingBytes === 'number' ? allowedRemainingBytes : options.bufferSize));
33
+ let posInFile = options && typeof options.position === 'number' ? options.position : 0;
34
+ let posInBuffer = 0;
35
+ do {
36
+ bytesRead = await provider.read(handle, posInFile, buffer.buffer, posInBuffer, buffer.byteLength - posInBuffer);
37
+ posInFile += bytesRead;
38
+ posInBuffer += bytesRead;
39
+ totalBytesRead += bytesRead;
40
+ if (typeof allowedRemainingBytes === 'number') {
41
+ allowedRemainingBytes -= bytesRead;
42
+ }
43
+ if (posInBuffer === buffer.byteLength) {
44
+ await target.write(transformer(buffer));
45
+ buffer = VSBuffer.alloc(Math.min(options.bufferSize, typeof allowedRemainingBytes === 'number' ? allowedRemainingBytes : options.bufferSize));
46
+ posInBuffer = 0;
47
+ }
48
+ } while (bytesRead > 0 && (typeof allowedRemainingBytes !== 'number' || allowedRemainingBytes > 0) && throwIfCancelled(token) && throwIfTooLarge(totalBytesRead, options));
49
+ if (posInBuffer > 0) {
50
+ let lastChunkLength = posInBuffer;
51
+ if (typeof allowedRemainingBytes === 'number') {
52
+ lastChunkLength = Math.min(posInBuffer, allowedRemainingBytes);
53
+ }
54
+ target.write(transformer(buffer.slice(0, lastChunkLength)));
55
+ }
56
+ }
57
+ catch (error) {
58
+ throw ensureFileSystemProviderError(error);
59
+ }
60
+ finally {
61
+ await provider.close(handle);
62
+ }
63
+ }
64
+ function throwIfCancelled(token) {
65
+ if (token.isCancellationRequested) {
66
+ throw canceled();
67
+ }
68
+ return true;
69
+ }
70
+ function throwIfTooLarge(totalBytesRead, options) {
71
+ if (typeof options?.limits?.size === 'number' && totalBytesRead > options.limits.size) {
72
+ throw createFileSystemProviderError(localizeWithPath('vs/platform/files/common/io', 'fileTooLargeError', "File is too large to open"), FileSystemProviderErrorCode.FileTooLarge);
73
+ }
74
+ return true;
75
+ }
76
+
77
+ export { readFileIntoStream };