@lvce-editor/status-bar-worker 1.4.0 → 1.6.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.
@@ -411,9 +411,103 @@ const IpcChildWithModuleWorkerAndMessagePort$1 = {
411
411
  listen: listen$6,
412
412
  wrap: wrap$e
413
413
  };
414
+ const addListener = (emitter, type, callback) => {
415
+ if ('addEventListener' in emitter) {
416
+ emitter.addEventListener(type, callback);
417
+ } else {
418
+ emitter.on(type, callback);
419
+ }
420
+ };
421
+ const removeListener = (emitter, type, callback) => {
422
+ if ('removeEventListener' in emitter) {
423
+ emitter.removeEventListener(type, callback);
424
+ } else {
425
+ emitter.off(type, callback);
426
+ }
427
+ };
428
+ const getFirstEvent = (eventEmitter, eventMap) => {
429
+ const {
430
+ resolve,
431
+ promise
432
+ } = Promise.withResolvers();
433
+ const listenerMap = Object.create(null);
434
+ const cleanup = value => {
435
+ for (const event of Object.keys(eventMap)) {
436
+ removeListener(eventEmitter, event, listenerMap[event]);
437
+ }
438
+ resolve(value);
439
+ };
440
+ for (const [event, type] of Object.entries(eventMap)) {
441
+ const listener = event => {
442
+ cleanup({
443
+ type,
444
+ event
445
+ });
446
+ };
447
+ addListener(eventEmitter, event, listener);
448
+ listenerMap[event] = listener;
449
+ }
450
+ return promise;
451
+ };
452
+ const Message$1 = 3;
453
+ const create$5$1 = async ({
454
+ messagePort,
455
+ isMessagePortOpen
456
+ }) => {
457
+ if (!isMessagePort(messagePort)) {
458
+ throw new IpcError('port must be of type MessagePort');
459
+ }
460
+ if (isMessagePortOpen) {
461
+ return messagePort;
462
+ }
463
+ const eventPromise = getFirstEvent(messagePort, {
464
+ message: Message$1
465
+ });
466
+ messagePort.start();
467
+ const {
468
+ type,
469
+ event
470
+ } = await eventPromise;
471
+ if (type !== Message$1) {
472
+ throw new IpcError('Failed to wait for ipc message');
473
+ }
474
+ if (event.data !== readyMessage) {
475
+ throw new IpcError('unexpected first message');
476
+ }
477
+ return messagePort;
478
+ };
479
+ const signal$1 = messagePort => {
480
+ messagePort.start();
481
+ };
482
+ class IpcParentWithMessagePort extends Ipc {
483
+ getData = getData$2;
484
+ send(message) {
485
+ this._rawIpc.postMessage(message);
486
+ }
487
+ sendAndTransfer(message) {
488
+ const transfer = getTransferrables(message);
489
+ this._rawIpc.postMessage(message, transfer);
490
+ }
491
+ dispose() {
492
+ this._rawIpc.close();
493
+ }
494
+ onMessage(callback) {
495
+ this._rawIpc.addEventListener('message', callback);
496
+ }
497
+ onClose(callback) {}
498
+ }
499
+ const wrap$5 = messagePort => {
500
+ return new IpcParentWithMessagePort(messagePort);
501
+ };
502
+ const IpcParentWithMessagePort$1 = {
503
+ __proto__: null,
504
+ create: create$5$1,
505
+ signal: signal$1,
506
+ wrap: wrap$5
507
+ };
414
508
 
415
509
  const Two = '2.0';
