@codingame/monaco-vscode-files-service-override 23.3.0 → 24.1.0
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.
- package/index.d.ts +2 -2
- package/index.js +7 -7
- package/package.json +2 -8
- package/vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.d.ts +1 -1
- package/vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js +7 -7
- package/vscode/src/vs/platform/files/common/fileService.js +27 -27
- package/vscode/src/vs/platform/files/common/io.js +1 -1
- package/vscode/src/vs/workbench/services/textfile/browser/textFileService.js +14 -14
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.d.ts +1 -1
- package/vscode/src/vs/workbench/services/textfile/common/textFileEditorModelManager.js +2 -2
- package/vscode/src/vs/workbench/services/textfile/common/textFileSaveParticipant.js +2 -2
package/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type IEditorOverrideServices } from "@codingame/monaco-vscode-api/vscode/vs/editor/standalone/browser/standaloneServices";
|
|
2
|
-
import { InMemoryFileSystemProvider } from "@codingame/monaco-vscode-
|
|
2
|
+
import { InMemoryFileSystemProvider } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/inMemoryFilesystemProvider";
|
|
3
3
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
4
4
|
import { FileChangeType, FilePermission, FileSystemProviderCapabilities, FileType, type IFileSystemProvider, FileSystemProviderError, FileSystemProviderErrorCode, type IFileChange, type IFileDeleteOptions, type IFileOverwriteOptions, type IFileSystemProviderWithFileReadWriteCapability, type IFileWriteOptions, type IStat, type IWatchOptions, type IFileSystemProviderWithOpenReadWriteCloseCapability, type IFileSystemProviderWithFileReadStreamCapability, type IFileReadStreamOptions, type IFileSystemProviderWithFileAtomicReadCapability, type IFileSystemProviderWithFileAtomicWriteCapability, type IFileSystemProviderWithFileAtomicDeleteCapability, type IFileStat } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files";
|
|
5
5
|
import { type IDisposable, Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
6
6
|
import { Emitter, Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
7
7
|
import { HTMLFileSystemProvider } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/browser/htmlFileSystemProvider";
|
|
8
8
|
import { IndexedDBFileSystemProvider } from "./vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js";
|
|
9
|
-
import { IndexedDB } from "@codingame/monaco-vscode-
|
|
9
|
+
import { IndexedDB } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/indexedDB";
|
|
10
10
|
import { type ReadableStreamEvents } from "@codingame/monaco-vscode-api/vscode/vs/base/common/stream";
|
|
11
11
|
import { CancellationToken } from "@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation";
|
|
12
12
|
interface _RegisteredNode {
|
package/index.js
CHANGED
|
@@ -4,8 +4,8 @@ import { SyncDescriptor } from '@codingame/monaco-vscode-api/vscode/vs/platform/
|
|
|
4
4
|
import { mkdirp, FileService } from './vscode/src/vs/platform/files/common/fileService.js';
|
|
5
5
|
import '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log';
|
|
6
6
|
import { ILogService } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/log.service';
|
|
7
|
-
import { InMemoryFileSystemProvider } from '@codingame/monaco-vscode-
|
|
8
|
-
export { InMemoryFileSystemProvider } from '@codingame/monaco-vscode-
|
|
7
|
+
import { InMemoryFileSystemProvider } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/inMemoryFilesystemProvider';
|
|
8
|
+
export { InMemoryFileSystemProvider } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/inMemoryFilesystemProvider';
|
|
9
9
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
10
10
|
import { IFileService } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files.service';
|
|
11
11
|
import { FileType, FilePermission, createFileSystemProviderError, FileSystemProviderErrorCode, FileSystemProviderCapabilities, FileChangeType, FileSystemProviderError, hasFileReadStreamCapability } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
|
|
@@ -17,12 +17,12 @@ import { HTMLFileSystemProvider } from '@codingame/monaco-vscode-api/vscode/vs/p
|
|
|
17
17
|
export { HTMLFileSystemProvider } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/browser/htmlFileSystemProvider';
|
|
18
18
|
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
19
19
|
import { IndexedDBFileSystemProvider } from './vscode/src/vs/platform/files/browser/indexedDBFileSystemProvider.js';
|
|
20
|
-
import { IndexedDB } from '@codingame/monaco-vscode-
|
|
21
|
-
export { IndexedDB } from '@codingame/monaco-vscode-
|
|
22
|
-
import { BufferLogger } from '@codingame/monaco-vscode-
|
|
20
|
+
import { IndexedDB } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/indexedDB';
|
|
21
|
+
export { IndexedDB } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/indexedDB';
|
|
22
|
+
import { BufferLogger } from '@codingame/monaco-vscode-api/vscode/vs/platform/log/common/bufferLog';
|
|
23
23
|
import { ITextFileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/textfile/common/textfiles.service';
|
|
24
24
|
import { BrowserTextFileService } from './vscode/src/vs/workbench/services/textfile/browser/browserTextFileService.js';
|
|
25
|
-
import { FilesConfigurationService } from '@codingame/monaco-vscode-
|
|
25
|
+
import { FilesConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService';
|
|
26
26
|
import { IFilesConfigurationService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/filesConfiguration/common/filesConfigurationService.service';
|
|
27
27
|
import { BrowserElevatedFileService } from './vscode/src/vs/workbench/services/files/browser/elevatedFileService.js';
|
|
28
28
|
import { IElevatedFileService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/files/common/elevatedFileService.service';
|
|
@@ -31,7 +31,7 @@ import { newWriteableStream, listenStream } from '@codingame/monaco-vscode-api/v
|
|
|
31
31
|
import '@codingame/monaco-vscode-api/vscode/vs/base/common/cancellation';
|
|
32
32
|
import { registerServiceInitializePreParticipant, checkServicesNotInitialized } from '@codingame/monaco-vscode-api/lifecycle';
|
|
33
33
|
import { logsPath } from '@codingame/monaco-vscode-api/workbench';
|
|
34
|
-
import '@codingame/monaco-vscode-
|
|
34
|
+
import '@codingame/monaco-vscode-api/vscode/vs/workbench/contrib/files/browser/files.contribution._configuration';
|
|
35
35
|
|
|
36
36
|
class RegisteredDirectory {
|
|
37
37
|
constructor() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-files-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "24.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "VSCode public API plugged on the monaco editor - files service-override",
|
|
6
6
|
"keywords": [],
|
|
@@ -15,13 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"type": "module",
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@codingame/monaco-vscode-
|
|
19
|
-
"@codingame/monaco-vscode-15626ec7-b165-51e1-8caf-7bcc2ae9b95a-common": "23.3.0",
|
|
20
|
-
"@codingame/monaco-vscode-1f37b5fb-f500-54d2-b98a-d12d100cafca-common": "23.3.0",
|
|
21
|
-
"@codingame/monaco-vscode-2f06fe84-148e-5e6b-a7ca-c7989c5f128a-common": "23.3.0",
|
|
22
|
-
"@codingame/monaco-vscode-60014c9d-b815-501d-83a9-4b08725c2ec2-common": "23.3.0",
|
|
23
|
-
"@codingame/monaco-vscode-api": "23.3.0",
|
|
24
|
-
"@codingame/monaco-vscode-cea4d01f-6526-5c2f-8b09-b168fead499f-common": "23.3.0"
|
|
18
|
+
"@codingame/monaco-vscode-api": "24.1.0"
|
|
25
19
|
},
|
|
26
20
|
"main": "index.js",
|
|
27
21
|
"module": "index.js",
|
|
@@ -2,7 +2,7 @@ import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event"
|
|
|
2
2
|
import { Disposable, IDisposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
3
3
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
4
4
|
import { IFileDeleteOptions, IFileOverwriteOptions, FileSystemProviderCapabilities, FileType, IFileWriteOptions, IFileChange, IFileSystemProviderWithFileReadWriteCapability, IStat, IWatchOptions } from "@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files";
|
|
5
|
-
import { IndexedDB } from "@codingame/monaco-vscode-
|
|
5
|
+
import { IndexedDB } from "@codingame/monaco-vscode-api/vscode/vs/base/browser/indexedDB";
|
|
6
6
|
type DirEntry = [
|
|
7
7
|
string,
|
|
8
8
|
FileType
|
|
@@ -8,15 +8,15 @@ import { isString } from '@codingame/monaco-vscode-api/vscode/vs/base/common/typ
|
|
|
8
8
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
9
9
|
import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
10
10
|
import { createFileSystemProviderError, FileSystemProviderErrorCode, FileType, FileSystemProviderCapabilities, FileChangeType } from '@codingame/monaco-vscode-api/vscode/vs/platform/files/common/files';
|
|
11
|
-
import { BroadcastDataChannel } from '@codingame/monaco-vscode-
|
|
11
|
+
import { BroadcastDataChannel } from '@codingame/monaco-vscode-api/vscode/vs/base/browser/broadcast';
|
|
12
12
|
|
|
13
|
-
const ERR_FILE_NOT_FOUND = createFileSystemProviderError(( localize(
|
|
14
|
-
const ERR_FILE_IS_DIR = createFileSystemProviderError(( localize(
|
|
15
|
-
const ERR_FILE_NOT_DIR = createFileSystemProviderError(( localize(
|
|
16
|
-
const ERR_DIR_NOT_EMPTY = createFileSystemProviderError(( localize(
|
|
17
|
-
const ERR_FILE_EXCEEDS_STORAGE_QUOTA = createFileSystemProviderError(( localize(
|
|
13
|
+
const ERR_FILE_NOT_FOUND = createFileSystemProviderError(( localize(1900, "File does not exist")), FileSystemProviderErrorCode.FileNotFound);
|
|
14
|
+
const ERR_FILE_IS_DIR = createFileSystemProviderError(( localize(1901, "File is Directory")), FileSystemProviderErrorCode.FileIsADirectory);
|
|
15
|
+
const ERR_FILE_NOT_DIR = createFileSystemProviderError(( localize(1902, "File is not a directory")), FileSystemProviderErrorCode.FileNotADirectory);
|
|
16
|
+
const ERR_DIR_NOT_EMPTY = createFileSystemProviderError(( localize(1903, "Directory is not empty")), FileSystemProviderErrorCode.Unknown);
|
|
17
|
+
const ERR_FILE_EXCEEDS_STORAGE_QUOTA = createFileSystemProviderError(( localize(1904, "File exceeds available storage quota")), FileSystemProviderErrorCode.FileExceedsStorageQuota);
|
|
18
18
|
const ERR_UNKNOWN_INTERNAL = (message) => createFileSystemProviderError(( localize(
|
|
19
|
-
|
|
19
|
+
1905,
|
|
20
20
|
"Internal error occurred in IndexedDB File System Provider. ({0})",
|
|
21
21
|
message
|
|
22
22
|
)), FileSystemProviderErrorCode.Unknown);
|
|
@@ -33,7 +33,7 @@ async function mkdirp(providerExtUri, provider, directory) {
|
|
|
33
33
|
const stat = await provider.stat(directory);
|
|
34
34
|
if ((stat.type & FileType.Directory) === 0) {
|
|
35
35
|
throw ( new Error(( localize(
|
|
36
|
-
|
|
36
|
+
1906,
|
|
37
37
|
"Unable to create folder '{0}' that already exists but is not a directory",
|
|
38
38
|
resourceForError(directory)
|
|
39
39
|
))));
|
|
@@ -144,7 +144,7 @@ let FileService = class FileService extends Disposable {
|
|
|
144
144
|
async withProvider(resource) {
|
|
145
145
|
if (!isAbsolutePath(resource)) {
|
|
146
146
|
throw ( new FileOperationError(( localize(
|
|
147
|
-
|
|
147
|
+
1907,
|
|
148
148
|
"Unable to resolve filesystem provider with relative file path '{0}'",
|
|
149
149
|
this.resourceForError(resource)
|
|
150
150
|
)), FileOperationResult.FILE_INVALID_PATH));
|
|
@@ -154,7 +154,7 @@ let FileService = class FileService extends Disposable {
|
|
|
154
154
|
if (!provider) {
|
|
155
155
|
const error = ( new ErrorNoTelemetry());
|
|
156
156
|
error.message = ( localize(
|
|
157
|
-
|
|
157
|
+
1908,
|
|
158
158
|
"ENOPRO: No file system provider found for resource '{0}'",
|
|
159
159
|
(resource.toString())
|
|
160
160
|
));
|
|
@@ -187,7 +187,7 @@ let FileService = class FileService extends Disposable {
|
|
|
187
187
|
catch (error) {
|
|
188
188
|
if (toFileSystemProviderErrorCode(error) === FileSystemProviderErrorCode.FileNotFound) {
|
|
189
189
|
throw ( new FileOperationError(( localize(
|
|
190
|
-
|
|
190
|
+
1909,
|
|
191
191
|
"Unable to resolve nonexistent file '{0}'",
|
|
192
192
|
this.resourceForError(resource)
|
|
193
193
|
)), FileOperationResult.FILE_NOT_FOUND));
|
|
@@ -306,7 +306,7 @@ let FileService = class FileService extends Disposable {
|
|
|
306
306
|
async doValidateCreateFile(resource, options) {
|
|
307
307
|
if (!options?.overwrite && (await this.exists(resource))) {
|
|
308
308
|
throw ( new FileOperationError(( localize(
|
|
309
|
-
|
|
309
|
+
1910,
|
|
310
310
|
"Unable to create file '{0}' that already exists when overwrite flag is not set",
|
|
311
311
|
this.resourceForError(resource)
|
|
312
312
|
)), FileOperationResult.FILE_MODIFIED_SINCE, options));
|
|
@@ -349,7 +349,7 @@ let FileService = class FileService extends Disposable {
|
|
|
349
349
|
}
|
|
350
350
|
catch (error) {
|
|
351
351
|
throw ( new FileOperationError(( localize(
|
|
352
|
-
|
|
352
|
+
1911,
|
|
353
353
|
"Unable to write file '{0}' ({1})",
|
|
354
354
|
this.resourceForError(resource),
|
|
355
355
|
(ensureFileSystemProviderError(error).toString())
|
|
@@ -382,7 +382,7 @@ let FileService = class FileService extends Disposable {
|
|
|
382
382
|
const unlock = !!options?.unlock;
|
|
383
383
|
if (unlock && !(provider.capabilities & FileSystemProviderCapabilities.FileWriteUnlock)) {
|
|
384
384
|
throw ( new Error(( localize(
|
|
385
|
-
|
|
385
|
+
1912,
|
|
386
386
|
"Unable to unlock file '{0}' because provider does not support it.",
|
|
387
387
|
this.resourceForError(resource)
|
|
388
388
|
))));
|
|
@@ -391,21 +391,21 @@ let FileService = class FileService extends Disposable {
|
|
|
391
391
|
if (atomic) {
|
|
392
392
|
if (!(provider.capabilities & FileSystemProviderCapabilities.FileAtomicWrite)) {
|
|
393
393
|
throw ( new Error(( localize(
|
|
394
|
-
|
|
394
|
+
1913,
|
|
395
395
|
"Unable to atomically write file '{0}' because provider does not support it.",
|
|
396
396
|
this.resourceForError(resource)
|
|
397
397
|
))));
|
|
398
398
|
}
|
|
399
399
|
if (!(provider.capabilities & FileSystemProviderCapabilities.FileReadWrite)) {
|
|
400
400
|
throw ( new Error(( localize(
|
|
401
|
-
|
|
401
|
+
1914,
|
|
402
402
|
"Unable to atomically write file '{0}' because provider does not support unbuffered writes.",
|
|
403
403
|
this.resourceForError(resource)
|
|
404
404
|
))));
|
|
405
405
|
}
|
|
406
406
|
if (unlock) {
|
|
407
407
|
throw ( new Error(( localize(
|
|
408
|
-
|
|
408
|
+
1915,
|
|
409
409
|
"Unable to unlock file '{0}' because atomic write is enabled.",
|
|
410
410
|
this.resourceForError(resource)
|
|
411
411
|
))));
|
|
@@ -420,7 +420,7 @@ let FileService = class FileService extends Disposable {
|
|
|
420
420
|
}
|
|
421
421
|
if ((stat.type & FileType.Directory) !== 0) {
|
|
422
422
|
throw ( new FileOperationError(( localize(
|
|
423
|
-
|
|
423
|
+
1916,
|
|
424
424
|
"Unable to write file '{0}' that is actually a directory",
|
|
425
425
|
this.resourceForError(resource)
|
|
426
426
|
)), FileOperationResult.FILE_IS_DIRECTORY, options));
|
|
@@ -441,7 +441,7 @@ let FileService = class FileService extends Disposable {
|
|
|
441
441
|
catch (error) {
|
|
442
442
|
}
|
|
443
443
|
}
|
|
444
|
-
throw ( new FileOperationError(( localize(
|
|
444
|
+
throw ( new FileOperationError(( localize(1917, "File Modified Since")), FileOperationResult.FILE_MODIFIED_SINCE, options));
|
|
445
445
|
}
|
|
446
446
|
return { stat, buffer };
|
|
447
447
|
}
|
|
@@ -523,7 +523,7 @@ let FileService = class FileService extends Disposable {
|
|
|
523
523
|
}
|
|
524
524
|
restoreReadError(error, resource, options) {
|
|
525
525
|
const message = ( localize(
|
|
526
|
-
|
|
526
|
+
1918,
|
|
527
527
|
"Unable to read file '{0}' ({1})",
|
|
528
528
|
this.resourceForError(resource),
|
|
529
529
|
(ensureFileSystemProviderError(error).toString())
|
|
@@ -583,13 +583,13 @@ let FileService = class FileService extends Disposable {
|
|
|
583
583
|
const stat = await this.resolve(resource, { resolveMetadata: true });
|
|
584
584
|
if (stat.isDirectory) {
|
|
585
585
|
throw ( new FileOperationError(( localize(
|
|
586
|
-
|
|
586
|
+
1919,
|
|
587
587
|
"Unable to read file '{0}' that is actually a directory",
|
|
588
588
|
this.resourceForError(resource)
|
|
589
589
|
)), FileOperationResult.FILE_IS_DIRECTORY, options));
|
|
590
590
|
}
|
|
591
591
|
if (typeof options?.etag === 'string' && options.etag !== ETAG_DISABLED && options.etag === stat.etag) {
|
|
592
|
-
throw ( new NotModifiedSinceFileOperationError(( localize(
|
|
592
|
+
throw ( new NotModifiedSinceFileOperationError(( localize(1920, "File not modified since")), stat, options));
|
|
593
593
|
}
|
|
594
594
|
this.validateReadFileLimits(resource, stat.size, options);
|
|
595
595
|
return stat;
|
|
@@ -597,7 +597,7 @@ let FileService = class FileService extends Disposable {
|
|
|
597
597
|
validateReadFileLimits(resource, size, options) {
|
|
598
598
|
if (typeof options?.limits?.size === 'number' && size > options.limits.size) {
|
|
599
599
|
throw ( new TooLargeFileOperationError(( localize(
|
|
600
|
-
|
|
600
|
+
1921,
|
|
601
601
|
"Unable to read file '{0}' that is too large to open",
|
|
602
602
|
this.resourceForError(resource)
|
|
603
603
|
)), FileOperationResult.FILE_TOO_LARGE, size, options));
|
|
@@ -719,7 +719,7 @@ let FileService = class FileService extends Disposable {
|
|
|
719
719
|
}
|
|
720
720
|
if (isSameResourceWithDifferentPathCase && mode === 'copy') {
|
|
721
721
|
throw ( new Error(( localize(
|
|
722
|
-
|
|
722
|
+
1922,
|
|
723
723
|
"Unable to copy when source '{0}' is same as target '{1}' with different path case on a case insensitive file system",
|
|
724
724
|
this.resourceForError(source),
|
|
725
725
|
this.resourceForError(target)
|
|
@@ -727,7 +727,7 @@ let FileService = class FileService extends Disposable {
|
|
|
727
727
|
}
|
|
728
728
|
if (!isSameResourceWithDifferentPathCase && providerExtUri.isEqualOrParent(target, source)) {
|
|
729
729
|
throw ( new Error(( localize(
|
|
730
|
-
|
|
730
|
+
1923,
|
|
731
731
|
"Unable to move/copy when source '{0}' is parent of target '{1}'.",
|
|
732
732
|
this.resourceForError(source),
|
|
733
733
|
this.resourceForError(target)
|
|
@@ -738,7 +738,7 @@ let FileService = class FileService extends Disposable {
|
|
|
738
738
|
if (exists && !isSameResourceWithDifferentPathCase) {
|
|
739
739
|
if (!overwrite) {
|
|
740
740
|
throw ( new FileOperationError(( localize(
|
|
741
|
-
|
|
741
|
+
1924,
|
|
742
742
|
"Unable to move/copy '{0}' because target '{1}' already exists at destination.",
|
|
743
743
|
this.resourceForError(source),
|
|
744
744
|
this.resourceForError(target)
|
|
@@ -748,7 +748,7 @@ let FileService = class FileService extends Disposable {
|
|
|
748
748
|
const { providerExtUri } = this.getExtUri(sourceProvider);
|
|
749
749
|
if (providerExtUri.isEqualOrParent(source, target)) {
|
|
750
750
|
throw ( new Error(( localize(
|
|
751
|
-
|
|
751
|
+
1925,
|
|
752
752
|
"Unable to move/copy '{0}' into '{1}' since a file would replace the folder it is contained in.",
|
|
753
753
|
this.resourceForError(source),
|
|
754
754
|
this.resourceForError(target)
|
|
@@ -793,7 +793,7 @@ let FileService = class FileService extends Disposable {
|
|
|
793
793
|
const useTrash = !!options?.useTrash;
|
|
794
794
|
if (useTrash && !(provider.capabilities & FileSystemProviderCapabilities.Trash)) {
|
|
795
795
|
throw ( new Error(( localize(
|
|
796
|
-
|
|
796
|
+
1926,
|
|
797
797
|
"Unable to delete file '{0}' via trash because provider does not support it.",
|
|
798
798
|
this.resourceForError(resource)
|
|
799
799
|
))));
|
|
@@ -801,14 +801,14 @@ let FileService = class FileService extends Disposable {
|
|
|
801
801
|
const atomic = options?.atomic;
|
|
802
802
|
if (atomic && !(provider.capabilities & FileSystemProviderCapabilities.FileAtomicDelete)) {
|
|
803
803
|
throw ( new Error(( localize(
|
|
804
|
-
|
|
804
|
+
1927,
|
|
805
805
|
"Unable to delete file '{0}' atomically because provider does not support it.",
|
|
806
806
|
this.resourceForError(resource)
|
|
807
807
|
))));
|
|
808
808
|
}
|
|
809
809
|
if (useTrash && atomic) {
|
|
810
810
|
throw ( new Error(( localize(
|
|
811
|
-
|
|
811
|
+
1928,
|
|
812
812
|
"Unable to atomically delete file '{0}' because using trash is enabled.",
|
|
813
813
|
this.resourceForError(resource)
|
|
814
814
|
))));
|
|
@@ -824,7 +824,7 @@ let FileService = class FileService extends Disposable {
|
|
|
824
824
|
}
|
|
825
825
|
else {
|
|
826
826
|
throw ( new FileOperationError(( localize(
|
|
827
|
-
|
|
827
|
+
1929,
|
|
828
828
|
"Unable to delete nonexistent file '{0}'",
|
|
829
829
|
this.resourceForError(resource)
|
|
830
830
|
)), FileOperationResult.FILE_NOT_FOUND));
|
|
@@ -834,7 +834,7 @@ let FileService = class FileService extends Disposable {
|
|
|
834
834
|
const stat = await this.resolve(resource);
|
|
835
835
|
if (stat.isDirectory && Array.isArray(stat.children) && stat.children.length > 0) {
|
|
836
836
|
throw ( new Error(( localize(
|
|
837
|
-
|
|
837
|
+
1930,
|
|
838
838
|
"Unable to delete non-empty folder '{0}'.",
|
|
839
839
|
this.resourceForError(resource)
|
|
840
840
|
))));
|
|
@@ -1093,7 +1093,7 @@ let FileService = class FileService extends Disposable {
|
|
|
1093
1093
|
throwIfFileSystemIsReadonly(provider, resource) {
|
|
1094
1094
|
if (provider.capabilities & FileSystemProviderCapabilities.Readonly) {
|
|
1095
1095
|
throw ( new FileOperationError(( localize(
|
|
1096
|
-
|
|
1096
|
+
1931,
|
|
1097
1097
|
"Unable to modify read-only file '{0}'",
|
|
1098
1098
|
this.resourceForError(resource)
|
|
1099
1099
|
)), FileOperationResult.FILE_PERMISSION_DENIED));
|
|
@@ -1103,7 +1103,7 @@ let FileService = class FileService extends Disposable {
|
|
|
1103
1103
|
throwIfFileIsReadonly(resource, stat) {
|
|
1104
1104
|
if ((stat.permissions ?? 0) & FilePermission.Readonly) {
|
|
1105
1105
|
throw ( new FileOperationError(( localize(
|
|
1106
|
-
|
|
1106
|
+
1931,
|
|
1107
1107
|
"Unable to modify read-only file '{0}'",
|
|
1108
1108
|
this.resourceForError(resource)
|
|
1109
1109
|
)), FileOperationResult.FILE_PERMISSION_DENIED));
|
|
@@ -70,7 +70,7 @@ function throwIfCancelled(token) {
|
|
|
70
70
|
}
|
|
71
71
|
function throwIfTooLarge(totalBytesRead, options) {
|
|
72
72
|
if (typeof options?.limits?.size === 'number' && totalBytesRead > options.limits.size) {
|
|
73
|
-
throw createFileSystemProviderError(( localize(
|
|
73
|
+
throw createFileSystemProviderError(( localize(1938, "File is too large to open")), FileSystemProviderErrorCode.FileTooLarge);
|
|
74
74
|
}
|
|
75
75
|
return true;
|
|
76
76
|
}
|
|
@@ -10,7 +10,7 @@ import { Disposable } from '@codingame/monaco-vscode-api/vscode/vs/base/common/l
|
|
|
10
10
|
import { extname } from '@codingame/monaco-vscode-api/vscode/vs/base/common/path';
|
|
11
11
|
import { IWorkbenchEnvironmentService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/environment/common/environmentService.service';
|
|
12
12
|
import { IUntitledTextEditorService } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/untitled/common/untitledTextEditorService.service';
|
|
13
|
-
import { UntitledTextEditorModel } from '@codingame/monaco-vscode-
|
|
13
|
+
import { UntitledTextEditorModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/untitled/common/untitledTextEditorModel';
|
|
14
14
|
import { TextFileEditorModelManager } from '../common/textFileEditorModelManager.js';
|
|
15
15
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
16
16
|
import { Schemas } from '@codingame/monaco-vscode-api/vscode/vs/base/common/network';
|
|
@@ -53,8 +53,8 @@ import '@codingame/monaco-vscode-api/vscode/vs/platform/theme/common/colors/sear
|
|
|
53
53
|
var AbstractTextFileService_1;
|
|
54
54
|
let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
55
55
|
static { AbstractTextFileService_1 = this; }
|
|
56
|
-
static { this.TEXTFILE_SAVE_CREATE_SOURCE = SaveSourceRegistry.registerSource('textFileCreate.source', ( localize(
|
|
57
|
-
static { this.TEXTFILE_SAVE_REPLACE_SOURCE = SaveSourceRegistry.registerSource('textFileOverwrite.source', ( localize(
|
|
56
|
+
static { this.TEXTFILE_SAVE_CREATE_SOURCE = SaveSourceRegistry.registerSource('textFileCreate.source', ( localize(14241, "File Created"))); }
|
|
57
|
+
static { this.TEXTFILE_SAVE_REPLACE_SOURCE = SaveSourceRegistry.registerSource('textFileOverwrite.source', ( localize(14242, "File Replaced"))); }
|
|
58
58
|
constructor(fileService, untitledTextEditorService, lifecycleService, instantiationService, modelService, environmentService, dialogService, fileDialogService, textResourceConfigurationService, filesConfigurationService, codeEditorService, pathService, workingCopyFileService, uriIdentityService, languageService, logService, elevatedFileService, decorationsService) {
|
|
59
59
|
super();
|
|
60
60
|
this.fileService = fileService;
|
|
@@ -83,7 +83,7 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
83
83
|
constructor(files) {
|
|
84
84
|
super();
|
|
85
85
|
this.files = files;
|
|
86
|
-
this.label = ( localize(
|
|
86
|
+
this.label = ( localize(14243, "Text File Model Decorations"));
|
|
87
87
|
this._onDidChange = this._register(( new Emitter()));
|
|
88
88
|
this.onDidChange = this._onDidChange.event;
|
|
89
89
|
this.registerListeners();
|
|
@@ -110,20 +110,20 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
110
110
|
color: listErrorForeground,
|
|
111
111
|
letter: Codicon.lockSmall,
|
|
112
112
|
strikethrough: true,
|
|
113
|
-
tooltip: ( localize(
|
|
113
|
+
tooltip: ( localize(14244, "Deleted, Read-only")),
|
|
114
114
|
};
|
|
115
115
|
}
|
|
116
116
|
else if (isReadonly) {
|
|
117
117
|
return {
|
|
118
118
|
letter: Codicon.lockSmall,
|
|
119
|
-
tooltip: ( localize(
|
|
119
|
+
tooltip: ( localize(14245, "Read-only")),
|
|
120
120
|
};
|
|
121
121
|
}
|
|
122
122
|
else if (isOrphaned) {
|
|
123
123
|
return {
|
|
124
124
|
color: listErrorForeground,
|
|
125
125
|
strikethrough: true,
|
|
126
|
-
tooltip: ( localize(
|
|
126
|
+
tooltip: ( localize(14246, "Deleted")),
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
return undefined;
|
|
@@ -176,7 +176,7 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
176
176
|
catch (error) {
|
|
177
177
|
cts.dispose(true);
|
|
178
178
|
if (error.decodeStreamErrorKind === DecodeStreamErrorKind.STREAM_IS_BINARY) {
|
|
179
|
-
throw ( new TextFileOperationError(( localize(
|
|
179
|
+
throw ( new TextFileOperationError(( localize(14247, "File seems to be binary and cannot be opened as text")), TextFileOperationResult.FILE_IS_BINARY, options));
|
|
180
180
|
}
|
|
181
181
|
else {
|
|
182
182
|
throw error;
|
|
@@ -423,17 +423,17 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
423
423
|
const { confirmed } = await this.dialogService.confirm({
|
|
424
424
|
type: 'warning',
|
|
425
425
|
message: ( localize(
|
|
426
|
-
|
|
426
|
+
14248,
|
|
427
427
|
"'{0}' already exists. Do you want to replace it?",
|
|
428
428
|
basename(resource)
|
|
429
429
|
)),
|
|
430
430
|
detail: ( localize(
|
|
431
|
-
|
|
431
|
+
14249,
|
|
432
432
|
"A file or folder with the name '{0}' already exists in the folder '{1}'. Replacing it will overwrite its current contents.",
|
|
433
433
|
basename(resource),
|
|
434
434
|
basename(dirname(resource))
|
|
435
435
|
)),
|
|
436
|
-
primaryButton: ( localize(
|
|
436
|
+
primaryButton: ( localize(14250, "&&Replace")),
|
|
437
437
|
});
|
|
438
438
|
return confirmed;
|
|
439
439
|
}
|
|
@@ -441,12 +441,12 @@ let AbstractTextFileService = class AbstractTextFileService extends Disposable {
|
|
|
441
441
|
const { confirmed } = await this.dialogService.confirm({
|
|
442
442
|
type: 'warning',
|
|
443
443
|
message: ( localize(
|
|
444
|
-
|
|
444
|
+
14251,
|
|
445
445
|
"'{0}' is marked as read-only. Do you want to save anyway?",
|
|
446
446
|
basename(resource)
|
|
447
447
|
)),
|
|
448
|
-
detail: ( localize(
|
|
449
|
-
primaryButton: ( localize(
|
|
448
|
+
detail: ( localize(14252, "Paths can be configured as read-only via settings.")),
|
|
449
|
+
primaryButton: ( localize(14253, "&&Save Anyway"))
|
|
450
450
|
});
|
|
451
451
|
return confirmed;
|
|
452
452
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Event } from "@codingame/monaco-vscode-api/vscode/vs/base/common/event";
|
|
2
2
|
import { URI } from "@codingame/monaco-vscode-api/vscode/vs/base/common/uri";
|
|
3
|
-
import { TextFileEditorModel } from "@codingame/monaco-vscode-
|
|
3
|
+
import { TextFileEditorModel } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/textfile/common/textFileEditorModel";
|
|
4
4
|
import { IDisposable, Disposable } from "@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle";
|
|
5
5
|
import { ITextFileEditorModel, ITextFileEditorModelManager, ITextFileEditorModelResolveOrCreateOptions, ITextFileResolveEvent, ITextFileSaveEvent, ITextFileSaveParticipant } from "@codingame/monaco-vscode-api/vscode/vs/workbench/services/textfile/common/textfiles";
|
|
6
6
|
import { IInstantiationService } from "@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation";
|
|
@@ -4,7 +4,7 @@ import { localize } from '@codingame/monaco-vscode-api/vscode/vs/nls';
|
|
|
4
4
|
import { toErrorMessage } from '@codingame/monaco-vscode-api/vscode/vs/base/common/errorMessage';
|
|
5
5
|
import { Emitter, Event } from '@codingame/monaco-vscode-api/vscode/vs/base/common/event';
|
|
6
6
|
import { URI } from '@codingame/monaco-vscode-api/vscode/vs/base/common/uri';
|
|
7
|
-
import { TextFileEditorModel } from '@codingame/monaco-vscode-
|
|
7
|
+
import { TextFileEditorModel } from '@codingame/monaco-vscode-api/vscode/vs/workbench/services/textfile/common/textFileEditorModel';
|
|
8
8
|
import { Disposable, DisposableStore, dispose } from '@codingame/monaco-vscode-api/vscode/vs/base/common/lifecycle';
|
|
9
9
|
import { IInstantiationService } from '@codingame/monaco-vscode-api/vscode/vs/platform/instantiation/common/instantiation';
|
|
10
10
|
import { ResourceMap } from '@codingame/monaco-vscode-api/vscode/vs/base/common/map';
|
|
@@ -63,7 +63,7 @@ let TextFileEditorModelManager = class TextFileEditorModelManager extends Dispos
|
|
|
63
63
|
return {
|
|
64
64
|
onSaveError(error, model) {
|
|
65
65
|
notificationService.error(( localize(
|
|
66
|
-
|
|
66
|
+
14257,
|
|
67
67
|
"Failed to save '{0}': {1}",
|
|
68
68
|
model.name,
|
|
69
69
|
toErrorMessage(error, false)
|
|
@@ -26,13 +26,13 @@ let TextFileSaveParticipant = class TextFileSaveParticipant extends Disposable {
|
|
|
26
26
|
const cts = ( new CancellationTokenSource(token));
|
|
27
27
|
model.textEditorModel?.pushStackElement();
|
|
28
28
|
progress.report({
|
|
29
|
-
message: ( localize(
|
|
29
|
+
message: ( localize(14258, "Running Code Actions and Formatters..."))
|
|
30
30
|
});
|
|
31
31
|
let bubbleCancel = false;
|
|
32
32
|
await this.progressService.withProgress({
|
|
33
33
|
priority: NotificationPriority.URGENT,
|
|
34
34
|
location: ProgressLocation.Notification,
|
|
35
|
-
cancellable: ( localize(
|
|
35
|
+
cancellable: ( localize(14259, "Skip")),
|
|
36
36
|
delay: model.isDirty() ? 5000 : 3000
|
|
37
37
|
}, async (progress) => {
|
|
38
38
|
const participants = Array.from(this.saveParticipants).sort((a, b) => {
|