@lvce-editor/extension-host-worker 8.30.0 → 8.32.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 (27) hide show
  1. package/dist/extension-api/index.js +172 -9
  2. package/dist/extension-api/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +24 -0
  3. package/dist/extension-api/parts/RegisteredSourceControlProvider/RegisteredSourceControlProvider.js +0 -0
  4. package/dist/extension-api/parts/SourceControl/SourceControl.js +30 -0
  5. package/dist/extension-api/parts/SourceControlProvider/SourceControlProvider.js +0 -0
  6. package/dist/extension-api/parts/SourceControlProviderRegistry/SourceControlProviderRegistry.js +154 -0
  7. package/dist/extension-api/parts/SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.js +0 -0
  8. package/dist/extensionHostWorkerMain.js +26 -0
  9. package/extension-api/dist/index.d.ts +2 -0
  10. package/extension-api/dist/index.js +1 -0
  11. package/extension-api/dist/parts/CommandMap/CommandMap.d.ts +11 -0
  12. package/extension-api/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.d.ts +11 -0
  13. package/extension-api/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +12 -0
  14. package/extension-api/dist/parts/ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.d.ts +11 -0
  15. package/extension-api/dist/parts/RegisteredSourceControlProvider/RegisteredSourceControlProvider.d.ts +13 -0
  16. package/extension-api/dist/parts/RegisteredSourceControlProvider/RegisteredSourceControlProvider.js +1 -0
  17. package/extension-api/dist/parts/SourceControl/SourceControl.d.ts +4 -0
  18. package/extension-api/dist/parts/SourceControl/SourceControl.js +1 -0
  19. package/extension-api/dist/parts/SourceControlProvider/SourceControlProvider.d.ts +13 -0
  20. package/extension-api/dist/parts/SourceControlProvider/SourceControlProvider.js +1 -0
  21. package/extension-api/dist/parts/SourceControlProviderRegistry/SourceControlProviderRegistry.d.ts +16 -0
  22. package/extension-api/dist/parts/SourceControlProviderRegistry/SourceControlProviderRegistry.js +139 -0
  23. package/extension-api/dist/parts/SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.d.ts +5 -0
  24. package/extension-api/dist/parts/SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.js +1 -0
  25. package/extension-api/package.json +1 -1
  26. package/extension-api/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +2 -2
@@ -1551,14 +1551,14 @@ var assertOptionalProviderMethod = (provider, providerName, providerId, methodNa
1551
1551
  };
