@lvce-editor/extension-host-worker 8.57.0 → 8.59.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.
Files changed (35) hide show
  1. package/dist/extension-api/index.js +130 -35
  2. package/dist/extension-api/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +5 -0
  3. package/dist/extension-api/parts/FileSystemProvider/FileSystemProvider.js +0 -0
  4. package/dist/extension-api/parts/FileSystemProviderRegistry/FileSystemProviderRegistry.js +56 -0
  5. package/dist/extension-api/parts/FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.js +0 -0
  6. package/dist/extension-api/parts/Platform/Platform.js +19 -0
  7. package/dist/extension-api/parts/RegisteredFileSystemProvider/RegisteredFileSystemProvider.js +0 -0
  8. package/dist/extension-api/parts/SourceControl/SourceControl.js +2 -0
  9. package/dist/extension-api/parts/SourceControlProviderRegistry/SourceControlProviderRegistry.js +19 -0
  10. package/dist/extensionHostWorkerMain.js +68 -20
  11. package/extension-api/dist/index.d.ts +6 -1
  12. package/extension-api/dist/index.js +3 -1
  13. package/extension-api/dist/parts/CommandMap/CommandMap.d.ts +3 -0
  14. package/extension-api/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.d.ts +3 -0
  15. package/extension-api/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +5 -1
  16. package/extension-api/dist/parts/ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.d.ts +3 -0
  17. package/extension-api/dist/parts/FileSystemProvider/FileSystemProvider.d.ts +4 -0
  18. package/extension-api/dist/parts/FileSystemProvider/FileSystemProvider.js +1 -0
  19. package/extension-api/dist/parts/FileSystemProviderRegistry/FileSystemProviderRegistry.d.ts +7 -0
  20. package/extension-api/dist/parts/FileSystemProviderRegistry/FileSystemProviderRegistry.js +50 -0
  21. package/extension-api/dist/parts/FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.d.ts +5 -0
  22. package/extension-api/dist/parts/FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.js +1 -0
  23. package/extension-api/dist/parts/Platform/Platform.d.ts +2 -0
  24. package/extension-api/dist/parts/Platform/Platform.js +16 -0
  25. package/extension-api/dist/parts/RegisteredFileSystemProvider/RegisteredFileSystemProvider.d.ts +4 -0
  26. package/extension-api/dist/parts/RegisteredFileSystemProvider/RegisteredFileSystemProvider.js +1 -0
  27. package/extension-api/dist/parts/RegisteredSourceControlProvider/RegisteredSourceControlProvider.d.ts +1 -0
  28. package/extension-api/dist/parts/SourceControl/SourceControl.d.ts +1 -1
  29. package/extension-api/dist/parts/SourceControl/SourceControl.js +1 -1
  30. package/extension-api/dist/parts/SourceControlProvider/SourceControlProvider.d.ts +1 -0
  31. package/extension-api/dist/parts/SourceControlProviderRegistry/SourceControlProviderRegistry.d.ts +1 -0
  32. package/extension-api/dist/parts/SourceControlProviderRegistry/SourceControlProviderRegistry.js +18 -0
  33. package/extension-api/package.json +1 -1
  34. package/extension-api/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +1 -1