416
- const create$4 = (method, params) => {
510
+ const create$4$1 = (method, params) => {
417
511
  return {
418
512
  jsonrpc: Two,
419
513
  method,
@@ -421,7 +515,7 @@ const create$4 = (method, params) => {
421
515
  };
422
516
  };
423
517
  const callbacks = Object.create(null);
424
- const set$2 = (id, fn) => {
518
+ const set$4 = (id, fn) => {
425
519
  callbacks[id] = fn;
426
520
  };
427
521
  const get$3 = id => {
@@ -440,7 +534,7 @@ const registerPromise = () => {
440
534
  resolve,
441
535
  promise
442
536
  } = Promise.withResolvers();
443
- set$2(id, resolve);
537
+ set$4(id, resolve);
444
538
  return {
445
539
  id,
446
540
  promise
@@ -668,7 +762,7 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
668
762
  const errorProperty = getErrorProperty(error, prettyError);
669
763
  return create$1$1(id, errorProperty);
670
764
  };
671
- const create$5 = (message, result) => {
765
+ const create$6 = (message, result) => {
672
766
  return {
673
767
  jsonrpc: Two,
674
768
  id: message.id,
@@ -677,7 +771,7 @@ const create$5 = (message, result) => {
677
771
  };
678
772
  const getSuccessResponse = (message, result) => {
679
773
  const resultProperty = result ?? null;
680
- return create$5(message, resultProperty);
774
+ return create$6(message, resultProperty);
681
775
  };
682
776
  const getErrorResponseSimple = (id, error) => {
683
777
  return {
@@ -782,13 +876,13 @@ const invokeHelper = async (ipc, method, params, useSendAndTransfer) => {
782
876
  return unwrapJsonRpcResult(responseMessage);
783
877
  };
784
878
  const send = (transport, method, ...params) => {
785
- const message = create$4(method, params);
879
+ const message = create$4$1(method, params);
786
880
  transport.send(message);
787
881
  };
788
882
  const invoke$2 = (ipc, method, ...params) => {
789
883
  return invokeHelper(ipc, method, params, false);
790
884
  };
791
- const invokeAndTransfer = (ipc, method, ...params) => {
885
+ const invokeAndTransfer$1 = (ipc, method, ...params) => {
792
886
  return invokeHelper(ipc, method, params, true);
793
887
  };
794
888
 
@@ -827,7 +921,7 @@ const createRpc = ipc => {
827
921
  return invoke$2(ipc, method, ...params);
828
922
  },
829
923
  invokeAndTransfer(method, ...params) {
830
- return invokeAndTransfer(ipc, method, ...params);
924
+ return invokeAndTransfer$1(ipc, method, ...params);
831
925
  },
832
926
  async dispose() {
833
927
  await ipc?.dispose();
@@ -865,7 +959,41 @@ const listen$1 = async (module, options) => {
865
959
  const ipc = module.wrap(rawIpc);
866
960
  return ipc;
867
961
  };
962
+ const create$5 = async ({
963
+ commandMap,
964
+ messagePort
965
+ }) => {
966
+ // TODO create a commandMap per rpc instance
967
+ register(commandMap);
968
+ const rawIpc = await IpcParentWithMessagePort$1.create({
969
+ messagePort,
970
+ isMessagePortOpen: true
971
+ });
972
+ const ipc = IpcParentWithMessagePort$1.wrap(rawIpc);
973
+ handleIpc(ipc);
974
+ const rpc = createRpc(ipc);
975
+ messagePort.start();
976
+ return rpc;
977
+ };
868
978
  const create$3 = async ({
979
+ commandMap,
980
+ send
981
+ }) => {
982
+ const {
983
+ port1,
984
+ port2
985
+ } = new MessageChannel();
986
+ await send(port1);
987
+ return create$5({
988
+ commandMap,
989
+ messagePort: port2
990
+ });
991
+ };
992
+ const TransferMessagePortRpcParent = {
993
+ __proto__: null,
994
+ create: create$3
995
+ };
996
+ const create$4 = async ({
869
997
  commandMap
870
998
  }) => {
871
999
  // TODO create a commandMap per rpc instance
@@ -877,14 +1005,84 @@ const create$3 = async ({
877
1005
  };
878
1006
  const WebWorkerRpcClient = {
879
1007
  __proto__: null,
880
- create: create$3
1008
+ create: create$4
1009
+ };
1010
+
1011
+ const Button$1 = 'button';
1012
+
1013
+ const Div = 4;
1014
+ const Text = 12;
1015
+
1016
+ const Button = 'event.button';
1017
+ const ClientX = 'event.clientX';
1018
+ const ClientY = 'event.clientY';
1019
+ const DeltaMode = 'event.deltaMode';
1020
+ const DeltaY = 'event.deltaY';
1021
+ const TargetName = 'event.target.name';
1022
+ const TargetValue = 'event.target.value';
1023
+
1024
+ const ExtensionHostWorker = 44;
1025
+ const RendererWorker = 1;
1026
+ const SourceControlWorker = 66;
1027
+
1028
+ const SetDom2 = 'Viewlet.setDom2';
1029
+
1030
+ const rpcs = Object.create(null);
1031
+ const set$3 = (id, rpc) => {
1032
+ rpcs[id] = rpc;
1033
+ };
1034
+ const get$2 = id => {
1035
+ return rpcs[id];
1036
+ };
1037
+
1038
+ const create$2 = rpcId => {
1039
+ return {
1040
+ // @ts-ignore
1041
+ invoke(method, ...params) {
1042
+ const rpc = get$2(rpcId);
1043
+ // @ts-ignore
1044
+ return rpc.invoke(method, ...params);
1045
+ },
1046
+ // @ts-ignore
1047
+ invokeAndTransfer(method, ...params) {
1048
+ const rpc = get$2(rpcId);
1049
+ // @ts-ignore
1050
+ return rpc.invokeAndTransfer(method, ...params);
1051
+ },
1052
+ set(rpc) {
1053
+ set$3(rpcId, rpc);
1054
+ },
1055
+ async dispose() {
1056
+ const rpc = get$2(rpcId);
1057
+ await rpc.dispose();
1058
+ }
1059
+ };
1060
+ };
1061
+
1062
+ const {
1063
+ invoke: invoke$1,
1064
+ set: set$2} = create$2(ExtensionHostWorker);
1065
+
1066
+ const {
1067
+ invoke,
1068
+ invokeAndTransfer,
1069
+ set: set$1} = create$2(RendererWorker);
1070
+ const sendMessagePortToExtensionHostWorker$1 = async (port, rpcId = 0) => {
1071
+ const command = 'HandleMessagePort.handleMessagePort2';
1072
+ await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, command, rpcId);
1073
+ };
1074
+ const activateByEvent$1 = event => {
1075
+ return invoke('ExtensionHostManagement.activateByEvent', event);
1076
+ };
1077
+ const getPreference = async key => {
1078
+ return await invoke('Preferences.get', key);
881
1079
  };
882
1080
 
883
1081
  const toCommandId = key => {
884
1082
  const dotIndex = key.indexOf('.');
885
1083
  return key.slice(dotIndex + 1);
886
1084
  };
887
- const create$2 = () => {
1085
+ const create$1 = () => {
888
1086
  const states = Object.create(null);
889
1087
  const commandMapRef = {};
890
1088
  return {
@@ -966,17 +1164,19 @@ const terminate = () => {
966
1164
  };
967
1165
 
968
1166
  const {
969
- get: get$2,
970
- set: set$1,
971
- wrapCommand} = create$2();
1167
+ get: get$1,
1168
+ getCommandIds,
1169
+ registerCommands,
1170
+ set,
1171
+ wrapCommand} = create$1();
972
1172
 
973
- const create$1 = uid => {
1173
+ const create = uid => {
974
1174
  const state = {
975
1175
  statusBarItemsLeft: [],
976
1176
  statusBarItemsRight: [],
977
1177
  uid
978
1178
  };
979
- set$1(uid, state, state);
1179
+ set(uid, state, state);
980
1180
  };
981
1181
 
982
1182
  const isEqual = (oldState, newState) => {
@@ -1003,7 +1203,7 @@ const diff2 = uid => {
1003
1203
  const {
1004
1204
  newState,
1005
1205
  oldState
1006
- } = get$2(uid);
1206
+ } = get$1(uid);
1007
1207
  const result = diff(oldState, newState);
1008
1208
  return result;
1009
1209
  };
@@ -1014,6 +1214,27 @@ const handleClick = (state, name) => {
1014
1214
  return state;
1015
1215
  };
1016
1216
 
1217
+ const sendMessagePortToExtensionHostWorker = async port => {
1218
+ await sendMessagePortToExtensionHostWorker$1(port, SourceControlWorker);
1219
+ };
1220
+
1221
+ const createExtensionHostRpc = async () => {
1222
+ try {
1223
+ const rpc = await TransferMessagePortRpcParent.create({
1224
+ commandMap: {},
1225
+ send: sendMessagePortToExtensionHostWorker
1226
+ });
1227
+ return rpc;
1228
+ } catch (error) {
1229
+ throw new VError(error, `Failed to create extension host rpc`);
1230
+ }
1231
+ };
1232
+
1233
+ const initialize = async () => {
1234
+ const rpc = await createExtensionHostRpc();
1235
+ set$2(rpc);
1236
+ };
1237
+
1017
1238
  const getIndex = (items, item) => {
1018
1239
  for (let i = 0; i < items.length; i++) {
1019
1240
  if (items[i].name === item.name) {
@@ -1062,68 +1283,6 @@ const OnStatusBarItem = 'onStatusBarItem';
1062
1283
 
1063
1284
  const GetStatusBarItems = 'ExtensionHost.getStatusBarItems';
1064
1285
 
1065
- const Button$1 = 'button';
1066
-
1067
- const Div = 4;
1068
- const Text = 12;
1069
-
1070
- const Button = 'event.button';
1071
- const ClientX = 'event.clientX';
1072
- const ClientY = 'event.clientY';
1073
- const DeltaMode = 'event.deltaMode';
1074
- const DeltaY = 'event.deltaY';
1075
- const TargetName = 'event.target.name';
1076
- const TargetValue = 'event.target.value';
1077
-
1078
- const ExtensionHostWorker = 44;
1079
- const RendererWorker = 1;
1080
-
1081
- const SetDom2 = 'Viewlet.setDom2';
1082
-
1083
- const rpcs = Object.create(null);
1084
- const set = (id, rpc) => {
1085
- rpcs[id] = rpc;
1086
- };
1087
- const get$1 = id => {
1088
- return rpcs[id];
1089
- };
1090
-
1091
- const create = rpcId => {
1092
- return {
1093
- // @ts-ignore
1094
- invoke(method, ...params) {
1095
- const rpc = get$1(rpcId);
1096
- // @ts-ignore
1097
- return rpc.invoke(method, ...params);
1098
- },
1099
- // @ts-ignore
1100
- invokeAndTransfer(method, ...params) {
1101
- const rpc = get$1(rpcId);
1102
- // @ts-ignore
1103
- return rpc.invokeAndTransfer(method, ...params);
1104
- },
1105
- set(rpc) {
1106
- set(rpcId, rpc);
1107
- },
1108
- async dispose() {
1109
- const rpc = get$1(rpcId);
1110
- await rpc.dispose();
1111
- }
1112
- };
1113
- };
1114
-
1115
- const {
1116
- invoke: invoke$1} = create(ExtensionHostWorker);
1117
-
1118
- const {
1119
- invoke} = create(RendererWorker);
1120
- const activateByEvent$1 = event => {
1121
- return invoke('ExtensionHostManagement.activateByEvent', event);
1122
- };
1123
- const getPreference = async key => {
1124
- return await invoke('Preferences.get', key);
1125
- };
1126
-
1127
1286
  const activateByEvent = event => {
1128
1287
  return activateByEvent$1(event);
1129
1288
  };
@@ -1279,8 +1438,8 @@ const render2 = (uid, diffResult) => {
1279
1438
  const {
1280
1439
  newState,
1281
1440
  oldState
1282
- } = get$2(uid);
1283
- set$1(uid, newState, newState);
1441
+ } = get$1(uid);
1442
+ set(uid, newState, newState);
1284
1443
  const commands = applyRender(oldState, newState, diffResult);
1285
1444
  return commands;
1286
1445
  };
@@ -1332,9 +1491,16 @@ const renderEventListeners = () => {
1332
1491
  }];
1333
1492
  };
1334
1493
 
1494
+ const resize = (state, dimensions) => {
1495
+ return {
1496
+ ...state,
1497
+ ...dimensions
1498
+ };
1499
+ };
1500
+
1335
1501
  const saveState = uid => {
1336
1502
  number(uid);
1337
- const value = get$2(uid);
1503
+ const value = get$1(uid);
1338
1504
  const {
1339
1505
  newState
1340
1506
  } = value;
@@ -1349,23 +1515,28 @@ const saveState = uid => {
1349
1515
  };
1350
1516
 
1351
1517
  const commandMap = {
1352
- 'StatusBar.create': create$1,
1518
+ 'StatusBar.create': create,
1353
1519
  'StatusBar.diff2': diff2,
1520
+ 'StatusBar.getCommandIds': getCommandIds,
1354
1521
  'StatusBar.handleClick': wrapCommand(handleClick),
1522
+ 'StatusBar.initialize': initialize,
1355
1523
  'StatusBar.itemLeftUpdate': wrapCommand(itemLeftUpdate),
1356
1524
  'StatusBar.itemRightCreate': wrapCommand(itemRightCreate),
1357
1525
  'StatusBar.itemRightUpdate': wrapCommand(itemRightUpdate),
1358
1526
  'StatusBar.loadContent': wrapCommand(loadContent),
1359
1527
  'StatusBar.render2': render2,
1360
1528
  'StatusBar.renderEventListeners': renderEventListeners,
1529
+ 'StatusBar.resize': wrapCommand(resize),
1361
1530
  'StatusBar.saveState': saveState,
1362
1531
  'StatusBar.terminate': terminate
1363
1532
  };
1364
1533
 
1365
1534
  const listen = async () => {
1366
- await WebWorkerRpcClient.create({
1535
+ registerCommands(commandMap);
1536
+ const rpc = await WebWorkerRpcClient.create({
1367
1537
  commandMap: commandMap
1368
1538
  });
1539
+ set$1(rpc);
1369
1540
  };
1370
1541
 
1371
1542
  const main = async () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/status-bar-worker",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "Status Bar Worker",
5
5
  "repository": {
6
6
  "type": "git",