@lvce-editor/extension-host-worker 8.20.0 → 8.24.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 (41) hide show
  1. package/dist/extension-api/index.js +380 -26
  2. package/dist/extension-api/parts/Activation/Activation.js +4 -2
  3. package/dist/extension-api/parts/ExecuteCommand/ExecuteCommand.js +2 -2
  4. package/dist/extension-api/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +6 -1
  5. package/dist/extension-api/parts/NotifyStatusBarChange/NotifyStatusBarChange.js +2 -2
  6. package/dist/extension-api/parts/OutputChannel/OutputChannel.js +71 -0
  7. package/dist/extension-api/parts/OutputChannelHandle/OutputChannelHandle.js +0 -0
  8. package/dist/extension-api/parts/OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.js +0 -0
  9. package/dist/extension-api/parts/QuickPick/QuickPick.js +2 -2
  10. package/dist/extension-api/parts/RegisteredOutputChannel/RegisteredOutputChannel.js +0 -0
  11. package/dist/extension-api/parts/View/View.js +0 -0
  12. package/dist/extension-api/parts/ViewRegistry/ViewRegistry.js +55 -0
  13. package/dist/extensionHostWorkerMain.js +112 -41
  14. package/extension-api/dist/index.d.ts +6 -0
  15. package/extension-api/dist/index.js +2 -0
  16. package/extension-api/dist/parts/Activation/Activation.js +4 -2
  17. package/extension-api/dist/parts/CommandMap/CommandMap.d.ts +3 -0
  18. package/extension-api/dist/parts/ExecuteCommand/ExecuteCommand.js +2 -2
  19. package/extension-api/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.d.ts +3 -0
  20. package/extension-api/dist/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.js +5 -0
  21. package/extension-api/dist/parts/ExtensionApiWorkerCommandMap/ExtensionApiWorkerCommandMap.d.ts +3 -0
  22. package/extension-api/dist/parts/NotifyStatusBarChange/NotifyStatusBarChange.js +2 -2
  23. package/extension-api/dist/parts/OutputChannel/OutputChannel.d.ts +9 -0
  24. package/extension-api/dist/parts/OutputChannel/OutputChannel.js +64 -0
  25. package/extension-api/dist/parts/OutputChannelHandle/OutputChannelHandle.d.ts +6 -0
  26. package/extension-api/dist/parts/OutputChannelHandle/OutputChannelHandle.js +1 -0
  27. package/extension-api/dist/parts/OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.d.ts +4 -0
  28. package/extension-api/dist/parts/OutputChannelRegistrySnapshot/OutputChannelRegistrySnapshot.js +1 -0
  29. package/extension-api/dist/parts/QuickPick/QuickPick.js +2 -2
  30. package/extension-api/dist/parts/RegisteredOutputChannel/RegisteredOutputChannel.d.ts +3 -0
  31. package/extension-api/dist/parts/RegisteredOutputChannel/RegisteredOutputChannel.js +1 -0
  32. package/extension-api/dist/parts/View/View.d.ts +14 -0
  33. package/extension-api/dist/parts/View/View.js +1 -0
  34. package/extension-api/dist/parts/ViewRegistry/ViewRegistry.d.ts +6 -0
  35. package/extension-api/dist/parts/ViewRegistry/ViewRegistry.js +49 -0
  36. package/extension-api/package.json +3 -2
  37. package/extension-api/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +1 -1
  39. package/dist/extension-api/parts/Rpc/Rpc.js +0 -14
  40. package/extension-api/dist/parts/Rpc/Rpc.d.ts +0 -3
  41. package/extension-api/dist/parts/Rpc/Rpc.js +0 -10
@@ -847,7 +847,7 @@ var createRpc = (ipc) => {
847
847
  fn(response);
848
848
  delete callbacks2[id2];
849
849
  };
850
- const rpc2 = {
850
+ const rpc = {
851
851
  async dispose() {
852
852
  await ipc?.dispose();
853
853
  },
@@ -867,7 +867,7 @@ var createRpc = (ipc) => {
867
867
  ipc.send(message);
868
868
  }
869
869
  };
870
- return rpc2;
870
+ return rpc;
871
871
  };
872
872
 
873
873
  // packages/extension-api/node_modules/@lvce-editor/rpc/dist/parts/HandleMessage/HandleMessage.js
@@ -917,9 +917,9 @@ var create5 = async ({ commandMap: commandMap5, isMessagePortOpen = true, messag
917
917
  });
918
918
  const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
919
919
  handleIpc(ipc);
920
- const rpc2 = createRpc(ipc);
920
+ const rpc = createRpc(ipc);
921
921
  messagePort.start();
