@lvce-editor/ipc 11.2.0 → 11.4.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 (2) hide show
  1. package/dist/browser.js +56 -41
  2. package/package.json +1 -1
package/dist/browser.js CHANGED
@@ -593,12 +593,66 @@ const IpcChildWithWindow$1 = {
593
593
  wrap: wrap$3
594
594
  };
595
595
 
596
- const create$2 = ({
597
- messagePort
596
+ const Message$1 = 3;
597
+
598
+ const addListener = (emitter, type, callback) => {
599
+ if ('addEventListener' in emitter) {
600
+ emitter.addEventListener(type, callback);
601
+ } else {
602
+ emitter.on(type, callback);
603
+ }
604
+ };
605
+ const removeListener = (emitter, type, callback) => {
606
+ if ('removeEventListener' in emitter) {
607
+ emitter.removeEventListener(type, callback);
608
+ } else {
609
+ emitter.off(type, callback);
610
+ }
611
+ };
612
+ const getFirstEvent = (eventEmitter, eventMap) => {
613
+ const {
614
+ resolve,
615
+ promise
616
+ } = withResolvers();
617
+ const listenerMap = Object.create(null);
618
+ const cleanup = value => {
619
+ for (const event of Object.keys(eventMap)) {
620
+ removeListener(eventEmitter, event, listenerMap[event]);
621
+ }
622
+ resolve(value);
623
+ };
624
+ for (const [event, type] of Object.entries(eventMap)) {
625
+ const listener = event => {
626
+ cleanup({
627
+ type,
628
+ event
629
+ });
630
+ };
631
+ addListener(eventEmitter, event, listener);
632
+ listenerMap[event] = listener;
633
+ }
634
+ return promise;
635
+ };
636
+
637
+ const create$2 = async ({
638
+ messagePort,
639
+ isMessagePortOpen
598
640
  }) => {
599
641
  if (!isMessagePort(messagePort)) {
600
642
  throw new IpcError('port must be of type MessagePort');
601
643
  }
644
+ if (isMessagePortOpen) {
645
+ return messagePort;
646
+ }
647
+ const eventPromise = getFirstEvent(messagePort, {
648
+ message: Message$1
649
+ });
650
+ messagePort.start();
651
+ const event = await eventPromise;
652
+ // @ts-ignore
653
+ if (event.data !== readyMessage) {
654
+ throw new IpcError('unexpected first message');
655
+ }
602
656
  return messagePort;
603
657
  };
604
658
  const signal = messagePort => {
@@ -637,45 +691,6 @@ const IpcParentWithMessagePort$1 = {
637
691
  const Message = 'message';
638
692
  const Error$1 = 'error';
639
693
 
640
- const addListener = (emitter, type, callback) => {
641
- if ('addEventListener' in emitter) {
642
- emitter.addEventListener(type, callback);
643
- } else {
644
- emitter.on(type, callback);
645
- }
646
- };
647
- const removeListener = (emitter, type, callback) => {
648
- if ('removeEventListener' in emitter) {
649
- emitter.removeEventListener(type, callback);
650
- } else {
651
- emitter.off(type, callback);
652
- }
653
- };
654
- const getFirstEvent = (eventEmitter, eventMap) => {
655
- const {
656
- resolve,
657
- promise
658
- } = withResolvers();
659
- const listenerMap = Object.create(null);
660
- const cleanup = value => {
661
- for (const event of Object.keys(eventMap)) {
662
- removeListener(eventEmitter, event, listenerMap[event]);
663
- }
664
- resolve(value);
665
- };
666
- for (const [event, type] of Object.entries(eventMap)) {
667
- const listener = event => {
668
- cleanup({
669
- type,
670
- event
671
- });
672
- };
673
- addListener(eventEmitter, event, listener);
674
- listenerMap[event] = listener;
675
- }
676
- return promise;
677
- };
678
-
679
694
  const getFirstWorkerEvent = worker => {
680
695
  return getFirstEvent(worker, {
681
696
  message: Message,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/ipc",
3
- "version": "11.2.0",
3
+ "version": "11.4.0",
4
4
  "description": "Inter Process Communication for Lvce Editor",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",