@lvce-editor/ipc 10.0.1 → 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 +37 -15
- package/package.json +2 -2
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
|
@@ -524,15 +524,6 @@ const getTransferrablesNode = value => {
|
|
|
524
524
|
return transferrables[0];
|
|
525
525
|
};
|
|
526
526
|
|
|
527
|
-
const listen$4 = async () => {
|
|
528
|
-
if (!process.send) {
|
|
529
|
-
throw new Error('process.send must be defined');
|
|
530
|
-
}
|
|
531
|
-
return process;
|
|
532
|
-
};
|
|
533
|
-
const signal$3 = process => {
|
|
534
|
-
process.send(readyMessage);
|
|
535
|
-
};
|
|
536
527
|
const getActualData = (message, handle) => {
|
|
537
528
|
if (handle) {
|
|
538
529
|
return {
|
|
@@ -542,6 +533,16 @@ const getActualData = (message, handle) => {
|
|
|
542
533
|
}
|
|
543
534
|
return message;
|
|
544
535
|
};
|
|
536
|
+
|
|
537
|
+
const listen$4 = async () => {
|
|
538
|
+
if (!process.send) {
|
|
539
|
+
throw new Error('process.send must be defined');
|
|
540
|
+
}
|
|
541
|
+
return process;
|
|
542
|
+
};
|
|
543
|
+
const signal$3 = process => {
|
|
544
|
+
process.send(readyMessage);
|
|
545
|
+
};
|
|
545
546
|
class IpcChildWithNodeForkedProcess extends Ipc {
|
|
546
547
|
constructor(process) {
|
|
547
548
|
super(process);
|
|
@@ -639,9 +640,9 @@ const wrap$5 = parentPort => {
|
|
|
639
640
|
return {
|
|
640
641
|
parentPort,
|
|
641
642
|
on(event, listener) {
|
|
642
|
-
const wrappedListener = message => {
|
|
643
|
+
const wrappedListener = (message, handle) => {
|
|
643
644
|
const event = {
|
|
644
|
-
data: message,
|
|
645
|
+
data: getActualData(message, handle),
|
|
645
646
|
target: this
|
|
646
647
|
};
|
|
647
648
|
listener(event);
|
|
@@ -1062,6 +1063,21 @@ class ChildProcessError extends Error {
|
|
|
1062
1063
|
}
|
|
1063
1064
|
}
|
|
1064
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
|
+
|
|
1065
1081
|
// @ts-ignore
|
|
1066
1082
|
const getFirstNodeChildProcessEvent = async childProcess => {
|
|
1067
1083
|
// @ts-ignore
|
|
@@ -1187,8 +1203,11 @@ class IpcParentWithNodeForkedProcess extends Ipc {
|
|
|
1187
1203
|
this._rawIpc.send(message);
|
|
1188
1204
|
}
|
|
1189
1205
|
sendAndTransfer(message) {
|
|
1190
|
-
const
|
|
1191
|
-
|
|
1206
|
+
const {
|
|
1207
|
+
newValue,
|
|
1208
|
+
transfer
|
|
1209
|
+
} = fixNodeParameters(message);
|
|
1210
|
+
this._rawIpc.send(newValue, transfer);
|
|
1192
1211
|
}
|
|
1193
1212
|
dispose() {
|
|
1194
1213
|
this._rawIpc.kill();
|
|
@@ -1278,8 +1297,11 @@ const wrap = worker => {
|
|
|
1278
1297
|
},
|
|
1279
1298
|
// @ts-ignore
|
|
1280
1299
|
sendAndTransfer(message) {
|
|
1281
|
-
const
|
|
1282
|
-
|
|
1300
|
+
const {
|
|
1301
|
+
newValue,
|
|
1302
|
+
transfer
|
|
1303
|
+
} = fixNodeParameters(message);
|
|
1304
|
+
this.worker.postMessage(newValue, transfer);
|
|
1283
1305
|
},
|
|
1284
1306
|
dispose() {
|
|
1285
1307
|
this.worker.terminate();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lvce-editor/ipc",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.3",
|
|
4
4
|
"description": "Inter Process Communication for Lvce Editor",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@lvce-editor/assert": "^1.2.0",
|
|
18
18
|
"@lvce-editor/verror": "^1.4.0",
|
|
19
|
-
"@lvce-editor/web-socket-server": "^1.
|
|
19
|
+
"@lvce-editor/web-socket-server": "^1.3.0"
|
|
20
20
|
},
|
|
21
21
|
"engines": {
|
|
22
22
|
"node": ">=18"
|