922
- return rpc2;
922
+ return rpc;
923
923
  };
924
924
 
925
925
  // packages/extension-api/node_modules/@lvce-editor/rpc/dist/parts/WebWorkerRpcClient/WebWorkerRpcClient.js
@@ -931,8 +931,248 @@ var create6 = async ({ commandMap: commandMap5 }) => {
931
931
  register(commandMap5);
932
932
  const ipc = await listen(IpcChildWithModuleWorkerAndMessagePort$1);
933
933
  handleIpc(ipc);
934
- const rpc2 = createRpc(ipc);
935
- return rpc2;
934
+ const rpc = createRpc(ipc);
935
+ return rpc;
936
+ };
937
+
938
+ // packages/extension-api/node_modules/@lvce-editor/rpc/dist/parts/CreateMockRpc/CreateMockRpc.js
939
+ var createMockRpc = ({ commandMap: commandMap5 }) => {
940
+ const invocations = [];
941
+ const invoke2 = (method, ...params) => {
942
+ invocations.push([method, ...params]);
943
+ const command = commandMap5[method];
944
+ if (!command) {
945
+ throw new Error(`command ${method} not found`);
946
+ }
947
+ return command(...params);
948
+ };
949
+ const mockRpc = {
950
+ invocations,
951
+ invoke: invoke2,
952
+ invokeAndTransfer: invoke2
953
+ };
954
+ return mockRpc;
955
+ };
956
+
957
+ // packages/extension-api/node_modules/@lvce-editor/rpc-registry/dist/parts/RpcRegistry/RpcRegistry.js
958
+ var rpcs = /* @__PURE__ */ Object.create(null);
959
+ var set = (id2, rpc) => {
960
+ rpcs[id2] = rpc;
961
+ };
962
+ var get2 = (id2) => {
963
+ return rpcs[id2];
964
+ };
965
+ var remove2 = (id2) => {
966
+ delete rpcs[id2];
967
+ };
968
+
969
+ // packages/extension-api/node_modules/@lvce-editor/rpc-registry/dist/parts/RpcFactory/RpcFactory.js
970
+ var create7 = (rpcId) => {
971
+ return {
972
+ async dispose() {
973
+ const rpc = get2(rpcId);
974
+ await rpc.dispose();
975
+ },
976
+ // @ts-ignore
977
+ invoke(method, ...params) {
978
+ const rpc = get2(rpcId);
979
+ return rpc.invoke(method, ...params);
980
+ },
981
+ // @ts-ignore
982
+ invokeAndTransfer(method, ...params) {
983
+ const rpc = get2(rpcId);
984
+ return rpc.invokeAndTransfer(method, ...params);
985
+ },
986
+ registerMockRpc(commandMap5) {
987
+ const mockRpc = createMockRpc({ commandMap: commandMap5 });
988
+ set(rpcId, mockRpc);
989
+ mockRpc[Symbol.dispose] = () => {
990
+ remove2(rpcId);
991
+ };
992
+ return mockRpc;
993
+ },
994
+ set(rpc) {
995
+ set(rpcId, rpc);
996
+ }
997
+ };
998
+ };
999
+
1000
+ // packages/extension-api/node_modules/@lvce-editor/constants/dist/parts/RpcId/RpcId.js
1001
+ var RpcId_exports = {};
1002
+ __export(RpcId_exports, {
1003
+ AuthProcess: () => AuthProcess,
1004
+ AuthWorker: () => AuthWorker,
1005
+ BlobWorker: () => BlobWorker,
1006
+ ChatCoordinatorWorker: () => ChatCoordinatorWorker,
1007
+ ChatDebugWorker: () => ChatDebugWorker,
1008
+ ChatMathWorker: () => ChatMathWorker,
1009
+ ChatMessageParsingWorker: () => ChatMessageParsingWorker,
1010
+ ChatNetworkWorker: () => ChatNetworkWorker,
1011
+ ChatStorageWorker: () => ChatStorageWorker,
1012
+ ChatToolWorker: () => ChatToolWorker,
1013
+ ChatViewModelWorker: () => ChatViewModelWorker,
1014
+ Cli: () => Cli,
1015
+ ClipBoardProcess: () => ClipBoardProcess,
1016
+ ClipBoardWorker: () => ClipBoardWorker,
1017
+ ColorPickerWorker: () => ColorPickerWorker,
1018
+ CompletionWorker: () => CompletionWorker,
1019
+ DebugWorker: () => DebugWorker,
1020
+ EditorWorker: () => EditorWorker,
1021
+ EmbedsProcess: () => EmbedsProcess,
1022
+ EmbedsWorker: () => EmbedsWorker,
1023
+ ErrorWorker: () => ErrorWorker,
1024
+ ExtensionDetailWorker: () => ExtensionDetailWorker,
1025
+ ExtensionHostHelperProcess: () => ExtensionHostHelperProcess,
1026
+ ExtensionHostWorker: () => ExtensionHostWorker,
1027
+ ExtensionManagementWorker: () => ExtensionManagementWorker,
1028
+ FileSearchWorker: () => FileSearchWorker,
1029
+ FileSystemProcess: () => FileSystemProcess,
1030
+ FileSystemWorker: () => FileSystemWorker,
1031
+ FileWatcherProcess: () => FileWatcherProcess,
1032
+ FindWidgetWorker: () => FindWidgetWorker,
1033
+ GithubWorker: () => GithubWorker,
1034
+ HoverWorker: () => HoverWorker,
1035
+ IconThemeWorker: () => IconThemeWorker,
1036
+ IframeWorker: () => IframeWorker,
1037
+ MainAreaWorker: () => MainAreaWorker,
1038
+ MainProcess: () => MainProcess,
1039
+ MarkdownWorker: () => MarkdownWorker,
1040
+ OpenerWorker: () => OpenerWorker,
1041
+ OutputWorker: () => OutputWorker,
1042
+ PreviewSandBoxWorker: () => PreviewSandBoxWorker,
1043
+ PreviewWorker: () => PreviewWorker,
1044
+ ProblemsWorker: () => ProblemsWorker,
1045
+ ProcessExplorerRenderer: () => ProcessExplorerRenderer,
1046
+ QuickPickWorker: () => QuickPickWorker,
1047
+ RenameWorker: () => RenameWorker,
1048
+ RendererProcess: () => RendererProcess,
1049
+ RendererWorker: () => RendererWorker,
1050
+ SearchProcess: () => SearchProcess,
1051
+ SearchProcessElectron: () => SearchProcessElectron,
1052
+ SettingsWorker: () => SettingsWorker,
1053
+ SharedProcess: () => SharedProcess,
1054
+ SourceActionWorker: () => SourceActionWorker,
1055
+ SourceControlWorker: () => SourceControlWorker,
1056
+ StatusBarWorker: () => StatusBarWorker,
1057
+ SyntaxHighlightingWorker: () => SyntaxHighlightingWorker,
1058
+ TemplateWorker: () => TemplateWorker,
1059
+ TerminalProcess: () => TerminalProcess,
1060
+ TestWithPlaywrightCli: () => TestWithPlaywrightCli,
1061
+ TestWithPlaywrightWorker: () => TestWithPlaywrightWorker,
1062
+ TestWorker: () => TestWorker,
1063
+ TextMeasurementWorker: () => TextMeasurementWorker,
1064
+ TextSearchWorker: () => TextSearchWorker,
1065
+ TypescriptCompileProcess: () => TypescriptCompileProcess
1066
+ });
1067
+ var AuthProcess = 6040;
1068
+ var AuthWorker = 6010;
1069
+ var BlobWorker = 19e3;
1070
+ var ChatCoordinatorWorker = 6008;
1071
+ var ChatDebugWorker = 6006;
1072
+ var ChatMathWorker = 6007;
1073
+ var ChatMessageParsingWorker = 6009;
1074
+ var ChatNetworkWorker = 6002;
1075
+ var ChatStorageWorker = 6003;
1076
+ var ChatToolWorker = 6005;
1077
+ var ChatViewModelWorker = 6022;
1078
+ var Cli = 6004;
1079
+ var ClipBoardProcess = 3401;
1080
+ var ClipBoardWorker = 3400;
1081
+ var ColorPickerWorker = 302;
1082
+ var CompletionWorker = 301;
1083
+ var DebugWorker = 55;
1084
+ var EditorWorker = 99;
1085
+ var EmbedsProcess = 207;
1086
+ var EmbedsWorker = 208;
1087
+ var ErrorWorker = 3308;
1088
+ var ExtensionDetailWorker = 3402;
1089
+ var ExtensionHostHelperProcess = 3;
1090
+ var ExtensionHostWorker = 44;
1091
+ var ExtensionManagementWorker = 9006;
1092
+ var FileSearchWorker = 7013;
1093
+ var FileSystemProcess = 210;
1094
+ var FileSystemWorker = 209;
1095
+ var FileWatcherProcess = 220;
1096
+ var FindWidgetWorker = 9002;
1097
+ var GithubWorker = 4444;
1098
+ var HoverWorker = 9003;
1099
+ var IconThemeWorker = 7009;
1100
+ var IframeWorker = 344;
1101
+ var MainAreaWorker = 82221;
1102
+ var MainProcess = -5;
1103
+ var MarkdownWorker = 300;
1104
+ var OpenerWorker = 4561;
1105
+ var OutputWorker = 7001;
1106
+ var PreviewSandBoxWorker = 3212;
1107
+ var PreviewWorker = 3211;
1108
+ var ProblemsWorker = 3403;
1109
+ var ProcessExplorerRenderer = 33;
1110
+ var QuickPickWorker = 1e4;
1111
+ var RenameWorker = 9004;
1112
+ var RendererProcess = 1670;
1113
+ var RendererWorker = 1;
1114
+ var SearchProcess = 77;
1115
+ var SearchProcessElectron = 2;
1116
+ var SettingsWorker = 11010;
1117
+ var SharedProcess = 1492;
1118
+ var SourceActionWorker = 303;
1119
+ var SourceControlWorker = 66;
1120
+ var StatusBarWorker = 7201;
1121
+ var SyntaxHighlightingWorker = 3309;
1122
+ var TemplateWorker = 4445;
1123
+ var TerminalProcess = 7;
1124
+ var TestWithPlaywrightCli = 6e3;
1125
+ var TestWithPlaywrightWorker = 6001;
1126
+ var TestWorker = 9001;
1127
+ var TextMeasurementWorker = 7011;
1128
+ var TextSearchWorker = 7010;
1129
+ var TypescriptCompileProcess = 221;
1130
+
1131
+ // packages/extension-api/node_modules/@lvce-editor/rpc-registry/dist/parts/ExtensionManagementWorker/ExtensionManagementWorker.js
1132
+ var ExtensionManagementWorker_exports = {};
1133
+ __export(ExtensionManagementWorker_exports, {
1134
+ disable: () => disable,
1135
+ disable2: () => disable2,
1136
+ dispose: () => dispose,
1137
+ enable: () => enable,
1138
+ enable2: () => enable2,
1139
+ getExtension: () => getExtension,
1140
+ getLanguages: () => getLanguages,
1141
+ install: () => install,
1142
+ invalidateExtensionsCache: () => invalidateExtensionsCache,
1143
+ invoke: () => invoke,
1144
+ invokeAndTransfer: () => invokeAndTransfer,
1145
+ registerMockRpc: () => registerMockRpc,
1146
+ set: () => set2,
1147
+ uninstall: () => uninstall
1148
+ });
1149
+ var { dispose, invoke, invokeAndTransfer, registerMockRpc, set: set2 } = create7(RpcId_exports.ExtensionManagementWorker);
1150
+ var enable = (id2) => {
1151
+ return invoke(`Extensions.enable`, id2);
1152
+ };
1153
+ var enable2 = (id2, platform) => {
1154
+ return invoke(`Extensions.enable2`, id2, platform);
1155
+ };
1156
+ var disable = (id2) => {
1157
+ return invoke(`Extensions.disable`, id2);
1158
+ };
1159
+ var disable2 = (id2, platform) => {
1160
+ return invoke(`Extensions.disable2`, id2, platform);
1161
+ };
1162
+ var getExtension = (id2) => {
1163
+ return invoke(`Extensions.getExtension`, id2);
1164
+ };
1165
+ var getLanguages = (platform, assetDir) => {
1166
+ return invoke("Extensions.getLanguages", platform, assetDir);
1167
+ };
1168
+ var install = (id2) => {
1169
+ return invoke(`Extensions.install`, id2);
1170
+ };
1171
+ var uninstall = (id2) => {
1172
+ return invoke(`Extensions.uninstall`, id2);
1173
+ };
1174
+ var invalidateExtensionsCache = () => {
1175
+ return invoke(`Extensions.invalidateExtensionsCache`);
936
1176
  };
