@lvce-editor/file-system-worker 3.1.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/fileSystemWorkerMain.js +474 -477
- package/package.json +5 -2
|
@@ -54,6 +54,49 @@ class VError extends Error {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
class AssertionError extends Error {
|
|
58
|
+
constructor(message) {
|
|
59
|
+
super(message);
|
|
60
|
+
this.name = 'AssertionError';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const Object$1 = 1;
|
|
64
|
+
const Number$1 = 2;
|
|
65
|
+
const Array$1 = 3;
|
|
66
|
+
const String$1 = 4;
|
|
67
|
+
const Boolean = 5;
|
|
68
|
+
const Function = 6;
|
|
69
|
+
const Null = 7;
|
|
70
|
+
const Unknown = 8;
|
|
71
|
+
const getType = value => {
|
|
72
|
+
switch (typeof value) {
|
|
73
|
+
case 'number':
|
|
74
|
+
return Number$1;
|
|
75
|
+
case 'function':
|
|
76
|
+
return Function;
|
|
77
|
+
case 'string':
|
|
78
|
+
return String$1;
|
|
79
|
+
case 'object':
|
|
80
|
+
if (value === null) {
|
|
81
|
+
return Null;
|
|
82
|
+
}
|
|
83
|
+
if (Array.isArray(value)) {
|
|
84
|
+
return Array$1;
|
|
85
|
+
}
|
|
86
|
+
return Object$1;
|
|
87
|
+
case 'boolean':
|
|
88
|
+
return Boolean;
|
|
89
|
+
default:
|
|
90
|
+
return Unknown;
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const object = value => {
|
|
94
|
+
const type = getType(value);
|
|
95
|
+
if (type !== Object$1) {
|
|
96
|
+
throw new AssertionError('expected value to be of type object');
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
|
|
57
100
|
const isMessagePort = value => {
|
|
58
101
|
return value && value instanceof MessagePort;
|
|
59
102
|
};
|
|
@@ -535,7 +578,7 @@ const create$4$1 = (method, params) => {
|
|
|
535
578
|
};
|
|
536
579
|
};
|
|
537
580
|
const callbacks = Object.create(null);
|
|
538
|
-
const set$
|
|
581
|
+
const set$4 = (id, fn) => {
|
|
539
582
|
callbacks[id] = fn;
|
|
540
583
|
};
|
|
541
584
|
const get$1 = id => {
|
|
@@ -554,7 +597,7 @@ const registerPromise = () => {
|
|
|
554
597
|
resolve,
|
|
555
598
|
promise
|
|
556
599
|
} = Promise.withResolvers();
|
|
557
|
-
set$
|
|
600
|
+
set$4(id, resolve);
|
|
558
601
|
return {
|
|
559
602
|
id,
|
|
560
603
|
promise
|
|
@@ -902,7 +945,7 @@ const send = (transport, method, ...params) => {
|
|
|
902
945
|
const invoke$4 = (ipc, method, ...params) => {
|
|
903
946
|
return invokeHelper(ipc, method, params, false);
|
|
904
947
|
};
|
|
905
|
-
const invokeAndTransfer$
|
|
948
|
+
const invokeAndTransfer$2 = (ipc, method, ...params) => {
|
|
906
949
|
return invokeHelper(ipc, method, params, true);
|
|
907
950
|
};
|
|
908
951
|
|
|
@@ -941,7 +984,7 @@ const createRpc = ipc => {
|
|
|
941
984
|
return invoke$4(ipc, method, ...params);
|
|
942
985
|
},
|
|
943
986
|
invokeAndTransfer(method, ...params) {
|
|
944
|
-
return invokeAndTransfer$
|
|
987
|
+
return invokeAndTransfer$2(ipc, method, ...params);
|
|
945
988
|
},
|
|
946
989
|
async dispose() {
|
|
947
990
|
await ipc?.dispose();
|
|
@@ -999,18 +1042,23 @@ const PlainMessagePortRpc = {
|
|
|
999
1042
|
__proto__: null,
|
|
1000
1043
|
create: create$5
|
|
1001
1044
|
};
|
|
1002
|
-
const create$
|
|
1045
|
+
const create$3 = async ({
|
|
1003
1046
|
commandMap,
|
|
1004
|
-
|
|
1047
|
+
send
|
|
1005
1048
|
}) => {
|
|
1049
|
+
const {
|
|
1050
|
+
port1,
|
|
1051
|
+
port2
|
|
1052
|
+
} = new MessageChannel();
|
|
1053
|
+
await send(port1);
|
|
1006
1054
|
return create$5({
|
|
1007
1055
|
commandMap,
|
|
1008
|
-
messagePort
|
|
1056
|
+
messagePort: port2
|
|
1009
1057
|
});
|
|
1010
1058
|
};
|
|
1011
|
-
const
|
|
1059
|
+
const TransferMessagePortRpcParent = {
|
|
1012
1060
|
__proto__: null,
|
|
1013
|
-
create: create$
|
|
1061
|
+
create: create$3
|
|
1014
1062
|
};
|
|
1015
1063
|
const create$2 = async ({
|
|
1016
1064
|
commandMap,
|
|
@@ -1060,7 +1108,7 @@ const WebSocketRpcParent2 = {
|
|
|
1060
1108
|
__proto__: null,
|
|
1061
1109
|
create: create$1
|
|
1062
1110
|
};
|
|
1063
|
-
const create$
|
|
1111
|
+
const create$4 = async ({
|
|
1064
1112
|
commandMap
|
|
1065
1113
|
}) => {
|
|
1066
1114
|
// TODO create a commandMap per rpc instance
|
|
@@ -1072,7 +1120,7 @@ const create$3 = async ({
|
|
|
1072
1120
|
};
|
|
1073
1121
|
const WebWorkerRpcClient = {
|
|
1074
1122
|
__proto__: null,
|
|
1075
|
-
create: create$
|
|
1123
|
+
create: create$4
|
|
1076
1124
|
};
|
|
1077
1125
|
const createMockRpc = ({
|
|
1078
1126
|
commandMap
|
|
@@ -1094,45 +1142,15 @@ const createMockRpc = ({
|
|
|
1094
1142
|
return mockRpc;
|
|
1095
1143
|
};
|
|
1096
1144
|
|
|
1097
|
-
const readFile$5 = async uri => {
|
|
1098
|
-
const response = await fetch(uri);
|
|
1099
|
-
if (!response.ok) {
|
|
1100
|
-
throw new Error(response.statusText);
|
|
1101
|
-
}
|
|
1102
|
-
const result = await response.text();
|
|
1103
|
-
return result;
|
|
1104
|
-
};
|
|
1105
|
-
const readFileAsBlob$1 = async uri => {
|
|
1106
|
-
const response = await fetch(uri);
|
|
1107
|
-
if (!response.ok) {
|
|
1108
|
-
throw new Error(response.statusText);
|
|
1109
|
-
}
|
|
1110
|
-
const result = await response.blob();
|
|
1111
|
-
return result;
|
|
1112
|
-
};
|
|
1113
|
-
const exists$3 = async uri => {
|
|
1114
|
-
const response = await fetch(uri);
|
|
1115
|
-
if (response.ok) {
|
|
1116
|
-
return true;
|
|
1117
|
-
}
|
|
1118
|
-
return false;
|
|
1119
|
-
};
|
|
1120
|
-
const readJson$4 = async uri => {
|
|
1121
|
-
const response = await fetch(uri);
|
|
1122
|
-
if (!response.ok) {
|
|
1123
|
-
throw new Error(`${response.statusText}`);
|
|
1124
|
-
}
|
|
1125
|
-
const json = await response.json();
|
|
1126
|
-
return json;
|
|
1127
|
-
};
|
|
1128
|
-
|
|
1129
1145
|
const DebugWorker = 55;
|
|
1146
|
+
const ExtensionHostWorker = 44;
|
|
1130
1147
|
const FileSystemProcess$1 = 210;
|
|
1131
1148
|
const FileSystemWorker = 209;
|
|
1132
|
-
const
|
|
1149
|
+
const RendererProcess = 1670;
|
|
1150
|
+
const RendererWorker = 1;
|
|
1133
1151
|
|
|
1134
1152
|
const rpcs = Object.create(null);
|
|
1135
|
-
const set$
|
|
1153
|
+
const set$3 = (id, rpc) => {
|
|
1136
1154
|
rpcs[id] = rpc;
|
|
1137
1155
|
};
|
|
1138
1156
|
const get = id => {
|
|
@@ -1154,7 +1172,7 @@ const create = rpcId => {
|
|
|
1154
1172
|
return rpc.invokeAndTransfer(method, ...params);
|
|
1155
1173
|
},
|
|
1156
1174
|
set(rpc) {
|
|
1157
|
-
set$
|
|
1175
|
+
set$3(rpcId, rpc);
|
|
1158
1176
|
},
|
|
1159
1177
|
async dispose() {
|
|
1160
1178
|
const rpc = get(rpcId);
|
|
@@ -1165,9 +1183,9 @@ const create = rpcId => {
|
|
|
1165
1183
|
|
|
1166
1184
|
const {
|
|
1167
1185
|
invoke: invoke$3,
|
|
1168
|
-
invokeAndTransfer: invokeAndTransfer$
|
|
1169
|
-
set: set$
|
|
1170
|
-
dispose
|
|
1186
|
+
invokeAndTransfer: invokeAndTransfer$1,
|
|
1187
|
+
set: set$2,
|
|
1188
|
+
dispose
|
|
1171
1189
|
} = create(FileSystemProcess$1);
|
|
1172
1190
|
const remove$3 = async uri => {
|
|
1173
1191
|
return invoke$3('FileSystem.remove', uri);
|
|
@@ -1186,7 +1204,7 @@ const getPathSeparator$2 = async root => {
|
|
|
1186
1204
|
// @ts-ignore
|
|
1187
1205
|
return invoke$3('FileSystem.getPathSeparator', root);
|
|
1188
1206
|
};
|
|
1189
|
-
const readJson$
|
|
1207
|
+
const readJson$4 = async root => {
|
|
1190
1208
|
// @ts-ignore
|
|
1191
1209
|
return invoke$3('FileSystem.readJson', root);
|
|
1192
1210
|
};
|
|
@@ -1214,19 +1232,19 @@ const copy$2 = async (oldUri, newUri) => {
|
|
|
1214
1232
|
// @ts-ignore
|
|
1215
1233
|
return invoke$3('FileSystem.copy', oldUri, newUri);
|
|
1216
1234
|
};
|
|
1217
|
-
const getFolderSize$
|
|
1235
|
+
const getFolderSize$2 = async uri => {
|
|
1218
1236
|
// @ts-ignore
|
|
1219
1237
|
return invoke$3('FileSystem.getFolderSize', uri);
|
|
1220
1238
|
};
|
|
1221
|
-
const exists$
|
|
1239
|
+
const exists$3 = async uri => {
|
|
1222
1240
|
// @ts-ignore
|
|
1223
1241
|
return invoke$3('FileSystem.exists', uri);
|
|
1224
1242
|
};
|
|
1225
|
-
const registerMockRpc
|
|
1243
|
+
const registerMockRpc = commandMap => {
|
|
1226
1244
|
const mockRpc = createMockRpc({
|
|
1227
1245
|
commandMap
|
|
1228
1246
|
});
|
|
1229
|
-
set$
|
|
1247
|
+
set$2(mockRpc);
|
|
1230
1248
|
return mockRpc;
|
|
1231
1249
|
};
|
|
1232
1250
|
|
|
@@ -1234,426 +1252,284 @@ const FileSystemProcess = {
|
|
|
1234
1252
|
__proto__: null,
|
|
1235
1253
|
appendFile: appendFile$2,
|
|
1236
1254
|
copy: copy$2,
|
|
1237
|
-
dispose
|
|
1238
|
-
exists: exists$
|
|
1239
|
-
getFolderSize: getFolderSize$
|
|
1255
|
+
dispose,
|
|
1256
|
+
exists: exists$3,
|
|
1257
|
+
getFolderSize: getFolderSize$2,
|
|
1240
1258
|
getPathSeparator: getPathSeparator$2,
|
|
1241
1259
|
getRealPath: getRealPath$2,
|
|
1242
1260
|
invoke: invoke$3,
|
|
1243
|
-
invokeAndTransfer: invokeAndTransfer$
|
|
1261
|
+
invokeAndTransfer: invokeAndTransfer$1,
|
|
1244
1262
|
mkdir: mkdir$2,
|
|
1245
1263
|
readDirWithFileTypes: readDirWithFileTypes$2,
|
|
1246
1264
|
readFile: readFile$4,
|
|
1247
|
-
readJson: readJson$
|
|
1248
|
-
registerMockRpc
|
|
1265
|
+
readJson: readJson$4,
|
|
1266
|
+
registerMockRpc,
|
|
1249
1267
|
remove: remove$3,
|
|
1250
1268
|
rename: rename$3,
|
|
1251
|
-
set: set$
|
|
1269
|
+
set: set$2,
|
|
1252
1270
|
stat: stat$2,
|
|
1253
1271
|
writeFile: writeFile$3
|
|
1254
1272
|
};
|
|
1255
1273
|
|
|
1256
1274
|
const {
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
dispose
|
|
1261
|
-
} = create(RendererWorker$1);
|
|
1262
|
-
const searchFileHtml = async uri => {
|
|
1263
|
-
return invoke$2('ExtensionHost.searchFileWithHtml', uri);
|
|
1264
|
-
};
|
|
1265
|
-
const getFilePathElectron = async file => {
|
|
1266
|
-
return invoke$2('FileSystemHandle.getFilePathElectron', file);
|
|
1267
|
-
};
|
|
1268
|
-
const showContextMenu = async (x, y, id, ...args) => {
|
|
1269
|
-
return invoke$2('ContextMenu.show', x, y, id, ...args);
|
|
1270
|
-
};
|
|
1271
|
-
const getElectronVersion = async () => {
|
|
1272
|
-
return invoke$2('Process.getElectronVersion');
|
|
1273
|
-
};
|
|
1274
|
-
const applyBulkReplacement = async bulkEdits => {
|
|
1275
|
-
await invoke$2('BulkReplacement.applyBulkReplacement', bulkEdits);
|
|
1276
|
-
};
|
|
1277
|
-
const setColorTheme = async id => {
|
|
1278
|
-
// @ts-ignore
|
|
1279
|
-
return invoke$2(/* ColorTheme.setColorTheme */'ColorTheme.setColorTheme', /* colorThemeId */id);
|
|
1280
|
-
};
|
|
1281
|
-
const getNodeVersion = async () => {
|
|
1282
|
-
return invoke$2('Process.getNodeVersion');
|
|
1283
|
-
};
|
|
1284
|
-
const getChromeVersion = async () => {
|
|
1285
|
-
return invoke$2('Process.getChromeVersion');
|
|
1286
|
-
};
|
|
1287
|
-
const getV8Version = async () => {
|
|
1288
|
-
return invoke$2('Process.getV8Version');
|
|
1289
|
-
};
|
|
1290
|
-
const getFileHandles = async fileIds => {
|
|
1291
|
-
const files = await invoke$2('FileSystemHandle.getFileHandles', fileIds);
|
|
1292
|
-
return files;
|
|
1293
|
-
};
|
|
1294
|
-
const setWorkspacePath = async path => {
|
|
1295
|
-
await invoke$2('Workspace.setPath', path);
|
|
1296
|
-
};
|
|
1297
|
-
const registerWebViewInterceptor = async (id, port) => {
|
|
1298
|
-
await invokeAndTransfer$1('WebView.registerInterceptor', id, port);
|
|
1299
|
-
};
|
|
1300
|
-
const unregisterWebViewInterceptor = async id => {
|
|
1301
|
-
await invoke$2('WebView.unregisterInterceptor', id);
|
|
1302
|
-
};
|
|
1303
|
-
const sendMessagePortToEditorWorker = async (port, rpcId) => {
|
|
1304
|
-
const command = 'HandleMessagePort.handleMessagePort';
|
|
1305
|
-
// @ts-ignore
|
|
1306
|
-
await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToEditorWorker', port, command, rpcId);
|
|
1307
|
-
};
|
|
1308
|
-
const sendMessagePortToErrorWorker = async (port, rpcId) => {
|
|
1309
|
-
const command = 'Errors.handleMessagePort';
|
|
1310
|
-
// @ts-ignore
|
|
1311
|
-
await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToErrorWorker', port, command, rpcId);
|
|
1312
|
-
};
|
|
1313
|
-
const sendMessagePortToMarkdownWorker = async (port, rpcId) => {
|
|
1314
|
-
const command = 'Markdown.handleMessagePort';
|
|
1315
|
-
// @ts-ignore
|
|
1316
|
-
await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToMarkdownWorker', port, command, rpcId);
|
|
1317
|
-
};
|
|
1318
|
-
const sendMessagePortToIconThemeWorker = async (port, rpcId) => {
|
|
1319
|
-
const command = 'IconTheme.handleMessagePort';
|
|
1320
|
-
// @ts-ignore
|
|
1321
|
-
await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToIconThemeWorker', port, command, rpcId);
|
|
1322
|
-
};
|
|
1323
|
-
const sendMessagePortToFileSystemWorker = async (port, rpcId) => {
|
|
1324
|
-
const command = 'FileSystem.handleMessagePort';
|
|
1325
|
-
// @ts-ignore
|
|
1326
|
-
await invokeAndTransfer$1('SendMessagePortToExtensionHostWorker.sendMessagePortToFileSystemWorker', port, command, rpcId);
|
|
1327
|
-
};
|
|
1328
|
-
const readFile$3 = async uri => {
|
|
1329
|
-
return invoke$2('FileSystem.readFile', uri);
|
|
1330
|
-
};
|
|
1331
|
-
const getWebViewSecret = async key => {
|
|
1332
|
-
// @ts-ignore
|
|
1333
|
-
return invoke$2('WebView.getSecret', key);
|
|
1334
|
-
};
|
|
1335
|
-
const setWebViewPort = async (uid, port, origin, portType) => {
|
|
1336
|
-
return invokeAndTransfer$1('WebView.setPort', uid, port, origin, portType);
|
|
1337
|
-
};
|
|
1338
|
-
const setFocus = key => {
|
|
1339
|
-
return invoke$2('Focus.setFocus', key);
|
|
1340
|
-
};
|
|
1341
|
-
const getFileIcon = async options => {
|
|
1342
|
-
return invoke$2('IconTheme.getFileIcon', options);
|
|
1343
|
-
};
|
|
1344
|
-
const getColorThemeNames = async () => {
|
|
1345
|
-
return invoke$2('ColorTheme.getColorThemeNames');
|
|
1346
|
-
};
|
|
1347
|
-
const disableExtension = async id => {
|
|
1348
|
-
// @ts-ignore
|
|
1349
|
-
return invoke$2('ExtensionManagement.disable', id);
|
|
1350
|
-
};
|
|
1351
|
-
const enableExtension = async id => {
|
|
1352
|
-
// @ts-ignore
|
|
1353
|
-
return invoke$2('ExtensionManagement.enable', id);
|
|
1354
|
-
};
|
|
1355
|
-
const handleDebugChange = async params => {
|
|
1356
|
-
// @ts-ignore
|
|
1357
|
-
return invoke$2('Run And Debug.handleChange', params);
|
|
1358
|
-
};
|
|
1359
|
-
const getFolderIcon = async options => {
|
|
1360
|
-
return invoke$2('IconTheme.getFolderIcon', options);
|
|
1361
|
-
};
|
|
1362
|
-
const closeWidget = async widgetId => {
|
|
1363
|
-
return invoke$2('Viewlet.closeWidget', widgetId);
|
|
1364
|
-
};
|
|
1365
|
-
const sendMessagePortToExtensionHostWorker$1 = async (port, rpcId = 0) => {
|
|
1275
|
+
invokeAndTransfer,
|
|
1276
|
+
set: set$1} = create(RendererWorker);
|
|
1277
|
+
const sendMessagePortToExtensionHostWorker = async (port, rpcId = 0) => {
|
|
1366
1278
|
const command = 'HandleMessagePort.handleMessagePort2';
|
|
1367
|
-
await invokeAndTransfer
|
|
1368
|
-
};
|
|
1369
|
-
const sendMessagePortToSearchProcess = async port => {
|
|
1370
|
-
await invokeAndTransfer$1('SendMessagePortToElectron.sendMessagePortToElectron', port, 'HandleMessagePortForSearchProcess.handleMessagePortForSearchProcess');
|
|
1371
|
-
};
|
|
1372
|
-
const confirm = async (message, options) => {
|
|
1373
|
-
// @ts-ignore
|
|
1374
|
-
const result = await invoke$2('ConfirmPrompt.prompt', message, options);
|
|
1375
|
-
return result;
|
|
1376
|
-
};
|
|
1377
|
-
const getRecentlyOpened = async () => {
|
|
1378
|
-
return invoke$2(/* RecentlyOpened.getRecentlyOpened */'RecentlyOpened.getRecentlyOpened');
|
|
1379
|
-
};
|
|
1380
|
-
const getKeyBindings = async () => {
|
|
1381
|
-
return invoke$2('KeyBindingsInitial.getKeyBindings');
|
|
1382
|
-
};
|
|
1383
|
-
const writeClipBoardText = async text => {
|
|
1384
|
-
await invoke$2('ClipBoard.writeText', /* text */text);
|
|
1385
|
-
};
|
|
1386
|
-
const writeClipBoardImage = async blob => {
|
|
1387
|
-
// @ts-ignore
|
|
1388
|
-
await invoke$2('ClipBoard.writeImage', /* text */blob);
|
|
1389
|
-
};
|
|
1390
|
-
const searchFileMemory = async uri => {
|
|
1391
|
-
// @ts-ignore
|
|
1392
|
-
return invoke$2('ExtensionHost.searchFileWithMemory', uri);
|
|
1393
|
-
};
|
|
1394
|
-
const searchFileFetch = async uri => {
|
|
1395
|
-
return invoke$2('ExtensionHost.searchFileWithFetch', uri);
|
|
1396
|
-
};
|
|
1397
|
-
const showMessageBox = async options => {
|
|
1398
|
-
return invoke$2('ElectronDialog.showMessageBox', options);
|
|
1399
|
-
};
|
|
1400
|
-
const handleDebugResumed = async params => {
|
|
1401
|
-
await invoke$2('Run And Debug.handleResumed', params);
|
|
1402
|
-
};
|
|
1403
|
-
const openWidget = async name => {
|
|
1404
|
-
await invoke$2('Viewlet.openWidget', name);
|
|
1405
|
-
};
|
|
1406
|
-
const getIcons = async requests => {
|
|
1407
|
-
const icons = await invoke$2('IconTheme.getIcons', requests);
|
|
1408
|
-
return icons;
|
|
1409
|
-
};
|
|
1410
|
-
const activateByEvent = event => {
|
|
1411
|
-
return invoke$2('ExtensionHostManagement.activateByEvent', event);
|
|
1412
|
-
};
|
|
1413
|
-
const setAdditionalFocus = focusKey => {
|
|
1414
|
-
// @ts-ignore
|
|
1415
|
-
return invoke$2('Focus.setAdditionalFocus', focusKey);
|
|
1416
|
-
};
|
|
1417
|
-
const getActiveEditorId = () => {
|
|
1418
|
-
// @ts-ignore
|
|
1419
|
-
return invoke$2('GetActiveEditor.getActiveEditorId');
|
|
1420
|
-
};
|
|
1421
|
-
const getWorkspacePath = () => {
|
|
1422
|
-
return invoke$2('Workspace.getPath');
|
|
1279
|
+
await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, command, rpcId);
|
|
1423
1280
|
};
|
|
1424
1281
|
const sendMessagePortToRendererProcess = async port => {
|
|
1425
1282
|
const command = 'HandleMessagePort.handleMessagePort';
|
|
1426
1283
|
// @ts-ignore
|
|
1427
|
-
await invokeAndTransfer
|
|
1428
|
-
};
|
|
1429
|
-
const getPreference = async key => {
|
|
1430
|
-
return await invoke$2('Preferences.get', key);
|
|
1431
|
-
};
|
|
1432
|
-
const getAllExtensions = async () => {
|
|
1433
|
-
return invoke$2('ExtensionManagement.getAllExtensions');
|
|
1434
|
-
};
|
|
1435
|
-
const rerenderEditor = async key => {
|
|
1436
|
-
// @ts-ignore
|
|
1437
|
-
return invoke$2('Editor.rerender', key);
|
|
1438
|
-
};
|
|
1439
|
-
const handleDebugPaused = async params => {
|
|
1440
|
-
await invoke$2('Run And Debug.handlePaused', params);
|
|
1441
|
-
};
|
|
1442
|
-
const openUri = async (uri, focus, options) => {
|
|
1443
|
-
await invoke$2('Main.openUri', uri, focus, options);
|
|
1444
|
-
};
|
|
1445
|
-
const sendMessagePortToSyntaxHighlightingWorker = async port => {
|
|
1446
|
-
await invokeAndTransfer$1(
|
|
1447
|
-
// @ts-ignore
|
|
1448
|
-
'SendMessagePortToSyntaxHighlightingWorker.sendMessagePortToSyntaxHighlightingWorker', port, 'HandleMessagePort.handleMessagePort2');
|
|
1449
|
-
};
|
|
1450
|
-
const handleDebugScriptParsed = async script => {
|
|
1451
|
-
await invoke$2('Run And Debug.handleScriptParsed', script);
|
|
1452
|
-
};
|
|
1453
|
-
const getWindowId = async () => {
|
|
1454
|
-
return invoke$2('GetWindowId.getWindowId');
|
|
1455
|
-
};
|
|
1456
|
-
const getBlob = async uri => {
|
|
1457
|
-
// @ts-ignore
|
|
1458
|
-
return invoke$2('FileSystem.getBlob', uri);
|
|
1459
|
-
};
|
|
1460
|
-
const getExtensionCommands = async () => {
|
|
1461
|
-
return invoke$2('ExtensionHost.getCommands');
|
|
1462
|
-
};
|
|
1463
|
-
const showErrorDialog = async errorInfo => {
|
|
1464
|
-
// @ts-ignore
|
|
1465
|
-
await invoke$2('ErrorHandling.showErrorDialog', errorInfo);
|
|
1466
|
-
};
|
|
1467
|
-
const getFolderSize$2 = async uri => {
|
|
1468
|
-
// @ts-ignore
|
|
1469
|
-
return await invoke$2('FileSystem.getFolderSize', uri);
|
|
1470
|
-
};
|
|
1471
|
-
const getExtension = async id => {
|
|
1472
|
-
// @ts-ignore
|
|
1473
|
-
return invoke$2('ExtensionManagement.getExtension', id);
|
|
1474
|
-
};
|
|
1475
|
-
const getMarkdownDom = async html => {
|
|
1476
|
-
// @ts-ignore
|
|
1477
|
-
return invoke$2('Markdown.getVirtualDom', html);
|
|
1478
|
-
};
|
|
1479
|
-
const renderMarkdown = async (markdown, options) => {
|
|
1480
|
-
// @ts-ignore
|
|
1481
|
-
return invoke$2('Markdown.renderMarkdown', markdown, options);
|
|
1482
|
-
};
|
|
1483
|
-
const openNativeFolder = async uri => {
|
|
1484
|
-
// @ts-ignore
|
|
1485
|
-
await invoke$2('OpenNativeFolder.openNativeFolder', uri);
|
|
1486
|
-
};
|
|
1487
|
-
const uninstallExtension = async id => {
|
|
1488
|
-
return invoke$2('ExtensionManagement.uninstall', id);
|
|
1489
|
-
};
|
|
1490
|
-
const installExtension = async id => {
|
|
1491
|
-
// @ts-ignore
|
|
1492
|
-
return invoke$2('ExtensionManagement.install', id);
|
|
1493
|
-
};
|
|
1494
|
-
const openExtensionSearch = async () => {
|
|
1495
|
-
// @ts-ignore
|
|
1496
|
-
return invoke$2('SideBar.openViewlet', 'Extensions');
|
|
1497
|
-
};
|
|
1498
|
-
const setExtensionsSearchValue = async searchValue => {
|
|
1499
|
-
// @ts-ignore
|
|
1500
|
-
return invoke$2('Extensions.handleInput', searchValue);
|
|
1501
|
-
};
|
|
1502
|
-
const openExternal = async uri => {
|
|
1503
|
-
// @ts-ignore
|
|
1504
|
-
await invoke$2('Open.openExternal', uri);
|
|
1505
|
-
};
|
|
1506
|
-
const openUrl = async uri => {
|
|
1507
|
-
// @ts-ignore
|
|
1508
|
-
await invoke$2('Open.openUrl', uri);
|
|
1509
|
-
};
|
|
1510
|
-
const getAllPreferences = async () => {
|
|
1511
|
-
// @ts-ignore
|
|
1512
|
-
return invoke$2('Preferences.getAll');
|
|
1513
|
-
};
|
|
1514
|
-
const showSaveFilePicker = async () => {
|
|
1515
|
-
// @ts-ignore
|
|
1516
|
-
return invoke$2('FilePicker.showSaveFilePicker');
|
|
1517
|
-
};
|
|
1518
|
-
const getLogsDir = async () => {
|
|
1519
|
-
// @ts-ignore
|
|
1520
|
-
return invoke$2('PlatformPaths.getLogsDir');
|
|
1521
|
-
};
|
|
1522
|
-
const registerMockRpc = commandMap => {
|
|
1523
|
-
const mockRpc = createMockRpc({
|
|
1524
|
-
commandMap
|
|
1525
|
-
});
|
|
1526
|
-
set$2(mockRpc);
|
|
1527
|
-
return mockRpc;
|
|
1284
|
+
await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToRendererProcess', port, command, DebugWorker);
|
|
1528
1285
|
};
|
|
1529
1286
|
|
|
1530
|
-
const
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
getChromeVersion,
|
|
1544
|
-
getColorThemeNames,
|
|
1545
|
-
getElectronVersion,
|
|
1546
|
-
getExtension,
|
|
1547
|
-
getExtensionCommands,
|
|
1548
|
-
getFileHandles,
|
|
1549
|
-
getFileIcon,
|
|
1550
|
-
getFilePathElectron,
|
|
1551
|
-
getFolderIcon,
|
|
1552
|
-
getFolderSize: getFolderSize$2,
|
|
1553
|
-
getIcons,
|
|
1554
|
-
getKeyBindings,
|
|
1555
|
-
getLogsDir,
|
|
1556
|
-
getMarkdownDom,
|
|
1557
|
-
getNodeVersion,
|
|
1558
|
-
getPreference,
|
|
1559
|
-
getRecentlyOpened,
|
|
1560
|
-
getV8Version,
|
|
1561
|
-
getWebViewSecret,
|
|
1562
|
-
getWindowId,
|
|
1563
|
-
getWorkspacePath,
|
|
1564
|
-
handleDebugChange,
|
|
1565
|
-
handleDebugPaused,
|
|
1566
|
-
handleDebugResumed,
|
|
1567
|
-
handleDebugScriptParsed,
|
|
1568
|
-
installExtension,
|
|
1569
|
-
invoke: invoke$2,
|
|
1570
|
-
invokeAndTransfer: invokeAndTransfer$1,
|
|
1571
|
-
openExtensionSearch,
|
|
1572
|
-
openExternal,
|
|
1573
|
-
openNativeFolder,
|
|
1574
|
-
openUri,
|
|
1575
|
-
openUrl,
|
|
1576
|
-
openWidget,
|
|
1577
|
-
readFile: readFile$3,
|
|
1578
|
-
registerMockRpc,
|
|
1579
|
-
registerWebViewInterceptor,
|
|
1580
|
-
renderMarkdown,
|
|
1581
|
-
rerenderEditor,
|
|
1582
|
-
searchFileFetch,
|
|
1583
|
-
searchFileHtml,
|
|
1584
|
-
searchFileMemory,
|
|
1585
|
-
sendMessagePortToEditorWorker,
|
|
1586
|
-
sendMessagePortToErrorWorker,
|
|
1587
|
-
sendMessagePortToExtensionHostWorker: sendMessagePortToExtensionHostWorker$1,
|
|
1588
|
-
sendMessagePortToFileSystemWorker,
|
|
1589
|
-
sendMessagePortToIconThemeWorker,
|
|
1590
|
-
sendMessagePortToMarkdownWorker,
|
|
1591
|
-
sendMessagePortToRendererProcess,
|
|
1592
|
-
sendMessagePortToSearchProcess,
|
|
1593
|
-
sendMessagePortToSyntaxHighlightingWorker,
|
|
1594
|
-
set: set$2,
|
|
1595
|
-
setAdditionalFocus,
|
|
1596
|
-
setColorTheme,
|
|
1597
|
-
setExtensionsSearchValue,
|
|
1598
|
-
setFocus,
|
|
1599
|
-
setWebViewPort,
|
|
1600
|
-
setWorkspacePath,
|
|
1601
|
-
showContextMenu,
|
|
1602
|
-
showErrorDialog,
|
|
1603
|
-
showMessageBox,
|
|
1604
|
-
showSaveFilePicker,
|
|
1605
|
-
uninstallExtension,
|
|
1606
|
-
unregisterWebViewInterceptor,
|
|
1607
|
-
writeClipBoardImage,
|
|
1608
|
-
writeClipBoardText
|
|
1609
|
-
};
|
|
1610
|
-
|
|
1611
|
-
const getPortTuple = () => {
|
|
1612
|
-
const {
|
|
1613
|
-
port1,
|
|
1614
|
-
port2
|
|
1615
|
-
} = new MessageChannel();
|
|
1287
|
+
const createLazyRpc = rpcId => {
|
|
1288
|
+
let rpcPromise;
|
|
1289
|
+
let factory;
|
|
1290
|
+
const createRpc = async () => {
|
|
1291
|
+
const rpc = await factory();
|
|
1292
|
+
set$3(rpcId, rpc);
|
|
1293
|
+
};
|
|
1294
|
+
const ensureRpc = async () => {
|
|
1295
|
+
if (!rpcPromise) {
|
|
1296
|
+
rpcPromise = createRpc();
|
|
1297
|
+
}
|
|
1298
|
+
await rpcPromise;
|
|
1299
|
+
};
|
|
1616
1300
|
return {
|
|
1617
|
-
|
|
1618
|
-
|
|
1301
|
+
setFactory(value) {
|
|
1302
|
+
factory = value;
|
|
1303
|
+
},
|
|
1304
|
+
async invoke(method, ...params) {
|
|
1305
|
+
await ensureRpc();
|
|
1306
|
+
const rpc = get(rpcId);
|
|
1307
|
+
return rpc.invoke(method, ...params);
|
|
1308
|
+
}
|
|
1619
1309
|
};
|
|
1620
1310
|
};
|
|
1621
1311
|
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
sendMessagePortToExtensionHostWorker
|
|
1626
|
-
} = RendererWorker;
|
|
1312
|
+
// TODO: including these in blob-util.ts causes typedoc to generate docs for them,
|
|
1313
|
+
// even with --excludePrivate ¯\_(ツ)_/¯
|
|
1314
|
+
/** @private */
|
|
1627
1315
|
|
|
1628
|
-
|
|
1316
|
+
/* global Promise, Image, Blob, FileReader, atob, btoa,
|
|
1317
|
+
BlobBuilder, MSBlobBuilder, MozBlobBuilder, WebKitBlobBuilder, webkitURL */
|
|
1318
|
+
/**
|
|
1319
|
+
* Shim for
|
|
1320
|
+
* [`new Blob()`](https://developer.mozilla.org/en-US/docs/Web/API/Blob.Blob)
|
|
1321
|
+
* to support
|
|
1322
|
+
* [older browsers that use the deprecated `BlobBuilder` API](http://caniuse.com/blob).
|
|
1323
|
+
*
|
|
1324
|
+
* Example:
|
|
1325
|
+
*
|
|
1326
|
+
* ```js
|
|
1327
|
+
* var myBlob = blobUtil.createBlob(['hello world'], {type: 'text/plain'});
|
|
1328
|
+
* ```
|
|
1329
|
+
*
|
|
1330
|
+
* @param parts - content of the Blob
|
|
1331
|
+
* @param properties - usually `{type: myContentType}`,
|
|
1332
|
+
* you can also pass a string for the content type
|
|
1333
|
+
* @returns Blob
|
|
1334
|
+
*/
|
|
1335
|
+
function createBlob(parts, properties) {
|
|
1336
|
+
parts = parts || [];
|
|
1337
|
+
properties = properties || {};
|
|
1338
|
+
if (typeof properties === 'string') {
|
|
1339
|
+
properties = {
|
|
1340
|
+
type: properties
|
|
1341
|
+
}; // infer content type
|
|
1342
|
+
}
|
|
1629
1343
|
try {
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1344
|
+
return new Blob(parts, properties);
|
|
1345
|
+
} catch (e) {
|
|
1346
|
+
if (e.name !== 'TypeError') {
|
|
1347
|
+
throw e;
|
|
1348
|
+
}
|
|
1349
|
+
var Builder = typeof BlobBuilder !== 'undefined' ? BlobBuilder : typeof MSBlobBuilder !== 'undefined' ? MSBlobBuilder : typeof MozBlobBuilder !== 'undefined' ? MozBlobBuilder : WebKitBlobBuilder;
|
|
1350
|
+
var builder = new Builder();
|
|
1351
|
+
for (var i = 0; i < parts.length; i += 1) {
|
|
1352
|
+
builder.append(parts[i]);
|
|
1353
|
+
}
|
|
1354
|
+
return builder.getBlob(properties.type);
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
/**
|
|
1358
|
+
* Convert a `Blob` to a binary string.
|
|
1359
|
+
*
|
|
1360
|
+
* Example:
|
|
1361
|
+
*
|
|
1362
|
+
* ```js
|
|
1363
|
+
* blobUtil.blobToBinaryString(blob).then(function (binaryString) {
|
|
1364
|
+
* // success
|
|
1365
|
+
* }).catch(function (err) {
|
|
1366
|
+
* // error
|
|
1367
|
+
* });
|
|
1368
|
+
* ```
|
|
1369
|
+
*
|
|
1370
|
+
* @param blob
|
|
1371
|
+
* @returns Promise that resolves with the binary string
|
|
1372
|
+
*/
|
|
1373
|
+
function blobToBinaryString$1(blob) {
|
|
1374
|
+
return new Promise(function (resolve, reject) {
|
|
1375
|
+
var reader = new FileReader();
|
|
1376
|
+
var hasBinaryString = typeof reader.readAsBinaryString === 'function';
|
|
1377
|
+
reader.onloadend = function () {
|
|
1378
|
+
var result = reader.result || '';
|
|
1379
|
+
if (hasBinaryString) {
|
|
1380
|
+
return resolve(result);
|
|
1381
|
+
}
|
|
1382
|
+
resolve(arrayBufferToBinaryString(result));
|
|
1383
|
+
};
|
|
1384
|
+
reader.onerror = reject;
|
|
1385
|
+
if (hasBinaryString) {
|
|
1386
|
+
reader.readAsBinaryString(blob);
|
|
1387
|
+
} else {
|
|
1388
|
+
reader.readAsArrayBuffer(blob);
|
|
1389
|
+
}
|
|
1390
|
+
});
|
|
1391
|
+
}
|
|
1392
|
+
/**
|
|
1393
|
+
* Convert a base64-encoded string to a `Blob`.
|
|
1394
|
+
*
|
|
1395
|
+
* Example:
|
|
1396
|
+
*
|
|
1397
|
+
* ```js
|
|
1398
|
+
* var blob = blobUtil.base64StringToBlob(base64String);
|
|
1399
|
+
* ```
|
|
1400
|
+
* @param base64 - base64-encoded string
|
|
1401
|
+
* @param type - the content type (optional)
|
|
1402
|
+
* @returns Blob
|
|
1403
|
+
*/
|
|
1404
|
+
function base64StringToBlob(base64, type) {
|
|
1405
|
+
var parts = [binaryStringToArrayBuffer(atob(base64))];
|
|
1406
|
+
return type ? createBlob(parts, {
|
|
1407
|
+
type: type
|
|
1408
|
+
}) : createBlob(parts);
|
|
1409
|
+
}
|
|
1410
|
+
/**
|
|
1411
|
+
* Convert a binary string to a `Blob`.
|
|
1412
|
+
*
|
|
1413
|
+
* Example:
|
|
1414
|
+
*
|
|
1415
|
+
* ```js
|
|
1416
|
+
* var blob = blobUtil.binaryStringToBlob(binaryString);
|
|
1417
|
+
* ```
|
|
1418
|
+
*
|
|
1419
|
+
* @param binary - binary string
|
|
1420
|
+
* @param type - the content type (optional)
|
|
1421
|
+
* @returns Blob
|
|
1422
|
+
*/
|
|
1423
|
+
function binaryStringToBlob$1(binary, type) {
|
|
1424
|
+
return base64StringToBlob(btoa(binary), type);
|
|
1425
|
+
}
|
|
1426
|
+
/**
|
|
1427
|
+
* Convert an `ArrayBuffer` to a binary string.
|
|
1428
|
+
*
|
|
1429
|
+
* Example:
|
|
1430
|
+
*
|
|
1431
|
+
* ```js
|
|
1432
|
+
* var myString = blobUtil.arrayBufferToBinaryString(arrayBuff)
|
|
1433
|
+
* ```
|
|
1434
|
+
*
|
|
1435
|
+
* @param buffer - array buffer
|
|
1436
|
+
* @returns binary string
|
|
1437
|
+
*/
|
|
1438
|
+
function arrayBufferToBinaryString(buffer) {
|
|
1439
|
+
var binary = '';
|
|
1440
|
+
var bytes = new Uint8Array(buffer);
|
|
1441
|
+
var length = bytes.byteLength;
|
|
1442
|
+
var i = -1;
|
|
1443
|
+
while (++i < length) {
|
|
1444
|
+
binary += String.fromCharCode(bytes[i]);
|
|
1445
|
+
}
|
|
1446
|
+
return binary;
|
|
1447
|
+
}
|
|
1448
|
+
/**
|
|
1449
|
+
* Convert a binary string to an `ArrayBuffer`.
|
|
1450
|
+
*
|
|
1451
|
+
* ```js
|
|
1452
|
+
* var myBuffer = blobUtil.binaryStringToArrayBuffer(binaryString)
|
|
1453
|
+
* ```
|
|
1454
|
+
*
|
|
1455
|
+
* @param binary - binary string
|
|
1456
|
+
* @returns array buffer
|
|
1457
|
+
*/
|
|
1458
|
+
function binaryStringToArrayBuffer(binary) {
|
|
1459
|
+
var length = binary.length;
|
|
1460
|
+
var buf = new ArrayBuffer(length);
|
|
1461
|
+
var arr = new Uint8Array(buf);
|
|
1462
|
+
var i = -1;
|
|
1463
|
+
while (++i < length) {
|
|
1464
|
+
arr[i] = binary.charCodeAt(i);
|
|
1465
|
+
}
|
|
1466
|
+
return buf;
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
const normalizeBlobError = error => {
|
|
1470
|
+
if (error && error instanceof ProgressEvent && error.target &&
|
|
1471
|
+
// @ts-expect-error - target.error may not be in the type definition
|
|
1472
|
+
error.target.error) {
|
|
1473
|
+
// @ts-expect-error - target.error may not be in the type definition
|
|
1474
|
+
return error.target.error;
|
|
1475
|
+
}
|
|
1476
|
+
return error;
|
|
1477
|
+
};
|
|
1478
|
+
|
|
1479
|
+
const binaryStringToBlob = async (string, type) => {
|
|
1480
|
+
try {
|
|
1481
|
+
return binaryStringToBlob$1(string, type);
|
|
1640
1482
|
} catch (error) {
|
|
1641
|
-
|
|
1483
|
+
const normalizedError = normalizeBlobError(error);
|
|
1484
|
+
throw new VError(normalizedError, 'Failed to convert binary string to blob');
|
|
1485
|
+
}
|
|
1486
|
+
};
|
|
1487
|
+
const blobToBinaryString = async blob => {
|
|
1488
|
+
try {
|
|
1489
|
+
return await blobToBinaryString$1(blob);
|
|
1490
|
+
} catch (error) {
|
|
1491
|
+
const normalizedError = normalizeBlobError(error);
|
|
1492
|
+
throw new VError(normalizedError, 'Failed to convert blob to binary string');
|
|
1642
1493
|
}
|
|
1643
1494
|
};
|
|
1644
1495
|
|
|
1645
|
-
|
|
1646
|
-
const
|
|
1647
|
-
if (!
|
|
1648
|
-
|
|
1496
|
+
const readFile$3 = async uri => {
|
|
1497
|
+
const response = await fetch(uri);
|
|
1498
|
+
if (!response.ok) {
|
|
1499
|
+
throw new Error(response.statusText);
|
|
1649
1500
|
}
|
|
1650
|
-
|
|
1501
|
+
const result = await response.text();
|
|
1502
|
+
return result;
|
|
1651
1503
|
};
|
|
1652
|
-
const
|
|
1653
|
-
const
|
|
1654
|
-
|
|
1504
|
+
const readFileAsBlob$1 = async uri => {
|
|
1505
|
+
const response = await fetch(uri);
|
|
1506
|
+
if (!response.ok) {
|
|
1507
|
+
throw new Error(response.statusText);
|
|
1508
|
+
}
|
|
1509
|
+
const result = await response.blob();
|
|
1510
|
+
return result;
|
|
1511
|
+
};
|
|
1512
|
+
const exists$2 = async uri => {
|
|
1513
|
+
const response = await fetch(uri);
|
|
1514
|
+
if (response.ok) {
|
|
1515
|
+
return true;
|
|
1516
|
+
}
|
|
1517
|
+
return false;
|
|
1518
|
+
};
|
|
1519
|
+
const readJson$3 = async uri => {
|
|
1520
|
+
const response = await fetch(uri);
|
|
1521
|
+
if (!response.ok) {
|
|
1522
|
+
throw new Error(`${response.statusText}`);
|
|
1523
|
+
}
|
|
1524
|
+
const json = await response.json();
|
|
1525
|
+
return json;
|
|
1655
1526
|
};
|
|
1656
1527
|
|
|
1528
|
+
const {
|
|
1529
|
+
invoke: invoke$2,
|
|
1530
|
+
setFactory: setFactory$1
|
|
1531
|
+
} = createLazyRpc(ExtensionHostWorker);
|
|
1532
|
+
|
|
1657
1533
|
const RE_PROTOCOL = /^([a-z-]+):\/\//;
|
|
1658
1534
|
const assertUri = uri => {
|
|
1659
1535
|
const protocolMatch = uri.match(RE_PROTOCOL);
|
|
@@ -1663,34 +1539,34 @@ const assertUri = uri => {
|
|
|
1663
1539
|
};
|
|
1664
1540
|
|
|
1665
1541
|
const {
|
|
1666
|
-
|
|
1667
|
-
rename: rename$2,
|
|
1542
|
+
appendFile: appendFile$1,
|
|
1668
1543
|
copy: copy$1,
|
|
1669
|
-
|
|
1670
|
-
invoke,
|
|
1544
|
+
exists: exists$1,
|
|
1671
1545
|
getFolderSize: getFolderSize$1,
|
|
1672
|
-
writeFile: writeFile$2,
|
|
1673
|
-
stat: stat$1,
|
|
1674
|
-
readJson: readJson$2,
|
|
1675
1546
|
getPathSeparator: getPathSeparator$1,
|
|
1676
1547
|
getRealPath: getRealPath$1,
|
|
1548
|
+
invoke: invoke$1,
|
|
1549
|
+
mkdir: mkdir$1,
|
|
1677
1550
|
readDirWithFileTypes: readDirWithFileTypes$1,
|
|
1678
1551
|
readFile: readFile$2,
|
|
1552
|
+
readJson: readJson$2,
|
|
1679
1553
|
remove: remove$2,
|
|
1680
|
-
|
|
1681
|
-
|
|
1554
|
+
rename: rename$2,
|
|
1555
|
+
set,
|
|
1556
|
+
stat: stat$1,
|
|
1557
|
+
writeFile: writeFile$2
|
|
1682
1558
|
} = FileSystemProcess;
|
|
1683
1559
|
|
|
1684
1560
|
const Http = 'http:';
|
|
1685
1561
|
const Memory = 'memfs:';
|
|
1686
1562
|
const Https = 'https:';
|
|
1687
|
-
const File = 'file:';
|
|
1563
|
+
const File$1 = 'file:';
|
|
1688
1564
|
|
|
1689
1565
|
const watchCallbacks = Object.create(null);
|
|
1690
1566
|
const registerWatchCallback = (id, rpcId, commandId, uri) => {
|
|
1691
1567
|
watchCallbacks[id] = {
|
|
1692
|
-
rpcId,
|
|
1693
1568
|
commandId,
|
|
1569
|
+
rpcId,
|
|
1694
1570
|
uri
|
|
1695
1571
|
};
|
|
1696
1572
|
};
|
|
@@ -1700,8 +1576,8 @@ const executeWatchCallBack = async id => {
|
|
|
1700
1576
|
throw new Error(`watch callback ${id} not found`);
|
|
1701
1577
|
}
|
|
1702
1578
|
const {
|
|
1703
|
-
|
|
1704
|
-
|
|
1579
|
+
commandId,
|
|
1580
|
+
rpcId
|
|
1705
1581
|
} = entry;
|
|
1706
1582
|
const rpc = get(rpcId);
|
|
1707
1583
|
await rpc.invoke(commandId, id);
|
|
@@ -1723,9 +1599,9 @@ const watchFile = async (id, uri, rpcId) => {
|
|
|
1723
1599
|
assertUri(uri);
|
|
1724
1600
|
const commandId = 'Output.executeWatchCallback';
|
|
1725
1601
|
registerWatchCallback(id, rpcId, commandId, uri);
|
|
1726
|
-
if (uri.startsWith(File)) {
|
|
1602
|
+
if (uri.startsWith(File$1)) {
|
|
1727
1603
|
// @ts-ignore
|
|
1728
|
-
await invoke('FileSystem.watchFile', id, uri);
|
|
1604
|
+
await invoke$1('FileSystem.watchFile', id, uri);
|
|
1729
1605
|
}
|
|
1730
1606
|
// memfs file watchers are handled in-memory, no need to register with FileSystemProcess
|
|
1731
1607
|
};
|
|
@@ -1740,7 +1616,7 @@ const unwatchFile = async id => {
|
|
|
1740
1616
|
unregisterWatchCallback(id);
|
|
1741
1617
|
// TODO only if it is a file uri
|
|
1742
1618
|
// @ts-ignore
|
|
1743
|
-
await invoke('FileSystem.unwatchFile', id);
|
|
1619
|
+
await invoke$1('FileSystem.unwatchFile', id);
|
|
1744
1620
|
};
|
|
1745
1621
|
const triggerMemfsFileWatcher = async uri => {
|
|
1746
1622
|
// Find all registered watchers for this URI and trigger them
|
|
@@ -1751,28 +1627,28 @@ const triggerMemfsFileWatcher = async uri => {
|
|
|
1751
1627
|
};
|
|
1752
1628
|
|
|
1753
1629
|
const remove$1 = async dirent => {
|
|
1754
|
-
await invoke$
|
|
1630
|
+
await invoke$2('FileSystemMemory.remove', dirent);
|
|
1755
1631
|
// Trigger file watchers for memfs files
|
|
1756
1632
|
await triggerMemfsFileWatcher(dirent);
|
|
1757
1633
|
};
|
|
1758
1634
|
const readFile$1 = async uri => {
|
|
1759
|
-
return invoke$
|
|
1635
|
+
return invoke$2('FileSystemMemory.readFile', uri);
|
|
1760
1636
|
};
|
|
1761
1637
|
const readJson$1 = async uri => {
|
|
1762
1638
|
throw new Error('not implemented');
|
|
1763
1639
|
};
|
|
1764
1640
|
const createFile$1 = async uri => {
|
|
1765
|
-
await invoke$
|
|
1641
|
+
await invoke$2('FileSystemMemory.createFile', uri);
|
|
1766
1642
|
// Trigger file watchers for memfs files
|
|
1767
1643
|
await triggerMemfsFileWatcher(uri);
|
|
1768
1644
|
};
|
|
1769
1645
|
const writeFile$1 = async (uri, content) => {
|
|
1770
|
-
await invoke$
|
|
1646
|
+
await invoke$2('FileSystemMemory.writeFile', uri, content);
|
|
1771
1647
|
// Trigger file watchers for memfs files
|
|
1772
1648
|
await triggerMemfsFileWatcher(uri);
|
|
1773
1649
|
};
|
|
1774
1650
|
const rename$1 = async (oldUri, newUri) => {
|
|
1775
|
-
await invoke$
|
|
1651
|
+
await invoke$2('FileSystemMemory.rename', oldUri, newUri);
|
|
1776
1652
|
// Trigger file watchers for both old and new URIs
|
|
1777
1653
|
await triggerMemfsFileWatcher(oldUri);
|
|
1778
1654
|
await triggerMemfsFileWatcher(newUri);
|
|
@@ -1786,7 +1662,6 @@ const isMemory = uri => {
|
|
|
1786
1662
|
return uri.startsWith(Memory);
|
|
1787
1663
|
};
|
|
1788
1664
|
|
|
1789
|
-
/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
|
|
1790
1665
|
const remove = async dirent => {
|
|
1791
1666
|
if (isMemory(dirent)) {
|
|
1792
1667
|
return remove$1(dirent);
|
|
@@ -1795,7 +1670,7 @@ const remove = async dirent => {
|
|
|
1795
1670
|
};
|
|
1796
1671
|
const readFile = async uri => {
|
|
1797
1672
|
if (isHttp(uri)) {
|
|
1798
|
-
return readFile$
|
|
1673
|
+
return readFile$3(uri);
|
|
1799
1674
|
}
|
|
1800
1675
|
if (isMemory(uri)) {
|
|
1801
1676
|
return readFile$1(uri);
|
|
@@ -1813,7 +1688,7 @@ const getPathSeparator = async root => {
|
|
|
1813
1688
|
};
|
|
1814
1689
|
const readJson = async uri => {
|
|
1815
1690
|
if (isHttp(uri)) {
|
|
1816
|
-
return readJson$
|
|
1691
|
+
return readJson$3(uri);
|
|
1817
1692
|
}
|
|
1818
1693
|
if (isMemory(uri)) {
|
|
1819
1694
|
return readJson$1();
|
|
@@ -1844,7 +1719,7 @@ const stat = async dirent => {
|
|
|
1844
1719
|
};
|
|
1845
1720
|
const exists = async uri => {
|
|
1846
1721
|
if (isHttp(uri)) {
|
|
1847
|
-
return exists$
|
|
1722
|
+
return exists$2(uri);
|
|
1848
1723
|
}
|
|
1849
1724
|
return exists$1(uri);
|
|
1850
1725
|
};
|
|
@@ -1871,7 +1746,7 @@ const getBytes = async blob => {
|
|
|
1871
1746
|
const writeBlob = async (uri, blob) => {
|
|
1872
1747
|
const bytes = await getBytes(blob);
|
|
1873
1748
|
// @ts-ignore
|
|
1874
|
-
await invoke('FileSystem.writeBuffer', uri, bytes);
|
|
1749
|
+
await invoke$1('FileSystem.writeBuffer', uri, bytes);
|
|
1875
1750
|
};
|
|
1876
1751
|
const mkdir = async uri => {
|
|
1877
1752
|
return mkdir$1(uri);
|
|
@@ -1895,7 +1770,7 @@ const handleMessagePort = async (port, rpcId) => {
|
|
|
1895
1770
|
messagePort: port
|
|
1896
1771
|
});
|
|
1897
1772
|
if (rpcId) {
|
|
1898
|
-
set$
|
|
1773
|
+
set$3(rpcId, rpc);
|
|
1899
1774
|
}
|
|
1900
1775
|
};
|
|
1901
1776
|
|
|
@@ -1906,14 +1781,9 @@ const sendMessagePortToFileSystemProcess = async port => {
|
|
|
1906
1781
|
|
|
1907
1782
|
const createFileSystemProcessRpcElectron = async () => {
|
|
1908
1783
|
try {
|
|
1909
|
-
const {
|
|
1910
|
-
port1,
|
|
1911
|
-
port2
|
|
1912
|
-
} = getPortTuple();
|
|
1913
|
-
await sendMessagePortToFileSystemProcess(port2);
|
|
1914
|
-
const rpc = await PlainMessagePortRpcParent.create({
|
|
1784
|
+
const rpc = await TransferMessagePortRpcParent.create({
|
|
1915
1785
|
commandMap: {},
|
|
1916
|
-
|
|
1786
|
+
send: sendMessagePortToFileSystemProcess
|
|
1917
1787
|
});
|
|
1918
1788
|
return rpc;
|
|
1919
1789
|
} catch (error) {
|
|
@@ -1926,8 +1796,8 @@ const commandMapRef = {};
|
|
|
1926
1796
|
const createFileSystemProcessRpcNode = async () => {
|
|
1927
1797
|
try {
|
|
1928
1798
|
const rpc = await WebSocketRpcParent2.create({
|
|
1929
|
-
|
|
1930
|
-
|
|
1799
|
+
commandMap: commandMapRef,
|
|
1800
|
+
type: 'file-system-process'
|
|
1931
1801
|
});
|
|
1932
1802
|
return rpc;
|
|
1933
1803
|
} catch (error) {
|
|
@@ -1967,7 +1837,107 @@ const initialize = async platform => {
|
|
|
1967
1837
|
await initializeFileSytemProcess(platform);
|
|
1968
1838
|
};
|
|
1969
1839
|
|
|
1840
|
+
const Directory = 'directory';
|
|
1841
|
+
const File = 'file';
|
|
1842
|
+
|
|
1843
|
+
const {
|
|
1844
|
+
invoke,
|
|
1845
|
+
setFactory
|
|
1846
|
+
} = createLazyRpc(RendererProcess);
|
|
1847
|
+
|
|
1848
|
+
/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types */
|
|
1849
|
+
|
|
1850
|
+
const fromAsync = async asyncIterable => {
|
|
1851
|
+
const children = [];
|
|
1852
|
+
for await (const value of asyncIterable) {
|
|
1853
|
+
children.push(value);
|
|
1854
|
+
}
|
|
1855
|
+
return children;
|
|
1856
|
+
};
|
|
1857
|
+
|
|
1858
|
+
/**
|
|
1859
|
+
* Do not use directly, use FileSystemHtml.getChildHandles
|
|
1860
|
+
* instead which prompts for the required permission to
|
|
1861
|
+
* retrieve the child handles
|
|
1862
|
+
*/
|
|
1863
|
+
const getChildHandles = async handle => {
|
|
1864
|
+
object(handle);
|
|
1865
|
+
|
|
1866
|
+
// @ts-ignore - values() exists on FileSystemDirectoryHandle but TypeScript types may not include it
|
|
1867
|
+
const handles = await fromAsync(handle.values());
|
|
1868
|
+
return handles;
|
|
1869
|
+
};
|
|
1870
|
+
|
|
1871
|
+
const uploadDirectory = async (fileSystemHandle, pathSeparator, root, uploadHandles) => {
|
|
1872
|
+
const folderPath = root + pathSeparator + fileSystemHandle.name;
|
|
1873
|
+
await mkdir(folderPath);
|
|
1874
|
+
const childHandles = await getChildHandles(fileSystemHandle);
|
|
1875
|
+
await uploadHandles(childHandles, pathSeparator, folderPath);
|
|
1876
|
+
};
|
|
1877
|
+
|
|
1878
|
+
const getBinaryString$1 = file => {
|
|
1879
|
+
return blobToBinaryString(file);
|
|
1880
|
+
};
|
|
1881
|
+
|
|
1882
|
+
const getFile = handle => {
|
|
1883
|
+
return handle.getFile();
|
|
1884
|
+
};
|
|
1885
|
+
const getBinaryString = async handle => {
|
|
1886
|
+
const file = await getFile(handle);
|
|
1887
|
+
const text = await getBinaryString$1(file);
|
|
1888
|
+
return text;
|
|
1889
|
+
};
|
|
1890
|
+
|
|
1891
|
+
const join = (pathSeparator, ...parts) => {
|
|
1892
|
+
return parts.join(pathSeparator);
|
|
1893
|
+
};
|
|
1894
|
+
|
|
1895
|
+
const uploadFile = async (fileSystemHandle, pathSeparator, root) => {
|
|
1896
|
+
const content = await getBinaryString(fileSystemHandle);
|
|
1897
|
+
const to = join(pathSeparator, root, fileSystemHandle.name);
|
|
1898
|
+
await writeFile(to, content);
|
|
1899
|
+
};
|
|
1900
|
+
|
|
1901
|
+
const uploadHandle = async (fileSystemHandle, pathSeparator, root, uploadHandles) => {
|
|
1902
|
+
const {
|
|
1903
|
+
kind
|
|
1904
|
+
} = fileSystemHandle;
|
|
1905
|
+
switch (kind) {
|
|
1906
|
+
case Directory:
|
|
1907
|
+
return uploadDirectory(fileSystemHandle, pathSeparator, root, uploadHandles);
|
|
1908
|
+
case File:
|
|
1909
|
+
return uploadFile(fileSystemHandle, pathSeparator, root);
|
|
1910
|
+
default:
|
|
1911
|
+
throw new Error(`unsupported file system handle type ${kind}`);
|
|
1912
|
+
}
|
|
1913
|
+
};
|
|
1914
|
+
|
|
1915
|
+
const uploadHandles = async (fileSystemHandles, pathSeparator, root) => {
|
|
1916
|
+
for (const fileSystemHandle of fileSystemHandles) {
|
|
1917
|
+
await uploadHandle(fileSystemHandle, pathSeparator, root, uploadHandles);
|
|
1918
|
+
}
|
|
1919
|
+
};
|
|
1920
|
+
const uploadFileSystemHandles = async (root, pathSeparator, fileSystemHandles) => {
|
|
1921
|
+
if (fileSystemHandles.length === 1) {
|
|
1922
|
+
const file = fileSystemHandles[0];
|
|
1923
|
+
const {
|
|
1924
|
+
kind,
|
|
1925
|
+
name
|
|
1926
|
+
} = file;
|
|
1927
|
+
if (kind === Directory) {
|
|
1928
|
+
await invoke('PersistentFileHandle.addHandle', `/${name}`, file);
|
|
1929
|
+
await invoke('Workspace.setPath', `html:///${name}`);
|
|
1930
|
+
return true;
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
await uploadHandles(fileSystemHandles, pathSeparator, root);
|
|
1934
|
+
return false;
|
|
1935
|
+
};
|
|
1936
|
+
|
|
1970
1937
|
const commandMap = {
|
|
1938
|
+
'Blob.base64StringToBlob': base64StringToBlob,
|
|
1939
|
+
'Blob.binaryStringToBlob': binaryStringToBlob,
|
|
1940
|
+
'Blob.blobToBinaryString': blobToBinaryString,
|
|
1971
1941
|
'FileSystem.appendFile': appendFile,
|
|
1972
1942
|
'FileSystem.copy': copy,
|
|
1973
1943
|
'FileSystem.createFile': createFile,
|
|
@@ -1986,14 +1956,41 @@ const commandMap = {
|
|
|
1986
1956
|
'FileSystem.rename': rename,
|
|
1987
1957
|
'FileSystem.stat': stat,
|
|
1988
1958
|
'FileSystem.unwatchFile': unwatchFile,
|
|
1959
|
+
'FileSystem.uploadFileSystemHandles': uploadFileSystemHandles,
|
|
1989
1960
|
'FileSystem.watchFile': watchFile,
|
|
1990
|
-
'FileSystem.writeFile': writeFile,
|
|
1991
1961
|
'FileSystem.writeBlob': writeBlob,
|
|
1962
|
+
'FileSystem.writeFile': writeFile,
|
|
1992
1963
|
'Initialize.initialize': initialize
|
|
1993
1964
|
};
|
|
1994
1965
|
|
|
1966
|
+
const createExtensionHostRpc = async () => {
|
|
1967
|
+
try {
|
|
1968
|
+
const rpc = await TransferMessagePortRpcParent.create({
|
|
1969
|
+
commandMap: {},
|
|
1970
|
+
send: sendMessagePortToExtensionHostWorker
|
|
1971
|
+
});
|
|
1972
|
+
return rpc;
|
|
1973
|
+
} catch (error) {
|
|
1974
|
+
throw new VError(error, `Failed to create extension host rpc`);
|
|
1975
|
+
}
|
|
1976
|
+
};
|
|
1977
|
+
|
|
1978
|
+
const createRendererProcessRpc = async () => {
|
|
1979
|
+
try {
|
|
1980
|
+
const rpc = await TransferMessagePortRpcParent.create({
|
|
1981
|
+
commandMap: {},
|
|
1982
|
+
send: sendMessagePortToRendererProcess
|
|
1983
|
+
});
|
|
1984
|
+
return rpc;
|
|
1985
|
+
} catch (error) {
|
|
1986
|
+
throw new VError(error, `Failed to create renderer process rpc`);
|
|
1987
|
+
}
|
|
1988
|
+
};
|
|
1989
|
+
|
|
1995
1990
|
const listen = async () => {
|
|
1996
1991
|
Object.assign(commandMapRef, commandMap);
|
|
1992
|
+
setFactory$1(createExtensionHostRpc);
|
|
1993
|
+
setFactory(createRendererProcessRpc);
|
|
1997
1994
|
const rpc = await WebWorkerRpcClient.create({
|
|
1998
1995
|
commandMap: commandMap
|
|
1999
1996
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/file-system-worker",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.1.0",
|
|
4
4
|
"description": "File System Worker",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Lvce Editor"
|
|
@@ -12,5 +12,8 @@
|
|
|
12
12
|
"license": "MIT",
|
|
13
13
|
"author": "Lvce Editor",
|
|
14
14
|
"type": "module",
|
|
15
|
-
"main": "dist/fileSystemWorkerMain.js"
|
|
15
|
+
"main": "dist/fileSystemWorkerMain.js",
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"blob-util": "^2.0.2"
|
|
18
|
+
}
|
|
16
19
|
}
|