@lvce-editor/extension-management-worker 1.0.0 → 1.2.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.
|
@@ -368,6 +368,100 @@ const IpcChildWithModuleWorkerAndMessagePort$1 = {
|
|
|
368
368
|
listen: listen$6,
|
|
369
369
|
wrap: wrap$e
|
|
370
370
|
};
|
|
371
|
+
const addListener = (emitter, type, callback) => {
|
|
372
|
+
if ('addEventListener' in emitter) {
|
|
373
|
+
emitter.addEventListener(type, callback);
|
|
374
|
+
} else {
|
|
375
|
+
emitter.on(type, callback);
|
|
376
|
+
}
|
|
377
|
+
};
|
|
378
|
+
const removeListener = (emitter, type, callback) => {
|
|
379
|
+
if ('removeEventListener' in emitter) {
|
|
380
|
+
emitter.removeEventListener(type, callback);
|
|
381
|
+
} else {
|
|
382
|
+
emitter.off(type, callback);
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
const getFirstEvent = (eventEmitter, eventMap) => {
|
|
386
|
+
const {
|
|
387
|
+
resolve,
|
|
388
|
+
promise
|
|
389
|
+
} = Promise.withResolvers();
|
|
390
|
+
const listenerMap = Object.create(null);
|
|
391
|
+
const cleanup = value => {
|
|
392
|
+
for (const event of Object.keys(eventMap)) {
|
|
393
|
+
removeListener(eventEmitter, event, listenerMap[event]);
|
|
394
|
+
}
|
|
395
|
+
resolve(value);
|
|
396
|
+
};
|
|
397
|
+
for (const [event, type] of Object.entries(eventMap)) {
|
|
398
|
+
const listener = event => {
|
|
399
|
+
cleanup({
|
|
400
|
+
type,
|
|
401
|
+
event
|
|
402
|
+
});
|
|
403
|
+
};
|
|
404
|
+
addListener(eventEmitter, event, listener);
|
|
405
|
+
listenerMap[event] = listener;
|
|
406
|
+
}
|
|
407
|
+
return promise;
|
|
408
|
+
};
|
|
409
|
+
const Message$1 = 3;
|
|
410
|
+
const create$5$1 = async ({
|
|
411
|
+
messagePort,
|
|
412
|
+
isMessagePortOpen
|
|
413
|
+
}) => {
|
|
414
|
+
if (!isMessagePort(messagePort)) {
|
|
415
|
+
throw new IpcError('port must be of type MessagePort');
|
|
416
|
+
}
|
|
417
|
+
if (isMessagePortOpen) {
|
|
418
|
+
return messagePort;
|
|
419
|
+
}
|
|
420
|
+
const eventPromise = getFirstEvent(messagePort, {
|
|
421
|
+
message: Message$1
|
|
422
|
+
});
|
|
423
|
+
messagePort.start();
|
|
424
|
+
const {
|
|
425
|
+
type,
|
|
426
|
+
event
|
|
427
|
+
} = await eventPromise;
|
|
428
|
+
if (type !== Message$1) {
|
|
429
|
+
throw new IpcError('Failed to wait for ipc message');
|
|
430
|
+
}
|
|
431
|
+
if (event.data !== readyMessage) {
|
|
432
|
+
throw new IpcError('unexpected first message');
|
|
433
|
+
}
|
|
434
|
+
return messagePort;
|
|
435
|
+
};
|
|
436
|
+
const signal$1 = messagePort => {
|
|
437
|
+
messagePort.start();
|
|
438
|
+
};
|
|
439
|
+
class IpcParentWithMessagePort extends Ipc {
|
|
440
|
+
getData = getData$2;
|
|
441
|
+
send(message) {
|
|
442
|
+
this._rawIpc.postMessage(message);
|
|
443
|
+
}
|
|
444
|
+
sendAndTransfer(message) {
|
|
445
|
+
const transfer = getTransferrables(message);
|
|
446
|
+
this._rawIpc.postMessage(message, transfer);
|
|
447
|
+
}
|
|
448
|
+
dispose() {
|
|
449
|
+
this._rawIpc.close();
|
|
450
|
+
}
|
|
451
|
+
onMessage(callback) {
|
|
452
|
+
this._rawIpc.addEventListener('message', callback);
|
|
453
|
+
}
|
|
454
|
+
onClose(callback) {}
|
|
455
|
+
}
|
|
456
|
+
const wrap$5 = messagePort => {
|
|
457
|
+
return new IpcParentWithMessagePort(messagePort);
|
|
458
|
+
};
|
|
459
|
+
const IpcParentWithMessagePort$1 = {
|
|
460
|
+
__proto__: null,
|
|
461
|
+
create: create$5$1,
|
|
462
|
+
signal: signal$1,
|
|
463
|
+
wrap: wrap$5
|
|
464
|
+
};
|
|
371
465
|
|
|
372
466
|
const Two = '2.0';
|
|
373
467
|
const create$4 = (method, params) => {
|
|
@@ -625,7 +719,7 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
|
|
|
625
719
|
const errorProperty = getErrorProperty(error, prettyError);
|
|
626
720
|
return create$1$1(id, errorProperty);
|
|
627
721
|
};
|
|
628
|
-
const create$
|
|
722
|
+
const create$6 = (message, result) => {
|
|
629
723
|
return {
|
|
630
724
|
jsonrpc: Two,
|
|
631
725
|
id: message.id,
|
|
@@ -634,7 +728,7 @@ const create$5 = (message, result) => {
|
|
|
634
728
|
};
|
|
635
729
|
const getSuccessResponse = (message, result) => {
|
|
636
730
|
const resultProperty = result ?? null;
|
|
637
|
-
return create$
|
|
731
|
+
return create$6(message, resultProperty);
|
|
638
732
|
};
|
|
639
733
|
const getErrorResponseSimple = (id, error) => {
|
|
640
734
|
return {
|
|
@@ -742,7 +836,7 @@ const send = (transport, method, ...params) => {
|
|
|
742
836
|
const message = create$4(method, params);
|
|
743
837
|
transport.send(message);
|
|
744
838
|
};
|
|
745
|
-
const invoke = (ipc, method, ...params) => {
|
|
839
|
+
const invoke$1 = (ipc, method, ...params) => {
|
|
746
840
|
return invokeHelper(ipc, method, params, false);
|
|
747
841
|
};
|
|
748
842
|
const invokeAndTransfer = (ipc, method, ...params) => {
|
|
@@ -781,7 +875,7 @@ const createRpc = ipc => {
|
|
|
781
875
|
send(ipc, method, ...params);
|
|
782
876
|
},
|
|
783
877
|
invoke(method, ...params) {
|
|
784
|
-
return invoke(ipc, method, ...params);
|
|
878
|
+
return invoke$1(ipc, method, ...params);
|
|
785
879
|
},
|
|
786
880
|
invokeAndTransfer(method, ...params) {
|
|
787
881
|
return invokeAndTransfer(ipc, method, ...params);
|
|
@@ -822,6 +916,26 @@ const listen$1 = async (module, options) => {
|
|
|
822
916
|
const ipc = module.wrap(rawIpc);
|
|
823
917
|
return ipc;
|
|
824
918
|
};
|
|
919
|
+
const create$5 = async ({
|
|
920
|
+
commandMap,
|
|
921
|
+
messagePort
|
|
922
|
+
}) => {
|
|
923
|
+
// TODO create a commandMap per rpc instance
|
|
924
|
+
register(commandMap);
|
|
925
|
+
const rawIpc = await IpcParentWithMessagePort$1.create({
|
|
926
|
+
messagePort,
|
|
927
|
+
isMessagePortOpen: true
|
|
928
|
+
});
|
|
929
|
+
const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
|
|
930
|
+
handleIpc(ipc);
|
|
931
|
+
const rpc = createRpc(ipc);
|
|
932
|
+
messagePort.start();
|
|
933
|
+
return rpc;
|
|
934
|
+
};
|
|
935
|
+
const PlainMessagePortRpc = {
|
|
936
|
+
__proto__: null,
|
|
937
|
+
create: create$5
|
|
938
|
+
};
|
|
825
939
|
const create$1 = async ({
|
|
826
940
|
commandMap
|
|
827
941
|
}) => {
|
|
@@ -872,7 +986,12 @@ const create = rpcId => {
|
|
|
872
986
|
};
|
|
873
987
|
|
|
874
988
|
const {
|
|
989
|
+
invoke,
|
|
875
990
|
set} = create(RendererWorker);
|
|
991
|
+
const getExtension$1 = async id => {
|
|
992
|
+
// @ts-ignore
|
|
993
|
+
return invoke('ExtensionManagement.getExtension', id);
|
|
994
|
+
};
|
|
876
995
|
|
|
877
996
|
const disableExtension = async () => {
|
|
878
997
|
// TODO
|
|
@@ -882,6 +1001,21 @@ const enableExtension = async () => {
|
|
|
882
1001
|
// TODO
|
|
883
1002
|
};
|
|
884
1003
|
|
|
1004
|
+
const getExtension = async id => {
|
|
1005
|
+
// TODO
|
|
1006
|
+
const extension = await getExtension$1(id);
|
|
1007
|
+
return extension;
|
|
1008
|
+
};
|
|
1009
|
+
|
|
1010
|
+
const commandMapRef = {};
|
|
1011
|
+
|
|
1012
|
+
const handleMessagePort = async port => {
|
|
1013
|
+
await PlainMessagePortRpc.create({
|
|
1014
|
+
commandMap: commandMapRef,
|
|
1015
|
+
messagePort: port
|
|
1016
|
+
});
|
|
1017
|
+
};
|
|
1018
|
+
|
|
885
1019
|
const installExtension = async () => {
|
|
886
1020
|
// TODO
|
|
887
1021
|
};
|
|
@@ -893,11 +1027,14 @@ const uninstallExtension = async () => {
|
|
|
893
1027
|
const commandMap = {
|
|
894
1028
|
'Extensions.disable': disableExtension,
|
|
895
1029
|
'Extensions.enable': enableExtension,
|
|
1030
|
+
'Extensions.getExtension': getExtension,
|
|
1031
|
+
'Extensions.handleMessagePort': handleMessagePort,
|
|
896
1032
|
'Extensions.install': installExtension,
|
|
897
1033
|
'Extensions.uninstall': uninstallExtension
|
|
898
1034
|
};
|
|
899
1035
|
|
|
900
1036
|
const listen = async () => {
|
|
1037
|
+
Object.assign(commandMapRef, commandMap);
|
|
901
1038
|
const rpc = await WebWorkerRpcClient.create({
|
|
902
1039
|
commandMap: commandMap
|
|
903
1040
|
});
|