937
1177
 
938
1178
  // packages/extension-api/src/parts/ExtensionApiError/ExtensionApiError.ts
@@ -1241,21 +1481,9 @@ var getFormattingProviderRegistrySnapshot = () => {
1241
1481
  };
1242
1482
  var resetFormattingProviderRegistry = registry3.reset;
1243
1483
 
1244
- // packages/extension-api/src/parts/Rpc/Rpc.ts
1245
- var rpc;
1246
- var set = (value) => {
1247
- rpc = value;
1248
- };
1249
- var invoke = async (method, ...params) => {
1250
- if (!rpc) {
1251
- return void 0;
1252
- }
1253
- return rpc.invoke(method, ...params);
1254
- };
1255
-
1256
1484
  // packages/extension-api/src/parts/NotifyStatusBarChange/NotifyStatusBarChange.ts
1257
1485
  var notifyStatusBarChange = async (id2) => {
1258
- await invoke("StatusBar.handleChange", id2);
1486
+ await ExtensionManagementWorker_exports.invoke("StatusBar.handleChange", id2);
1259
1487
  };
1260
1488
 
1261
1489
  // packages/extension-api/src/parts/StatusBarItemProviderRegistry/StatusBarItemProviderRegistry.ts
@@ -1358,6 +1586,121 @@ var getHoverProviderRegistrySnapshot = () => {
1358
1586
  };
