@lvce-editor/ipc 10.0.2 → 10.0.3
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/electron.js +50 -12
- package/dist/index.js +41 -10
- package/package.json +1 -1
package/dist/electron.js
CHANGED
|
@@ -496,6 +496,46 @@ class ChildProcessError extends Error {
|
|
|
496
496
|
}
|
|
497
497
|
}
|
|
498
498
|
|
|
499
|
+
const removeValues = (value, toRemove) => {
|
|
500
|
+
if (!value) {
|
|
501
|
+
return value;
|
|
502
|
+
}
|
|
503
|
+
if (Array.isArray(value)) {
|
|
504
|
+
const newItems = [];
|
|
505
|
+
for (const item of value) {
|
|
506
|
+
if (!toRemove.includes(item)) {
|
|
507
|
+
newItems.push(removeValues(item, toRemove));
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
return newItems;
|
|
511
|
+
}
|
|
512
|
+
if (typeof value === 'object') {
|
|
513
|
+
const newObject = Object.create(null);
|
|
514
|
+
for (const [key, property] of Object.entries(value)) {
|
|
515
|
+
if (!toRemove.includes(property)) {
|
|
516
|
+
newObject[key] = removeValues(property, toRemove);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
return newObject;
|
|
520
|
+
}
|
|
521
|
+
return value;
|
|
522
|
+
};
|
|
523
|
+
|
|
524
|
+
// workaround for node not supporting transferrable objects
|
|
525
|
+
// as parameters. If the transferrable object is a parameter,
|
|
526
|
+
// it is received as a plain object is received in the receiving process
|
|
527
|
+
const fixNodeParameters = value => {
|
|
528
|
+
const transfer = getTransferrables(value);
|
|
529
|
+
if (transfer.length === 0) {
|
|
530
|
+
throw new Error('no transferrables found');
|
|
531
|
+
}
|
|
532
|
+
const newValue = removeValues(value, transfer);
|
|
533
|
+
return {
|
|
534
|
+
newValue,
|
|
535
|
+
transfer: transfer[0]
|
|
536
|
+
};
|
|
537
|
+
};
|
|
538
|
+
|
|
499
539
|
// @ts-ignore
|
|
500
540
|
const getFirstNodeChildProcessEvent = async childProcess => {
|
|
501
541
|
// @ts-ignore
|
|
@@ -569,14 +609,6 @@ const getFirstNodeChildProcessEvent = async childProcess => {
|
|
|
569
609
|
};
|
|
570
610
|
};
|
|
571
611
|
|
|
572
|
-
const getTransferrablesNode = value => {
|
|
573
|
-
const transferrables = getTransferrables(value);
|
|
574
|
-
if (transferrables.length === 0) {
|
|
575
|
-
throw new Error(`no transferrables found`);
|
|
576
|
-
}
|
|
577
|
-
return transferrables[0];
|
|
578
|
-
};
|
|
579
|
-
|
|
580
612
|
// @ts-ignore
|
|
581
613
|
const create$1 = async ({
|
|
582
614
|
path,
|
|
@@ -629,8 +661,11 @@ class IpcParentWithNodeForkedProcess extends Ipc {
|
|
|
629
661
|
this._rawIpc.send(message);
|
|
630
662
|
}
|
|
631
663
|
sendAndTransfer(message) {
|
|
632
|
-
const
|
|
633
|
-
|
|
664
|
+
const {
|
|
665
|
+
newValue,
|
|
666
|
+
transfer
|
|
667
|
+
} = fixNodeParameters(message);
|
|
668
|
+
this._rawIpc.send(newValue, transfer);
|
|
634
669
|
}
|
|
635
670
|
dispose() {
|
|
636
671
|
this._rawIpc.kill();
|
|
@@ -761,8 +796,11 @@ const wrap = worker => {
|
|
|
761
796
|
},
|
|
762
797
|
// @ts-ignore
|
|
763
798
|
sendAndTransfer(message) {
|
|
764
|
-
const
|
|
765
|
-
|
|
799
|
+
const {
|
|
800
|
+
newValue,
|
|
801
|
+
transfer
|
|
802
|
+
} = fixNodeParameters(message);
|
|
803
|
+
this.worker.postMessage(newValue, transfer);
|
|
766
804
|
},
|
|
767
805
|
dispose() {
|
|
768
806
|
this.worker.terminate();
|
package/dist/index.js
CHANGED
|
@@ -275,7 +275,7 @@ const listen$8 = ({
|
|
|
275
275
|
const signal$6 = messagePort => {
|
|
276
276
|
messagePort.start();
|
|
277
277
|
};
|
|
278
|
-
const getActualData = event => {
|
|
278
|
+
const getActualData$1 = event => {
|
|
279
279
|
const {
|
|
280
280
|
data,
|
|
281
281
|
ports
|
|
@@ -293,7 +293,7 @@ class IpcChildWithElectronMessagePort extends Ipc {
|
|
|
293
293
|
super(port);
|
|
294
294
|
}
|
|
295
295
|
getData(event) {
|
|
296
|
-
return getActualData(event);
|
|
296
|
+
return getActualData$1(event);
|
|
297
297
|
}
|
|
298
298
|
send(message) {
|
|
299
299
|
this._rawIpc.postMessage(message);
|
|
@@ -524,6 +524,16 @@ const getTransferrablesNode = value => {
|
|
|
524
524
|
return transferrables[0];
|
|
525
525
|
};
|
|
526
526
|
|
|
527
|
+
const getActualData = (message, handle) => {
|
|
528
|
+
if (handle) {
|
|
529
|
+
return {
|
|
530
|
+
...message,
|
|
531
|
+
params: [handle, ...message.params]
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
return message;
|
|
535
|
+
};
|
|
536
|
+
|
|
527
537
|
const listen$4 = async () => {
|
|
528
538
|
if (!process.send) {
|
|
529
539
|
throw new Error('process.send must be defined');
|
|
@@ -537,8 +547,8 @@ class IpcChildWithNodeForkedProcess extends Ipc {
|
|
|
537
547
|
constructor(process) {
|
|
538
548
|
super(process);
|
|
539
549
|
}
|
|
540
|
-
getData(message) {
|
|
541
|
-
return message;
|
|
550
|
+
getData(message, handle) {
|
|
551
|
+
return getActualData(message, handle);
|
|
542
552
|
}
|
|
543
553
|
onClose(callback) {
|
|
544
554
|
this._rawIpc.on('close', callback);
|
|
@@ -630,9 +640,9 @@ const wrap$5 = parentPort => {
|
|
|
630
640
|
return {
|
|
631
641
|
parentPort,
|
|
632
642
|
on(event, listener) {
|
|
633
|
-
const wrappedListener = message => {
|
|
643
|
+
const wrappedListener = (message, handle) => {
|
|
634
644
|
const event = {
|
|
635
|
-
data: message,
|
|
645
|
+
data: getActualData(message, handle),
|
|
636
646
|
target: this
|
|
637
647
|
};
|
|
638
648
|
listener(event);
|
|
@@ -1053,6 +1063,21 @@ class ChildProcessError extends Error {
|
|
|
1053
1063
|
}
|
|
1054
1064
|
}
|
|
1055
1065
|
|
|
1066
|
+
// workaround for node not supporting transferrable objects
|
|
1067
|
+
// as parameters. If the transferrable object is a parameter,
|
|
1068
|
+
// it is received as a plain object is received in the receiving process
|
|
1069
|
+
const fixNodeParameters = value => {
|
|
1070
|
+
const transfer = getTransferrables(value);
|
|
1071
|
+
if (transfer.length === 0) {
|
|
1072
|
+
throw new Error('no transferrables found');
|
|
1073
|
+
}
|
|
1074
|
+
const newValue = removeValues(value, transfer);
|
|
1075
|
+
return {
|
|
1076
|
+
newValue,
|
|
1077
|
+
transfer: transfer[0]
|
|
1078
|
+
};
|
|
1079
|
+
};
|
|
1080
|
+
|
|
1056
1081
|
// @ts-ignore
|
|
1057
1082
|
const getFirstNodeChildProcessEvent = async childProcess => {
|
|
1058
1083
|
// @ts-ignore
|
|
@@ -1178,8 +1203,11 @@ class IpcParentWithNodeForkedProcess extends Ipc {
|
|
|
1178
1203
|
this._rawIpc.send(message);
|
|
1179
1204
|
}
|
|
1180
1205
|
sendAndTransfer(message) {
|
|
1181
|
-
const
|
|
1182
|
-
|
|
1206
|
+
const {
|
|
1207
|
+
newValue,
|
|
1208
|
+
transfer
|
|
1209
|
+
} = fixNodeParameters(message);
|
|
1210
|
+
this._rawIpc.send(newValue, transfer);
|
|
1183
1211
|
}
|
|
1184
1212
|
dispose() {
|
|
1185
1213
|
this._rawIpc.kill();
|
|
@@ -1269,8 +1297,11 @@ const wrap = worker => {
|
|
|
1269
1297
|
},
|
|
1270
1298
|
// @ts-ignore
|
|
1271
1299
|
sendAndTransfer(message) {
|
|
1272
|
-
const
|
|
1273
|
-
|
|
1300
|
+
const {
|
|
1301
|
+
newValue,
|
|
1302
|
+
transfer
|
|
1303
|
+
} = fixNodeParameters(message);
|
|
1304
|
+
this.worker.postMessage(newValue, transfer);
|
|
1274
1305
|
},
|
|
1275
1306
|
dispose() {
|
|
1276
1307
|
this.worker.terminate();
|