1552
1552
  var createProviderRegistry = ({
1553
1553
  mapProvider,
1554
- optionalMethods = [],
1554
+ optionalMethods: optionalMethods2 = [],
1555
1555
  providerName,
1556
1556
  requiredMethods,
1557
1557
  requireLanguageId = false
1558
1558
  }) => {
1559
- const providers = /* @__PURE__ */ Object.create(null);
1559
+ const providers2 = /* @__PURE__ */ Object.create(null);
1560
1560
  const hasProvider = (id2) => {
1561
- return id2 in providers;
1561
+ return id2 in providers2;
1562
1562
  };
1563
1563
  const registerProvider = (provider) => {
1564
1564
  if (!provider) {
@@ -1575,21 +1575,21 @@ var createProviderRegistry = ({
1575
1575
  for (const methodName of requiredMethods) {
1576
1576
  assertProviderMethod(providerRecord, providerName, id2, methodName);
1577
1577
  }
1578
- for (const methodName of optionalMethods) {
1578
+ for (const methodName of optionalMethods2) {
1579
1579
  assertOptionalProviderMethod(providerRecord, providerName, id2, methodName);
1580
1580
  }
1581
1581
  if (hasProvider(id2)) {
1582
1582
  throw new ExtensionApiError(`${providerName} ${id2} is already registered`);
1583
1583
  }
1584
1584
  const registeredProvider = mapProvider(provider);
1585
- providers[registeredProvider.id] = registeredProvider;
1585
+ providers2[registeredProvider.id] = registeredProvider;
1586
1586
  return registeredProvider;
1587
1587
  };
1588
1588
  const deleteProvider = (id2) => {
1589
- delete providers[id2];
1589
+ delete providers2[id2];
1590
1590
  };
1591
1591
  const getProviders = () => {
1592
- return Object.values(providers);
1592
+ return Object.values(providers2);
1593
1593
  };
1594
1594
  const getProviderByLanguageId = (languageId) => {
1595
1595
  return getProviders().find((provider) => {
@@ -1597,8 +1597,8 @@ var createProviderRegistry = ({
1597
1597
  });
1598
1598
  };
1599
1599
  const reset = () => {
1600
- for (const id2 of Object.keys(providers)) {
1601
- delete providers[id2];
1600
+ for (const id2 of Object.keys(providers2)) {
1601
+ delete providers2[id2];
1602
1602
  }
1603
1603
  };
1604
1604
  const executeProviderByLanguageId = async (languageId, methodName, args, validateResult) => {
@@ -2003,6 +2003,146 @@ var resetOutputChannelRegistry = () => {
2003
2003
  isActivated = false;
2004
2004
  };
2005
2005
 
2006
+ // packages/extension-api/src/parts/SourceControlProviderRegistry/SourceControlProviderRegistry.ts
2007
+ var providers = /* @__PURE__ */ Object.create(null);
2008
+ var optionalMethods = [
2009
+ "acceptInput",
2010
+ "add",
2011
+ "discard",
2012
+ "generateCommitMessage",
2013
+ "getFeatures",
2014
+ "getFileBefore",
2015
+ "getFileDecorations",
2016
+ "getGroups",
2017
+ "isActive"
2018
+ ];
2019
+ var assertOptionalProviderMethod2 = (provider, providerId, methodName) => {
2020
+ if (provider[methodName] !== void 0 && typeof provider[methodName] !== "function") {
2021
+ throw new ExtensionApiError(`source control provider ${providerId} has invalid ${methodName} function`);
2022
+ }
2023
+ };
2024
+ var assertSourceControlProvider = (provider) => {
2025
+ if (!provider) {
2026
+ throw new ExtensionApiError("source control provider is not defined");
2027
+ }
2028
+ const providerRecord = provider;
2029
+ const { id: id2 } = providerRecord;
2030
+ if (typeof id2 !== "string" || id2.length === 0) {
2031
+ throw new ExtensionApiError("source control provider is missing id");
2032
+ }
2033
+ if (typeof providerRecord.getChangedFiles !== "function") {
2034
+ throw new ExtensionApiError(`source control provider ${id2} is missing getChangedFiles function`);
2035
+ }
2036
+ for (const methodName of optionalMethods) {
2037
+ assertOptionalProviderMethod2(providerRecord, id2, methodName);
2038
+ }
2039
+ if (id2 in providers) {
2040
+ throw new ExtensionApiError(`source control provider ${id2} is already registered`);
2041
+ }
2042
+ };
2043
+ var getProvider = (id2) => {
2044
+ const provider = providers[id2];
2045
+ if (!provider) {
2046
+ throw new ExtensionApiError(`source control provider ${id2} not found`);
2047
+ }
2048
+ return provider;
2049
+ };
2050
+ var mapSourceControlProvider = (provider) => {
2051
+ const registeredProvider = {
2052
+ getChangedFiles: () => provider.getChangedFiles(),
2053
+ id: provider.id
2054
+ };
2055
+ if (provider.acceptInput) {
2056
+ registeredProvider.acceptInput = (value) => provider.acceptInput(value);
2057
+ }
2058
+ if (provider.add) {
2059
+ registeredProvider.add = (path) => provider.add(path);
2060
+ }
2061
+ if (provider.discard) {
2062
+ registeredProvider.discard = (path) => provider.discard(path);
2063
+ }
2064
+ if (provider.generateCommitMessage) {
2065
+ registeredProvider.generateCommitMessage = () => provider.generateCommitMessage();
2066
+ }
2067
+ if (provider.getFeatures) {
2068
+ registeredProvider.getFeatures = () => provider.getFeatures();
2069
+ }
2070
+ if (provider.getFileBefore) {
2071
+ registeredProvider.getFileBefore = (uri) => provider.getFileBefore(uri);
2072
+ }
2073
+ if (provider.getFileDecorations) {
2074
+ registeredProvider.getFileDecorations = (uris) => provider.getFileDecorations(uris);
2075
+ }
2076
+ if (provider.getGroups) {
2077
+ registeredProvider.getGroups = (cwd) => provider.getGroups(cwd);
2078
+ }
2079
+ if (provider.isActive) {
2080
+ registeredProvider.isActive = (scheme, root) => provider.isActive(scheme, root);
2081
+ }
2082
+ return registeredProvider;
2083
+ };
2084
+ var registerSourceControlProvider = (provider) => {
2085
+ assertSourceControlProvider(provider);
2086
+ providers[provider.id] = mapSourceControlProvider(provider);
2087
+ return {
2088
+ dispose() {
2089
+ delete providers[provider.id];
2090
+ }
2091
+ };
2092
+ };
2093
+ var executeSourceControlAcceptInput = async (id2, value) => {
2094
+ return getProvider(id2).acceptInput?.(value);
2095
+ };
2096
+ var executeSourceControlAdd = async (id2, path) => {
2097
+ return getProvider(id2).add?.(path);
2098
+ };
2099
+ var executeSourceControlDiscard = async (id2, path) => {
2100
+ return getProvider(id2).discard?.(path);
2101
+ };
2102
+ var executeSourceControlGenerateCommitMessage = async (id2) => {
2103
+ return getProvider(id2).generateCommitMessage?.();
2104
+ };
2105
+ var executeSourceControlGetChangedFiles = async (id2) => {
2106
+ return getProvider(id2).getChangedFiles();
2107
+ };
2108
+ var executeSourceControlGetFeatures = async (id2) => {
2109
+ return getProvider(id2).getFeatures?.() ?? {};
2110
+ };
2111
+ var executeSourceControlGetFileBefore = async (id2, uri) => {
2112
+ return getProvider(id2).getFileBefore?.(uri);
2113
+ };
2114
+ var executeSourceControlGetFileDecorations = async (id2, uris) => {
2115
+ return getProvider(id2).getFileDecorations?.(uris) ?? [];
2116
+ };
2117
+ var executeSourceControlGetGroups = async (id2, cwd) => {
2118
+ const provider = getProvider(id2);
2119
+ if (provider.getGroups) {
2120
+ return provider.getGroups(cwd);
2121
+ }
2122
+ return [
2123
+ {
2124
+ id: "changes",
2125
+ items: await provider.getChangedFiles(),
2126
+ label: "Changes"
2127
+ }
2128
+ ];
2129
+ };
2130
+ var executeSourceControlIsActive = async (id2, scheme, root) => {
2131
+ return Boolean(await getProvider(id2).isActive?.(scheme, root));
2132
+ };
2133
+ var getSourceControlProviderRegistrySnapshot = () => {
2134
+ return {
2135
+ providers: Object.values(providers).map((provider) => ({
2136
+ id: provider.id
2137
+ }))
2138
+ };
2139
+ };
2140
+ var resetSourceControlProviderRegistry = () => {
2141
+ for (const id2 of Object.keys(providers)) {
2142
+ delete providers[id2];
2143
+ }
2144
+ };
2145
+
2006
2146
  // packages/extension-api/node_modules/@lvce-editor/virtual-dom-worker/dist/parts/PatchType/PatchType.js
2007
2147
  var SetText = 1;
2008
2148
  var Replace = 2;
@@ -2398,6 +2538,16 @@ var commandMap = {
2398
2538
  "ExtensionApi.executeFormattingProvider": executeFormattingProvider,
2399
2539
  "ExtensionApi.executeHoverProvider": executeHoverProvider,
2400
2540
  "ExtensionApi.executeResolveCompletionItemProvider": executeResolveCompletionItemProvider,
2541
+ "ExtensionApi.executeSourceControlAcceptInput": executeSourceControlAcceptInput,
2542
+ "ExtensionApi.executeSourceControlAdd": executeSourceControlAdd,
2543
+ "ExtensionApi.executeSourceControlDiscard": executeSourceControlDiscard,
2544
+ "ExtensionApi.executeSourceControlGenerateCommitMessage": executeSourceControlGenerateCommitMessage,
2545
+ "ExtensionApi.executeSourceControlGetChangedFiles": executeSourceControlGetChangedFiles,
2546
+ "ExtensionApi.executeSourceControlGetFeatures": executeSourceControlGetFeatures,
2547
+ "ExtensionApi.executeSourceControlGetFileBefore": executeSourceControlGetFileBefore,
2548
+ "ExtensionApi.executeSourceControlGetFileDecorations": executeSourceControlGetFileDecorations,
2549
+ "ExtensionApi.executeSourceControlGetGroups": executeSourceControlGetGroups,
2550
+ "ExtensionApi.executeSourceControlIsActive": executeSourceControlIsActive,
2401
2551
  "ExtensionApi.executeViewProvider": executeViewProvider,
2402
2552
  "ExtensionApi.getCommandRegistrySnapshot": getCommandRegistrySnapshot,
2403
2553
  "ExtensionApi.getCompletionProviderRegistrySnapshot": getCompletionProviderRegistrySnapshot,
@@ -2405,6 +2555,7 @@ var commandMap = {
2405
2555
  "ExtensionApi.getFormattingProviderRegistrySnapshot": getFormattingProviderRegistrySnapshot,
2406
2556
  "ExtensionApi.getHoverProviderRegistrySnapshot": getHoverProviderRegistrySnapshot,
2407
2557
  "ExtensionApi.getOutputChannelRegistrySnapshot": getOutputChannelRegistrySnapshot,
2558
+ "ExtensionApi.getSourceControlProviderRegistrySnapshot": getSourceControlProviderRegistrySnapshot,
2408
2559
  "ExtensionApi.getStatusBarItems": getStatusBarItems,
2409
2560
  "ExtensionApi.getViewRegistrySnapshot": getViewRegistrySnapshot,
2410
2561
  "ExtensionApi.saveViewInstanceState": saveViewInstanceState
@@ -2560,6 +2711,16 @@ export {
2560
2711
  executeFormattingProvider,
2561
2712
  executeHoverProvider,
2562
2713
  executeResolveCompletionItemProvider,
2714
+ executeSourceControlAcceptInput,
2715
+ executeSourceControlAdd,
2716
+ executeSourceControlDiscard,
2717
+ executeSourceControlGenerateCommitMessage,
2718
+ executeSourceControlGetChangedFiles,
2719
+ executeSourceControlGetFeatures,
2720
+ executeSourceControlGetFileBefore,
2721
+ executeSourceControlGetFileDecorations,
2722
+ executeSourceControlGetGroups,
2723
+ executeSourceControlIsActive,
2563
2724
  executeViewProvider,
2564
2725
  exists2 as exists,
2565
2726
  getCompletionProviderRegistrySnapshot,
@@ -2579,6 +2740,7 @@ export {
2579
2740
  registerDiagnosticProvider,
2580
2741
  registerFormattingProvider,
2581
2742
  registerHoverProvider,
2743
+ registerSourceControlProvider,
2582
2744
  registerStatusBarItemProvider,
2583
2745
  registerView,
2584
2746
  remove4 as remove,
@@ -2587,6 +2749,7 @@ export {
2587
2749
  resetFormattingProviderRegistry,
2588
2750
  resetHoverProviderRegistry,
2589
2751
  resetOutputChannelRegistry,
2752
+ resetSourceControlProviderRegistry,
2590
2753
  resetStatusBarItemProviderRegistry,
2591
2754
  resetViewRegistry,
2592
2755
  saveViewInstanceState,
@@ -5,6 +5,19 @@ import { executeFormattingProvider, getFormattingProviderRegistrySnapshot } from
5
5
  import { getStatusBarItems } from "../GetStatusBarItems/GetStatusBarItems.js";
6
6
  import { executeHoverProvider, getHoverProviderRegistrySnapshot } from "../Hover/Hover.js";
7
7
  import { getOutputChannelRegistrySnapshot } from "../OutputChannel/OutputChannel.js";
8
+ import {
9
+ executeSourceControlAcceptInput,
10
+ executeSourceControlAdd,
11
+ executeSourceControlDiscard,
12
+ executeSourceControlGenerateCommitMessage,
13
+ executeSourceControlGetChangedFiles,
14
+ executeSourceControlGetFeatures,
15
+ executeSourceControlGetFileBefore,
16
+ executeSourceControlGetFileDecorations,
17
+ executeSourceControlGetGroups,
18
+ executeSourceControlIsActive,
19
+ getSourceControlProviderRegistrySnapshot
20
+ } from "../SourceControl/SourceControl.js";
8
21
  import {
9
22
  createViewInstance,
10
23
  dispatchViewEvent,
@@ -23,6 +36,16 @@ const commandMap = {
23
36
  "ExtensionApi.executeFormattingProvider": executeFormattingProvider,
24
37
  "ExtensionApi.executeHoverProvider": executeHoverProvider,
25
38
  "ExtensionApi.executeResolveCompletionItemProvider": executeResolveCompletionItemProvider,
39
+ "ExtensionApi.executeSourceControlAcceptInput": executeSourceControlAcceptInput,
40
+ "ExtensionApi.executeSourceControlAdd": executeSourceControlAdd,
41
+ "ExtensionApi.executeSourceControlDiscard": executeSourceControlDiscard,
42
+ "ExtensionApi.executeSourceControlGenerateCommitMessage": executeSourceControlGenerateCommitMessage,
43
+ "ExtensionApi.executeSourceControlGetChangedFiles": executeSourceControlGetChangedFiles,
44
+ "ExtensionApi.executeSourceControlGetFeatures": executeSourceControlGetFeatures,
45
+ "ExtensionApi.executeSourceControlGetFileBefore": executeSourceControlGetFileBefore,
46
+ "ExtensionApi.executeSourceControlGetFileDecorations": executeSourceControlGetFileDecorations,
47
+ "ExtensionApi.executeSourceControlGetGroups": executeSourceControlGetGroups,
48
+ "ExtensionApi.executeSourceControlIsActive": executeSourceControlIsActive,
26
49
  "ExtensionApi.executeViewProvider": executeViewProvider,
27
50
  "ExtensionApi.getCommandRegistrySnapshot": getCommandRegistrySnapshot,
28
51
  "ExtensionApi.getCompletionProviderRegistrySnapshot": getCompletionProviderRegistrySnapshot,
@@ -30,6 +53,7 @@ const commandMap = {
30
53
  "ExtensionApi.getFormattingProviderRegistrySnapshot": getFormattingProviderRegistrySnapshot,
31
54
  "ExtensionApi.getHoverProviderRegistrySnapshot": getHoverProviderRegistrySnapshot,
32
55
  "ExtensionApi.getOutputChannelRegistrySnapshot": getOutputChannelRegistrySnapshot,
56
+ "ExtensionApi.getSourceControlProviderRegistrySnapshot": getSourceControlProviderRegistrySnapshot,
33
57
  "ExtensionApi.getStatusBarItems": getStatusBarItems,
34
58
  "ExtensionApi.getViewRegistrySnapshot": getViewRegistrySnapshot,
35
59
  "ExtensionApi.saveViewInstanceState": saveViewInstanceState
@@ -0,0 +1,30 @@
1
+ import {
2
+ executeSourceControlAcceptInput,
3
+ executeSourceControlAdd,
4
+ executeSourceControlDiscard,
5
+ executeSourceControlGenerateCommitMessage,
6
+ executeSourceControlGetChangedFiles,
7
+ executeSourceControlGetFeatures,
8
+ executeSourceControlGetFileBefore,
9
+ executeSourceControlGetFileDecorations,
10
+ executeSourceControlGetGroups,
11
+ executeSourceControlIsActive,
12
+ getSourceControlProviderRegistrySnapshot,
13
+ registerSourceControlProvider,
14
+ resetSourceControlProviderRegistry
15
+ } from "../SourceControlProviderRegistry/SourceControlProviderRegistry.js";
16
+ export {
17
+ executeSourceControlAcceptInput,
18
+ executeSourceControlAdd,
19
+ executeSourceControlDiscard,
20
+ executeSourceControlGenerateCommitMessage,
21
+ executeSourceControlGetChangedFiles,
22
+ executeSourceControlGetFeatures,
23
+ executeSourceControlGetFileBefore,
24
+ executeSourceControlGetFileDecorations,
25
+ executeSourceControlGetGroups,
26
+ executeSourceControlIsActive,
27
+ getSourceControlProviderRegistrySnapshot,
28
+ registerSourceControlProvider,
29
+ resetSourceControlProviderRegistry
30
+ };
@@ -0,0 +1,154 @@
1
+ import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
2
+ const providers = /* @__PURE__ */ Object.create(null);
3
+ const optionalMethods = [
4
+ "acceptInput",
5
+ "add",
6
+ "discard",
7
+ "generateCommitMessage",
8
+ "getFeatures",
9
+ "getFileBefore",
10
+ "getFileDecorations",
11
+ "getGroups",
12
+ "isActive"
13
+ ];
14
+ const assertOptionalProviderMethod = (provider, providerId, methodName) => {
15
+ if (provider[methodName] !== void 0 && typeof provider[methodName] !== "function") {
16
+ throw new ExtensionApiError(`source control provider ${providerId} has invalid ${methodName} function`);
17
+ }
18
+ };
19
+ const assertSourceControlProvider = (provider) => {
20
+ if (!provider) {
21
+ throw new ExtensionApiError("source control provider is not defined");
22
+ }
23
+ const providerRecord = provider;
24
+ const { id } = providerRecord;
25
+ if (typeof id !== "string" || id.length === 0) {
26
+ throw new ExtensionApiError("source control provider is missing id");
27
+ }
28
+ if (typeof providerRecord.getChangedFiles !== "function") {
29
+ throw new ExtensionApiError(`source control provider ${id} is missing getChangedFiles function`);
30
+ }
31
+ for (const methodName of optionalMethods) {
32
+ assertOptionalProviderMethod(providerRecord, id, methodName);
33
+ }
34
+ if (id in providers) {
35
+ throw new ExtensionApiError(`source control provider ${id} is already registered`);
36
+ }
37
+ };
38
+ const getProvider = (id) => {
39
+ const provider = providers[id];
40
+ if (!provider) {
41
+ throw new ExtensionApiError(`source control provider ${id} not found`);
42
+ }
43
+ return provider;
44
+ };
45
+ const mapSourceControlProvider = (provider) => {
46
+ const registeredProvider = {
47
+ getChangedFiles: () => provider.getChangedFiles(),
48
+ id: provider.id
49
+ };
50
+ if (provider.acceptInput) {
51
+ registeredProvider.acceptInput = (value) => provider.acceptInput(value);
52
+ }
53
+ if (provider.add) {
54
+ registeredProvider.add = (path) => provider.add(path);
55
+ }
56
+ if (provider.discard) {
57
+ registeredProvider.discard = (path) => provider.discard(path);
58
+ }
59
+ if (provider.generateCommitMessage) {
60
+ registeredProvider.generateCommitMessage = () => provider.generateCommitMessage();
61
+ }
62
+ if (provider.getFeatures) {
63
+ registeredProvider.getFeatures = () => provider.getFeatures();
64
+ }
65
+ if (provider.getFileBefore) {
66
+ registeredProvider.getFileBefore = (uri) => provider.getFileBefore(uri);
67
+ }
68
+ if (provider.getFileDecorations) {
69
+ registeredProvider.getFileDecorations = (uris) => provider.getFileDecorations(uris);
70
+ }
71
+ if (provider.getGroups) {
72
+ registeredProvider.getGroups = (cwd) => provider.getGroups(cwd);
73
+ }
74
+ if (provider.isActive) {
75
+ registeredProvider.isActive = (scheme, root) => provider.isActive(scheme, root);
76
+ }
77
+ return registeredProvider;
78
+ };
79
+ const registerSourceControlProvider = (provider) => {
80
+ assertSourceControlProvider(provider);
81
+ providers[provider.id] = mapSourceControlProvider(provider);
82
+ return {
83
+ dispose() {
84
+ delete providers[provider.id];
85
+ }
86
+ };
87
+ };
88
+ const executeSourceControlAcceptInput = async (id, value) => {
89
+ return getProvider(id).acceptInput?.(value);
90
+ };
91
+ const executeSourceControlAdd = async (id, path) => {
92
+ return getProvider(id).add?.(path);
93
+ };
94
+ const executeSourceControlDiscard = async (id, path) => {
95
+ return getProvider(id).discard?.(path);
96
+ };
97
+ const executeSourceControlGenerateCommitMessage = async (id) => {
98
+ return getProvider(id).generateCommitMessage?.();
99
+ };
100
+ const executeSourceControlGetChangedFiles = async (id) => {
101
+ return getProvider(id).getChangedFiles();
102
+ };
103
+ const executeSourceControlGetFeatures = async (id) => {
104
+ return getProvider(id).getFeatures?.() ?? {};
105
+ };
106
+ const executeSourceControlGetFileBefore = async (id, uri) => {
107
+ return getProvider(id).getFileBefore?.(uri);
108
+ };
109
+ const executeSourceControlGetFileDecorations = async (id, uris) => {
110
+ return getProvider(id).getFileDecorations?.(uris) ?? [];
111
+ };
112
+ const executeSourceControlGetGroups = async (id, cwd) => {
113
+ const provider = getProvider(id);
114
+ if (provider.getGroups) {
115
+ return provider.getGroups(cwd);
116
+ }
117
+ return [
118
+ {
119
+ id: "changes",
120
+ items: await provider.getChangedFiles(),
121
+ label: "Changes"
122
+ }
123
+ ];
124
+ };
125
+ const executeSourceControlIsActive = async (id, scheme, root) => {
126
+ return Boolean(await getProvider(id).isActive?.(scheme, root));
127
+ };
128
+ const getSourceControlProviderRegistrySnapshot = () => {
129
+ return {
130
+ providers: Object.values(providers).map((provider) => ({
131
+ id: provider.id
132
+ }))
133
+ };
134
+ };
135
+ const resetSourceControlProviderRegistry = () => {
136
+ for (const id of Object.keys(providers)) {
137
+ delete providers[id];
138
+ }
139
+ };
140
+ export {
141
+ executeSourceControlAcceptInput,
142
+ executeSourceControlAdd,
143
+ executeSourceControlDiscard,
144
+ executeSourceControlGenerateCommitMessage,
145
+ executeSourceControlGetChangedFiles,
146
+ executeSourceControlGetFeatures,
147
+ executeSourceControlGetFileBefore,
148
+ executeSourceControlGetFileDecorations,
149
+ executeSourceControlGetGroups,
150
+ executeSourceControlIsActive,
151
+ getSourceControlProviderRegistrySnapshot,
152
+ registerSourceControlProvider,
153
+ resetSourceControlProviderRegistry
154
+ };
@@ -3205,6 +3205,9 @@ const state$8 = {
3205
3205
  const registerSourceControlProvider = provider => {
3206
3206
  state$8.providers[provider.id] = provider;
3207
3207
  };
3208
+ const getRegisteredSourceControlProviderIds$1 = () => {
3209
+ return Object.keys(state$8.providers);
3210
+ };
3208
3211
  const getProvider$1 = providerId => {
3209
3212
  const provider = state$8.providers[providerId];
3210
3213
  if (!provider) {
@@ -4647,6 +4650,12 @@ const getManifestDiagnosticProviderIds = extension => {
4647
4650
  }
4648
4651
  return extension.diagnosticProviders.map(provider => provider.id).filter(id => typeof id === 'string');
4649
4652
  };
4653
+ const getManifestSourceControlProviderIds = extension => {
4654
+ if (!Array.isArray(extension.sourceControlProviders)) {
4655
+ return [];
4656
+ }
4657
+ return extension.sourceControlProviders.map(provider => provider.id).filter(id => typeof id === 'string');
4658
+ };
4650
4659
  const getManifestViewIds = extension => {
4651
4660
  if (!Array.isArray(extension.views)) {
4652
4661
  return [];
@@ -4682,6 +4691,10 @@ const getNewRegisteredDiagnosticProviderIds = beforeDiagnosticProviderIds => {
4682
4691
  const before = new Set(beforeDiagnosticProviderIds);
4683
4692
  return getRegisteredDiagnosticProviderIds$1().filter(providerId => !before.has(providerId));
4684
4693
  };
4694
+ const getNewRegisteredSourceControlProviderIds = beforeSourceControlProviderIds => {
4695
+ const before = new Set(beforeSourceControlProviderIds);
4696
+ return getRegisteredSourceControlProviderIds$1().filter(providerId => !before.has(providerId));
4697
+ };
4685
4698
  const getNewRegisteredViewIds = beforeViewIds => {
4686
4699
  const before = new Set(beforeViewIds);
4687
4700
  return getRegisteredViewIds$1().filter(viewId => !before.has(viewId));
@@ -4701,6 +4714,9 @@ const getRegisteredHoverProviderIds = () => {
4701
4714
  const getRegisteredDiagnosticProviderIds = () => {
4702
4715
  return getRegisteredDiagnosticProviderIds$1();
4703
4716
  };
4717
+ const getRegisteredSourceControlProviderIds = () => {
4718
+ return getRegisteredSourceControlProviderIds$1();
4719
+ };
4704
4720
  const getRegisteredViewIds = () => {
4705
4721
  return getRegisteredViewIds$1();
4706
4722
  };
@@ -4759,6 +4775,14 @@ const validateIsolatedExtensionDiagnosticProviders = (extension, beforeDiagnosti
4759
4775
  const registeredDiagnosticProviderIds = getNewRegisteredDiagnosticProviderIds(beforeDiagnosticProviderIds);
4760
4776
  validateIsolatedExtensionContribution('diagnostic provider', manifestDiagnosticProviderIds, registeredDiagnosticProviderIds);
4761
4777
  };
4778
+ const validateIsolatedExtensionSourceControlProviders = (extension, beforeSourceControlProviderIds) => {
4779
+ if (!extension.isolated) {
4780
+ return;
4781
+ }
4782
+ const manifestSourceControlProviderIds = getManifestSourceControlProviderIds(extension);
4783
+ const registeredSourceControlProviderIds = getNewRegisteredSourceControlProviderIds(beforeSourceControlProviderIds);
4784
+ validateIsolatedExtensionContribution('source control provider', manifestSourceControlProviderIds, registeredSourceControlProviderIds);
4785
+ };
4762
4786
  const validateIsolatedExtensionViews = (extension, beforeViewIds) => {
4763
4787
  if (!extension.isolated) {
4764
4788
  return;
@@ -4793,6 +4817,7 @@ const activateExtension2 = async (extensionId, extension, absolutePath) => {
4793
4817
  const beforeDiagnosticProviderIds = getRegisteredDiagnosticProviderIds();
4794
4818
  const beforeFormattingProviderIds = getRegisteredFormattingProviderIds();
4795
4819
  const beforeHoverProviderIds = getRegisteredHoverProviderIds();
4820
+ const beforeSourceControlProviderIds = getRegisteredSourceControlProviderIds();
4796
4821
  const beforeViewIds = getRegisteredViewIds();
4797
4822
  await Promise.race([activate(extension), rejectAfterTimeout$1(activationTimeout$1, token)]);
4798
4823
  validateIsolatedExtensionCommands(extension, beforeCommandIds);
@@ -4800,6 +4825,7 @@ const activateExtension2 = async (extensionId, extension, absolutePath) => {
4800
4825
  validateIsolatedExtensionDiagnosticProviders(extension, beforeDiagnosticProviderIds);
4801
4826
  validateIsolatedExtensionFormattingProviders(extension, beforeFormattingProviderIds);
4802
4827
  validateIsolatedExtensionHoverProviders(extension, beforeHoverProviderIds);
4828
+ validateIsolatedExtensionSourceControlProviders(extension, beforeSourceControlProviderIds);
4803
4829
  validateIsolatedExtensionViews(extension, beforeViewIds);
4804
4830
  const endTime = performance.now();
4805
4831
  const time = endTime - startTime;
@@ -8,6 +8,7 @@ export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, regis
8
8
  export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from './parts/Formatting/Formatting.ts';
9
9
  export { exists, mkdir, readDirWithFileTypes, readFile, remove, writeFile } from './parts/FileSystem/FileSystem.ts';
10
10
  export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from './parts/Hover/Hover.ts';
11
+ export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from './parts/SourceControl/SourceControl.ts';
11
12
  export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, registerView, resetViewRegistry, saveViewInstanceState, } from './parts/ViewRegistry/ViewRegistry.ts';
12
13
  export { createOutputChannel, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry } from './parts/OutputChannel/OutputChannel.ts';
13
14
  export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from './parts/StatusBar/StatusBar.ts';
@@ -27,5 +28,6 @@ export type { OutputChannel } from './parts/OutputChannelHandle/OutputChannelHan
27
28
  export type { OutputChannelRegistrySnapshot } from './parts/OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts';
28
29
  export type { RegisteredOutputChannel } from './parts/RegisteredOutputChannel/RegisteredOutputChannel.ts';
29
30
  export type { QuickPickItem } from './parts/QuickPickItem/QuickPickItem.ts';
31
+ export type { RegisteredSourceControlProvider, SourceControlProvider, SourceControlProviderRegistrySnapshot, } from './parts/SourceControl/SourceControl.ts';
30
32
  export type { ShowQuickPickOptions } from './parts/ShowQuickPickOptions/ShowQuickPickOptions.ts';
31
33
  export type { StatusBarItem, StatusBarItemProvider, StatusBarItemProviderHandle, StatusBarItemProviderRegistrySnapshot, } from './parts/StatusBar/StatusBar.ts';
@@ -8,6 +8,7 @@ export { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot, regis
8
8
  export { executeFormattingProvider, getFormattingProviderRegistrySnapshot, registerFormattingProvider, resetFormattingProviderRegistry, } from "./parts/Formatting/Formatting.js";
9
9
  export { exists, mkdir, readDirWithFileTypes, readFile, remove, writeFile } from "./parts/FileSystem/FileSystem.js";
10
10
  export { executeHoverProvider, getHoverProviderRegistrySnapshot, registerHoverProvider, resetHoverProviderRegistry } from "./parts/Hover/Hover.js";
11
+ export { executeSourceControlAcceptInput, executeSourceControlAdd, executeSourceControlDiscard, executeSourceControlGenerateCommitMessage, executeSourceControlGetChangedFiles, executeSourceControlGetFeatures, executeSourceControlGetFileBefore, executeSourceControlGetFileDecorations, executeSourceControlGetGroups, executeSourceControlIsActive, registerSourceControlProvider, resetSourceControlProviderRegistry, } from "./parts/SourceControl/SourceControl.js";
11
12
  export { createViewInstance, dispatchViewEvent, disposeViewInstance, executeViewProvider, getViewRegistrySnapshot, registerView, resetViewRegistry, saveViewInstanceState, } from "./parts/ViewRegistry/ViewRegistry.js";
12
13
  export { createOutputChannel, getOutputChannelRegistrySnapshot, resetOutputChannelRegistry } from "./parts/OutputChannel/OutputChannel.js";
13
14
  export { getStatusBarItemProviderRegistrySnapshot, registerStatusBarItemProvider, resetStatusBarItemProviderRegistry, } from "./parts/StatusBar/StatusBar.js";
@@ -9,6 +9,16 @@ export declare const commandMap: {
9
9
  'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
10
10
  'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
11
11
  'ExtensionApi.executeResolveCompletionItemProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, name: string, completionItem: import("../CompletionItem/CompletionItem.ts").CompletionItem, ...args: readonly unknown[]) => Promise<import("../CompletionItem/CompletionItem.ts").CompletionItem | undefined>;
12
+ 'ExtensionApi.executeSourceControlAcceptInput': (id: string, value: string) => Promise<unknown>;
13
+ 'ExtensionApi.executeSourceControlAdd': (id: string, path: string) => Promise<unknown>;
14
+ 'ExtensionApi.executeSourceControlDiscard': (id: string, path: string) => Promise<unknown>;
15
+ 'ExtensionApi.executeSourceControlGenerateCommitMessage': (id: string) => Promise<unknown>;
16
+ 'ExtensionApi.executeSourceControlGetChangedFiles': (id: string) => Promise<readonly unknown[]>;
17
+ 'ExtensionApi.executeSourceControlGetFeatures': (id: string) => Promise<unknown>;
18
+ 'ExtensionApi.executeSourceControlGetFileBefore': (id: string, uri: string) => Promise<unknown>;
19
+ 'ExtensionApi.executeSourceControlGetFileDecorations': (id: string, uris: readonly string[]) => Promise<unknown>;
20
+ 'ExtensionApi.executeSourceControlGetGroups': (id: string, cwd: string) => Promise<unknown>;
21
+ 'ExtensionApi.executeSourceControlIsActive': (id: string, scheme: string, root: string) => Promise<boolean>;
12
22
  'ExtensionApi.executeViewProvider': (id: string) => unknown;
13
23
  'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
14
24
  'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
@@ -16,6 +26,7 @@ export declare const commandMap: {
16
26
  'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
17
27
  'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
18
28
  'ExtensionApi.getOutputChannelRegistrySnapshot': () => import("../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts").OutputChannelRegistrySnapshot;
29
+ 'ExtensionApi.getSourceControlProviderRegistrySnapshot': () => import("../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts").SourceControlProviderRegistrySnapshot;
19
30
  'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
20
31
  'ExtensionApi.getViewRegistrySnapshot': () => import("../View/View.ts").ViewRegistrySnapshot;
21
32
  'ExtensionApi.saveViewInstanceState': (uid: number) => Promise<unknown>;
@@ -8,6 +8,16 @@ export declare const commandMap: {
8
8
  'ExtensionApi.executeFormattingProvider': (textDocument: import("../FormattingTextDocument/FormattingTextDocument.ts").TextDocument, ...args: readonly unknown[]) => Promise<readonly import("../FormattingEdit/FormattingEdit.ts").FormattingEdit[]>;
9
9
  'ExtensionApi.executeHoverProvider': (textDocument: import("../HoverTextDocument/HoverTextDocument.ts").TextDocument, offset: number, ...args: readonly unknown[]) => Promise<import("../HoverResult/HoverResult.ts").HoverResult | undefined>;
10
10
  'ExtensionApi.executeResolveCompletionItemProvider': (textDocument: import("../CompletionTextDocument/CompletionTextDocument.ts").TextDocument, offset: number, name: string, completionItem: import("../CompletionItem/CompletionItem.ts").CompletionItem, ...args: readonly unknown[]) => Promise<import("../CompletionItem/CompletionItem.ts").CompletionItem | undefined>;
11
+ 'ExtensionApi.executeSourceControlAcceptInput': (id: string, value: string) => Promise<unknown>;
12
+ 'ExtensionApi.executeSourceControlAdd': (id: string, path: string) => Promise<unknown>;
13
+ 'ExtensionApi.executeSourceControlDiscard': (id: string, path: string) => Promise<unknown>;
14
+ 'ExtensionApi.executeSourceControlGenerateCommitMessage': (id: string) => Promise<unknown>;
15
+ 'ExtensionApi.executeSourceControlGetChangedFiles': (id: string) => Promise<readonly unknown[]>;
16
+ 'ExtensionApi.executeSourceControlGetFeatures': (id: string) => Promise<unknown>;
17
+ 'ExtensionApi.executeSourceControlGetFileBefore': (id: string, uri: string) => Promise<unknown>;
18
+ 'ExtensionApi.executeSourceControlGetFileDecorations': (id: string, uris: readonly string[]) => Promise<unknown>;
19
+ 'ExtensionApi.executeSourceControlGetGroups': (id: string, cwd: string) => Promise<unknown>;
20
+ 'ExtensionApi.executeSourceControlIsActive': (id: string, scheme: string, root: string) => Promise<boolean>;
11
21
  'ExtensionApi.executeViewProvider': (id: string) => unknown;
12
22
  'ExtensionApi.getCommandRegistrySnapshot': () => import("../CommandRegistrySnapshot/CommandRegistrySnapshot.ts").CommandRegistrySnapshot;
13
23
  'ExtensionApi.getCompletionProviderRegistrySnapshot': () => import("../CompletionProviderRegistrySnapshot/CompletionProviderRegistrySnapshot.ts").CompletionProviderRegistrySnapshot;
@@ -15,6 +25,7 @@ export declare const commandMap: {
15
25
  'ExtensionApi.getFormattingProviderRegistrySnapshot': () => import("../FormattingProviderRegistrySnapshot/FormattingProviderRegistrySnapshot.ts").FormattingProviderRegistrySnapshot;
16
26
  'ExtensionApi.getHoverProviderRegistrySnapshot': () => import("../HoverProviderRegistrySnapshot/HoverProviderRegistrySnapshot.ts").HoverProviderRegistrySnapshot;
17
27
  'ExtensionApi.getOutputChannelRegistrySnapshot': () => import("../OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.ts").OutputChannelRegistrySnapshot;
28
+ 'ExtensionApi.getSourceControlProviderRegistrySnapshot': () => import("../SourceControlProviderRegistrySnapshot/SourceControlProviderRegistrySnapshot.ts").SourceControlProviderRegistrySnapshot;
18
29
  'ExtensionApi.getStatusBarItems': () => readonly import("../StatusBarItem/StatusBarItem.ts").StatusBarItem[];
19
30
  'ExtensionApi.getViewRegistrySnapshot': () => import("../View/View.ts").ViewRegistrySnapshot;
20
31
  'ExtensionApi.saveViewInstanceState': (uid: number) => Promise<unknown>;