1359
1587
  var resetHoverProviderRegistry = registry5.reset;
1360
1588
 
1589
+ // packages/extension-api/src/parts/OutputChannel/OutputChannel.ts
1590
+ var outputChannels = /* @__PURE__ */ Object.create(null);
1591
+ var isActivated = false;
1592
+ var RE_DASH_CASE = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
1593
+ var assertOutputChannelId = (id2) => {
1594
+ if (typeof id2 !== "string" || id2.length === 0) {
1595
+ throw new ExtensionApiError("output channel id is required");
1596
+ }
1597
+ if (!RE_DASH_CASE.test(id2)) {
1598
+ throw new ExtensionApiError(`output channel id ${id2} must be dash-case`);
1599
+ }
1600
+ };
1601
+ var assertCanWrite = (id2) => {
1602
+ if (!isActivated) {
1603
+ throw new ExtensionApiError(`output channel ${id2} cannot be written before activate`);
1604
+ }
1605
+ };
1606
+ var ExtensionOutputChannel = class {
1607
+ #id;
1608
+ constructor(id2) {
1609
+ this.#id = id2;
1610
+ }
1611
+ async append(text) {
1612
+ assertCanWrite(this.#id);
1613
+ await ExtensionManagementWorker_exports.invoke("ExtensionApi.appendOutputChannel", this.#id, text);
1614
+ }
1615
+ async appendLine(text) {
1616
+ assertCanWrite(this.#id);
1617
+ await ExtensionManagementWorker_exports.invoke("ExtensionApi.appendOutputChannel", this.#id, `${text}
1618
+ `);
1619
+ }
1620
+ async clear() {
1621
+ assertCanWrite(this.#id);
1622
+ await ExtensionManagementWorker_exports.invoke("ExtensionApi.clearOutputChannel", this.#id);
1623
+ }
1624
+ async replace(text) {
1625
+ assertCanWrite(this.#id);
1626
+ await ExtensionManagementWorker_exports.invoke("ExtensionApi.replaceOutputChannel", this.#id, text);
1627
+ }
1628
+ };
1629
+ var activateOutputChannels = () => {
1630
+ isActivated = true;
1631
+ };
1632
+ var createOutputChannel = (id2) => {
1633
+ assertOutputChannelId(id2);
1634
+ if (id2 in outputChannels) {
1635
+ throw new ExtensionApiError(`output channel ${id2} is already created`);
1636
+ }
1637
+ outputChannels[id2] = {
1638
+ id: id2
1639
+ };
1640
+ return new ExtensionOutputChannel(id2);
1641
+ };
1642
+ var getOutputChannelRegistrySnapshot = () => {
1643
+ return {
1644
+ outputChannels: Object.values(outputChannels)
1645
+ };
1646
+ };
1647
+ var resetOutputChannelRegistry = () => {
1648
+ for (const id2 of Object.keys(outputChannels)) {
1649
+ delete outputChannels[id2];
1650
+ }
1651
+ isActivated = false;
1652
+ };
1653
+
1654
+ // packages/extension-api/src/parts/ViewRegistry/ViewRegistry.ts
1655
+ var views = /* @__PURE__ */ Object.create(null);
1656
+ var assertView = (view) => {
1657
+ if (!view) {
1658
+ throw new ExtensionApiError("view is not defined");
1659
+ }
1660
+ if (typeof view.id !== "string" || view.id.length === 0) {
1661
+ throw new ExtensionApiError("view is missing id");
1662
+ }
1663
+ if (typeof view.create !== "function") {
1664
+ throw new ExtensionApiError(`view ${view.id} is missing create function`);
1665
+ }
1666
+ if (view.id in views) {
1667
+ throw new ExtensionApiError(`view ${view.id} is already registered`);
1668
+ }
1669
+ };
1670
+ var toRegisteredView = (view) => {
1671
+ return {
1672
+ icon: view.icon,
1673
+ id: view.id,
1674
+ title: view.title
1675
+ };
1676
+ };
1677
+ var registerView = (view) => {
1678
+ assertView(view);
1679
+ views[view.id] = view;
1680
+ return {
1681
+ dispose() {
1682
+ delete views[view.id];
1683
+ }
1684
+ };
1685
+ };
1686
+ var executeViewProvider = (id2) => {
1687
+ const view = views[id2];
1688
+ if (!view) {
1689
+ throw new ExtensionApiError(`view ${id2} not found`);
1690
+ }
1691
+ return view.create();
1692
+ };
1693
+ var getViewRegistrySnapshot = () => {
1694
+ return {
1695
+ views: Object.values(views).map(toRegisteredView)
1696
+ };
1697
+ };
1698
+ var resetViewRegistry = () => {
1699
+ for (const id2 of Object.keys(views)) {
1700
+ delete views[id2];
1701
+ }
1702
+ };
1703
+
1361
1704
  // packages/extension-api/src/parts/ExtensionApiCommandMap/ExtensionApiCommandMap.ts
1362
1705
  var commandMap = {
1363
1706
  "ExtensionApi.executeCommand": executeCommand,
@@ -1366,12 +1709,15 @@ var commandMap = {
1366
1709
  "ExtensionApi.executeFormattingProvider": executeFormattingProvider,
1367
1710
  "ExtensionApi.executeHoverProvider": executeHoverProvider,
1368
1711
  "ExtensionApi.executeResolveCompletionItemProvider": executeResolveCompletionItemProvider,
1712
+ "ExtensionApi.executeViewProvider": executeViewProvider,
1369
1713
  "ExtensionApi.getCommandRegistrySnapshot": getCommandRegistrySnapshot,
1370
1714
  "ExtensionApi.getCompletionProviderRegistrySnapshot": getCompletionProviderRegistrySnapshot,
1371
1715
  "ExtensionApi.getDiagnosticProviderRegistrySnapshot": getDiagnosticProviderRegistrySnapshot,
1372
1716
  "ExtensionApi.getFormattingProviderRegistrySnapshot": getFormattingProviderRegistrySnapshot,
1373
1717
  "ExtensionApi.getHoverProviderRegistrySnapshot": getHoverProviderRegistrySnapshot,
1374
- "ExtensionApi.getStatusBarItems": getStatusBarItems
1718
+ "ExtensionApi.getOutputChannelRegistrySnapshot": getOutputChannelRegistrySnapshot,
1719
+ "ExtensionApi.getStatusBarItems": getStatusBarItems,
1720
+ "ExtensionApi.getViewRegistrySnapshot": getViewRegistrySnapshot
1375
1721
  };
1376
1722
 
1377
1723
  // packages/extension-api/src/parts/ExtensionApiWorkerHandleMessagePort/ExtensionApiWorkerHandleMessagePort.ts
@@ -1406,10 +1752,10 @@ var commandMap3 = {
1406
1752
 
1407
1753
  // packages/extension-api/src/parts/ExtensionApiWorkerListen/ExtensionApiWorkerListen.ts
1408
1754
  var listen2 = async () => {
1409
- const rpc2 = WebWorkerRpcClient_exports.create({
1755
+ const rpc = WebWorkerRpcClient_exports.create({
1410
1756
  commandMap: commandMap3
1411
1757
  });
1412
- return rpc2;
1758
+ return rpc;
1413
1759
  };
1414
1760
 
1415
1761
  // packages/extension-api/src/parts/Activation/Activation.ts
@@ -1418,18 +1764,19 @@ var activate = async () => {
1418
1764
  if (!rpcPromise) {
1419
1765
  rpcPromise = listen2();
1420
1766
  }
1421
- const rpc2 = await rpcPromise;
1422
- set(rpc2);
1767
+ const rpc = await rpcPromise;
1768
+ ExtensionManagementWorker_exports.set(rpc);
1769
+ activateOutputChannels();
1423
1770
  };
1424
1771
 
1425
1772
  // packages/extension-api/src/parts/ExecuteCommand/ExecuteCommand.ts
1426
1773
  var executeCommand2 = async (id2, ...args) => {
1427
- return invoke("Extensions.executeCommand", id2, ...args);
1774
+ return ExtensionManagementWorker_exports.invoke("Extensions.executeCommand", id2, ...args);
1428
1775
  };
1429
1776
 
1430
1777
  // packages/extension-api/src/parts/QuickPick/QuickPick.ts
1431
1778
  var showQuickPick = async (options) => {
1432
- return invoke("ExtensionHostQuickPick.showQuickPick", options);
1779
+ return ExtensionManagementWorker_exports.invoke("ExtensionHostQuickPick.showQuickPick", options);
1433
1780
  };
1434
1781
 
1435
1782
  // packages/extension-api/src/parts/CommandMap/CommandMap.ts
@@ -1459,17 +1806,21 @@ var handleExtensionManagementMessagePort2 = async ({
1459
1806
  };
1460
1807
  export {
1461
1808
  activate,
1809
+ createOutputChannel,
1462
1810
  executeCommand2 as executeCommand,
1463
1811
  executeCompletionProvider,
1464
1812
  executeDiagnosticProvider,
1465
1813
  executeFormattingProvider,
1466
1814
  executeHoverProvider,
1467
1815
  executeResolveCompletionItemProvider,
1816
+ executeViewProvider,
1468
1817
  getCompletionProviderRegistrySnapshot,
1469
1818
  getDiagnosticProviderRegistrySnapshot,
1470
1819
  getFormattingProviderRegistrySnapshot,
1471
1820
  getHoverProviderRegistrySnapshot,
1821
+ getOutputChannelRegistrySnapshot,
1472
1822
  getStatusBarItemProviderRegistrySnapshot,
1823
+ getViewRegistrySnapshot,
1473
1824
  handleExtensionManagementMessagePort2 as handleExtensionManagementMessagePort,
1474
1825
  registerCommand,
1475
1826
  registerCompletionProvider,
@@ -1477,10 +1828,13 @@ export {
1477
1828
  registerFormattingProvider,
1478
1829
  registerHoverProvider,
1479
1830
  registerStatusBarItemProvider,
1831
+ registerView,
1480
1832
  resetCompletionProviderRegistry,
1481
1833
  resetDiagnosticProviderRegistry,
1482
1834
  resetFormattingProviderRegistry,
1483
1835
  resetHoverProviderRegistry,
1836
+ resetOutputChannelRegistry,
1484
1837
  resetStatusBarItemProviderRegistry,
1838
+ resetViewRegistry,
1485
1839
  showQuickPick
1486
1840
  };
@@ -1,12 +1,14 @@
1
+ import { ExtensionManagementWorker } from "@lvce-editor/rpc-registry";
1
2
  import { listen } from "../ExtensionApiWorkerListen/ExtensionApiWorkerListen.js";
2
- import * as Rpc from "../Rpc/Rpc.js";
3
+ import { activateOutputChannels } from "../OutputChannel/OutputChannel.js";
3
4
  let rpcPromise;
4
5
  const activate = async () => {
5
6
  if (!rpcPromise) {
6
7
  rpcPromise = listen();
7
8
  }
8
9
  const rpc = await rpcPromise;
9
- Rpc.set(rpc);
10
+ ExtensionManagementWorker.set(rpc);
11
+ activateOutputChannels();
10
12
  };
11
13
  export {
12
14
  activate
@@ -1,6 +1,6 @@
1
- import * as Rpc from "../Rpc/Rpc.js";
1
+ import { ExtensionManagementWorker } from "@lvce-editor/rpc-registry";
2
2
  const executeCommand = async (id, ...args) => {
3
- return Rpc.invoke("Extensions.executeCommand", id, ...args);
3
+ return ExtensionManagementWorker.invoke("Extensions.executeCommand", id, ...args);
4
4
  };
5
5
  export {
6
6
  executeCommand
@@ -4,6 +4,8 @@ import { executeDiagnosticProvider, getDiagnosticProviderRegistrySnapshot } from
4
4
  import { executeFormattingProvider, getFormattingProviderRegistrySnapshot } from "../Formatting/Formatting.js";
5
5
  import { getStatusBarItems } from "../GetStatusBarItems/GetStatusBarItems.js";
6
6
  import { executeHoverProvider, getHoverProviderRegistrySnapshot } from "../Hover/Hover.js";
7
+ import { getOutputChannelRegistrySnapshot } from "../OutputChannel/OutputChannel.js";
8
+ import { executeViewProvider, getViewRegistrySnapshot } from "../ViewRegistry/ViewRegistry.js";
7
9
  const commandMap = {
8
10
  "ExtensionApi.executeCommand": executeCommand,
9
11
  "ExtensionApi.executeCompletionProvider": executeCompletionProvider,
@@ -11,12 +13,15 @@ const commandMap = {
11
13
  "ExtensionApi.executeFormattingProvider": executeFormattingProvider,
12
14
  "ExtensionApi.executeHoverProvider": executeHoverProvider,
13
15
  "ExtensionApi.executeResolveCompletionItemProvider": executeResolveCompletionItemProvider,
16
+ "ExtensionApi.executeViewProvider": executeViewProvider,
14
17
  "ExtensionApi.getCommandRegistrySnapshot": getCommandRegistrySnapshot,
15
18
  "ExtensionApi.getCompletionProviderRegistrySnapshot": getCompletionProviderRegistrySnapshot,
16
19
  "ExtensionApi.getDiagnosticProviderRegistrySnapshot": getDiagnosticProviderRegistrySnapshot,
17
20
  "ExtensionApi.getFormattingProviderRegistrySnapshot": getFormattingProviderRegistrySnapshot,
18
21
  "ExtensionApi.getHoverProviderRegistrySnapshot": getHoverProviderRegistrySnapshot,
19
- "ExtensionApi.getStatusBarItems": getStatusBarItems
22
+ "ExtensionApi.getOutputChannelRegistrySnapshot": getOutputChannelRegistrySnapshot,
23
+ "ExtensionApi.getStatusBarItems": getStatusBarItems,
24
+ "ExtensionApi.getViewRegistrySnapshot": getViewRegistrySnapshot
20
25
  };
21
26
  export {
22
27
  commandMap
@@ -1,6 +1,6 @@
1
- import * as Rpc from "../Rpc/Rpc.js";
1
+ import { ExtensionManagementWorker } from "@lvce-editor/rpc-registry";
2
2
  const notifyStatusBarChange = async (id) => {
3
- await Rpc.invoke("StatusBar.handleChange", id);
3
+ await ExtensionManagementWorker.invoke("StatusBar.handleChange", id);
4
4
  };
5
5
  export {
6
6
  notifyStatusBarChange
@@ -0,0 +1,71 @@
1
+ import { ExtensionManagementWorker } from "@lvce-editor/rpc-registry";
2
+ import { ExtensionApiError } from "../ExtensionApiError/ExtensionApiError.js";
3
+ const outputChannels = /* @__PURE__ */ Object.create(null);
4
+ let isActivated = false;
5
+ const RE_DASH_CASE = /^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/;
6
+ const assertOutputChannelId = (id) => {
7
+ if (typeof id !== "string" || id.length === 0) {
8
+ throw new ExtensionApiError("output channel id is required");
9
+ }
10
+ if (!RE_DASH_CASE.test(id)) {
11
+ throw new ExtensionApiError(`output channel id ${id} must be dash-case`);
12
+ }
13
+ };
14
+ const assertCanWrite = (id) => {
15
+ if (!isActivated) {
16
+ throw new ExtensionApiError(`output channel ${id} cannot be written before activate`);
17
+ }
18
+ };
19
+ class ExtensionOutputChannel {
20
+ #id;
21
+ constructor(id) {
22
+ this.#id = id;
23
+ }
24
+ async append(text) {
25
+ assertCanWrite(this.#id);
26
+ await ExtensionManagementWorker.invoke("ExtensionApi.appendOutputChannel", this.#id, text);
27
+ }
28
+ async appendLine(text) {
29
+ assertCanWrite(this.#id);
30
+ await ExtensionManagementWorker.invoke("ExtensionApi.appendOutputChannel", this.#id, `${text}
31
+ `);
32
+ }
33
+ async clear() {
34
+ assertCanWrite(this.#id);
35
+ await ExtensionManagementWorker.invoke("ExtensionApi.clearOutputChannel", this.#id);
36
+ }
37
+ async replace(text) {
38
+ assertCanWrite(this.#id);
39
+ await ExtensionManagementWorker.invoke("ExtensionApi.replaceOutputChannel", this.#id, text);
40
+ }
41
+ }
42
+ const activateOutputChannels = () => {
43
+ isActivated = true;
44
+ };
45
+ const createOutputChannel = (id) => {
46
+ assertOutputChannelId(id);
47
+ if (id in outputChannels) {
48
+ throw new ExtensionApiError(`output channel ${id} is already created`);
49
+ }
50
+ outputChannels[id] = {
51
+ id
52
+ };
53
+ return new ExtensionOutputChannel(id);
54
+ };
55
+ const getOutputChannelRegistrySnapshot = () => {
56
+ return {
57
+ outputChannels: Object.values(outputChannels)
58
+ };
59
+ };
60
+ const resetOutputChannelRegistry = () => {
61
+ for (const id of Object.keys(outputChannels)) {
62
+ delete outputChannels[id];
63
+ }
64
+ isActivated = false;
65
+ };
66
+ export {
67
+ activateOutputChannels,
68
+ createOutputChannel,
69
+ getOutputChannelRegistrySnapshot,
70
+ resetOutputChannelRegistry
71
+ };
@@ -1,6 +1,6 @@
1
- import * as Rpc from "../Rpc/Rpc.js";
1
+ import { ExtensionManagementWorker } from "@lvce-editor/rpc-registry";
2
2
  const showQuickPick = async (options) => {
3
- return Rpc.invoke("ExtensionHostQuickPick.showQuickPick", options);
3
+ return ExtensionManagementWorker.invoke("ExtensionHostQuickPick.showQuickPick", options);
4
4
  };
5
5
  export {
6
6
  showQuickPick
File without changes