@@ -666,7 +666,7 @@ const register$1 = commandMap => {
666
666
  const getCommand = key => {
667
667
  return commands[key];
668
668
  };
669
- const execute$2 = (command, ...args) => {
669
+ const execute$3 = (command, ...args) => {
670
670
  const fn = getCommand(command);
671
671
  if (!fn) {
672
672
  throw new CommandNotFoundError(command);
@@ -1086,7 +1086,7 @@ const logError = () => {
1086
1086
  };
1087
1087
  const handleMessage = event => {
1088
1088
  const actualRequiresSocket = event?.target?.requiresSocket || requiresSocket;
1089
- const actualExecute = event?.target?.execute || execute$2;
1089
+ const actualExecute = event?.target?.execute || execute$3;
1090
1090
  return handleJsonRpcMessage(event.target, event.data, actualExecute, event.target._resolve, preparePrettyError, logError, actualRequiresSocket);
1091
1091
  };
1092
1092
 
@@ -1688,14 +1688,14 @@ const hasLegacyProvider = (getProvider, textDocumentId) => {
1688
1688
  const executeLegacy = (executeProvider, textDocumentId, args) => {
1689
1689
  return executeProvider(textDocumentId, ...args);
1690
1690
  };
1691
- const isUnavailableError$1 = error => {
1691
+ const isUnavailableError$2 = error => {
1692
1692
  return error instanceof Error && error.name === 'CommandNotFoundError' || error instanceof TypeError && error.message === "Cannot read properties of undefined (reading 'invoke')";
1693
1693
  };
1694
1694
  const invoke$3 = async (method, ...args) => {
1695
1695
  try {
1696
1696
  return await invoke$6(method, ...args);
1697
1697
  } catch (error) {
1698
- if (isUnavailableError$1(error)) {
1698
+ if (isUnavailableError$2(error)) {
1699
1699
  return {
1700
1700
  found: false
1701
1701
  };
@@ -1703,7 +1703,7 @@ const invoke$3 = async (method, ...args) => {
1703
1703
  throw error;
1704
1704
  }
1705
1705
  };
1706
- const execute$1 = async (kind, methodName, textDocumentId, ...args) => {
1706
+ const execute$2 = async (kind, methodName, textDocumentId, ...args) => {
1707
1707
  const textDocument = get$a(textDocumentId);
1708
1708
  if (!textDocument) {
1709
1709
  return {
@@ -1990,7 +1990,7 @@ const executeBraceCompletionProvider = async (textDocumentId, ...args) => {
1990
1990
  if (hasLegacyProvider(getProvider$d, textDocumentId)) {
1991
1991
  return executeLegacy(executeLegacyBraceCompletionProvider, textDocumentId, args);
1992
1992
  }
1993
- const isolated = await execute$1('brace completion', 'provideBraceCompletion', textDocumentId, ...args);
1993
+ const isolated = await execute$2('brace completion', 'provideBraceCompletion', textDocumentId, ...args);
1994
1994
  return isolated.found ? isolated.result : executeLegacy(executeLegacyBraceCompletionProvider, textDocumentId, args);
1995
1995
  };
1996
1996
 
@@ -2010,7 +2010,7 @@ const executeClosingTagProvider = async (textDocumentId, ...args) => {
2010
2010
  if (hasLegacyProvider(getProvider$c, textDocumentId)) {
2011
2011
  return executeLegacy(executeLegacyClosingTagProvider, textDocumentId, args);
2012
2012
  }
2013
- const isolated = await execute$1('closing tag', 'provideClosingTag', textDocumentId, ...args);
2013
+ const isolated = await execute$2('closing tag', 'provideClosingTag', textDocumentId, ...args);
2014
2014
  return isolated.found ? isolated.result : executeLegacy(executeLegacyClosingTagProvider, textDocumentId, args);
2015
2015
  };
2016
2016
 
@@ -2028,7 +2028,7 @@ const {
2028
2028
  });
2029
2029
  const executeCodeActionProvider = async (uid, ...args) => {
2030
2030
  if (!hasLegacyProvider(getProvider$b, uid)) {
2031
- const isolated = await execute$1('code action', 'provideCodeActions', uid, ...args);
2031
+ const isolated = await execute$2('code action', 'provideCodeActions', uid, ...args);
2032
2032
  if (isolated.found) {
2033
2033
  return isolated.result;
2034
2034
  }
@@ -2095,7 +2095,7 @@ const executeCommentProvider = async (textDocumentId, ...args) => {
2095
2095
  if (hasLegacyProvider(getProvider$a, textDocumentId)) {
2096
2096
  return executeLegacy(executeLegacyCommentProvider, textDocumentId, args);
2097
2097
  }
2098
- const isolated = await execute$1('comment', 'provideComment', textDocumentId, ...args);
2098
+ const isolated = await execute$2('comment', 'provideComment', textDocumentId, ...args);
2099
2099
  return isolated.found ? isolated.result : executeLegacy(executeLegacyCommentProvider, textDocumentId, args);
2100
2100
  };
2101
2101
 
@@ -2349,7 +2349,7 @@ const executeDefinitionProvider = async (textDocumentId, ...args) => {
2349
2349
  if (hasLegacyProvider(getProvider$9, textDocumentId)) {
2350
2350
  return executeLegacy(executeLegacyDefinitionProvider, textDocumentId, args);
2351
2351
  }
2352
- const isolated = await execute$1('definition', 'provideDefinition', textDocumentId, ...args);
2352
+ const isolated = await execute$2('definition', 'provideDefinition', textDocumentId, ...args);
2353
2353
  return isolated.found ? isolated.result : executeLegacy(executeLegacyDefinitionProvider, textDocumentId, args);
2354
2354
  };
2355
2355
 
@@ -2392,6 +2392,22 @@ const exec = async (command, args, options) => {
2392
2392
  throw new DepecratedError(`vscode.exec is deprecated, use createNodeRpc instead`);
2393
2393
  };
2394
2394
 
2395
+ const isUnavailableError$1 = error => {
2396
+ return error instanceof Error && error.name === 'CommandNotFoundError' || error instanceof TypeError && error.message === "Cannot read properties of undefined (reading 'invoke')";
2397
+ };
2398
+ const execute$1 = async (providerId, uri) => {
2399
+ try {
2400
+ return await invoke$6('Extensions.executeFileSystemProviderReadFile', providerId, uri);
2401
+ } catch (error) {
2402
+ if (isUnavailableError$1(error)) {
2403
+ return {
2404
+ found: false
2405
+ };
2406
+ }
2407
+ throw error;
2408
+ }
2409
+ };
2410
+
2395
2411
  const fileSystemProviderMap = Object.create(null);
2396
2412
  const get$9 = protocol => {
2397
2413
  const provider = fileSystemProviderMap[protocol];
@@ -2401,6 +2417,9 @@ const get$9 = protocol => {
2401
2417
  }
2402
2418
  return provider;
2403
2419
  };
2420
+ const getOptional = protocol => {
2421
+ return fileSystemProviderMap[protocol];
2422
+ };
2404
2423
  const set$9 = (id, provider) => {
2405
2424
  if (!id) {
2406
2425
  throw new Error('Failed to register file system provider: missing id');
@@ -2424,8 +2443,15 @@ const readDirWithFileTypes$2 = async (protocol, path) => {
2424
2443
  };
2425
2444
  const readFile$2 = async (protocol, path) => {
2426
2445
  try {
2427
- const provider = get$9(protocol);
2428
- return await provider.readFile(path);
2446
+ const provider = getOptional(protocol);
2447
+ if (provider) {
2448
+ return await provider.readFile(path);
2449
+ }
2450
+ const isolated = await execute$1(protocol, path);
2451
+ if (isolated.found) {
2452
+ return isolated.result;
2453
+ }
2454
+ return await get$9(protocol).readFile(path);
2429
2455
  } catch (error) {
2430
2456
  throw new VError(error, 'Failed to execute file system provider');
2431
2457
  }
@@ -2627,7 +2653,7 @@ const executeImplementationProvider = async (textDocumentId, ...args) => {
2627
2653
  if (hasLegacyProvider(getProvider$7, textDocumentId)) {
2628
2654
  return executeLegacy(executeLegacyImplementationProvider, textDocumentId, args);
2629
2655
  }
2630
- const isolated = await execute$1('implementation', 'provideImplementations', textDocumentId, ...args);
2656
+ const isolated = await execute$2('implementation', 'provideImplementations', textDocumentId, ...args);
2631
2657
  return isolated.found ? isolated.result : executeLegacy(executeLegacyImplementationProvider, textDocumentId, args);
2632
2658
  };
2633
2659
 
@@ -2998,14 +3024,14 @@ const executeReferenceProvider = async (textDocumentId, ...args) => {
2998
3024
  if (hasLegacyProvider(getProvider$6, textDocumentId)) {
2999
3025
  return executeLegacy(executeLegacyReferenceProvider, textDocumentId, args);
3000
3026
  }
3001
- const isolated = await execute$1('reference', 'provideReferences', textDocumentId, ...args);
3027
+ const isolated = await execute$2('reference', 'provideReferences', textDocumentId, ...args);
3002
3028
  return isolated.found ? isolated.result : executeLegacy(executeLegacyReferenceProvider, textDocumentId, args);
3003
3029
  };
3004
3030
  const executefileReferenceProvider = async (textDocumentId, ...args) => {
3005
3031
  if (hasLegacyProvider(getProvider$6, textDocumentId)) {
3006
3032
  return executeLegacy(executeLegacyFileReferenceProvider, textDocumentId, args);
3007
3033
  }
3008
- const isolated = await execute$1('reference', 'provideFileReferences', textDocumentId, ...args);
3034
+ const isolated = await execute$2('reference', 'provideFileReferences', textDocumentId, ...args);
3009
3035
  return isolated.found ? isolated.result : executeLegacy(executeLegacyFileReferenceProvider, textDocumentId, args);
3010
3036
  };
3011
3037
  const executeReferenceProvider2 = async (uri, languageId, offset, position) => {
@@ -3082,14 +3108,14 @@ const executeRenameProvider = async (textDocumentId, ...args) => {
3082
3108
  if (hasLegacyProvider(getProvider$5, textDocumentId)) {
3083
3109
  return executeLegacy(executeLegacyRenameProvider, textDocumentId, args);
3084
3110
  }
3085
- const isolated = await execute$1('rename', 'provideRename', textDocumentId, ...args);
3111
+ const isolated = await execute$2('rename', 'provideRename', textDocumentId, ...args);
3086
3112
  return isolated.found ? isolated.result : executeLegacy(executeLegacyRenameProvider, textDocumentId, args);
3087
3113
  };
3088
3114
  const executeprepareRenameProvider = async (textDocumentId, ...args) => {
3089
3115
  if (hasLegacyProvider(getProvider$5, textDocumentId)) {
3090
3116
  return executeLegacy(executeLegacyPrepareRenameProvider, textDocumentId, args);
3091
3117
  }
3092
- const isolated = await execute$1('rename', 'prepareRename', textDocumentId, ...args);
3118
+ const isolated = await execute$2('rename', 'prepareRename', textDocumentId, ...args);
3093
3119
  return isolated.found ? isolated.result : executeLegacy(executeLegacyPrepareRenameProvider, textDocumentId, args);
3094
3120
  };
3095
3121
 
@@ -3250,7 +3276,7 @@ const executeSelectionProvider = async (textDocumentId, ...args) => {
3250
3276
  if (hasLegacyProvider(getProvider$4, textDocumentId)) {
3251
3277
  return executeLegacy(executeLegacySelectionProvider, textDocumentId, args);
3252
3278
  }
3253
- const isolated = await execute$1('selection', 'provideSelections', textDocumentId, ...args);
3279
+ const isolated = await execute$2('selection', 'provideSelections', textDocumentId, ...args);
3254
3280
  return isolated.found ? isolated.result : executeLegacy(executeLegacySelectionProvider, textDocumentId, args);
3255
3281
  };
3256
3282
 
@@ -3469,6 +3495,26 @@ const getFileBefore = async (providerId, uri) => {
3469
3495
  }
3470
3496
  return getProvider$3(providerId).getFileBefore(uri);
3471
3497
  };
3498
+ const getFileBeforeUriFromProvider = async (provider, uri) => {
3499
+ if (typeof provider.getFileBeforeUri === 'function') {
3500
+ return provider.getFileBeforeUri(uri);
3501
+ }
3502
+ const content = await provider.getFileBefore?.(uri);
3503
+ return `data://${content ?? ''}`;
3504
+ };
3505
+ const getFileBeforeUri = async (providerId, uri) => {
3506
+ string(providerId);
3507
+ string(uri);
3508
+ const provider = state$8.providers[providerId];
3509
+ if (provider) {
3510
+ return getFileBeforeUriFromProvider(provider, uri);
3511
+ }
3512
+ const isolated = await execute(providerId, 'executeSourceControlGetFileBeforeUri', uri);
3513
+ if (isolated.found) {
3514
+ return isolated.result;
3515
+ }
3516
+ return getFileBeforeUriFromProvider(getProvider$3(providerId), uri);
3517
+ };
3472
3518
  const getGroupsFromProvider = async (provider, cwd) => {
3473
3519
  if (provider.getGroups) {
3474
3520
  return provider.getGroups(cwd);
@@ -3758,7 +3804,7 @@ const executeTabCompletionProvider = async (textDocumentId, ...args) => {
3758
3804
  if (hasLegacyProvider(getProvider$2, textDocumentId)) {
3759
3805
  return executeLegacy(executeLegacyTabCompletionProvider, textDocumentId, args);
3760
3806
  }
3761
- const isolated = await execute$1('tab completion', 'provideTabCompletion', textDocumentId, ...args);
3807
+ const isolated = await execute$2('tab completion', 'provideTabCompletion', textDocumentId, ...args);
3762
3808
  return isolated.found ? isolated.result : executeLegacy(executeLegacyTabCompletionProvider, textDocumentId, args);
3763
3809
  };
3764
3810
 
@@ -3816,7 +3862,7 @@ const executeTypeDefinitionProvider = async (textDocumentId, ...args) => {
3816
3862
  if (hasLegacyProvider(getProvider$1, textDocumentId)) {
3817
3863
  return executeLegacy(executeLegacyTypeDefinitionProvider, textDocumentId, args);
3818
3864
  }
3819
- const isolated = await execute$1('type definition', 'provideTypeDefinition', textDocumentId, ...args);
3865
+ const isolated = await execute$2('type definition', 'provideTypeDefinition', textDocumentId, ...args);
3820
3866
  return isolated.found ? isolated.result : executeLegacy(executeLegacyTypeDefinitionProvider, textDocumentId, args);
3821
3867
  };
3822
3868
 
@@ -6071,6 +6117,7 @@ const SourceControlGetEnabledProviderIds = 'ExtensionHostSourceControl.getEnable
6071
6117
  const SourceControlGetFeatures = 'ExtensionHostSourceControl.getFeatures';
6072
6118
  const SourceControlGetFileBefore = 'ExtensionHostSourceControl.GetFileBefore';
6073
6119
  const SourceControlGetFileBefore2 = 'ExtensionHostSourceControl.getFileBefore';
6120
+ const SourceControlGetFileBeforeUri = 'ExtensionHostSourceControl.getFileBeforeUri';
6074
6121
  const SourceControlGetFileDecorations = 'ExtensionHostSourceControl.getFileDecorations';
6075
6122
  const SourceControlGetGroups = 'ExtensionHostSourceControl.getGroups';
6076
6123
  const StatusBarExecuteCommand = 'ExtensionHostStatusBar.executeCommand';
@@ -7297,6 +7344,7 @@ const commandMap = {
7297
7344
  [SourceControlGetFeatures]: getFeatures,
7298
7345
  [SourceControlGetFileBefore]: getFileBefore,
7299
7346
  [SourceControlGetFileBefore2]: getFileBefore,
7347
+ [SourceControlGetFileBeforeUri]: getFileBeforeUri,
7300
7348
  [SourceControlGetFileDecorations]: getFileDecorations,
7301
7349
  [SourceControlGetGroups]: getGroups,
7302
7350
  [StatusBarExecuteCommand]: executeCommand,
@@ -9,12 +9,14 @@ export { executeCompletionProvider, executeResolveCompletionItemProvider, getCom
9
9
  export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, registerDiagnosticProvider, resetDiagnosticProviderRegistry, } from './parts/Diagnostic/Diagnostic.ts';
10
10
  export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from './parts/Formatting/Formatting.ts';
11
11
  export { exists, mkdir, readDirWithFileTypes, readFile, remove, stat, writeFile } from './parts/FileSystem/FileSystem.ts';
12
+ export { executeFileSystemProviderReadFile, getFileSystemProviderRegistrySnapshot, registerFileSystemProvider, resetFileSystemProviderRegistry, } from './parts/FileSystemProviderRegistry/FileSystemProviderRegistry.ts';
12
13
  export { confirm, getWorkspaceFolder, getWorkspaceUri, handleWorkspaceRefresh, openUri } from './parts/Host/Host.ts';
13
14
  export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from './parts/Hover/Hover.ts';
15
+ export { getPlatform, type Platform } from './parts/Platform/Platform.ts';
14
16
  export { getLanguageServerRegistrySnapshot, registerLanguageServer, resetLanguageServerRegistry } from './parts/LanguageServer/LanguageServer.ts';
15
17
  export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from './parts/LanguageProvider/LanguageProvider.ts';
16
18
  export type { LanguageProvider } from './parts/LanguageProvider/LanguageProvider.ts';
17
- export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from './parts/SourceControl/SourceControl.ts';
19
+ export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from './parts/SourceControl/SourceControl.ts';
18
20
  export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, } from './parts/ViewRegistry/ViewRegistry.ts';
19
21
  export { createOutputChannel, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry } from './parts/OutputChannel/OutputChannel.ts';
20
22
  export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from './parts/StatusBar/StatusBar.ts';
@@ -30,6 +32,9 @@ export type { Disposable } from './parts/Disposable/Disposable.ts';
30
32
  export type { CreateElectronWebContentsViewOptions, ElectronWebContentsView, ElectronWebContentsViewStats, } from './parts/ElectronWebContentsView/ElectronWebContentsView.ts';
31
33
  export type { FormattingEdit, FormattingProvider, FormattingProviderRegistrySnapshot, RegisteredFormattingProvider, } from './parts/Formatting/Formatting.ts';
32
34
  export type { FileSystemDirent } from './parts/FileSystem/FileSystem.ts';
35
+ export type { FileSystemProvider } from './parts/FileSystemProvider/FileSystemProvider.ts';
36
+ export type { FileSystemProviderRegistrySnapshot } from './parts/FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.ts';
37
+ export type { RegisteredFileSystemProvider } from './parts/RegisteredFileSystemProvider/RegisteredFileSystemProvider.ts';
33
38
  export type { HandleExtensionManagementMessagePortOptions } from './parts/HandleExtensionManagementMessagePort/HandleExtensionManagementMessagePort.ts';
34
39
  export type { HoverProvider, HoverProviderRegistrySnapshot, HoverResult, RegisteredHoverProvider } from './parts/Hover/Hover.ts';
35
40
  export type { LanguageServerOptions, LanguageServerRegistrySnapshot } from './parts/LanguageServer/LanguageServer.ts';
@@ -9,11 +9,13 @@ export { executeCompletionProvider, executeResolveCompletionItemProvider, getCom
9
9
  export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, registerDiagnosticProvider, resetDiagnosticProviderRegistry, } from "./parts/Diagnostic/Diagnostic.js";
10
10
  export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from "./parts/Formatting/Formatting.js";
11
11
  export { exists, mkdir, readDirWithFileTypes, readFile, remove, stat, writeFile } from "./parts/FileSystem/FileSystem.js";
12
+ export { executeFileSystemProviderReadFile, getFileSystemProviderRegistrySnapshot, registerFileSystemProvider, resetFileSystemProviderRegistry, } from "./parts/FileSystemProviderRegistry/FileSystemProviderRegistry.js";
12
13
  export { confirm, getWorkspaceFolder, getWorkspaceUri, handleWorkspaceRefresh, openUri } from "./parts/Host/Host.js";
13
14
  export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from "./parts/Hover/Hover.js";
15
+ export { getPlatform } from "./parts/Platform/Platform.js";
14
16
  export { getLanguageServerRegistrySnapshot, registerLanguageServer, resetLanguageServerRegistry } from "./parts/LanguageServer/LanguageServer.js";
15
17
  export { registerBraceCompletionProvider, registerClosingTagProvider, registerCodeActionsProvider, registerCommentProvider, registerDefinitionProvider, registerImplementationProvider, registerReferenceProvider, registerRenameProvider, registerSelectionProvider, registerTabCompletionProvider, registerTypeDefinitionProvider, resetLanguageProviderRegistry, } from "./parts/LanguageProvider/LanguageProvider.js";
16
- export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "./parts/SourceControl/SourceControl.js";
18
+ export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "./parts/SourceControl/SourceControl.js";
17
19
  export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, renderViewInstance, registerView, resetViewRegistry, saveViewInstanceState, } from "./parts/ViewRegistry/ViewRegistry.js";
18
20
  export { createOutputChannel, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry } from "./parts/OutputChannel/OutputChannel.js";
19
21
  export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from "./parts/StatusBar/StatusBar.js";
@@ -6,6 +6,7 @@ export declare const commandMap: {
6
6
  'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
7
7
  'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
8
8
  'ExtensionApi.executeDiagnosticProvider': (textDocument: import("../DiagnosticTextDocument/DiagnosticTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../DiagnosticResult/DiagnosticResult.ts").Diagnostic[]>;
9
+ 'ExtensionApi.executeFileSystemProviderReadFile': (id: string, uri: string) => Promise<string>;
9
10
  'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
10
11
  'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
11
12
  'ExtensionApi.executeLanguageProvider': (kind: string, methodName: string, textDocument: {
@@ -23,6 +24,7 @@ export declare const commandMap: {
23
24
  'ExtensionApi.executeSourceControlGetChangedFiles': (id: string) => Promise<readonly unknown[]>;
24
25
  'ExtensionApi.executeSourceControlGetFeatures': (id: string) => Promise<unknown>;
25
26
  'ExtensionApi.executeSourceControlGetFileBefore': (id: string, uri: string) => Promise<unknown>;
27
+ 'ExtensionApi.executeSourceControlGetFileBeforeUri': (id: string, uri: string) => Promise<string>;
26
28
  'ExtensionApi.executeSourceControlGetFileDecorations': (id: string, uris: readonly string[]) => Promise<unknown>;
27
29
  'ExtensionApi.executeSourceControlGetGroups': (id: string, cwd: string) => Promise<unknown>;
28
30
  'ExtensionApi.executeSourceControlIsActive': (id: string, scheme: string, root: string) => Promise<boolean>;
@@ -30,6 +32,7 @@ export declare const commandMap: {
30
32
  'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
31
33
  'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
32
34
  'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
35
+ 'ExtensionApi.getFileSystemProviderRegistrySnapshot': () => import("../FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.ts").FileSystemProviderRegistrySnapshot;
33
36
  'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
34
37
  'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
35
38
  'ExtensionApi.getLanguageServerRegistrySnapshot': () => import("../LanguageServerRegistrySnapshot/LanguageServerRegistrySnapshot.ts").LanguageServerRegistrySnapshot;
@@ -5,6 +5,7 @@ export declare const commandMap: {
5
5
  'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
6
6
  'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
7
7
  'ExtensionApi.executeDiagnosticProvider': (textDocument: import("../DiagnosticTextDocument/DiagnosticTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../DiagnosticResult/DiagnosticResult.ts").Diagnostic[]>;
8
+ 'ExtensionApi.executeFileSystemProviderReadFile': (id: string, uri: string) => Promise<string>;
8
9
  'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
9
10
  'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
10
11
  'ExtensionApi.executeLanguageProvider': (kind: string, methodName: string, textDocument: {
@@ -22,6 +23,7 @@ export declare const commandMap: {
22
23
  'ExtensionApi.executeSourceControlGetChangedFiles': (id: string) => Promise<readonly unknown[]>;
23
24
  'ExtensionApi.executeSourceControlGetFeatures': (id: string) => Promise<unknown>;
24
25
  'ExtensionApi.executeSourceControlGetFileBefore': (id: string, uri: string) => Promise<unknown>;
26
+ 'ExtensionApi.executeSourceControlGetFileBeforeUri': (id: string, uri: string) => Promise<string>;
25
27
  'ExtensionApi.executeSourceControlGetFileDecorations': (id: string, uris: readonly string[]) => Promise<unknown>;
26
28
  'ExtensionApi.executeSourceControlGetGroups': (id: string, cwd: string) => Promise<unknown>;
27
29
  'ExtensionApi.executeSourceControlIsActive': (id: string, scheme: string, root: string) => Promise<boolean>;
@@ -29,6 +31,7 @@ export declare const commandMap: {
29
31
  'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
30
32
  'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
31
33
  'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
34
+ 'ExtensionApi.getFileSystemProviderRegistrySnapshot': () => import("../FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.ts").FileSystemProviderRegistrySnapshot;
32
35
  'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
33
36
  'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
34
37
  'ExtensionApi.getLanguageServerRegistrySnapshot': () => import("../LanguageServerRegistrySnapshot/LanguageServerRegistrySnapshot.ts").LanguageServerRegistrySnapshot;
@@ -1,13 +1,14 @@
1
1
  import { executeCommand, getCommandRegistrySnapshot } from "../CommandRegistry/CommandRegistry.js";
2
2
  import { executeCompletionProvider, executeResolveCompletionItemProvider, getCompletionProviderRegistrySnapshot } from "../Completion/Completion.js";
3
3
  import { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot } from "../Diagnostic/Diagnostic.js";
4
+ import { executeFileSystemProviderReadFile, getFileSystemProviderRegistrySnapshot } from "../FileSystemProviderRegistry/FileSystemProviderRegistry.js";
4
5
  import { executeFormattingProvider, getFormattingProviderRegistrySnapshot } from "../Formatting/Formatting.js";
5
6
  import { getStatusBarItems } from "../GetStatusBarItems/GetStatusBarItems.js";
6
7
  import { executeHoverProvider, getHoverProviderRegistrySnapshot } from "../Hover/Hover.js";
7
8
  import { executeLanguageProvider, executeOrganizeImportsProvider } from "../LanguageProvider/LanguageProvider.js";
8
9
  import { getLanguageServerRegistrySnapshot } from "../LanguageServer/LanguageServer.js";
9
10
  import { getOutputChannelRegistrySnapshot } from "../OutputChannel/OutputChannel.js";
10
- import { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, getSourceControlProviderRegistrySnapshot, } from "../SourceControl/SourceControl.js";
11
+ import { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, getSourceControlProviderRegistrySnapshot, } from "../SourceControl/SourceControl.js";
11
12
  import { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewActions, getViewActionsDom, getViewMenuEntries, getViewRegistrySnapshot, renderViewInstance, saveViewInstanceState, } from "../ViewRegistry/ViewRegistry.js";
12
13
  export const commandMap = {
13
14
  'ExtensionApi.createViewInstance': createViewInstance,
@@ -16,6 +17,7 @@ export const commandMap = {
16
17
  'ExtensionApi.executeCommand': executeCommand,
17
18
  'ExtensionApi.executeCompletionProvider': executeCompletionProvider,
18
19
  'ExtensionApi.executeDiagnosticProvider': executeDiagnosticProvider,
20
+ 'ExtensionApi.executeFileSystemProviderReadFile': executeFileSystemProviderReadFile,
19
21
  'ExtensionApi.executeFormattingProvider': executeFormattingProvider,
20
22
  'ExtensionApi.executeHoverProvider': executeHoverProvider,
21
23
  'ExtensionApi.executeLanguageProvider': executeLanguageProvider,
@@ -29,6 +31,7 @@ export const commandMap = {
29
31
  'ExtensionApi.executeSourceControlGetChangedFiles': executeSourceControlGetChangedFiles,
30
32
  'ExtensionApi.executeSourceControlGetFeatures': executeSourceControlGetFeatures,
31
33
  'ExtensionApi.executeSourceControlGetFileBefore': executeSourceControlGetFileBefore,
34
+ 'ExtensionApi.executeSourceControlGetFileBeforeUri': executeSourceControlGetFileBeforeUri,
32
35
  'ExtensionApi.executeSourceControlGetFileDecorations': executeSourceControlGetFileDecorations,
33
36
  'ExtensionApi.executeSourceControlGetGroups': executeSourceControlGetGroups,
34
37
  'ExtensionApi.executeSourceControlIsActive': executeSourceControlIsActive,
@@ -36,6 +39,7 @@ export const commandMap = {
36
39
  'ExtensionApi.getCommandRegistrySnapshot': getCommandRegistrySnapshot,
37
40
  'ExtensionApi.getCompletionProviderRegistrySnapshot': getCompletionProviderRegistrySnapshot,
38
41
  'ExtensionApi.getDiagnosticProviderRegistrySnapshot': getDiagnosticProviderRegistrySnapshot,
42
+ 'ExtensionApi.getFileSystemProviderRegistrySnapshot': getFileSystemProviderRegistrySnapshot,
39
43
  'ExtensionApi.getFormattingProviderRegistrySnapshot': getFormattingProviderRegistrySnapshot,
40
44
  'ExtensionApi.getHoverProviderRegistrySnapshot': getHoverProviderRegistrySnapshot,
41
45
  'ExtensionApi.getLanguageServerRegistrySnapshot': getLanguageServerRegistrySnapshot,
@@ -7,6 +7,7 @@ export declare const commandMap: {
7
7
  'ExtensionApi.executeCommand': (id: string, ...args: readonly unknown[]) => Promise<unknown>;
8
8
  'ExtensionApi.executeCompletionProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<readonly import("../CompletionItem/CompletionItem.ts").CompletionItem[]>;
9
9
  'ExtensionApi.executeDiagnosticProvider': (textDocument: import("../DiagnosticTextDocument/DiagnosticTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../DiagnosticResult/DiagnosticResult.ts").Diagnostic[]>;
10
+ 'ExtensionApi.executeFileSystemProviderReadFile': (id: string, uri: string) => Promise<string>;
10
11
  'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
11
12
  'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
12
13
  'ExtensionApi.executeLanguageProvider': (kind: string, methodName: string, textDocument: {
@@ -24,6 +25,7 @@ export declare const commandMap: {
24
25
  'ExtensionApi.executeSourceControlGetChangedFiles': (id: string) => Promise<readonly unknown[]>;
25
26
  'ExtensionApi.executeSourceControlGetFeatures': (id: string) => Promise<unknown>;
26
27
  'ExtensionApi.executeSourceControlGetFileBefore': (id: string, uri: string) => Promise<unknown>;
28
+ 'ExtensionApi.executeSourceControlGetFileBeforeUri': (id: string, uri: string) => Promise<string>;
27
29
  'ExtensionApi.executeSourceControlGetFileDecorations': (id: string, uris: readonly string[]) => Promise<unknown>;
28
30
  'ExtensionApi.executeSourceControlGetGroups': (id: string, cwd: string) => Promise<unknown>;
29
31
  'ExtensionApi.executeSourceControlIsActive': (id: string, scheme: string, root: string) => Promise<boolean>;
@@ -31,6 +33,7 @@ export declare const commandMap: {
31
33
  'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
32
34
  'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
33
35
  'ExtensionApi.getDiagnosticProviderRegistrySnapshot': () => import("../DiagnosticProviderRegistrySnapshot/DiagnosticProviderRegistrySnapshot.ts").DiagnosticProviderRegistrySnapshot;
36
+ 'ExtensionApi.getFileSystemProviderRegistrySnapshot': () => import("../FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.ts").FileSystemProviderRegistrySnapshot;
34
37
  'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
35
38
  'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
36
39
  'ExtensionApi.getLanguageServerRegistrySnapshot': () => import("../LanguageServerRegistrySnapshot/LanguageServerRegistrySnapshot.ts").LanguageServerRegistrySnapshot;
@@ -0,0 +1,4 @@
1
+ export interface FileSystemProvider {
2
+ readonly id: string;
3
+ readonly readFile: (uri: string) => string | Promise<string>;
4
+ }
@@ -0,0 +1,7 @@
1
+ import type { Disposable } from '../Disposable/Disposable.ts';
2
+ import type { FileSystemProvider } from '../FileSystemProvider/FileSystemProvider.ts';
3
+ import type { FileSystemProviderRegistrySnapshot } from '../FileSystemProviderRegistrySnapshot/FileSystemProviderRegistrySnapshot.ts';
4
+ export declare const executeFileSystemProviderReadFile: (id: string, uri: string) => Promise<string>;
5
+ export declare const getFileSystemProviderRegistrySnapshot: () => FileSystemProviderRegistrySnapshot;
6
+ export declare const registerFileSystemProvider: (provider: FileSystemProvider) => Disposable;
7
+ export declare const resetFileSystemProviderRegistry: () => void;
@@ -0,0 +1,50 @@
1
+ import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
2
+ const providers = Object.create(null);
3
+ const assertFileSystemProvider = (provider) => {
4
+ if (!provider) {
5
+ throw new ExtensionApiError('file system provider is not defined');
6
+ }
7
+ if (typeof provider.id !== 'string' || provider.id.length === 0) {
8
+ throw new ExtensionApiError('file system provider is missing id');
9
+ }
10
+ if (typeof provider.readFile !== 'function') {
11
+ throw new ExtensionApiError(`file system provider ${provider.id} is missing readFile function`);
12
+ }
13
+ if (provider.id in providers) {
14
+ throw new ExtensionApiError(`file system provider ${provider.id} is already registered`);
15
+ }
16
+ };
17
+ const getProvider = (id) => {
18
+ const provider = providers[id];
19
+ if (!provider) {
20
+ throw new ExtensionApiError(`file system provider ${id} not found`);
21
+ }
22
+ return provider;
23
+ };
24
+ export const executeFileSystemProviderReadFile = async (id, uri) => {
25
+ return getProvider(id).readFile(uri);
26
+ };
27
+ export const getFileSystemProviderRegistrySnapshot = () => {
28
+ return {
29
+ providers: Object.values(providers).map((provider) => ({
30
+ id: provider.id,
31
+ })),
32
+ };
33
+ };
34
+ export const registerFileSystemProvider = (provider) => {
35
+ assertFileSystemProvider(provider);
36
+ providers[provider.id] = {
37
+ id: provider.id,
38
+ readFile: (uri) => provider.readFile(uri),
39
+ };
40
+ return {
41
+ dispose() {
42
+ delete providers[provider.id];
43
+ },
44
+ };
45
+ };
46
+ export const resetFileSystemProviderRegistry = () => {
47
+ for (const id of Object.keys(providers)) {
48
+ delete providers[id];
49
+ }
50
+ };
@@ -0,0 +1,5 @@
1
+ export interface FileSystemProviderRegistrySnapshot {
2
+ readonly providers: readonly {
3
+ readonly id: string;
4
+ }[];
5
+ }
@@ -0,0 +1,2 @@
1
+ export type Platform = 'electron' | 'remote' | 'test' | 'web';
2
+ export declare const getPlatform: () => Promise<Platform>;
@@ -0,0 +1,16 @@
1
+ import { executeCommand } from "../ExecuteCommand/ExecuteCommand.js";
2
+ export const getPlatform = async () => {
3
+ const platform = await executeCommand('Layout.getPlatform');
4
+ switch (platform) {
5
+ case 1:
6
+ return 'web';
7
+ case 2:
8
+ return 'electron';
9
+ case 3:
10
+ return 'remote';
11
+ case 4:
12
+ return 'test';
13
+ default:
14
+ throw new TypeError(`Unknown platform: ${platform}`);
15
+ }
16
+ };
@@ -0,0 +1,4 @@
1
+ export interface RegisteredFileSystemProvider {
2
+ readonly id: string;
3
+ readonly readFile: (uri: string) => string | Promise<string>;
4
+ }
@@ -7,6 +7,7 @@ export interface RegisteredSourceControlProvider {
7
7
  readonly getChangedFiles: () => readonly unknown[] | Promise<readonly unknown[]>;
8
8
  readonly getFeatures?: () => unknown | Promise<unknown>;
9
9
  readonly getFileBefore?: (uri: string) => unknown | Promise<unknown>;
10
+ readonly getFileBeforeUri?: (uri: string) => string | Promise<string>;
10
11
  readonly getFileDecorations?: (uris: readonly string[]) => unknown | Promise<unknown>;
11
12
  readonly getGroups?: (cwd: string) => unknown | Promise<unknown>;
12
13
  readonly id: string;
@@ -1,4 +1,4 @@
1
- export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, getSourceControlProviderRegistrySnapshot, registerSourceControlProvider, resetSourceControlProviderRegistry, } from '../SourceControlProviderRegistry/SourceControlProviderRegistry.ts';
1
+ export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, getSourceControlProviderRegistrySnapshot, registerSourceControlProvider, resetSourceControlProviderRegistry, } from '../SourceControlProviderRegistry/SourceControlProviderRegistry.ts';
2
2
  export type { RegisteredSourceControlProvider } from '../RegisteredSourceControlProvider/RegisteredSourceControlProvider.ts';
3
3
  export type { SourceControlProvider } from '../SourceControlProvider/SourceControlProvider.ts';
4
4
  export type { SourceControlProviderRegistrySnapshot } from '../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts';
@@ -1 +1 @@
1
- export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, getSourceControlProviderRegistrySnapshot, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "../SourceControlProviderRegistry/SourceControlProviderRegistry.js";
1
+ export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetBadgeCount, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileBeforeUri, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, getSourceControlProviderRegistrySnapshot, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "../SourceControlProviderRegistry/SourceControlProviderRegistry.js";
@@ -7,6 +7,7 @@ export interface SourceControlProvider {
7
7
  readonly getChangedFiles: () => readonly unknown[] | Promise<readonly unknown[]>;
8
8
  readonly getFeatures?: () => unknown | Promise<unknown>;
9
9
  readonly getFileBefore?: (uri: string) => unknown | Promise<unknown>;
10
+ readonly getFileBeforeUri?: (uri: string) => string | Promise<string>;
10
11
  readonly getFileDecorations?: (uris: readonly string[]) => unknown | Promise<unknown>;
11
12
  readonly getGroups?: (cwd: string) => unknown | Promise<unknown>;
12
13
  readonly id: string;
@@ -10,6 +10,7 @@ export declare const executeSourceControlGetChangedFiles: (id: string) => Promis
10
10
  export declare const executeSourceControlGetBadgeCount: (id: string) => Promise<number>;
11
11
  export declare const executeSourceControlGetFeatures: (id: string) => Promise<unknown>;
12
12
  export declare const executeSourceControlGetFileBefore: (id: string, uri: string) => Promise<unknown>;
13
+ export declare const executeSourceControlGetFileBeforeUri: (id: string, uri: string) => Promise<string>;
13
14
  export declare const executeSourceControlGetFileDecorations: (id: string, uris: readonly string[]) => Promise<unknown>;
14
15
  export declare const executeSourceControlGetGroups: (id: string, cwd: string) => Promise<unknown>;
15
16
  export declare const executeSourceControlIsActive: (id: string, scheme: string, root: string) => Promise<boolean>;
@@ -8,6 +8,7 @@ const optionalMethods = [
8
8
  'getBadgeCount',
9
9
  'getFeatures',
10
10
  'getFileBefore',
11
+ 'getFileBeforeUri',
11
12
  'getFileDecorations',
12
13
  'getGroups',
13
14
  'isActive',
@@ -69,6 +70,9 @@ const mapSourceControlProvider = (provider) => {
69
70
  if (provider.getFileBefore) {
70
71
  registeredProvider.getFileBefore = (uri) => provider.getFileBefore(uri);
71
72
  }
73
+ if (provider.getFileBeforeUri) {
74
+ registeredProvider.getFileBeforeUri = (uri) => provider.getFileBeforeUri(uri);
75
+ }
72
76
  if (provider.getFileDecorations) {
73
77
  registeredProvider.getFileDecorations = (uris) => provider.getFileDecorations(uris);
74
78
  }
@@ -118,6 +122,20 @@ export const executeSourceControlGetFeatures = async (id) => {
118
122
  export const executeSourceControlGetFileBefore = async (id, uri) => {
119
123
  return getProvider(id).getFileBefore?.(uri);
120
124
  };
125
+ export const executeSourceControlGetFileBeforeUri = async (id, uri) => {
126
+ const provider = getProvider(id);
127
+ if (provider.getFileBeforeUri) {
128
+ return provider.getFileBeforeUri(uri);
129
+ }
130
+ const content = await provider.getFileBefore?.(uri);
131
+ if (content === undefined) {
132
+ return 'data://';
133
+ }
134
+ if (typeof content !== 'string') {
135
+ throw new ExtensionApiError(`source control provider ${id} returned an invalid getFileBefore result`);
136
+ }
137
+ return `data://${content}`;
138
+ };
121
139
  export const executeSourceControlGetFileDecorations = async (id, uris) => {
122
140
  return getProvider(id).getFileDecorations?.(uris) ?? [];
123
141
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/api",
3
- "version": "8.57.0",
3
+ "version": "8.59.0",
4
4
  "description": "Tree-shakeable extension API for Lvce Editor extensions.",
5
5
  "keywords": [
6
6
  "lvce-editor",