@lvce-editor/editor-worker 8.1.0 → 8.3.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.
@@ -545,7 +545,7 @@ const set$d = (id, fn) => {
545
545
  const get$7 = id => {
546
546
  return callbacks[id];
547
547
  };
548
- const remove$8 = id => {
548
+ const remove$9 = id => {
549
549
  delete callbacks[id];
550
550
  };
551
551
  let id = 0;
@@ -730,7 +730,7 @@ const resolve = (id, response) => {
730
730
  return;
731
731
  }
732
732
  fn(response);
733
- remove$8(id);
733
+ remove$9(id);
734
734
  };
735
735
  const E_COMMAND_NOT_FOUND = 'E_COMMAND_NOT_FOUND';
736
736
  const getErrorType = prettyError => {
@@ -1063,12 +1063,6 @@ const createMockRpc = ({
1063
1063
  return mockRpc;
1064
1064
  };
1065
1065
 
1066
- const DebugWorker = 55;
1067
- const EditorWorker = 99;
1068
- const ExtensionHostWorker = 44;
1069
- const MarkdownWorker = 300;
1070
- const RendererWorker$1 = 1;
1071
-
1072
1066
  const CodeGenerator = 1;
1073
1067
  const ColorPicker$1 = 2;
1074
1068
  const Completion = 3;
@@ -1078,6 +1072,12 @@ const Hover = 6;
1078
1072
  const Rename$1 = 7;
1079
1073
  const SourceAction$1 = 8;
1080
1074
 
1075
+ const DebugWorker = 55;
1076
+ const EditorWorker = 99;
1077
+ const ExtensionHostWorker = 44;
1078
+ const MarkdownWorker = 300;
1079
+ const RendererWorker$1 = 1;
1080
+
1081
1081
  const rpcs = Object.create(null);
1082
1082
  const set$c = (id, rpc) => {
1083
1083
  rpcs[id] = rpc;
@@ -1085,6 +1085,9 @@ const set$c = (id, rpc) => {
1085
1085
  const get$6 = id => {
1086
1086
  return rpcs[id];
1087
1087
  };
1088
+ const remove$8 = id => {
1089
+ delete rpcs[id];
1090
+ };
1088
1091
 
1089
1092
  const create$9 = rpcId => {
1090
1093
  return {
@@ -1114,7 +1117,7 @@ const {
1114
1117
  invoke: invoke$b,
1115
1118
  invokeAndTransfer: invokeAndTransfer$3,
1116
1119
  set: set$b,
1117
- dispose: dispose$2
1120
+ dispose: dispose$3
1118
1121
  } = create$9(ExtensionHostWorker);
1119
1122
  const executeReferenceProvider = async (id, offset) => {
1120
1123
  // @ts-ignore
@@ -1138,7 +1141,7 @@ const registerMockRpc$1 = commandMap => {
1138
1141
 
1139
1142
  const ExtensionHost = {
1140
1143
  __proto__: null,
1141
- dispose: dispose$2,
1144
+ dispose: dispose$3,
1142
1145
  executeFileReferenceProvider,
1143
1146
  executeReferenceProvider,
1144
1147
  getRuntimeStatus,
@@ -1152,7 +1155,7 @@ const {
1152
1155
  invoke: invoke$a,
1153
1156
  invokeAndTransfer: invokeAndTransfer$2,
1154
1157
  set: set$a,
1155
- dispose: dispose$1
1158
+ dispose: dispose$2
1156
1159
  } = create$9(RendererWorker$1);
1157
1160
  const searchFileHtml = async uri => {
1158
1161
  return invoke$a('ExtensionHost.searchFileWithHtml', uri);
@@ -1424,7 +1427,7 @@ const RendererWorker = {
1424
1427
  closeWidget,
1425
1428
  confirm,
1426
1429
  disableExtension,
1427
- dispose: dispose$1,
1430
+ dispose: dispose$2,
1428
1431
  enableExtension,
1429
1432
  getActiveEditorId,
1430
1433
  getAllExtensions,
@@ -1501,12 +1504,12 @@ const {
1501
1504
  invoke: invoke$9,
1502
1505
  invokeAndTransfer: invokeAndTransfer$1,
1503
1506
  set: set$9,
1504
- dispose
1507
+ dispose: dispose$1
1505
1508
  } = create$9(MarkdownWorker);
1506
1509
 
1507
1510
  const SyntaxHighlightingWorker = {
1508
1511
  __proto__: null,
1509
- dispose,
1512
+ dispose: dispose$1,
1510
1513
  invoke: invoke$9,
1511
1514
  invokeAndTransfer: invokeAndTransfer$1,
1512
1515
  set: set$9
@@ -1573,15 +1576,15 @@ const launchColorPickerWorker = async () => {
1573
1576
  return launchWorker(name, url);
1574
1577
  };
1575
1578
 
1576
- let workerPromise$4;
1577
- const getOrCreate$5 = () => {
1578
- if (!workerPromise$4) {
1579
- workerPromise$4 = launchColorPickerWorker();
1579
+ let workerPromise$3;
1580
+ const getOrCreate$4 = () => {
1581
+ if (!workerPromise$3) {
1582
+ workerPromise$3 = launchColorPickerWorker();
1580
1583
  }
1581
- return workerPromise$4;
1584
+ return workerPromise$3;
1582
1585
  };
1583
1586
  const invoke$7 = async (method, ...params) => {
1584
- const worker = await getOrCreate$5();
1587
+ const worker = await getOrCreate$4();
1585
1588
  return await worker.invoke(method, ...params);
1586
1589
  };
1587
1590
 
@@ -2005,7 +2008,7 @@ const createMeasureContext = () => {
2005
2008
  const state$8 = {
2006
2009
  ctx: undefined
2007
2010
  };
2008
- const getOrCreate$4 = createCtx => {
2011
+ const getOrCreate$3 = createCtx => {
2009
2012
  if (state$8.ctx) {
2010
2013
  return state$8.ctx;
2011
2014
  }
@@ -2014,7 +2017,7 @@ const getOrCreate$4 = createCtx => {
2014
2017
  };
2015
2018
 
2016
2019
  const getContext = () => {
2017
- const ctx = getOrCreate$4(createMeasureContext);
2020
+ const ctx = getOrCreate$3(createMeasureContext);
2018
2021
  return ctx;
2019
2022
  };
2020
2023
 
@@ -3338,15 +3341,15 @@ const launchRenameWorker = async () => {
3338
3341
  return rpc;
3339
3342
  };
3340
3343
 
3341
- let workerPromise$3;
3342
- const getOrCreate$3 = () => {
3343
- if (!workerPromise$3) {
3344
- workerPromise$3 = launchRenameWorker();
3344
+ let workerPromise$2;
3345
+ const getOrCreate$2 = () => {
3346
+ if (!workerPromise$2) {
3347
+ workerPromise$2 = launchRenameWorker();
3345
3348
  }
3346
- return workerPromise$3;
3349
+ return workerPromise$2;
3347
3350
  };
3348
3351
  const invoke$5 = async (method, ...params) => {
3349
- const worker = await getOrCreate$3();
3352
+ const worker = await getOrCreate$2();
3350
3353
  return await worker.invoke(method, ...params);
3351
3354
  };
3352
3355
 
@@ -5605,15 +5608,15 @@ const launchCompletionWorker = async () => {
5605
5608
  return rpc;
5606
5609
  };
5607
5610
 
5608
- let workerPromise$2;
5609
- const getOrCreate$2 = () => {
5610
- if (!workerPromise$2) {
5611
- workerPromise$2 = launchCompletionWorker();
5611
+ let workerPromise$1;
5612
+ const getOrCreate$1 = () => {
5613
+ if (!workerPromise$1) {
5614
+ workerPromise$1 = launchCompletionWorker();
5612
5615
  }
5613
- return workerPromise$2;
5616
+ return workerPromise$1;
5614
5617
  };
5615
5618
  const invoke$4 = async (method, ...params) => {
5616
- const worker = await getOrCreate$2();
5619
+ const worker = await getOrCreate$1();
5617
5620
  return await worker.invoke(method, ...params);
5618
5621
  };
5619
5622
 
@@ -5677,16 +5680,29 @@ const launchFindWidgetWorker = async () => {
5677
5680
  return launchWorker(name, url);
5678
5681
  };
5679
5682
 
5680
- let workerPromise$1;
5681
- const getOrCreate$1 = () => {
5682
- if (!workerPromise$1) {
5683
- workerPromise$1 = launchFindWidgetWorker();
5683
+ const rpcId = 9002;
5684
+ const launch = async () => {
5685
+ // TODO race condition
5686
+ if (get$6(rpcId)) {
5687
+ return;
5684
5688
  }
5685
- return workerPromise$1;
5689
+ const rpc = await launchFindWidgetWorker();
5690
+ set$c(rpcId, rpc);
5686
5691
  };
5687
5692
  const invoke$3 = async (method, ...params) => {
5688
- const worker = await getOrCreate$1();
5689
- return await worker.invoke(method, ...params);
5693
+ const rpc = get$6(rpcId);
5694
+ return await rpc.invoke(method, ...params);
5695
+ };
5696
+ const dispose = async () => {
5697
+ const rpc = get$6(rpcId);
5698
+ remove$8(rpcId);
5699
+ if (rpc) {
5700
+ await rpc.dispose();
5701
+ }
5702
+ // const oldPromise = workerPromise
5703
+ // workerPromise = undefined
5704
+ // const rpc = await oldPromise
5705
+ // await rpc.dispose()
5690
5706
  };
5691
5707
 
5692
5708
  const getEditor = editorUid => {
@@ -5711,6 +5727,7 @@ const loadContent$1 = async (state, parentUid) => {
5711
5727
  width,
5712
5728
  height
5713
5729
  } = editor;
5730
+ await launch();
5714
5731
  await invoke$3('FindWidget.create', uid, x, y, width, height, parentUid);
5715
5732
  await invoke$3('FindWidget.loadContent', uid);
5716
5733
  const diff = await invoke$3('FindWidget.diff2', uid);
@@ -5726,7 +5743,7 @@ const newStateGenerator$3 = (state, parentUid) => {
5726
5743
  };
5727
5744
  const openFind2 = async editor => {
5728
5745
  const fullFocus = true;
5729
- return addWidgetToEditor(ColorPicker$1, FindWidget, editor, create$3, newStateGenerator$3, fullFocus);
5746
+ return addWidgetToEditor(Find, FindWidget, editor, create$3, newStateGenerator$3, fullFocus);
5730
5747
  };
5731
5748
 
5732
5749
  const openFind = async state => {
@@ -8083,13 +8100,18 @@ const {
8083
8100
  focusReplaceButton,
8084
8101
  focusToggleReplace,
8085
8102
  handleBlur,
8103
+ handleClickButton,
8086
8104
  handleFocus,
8087
8105
  handleInput: handleInput$1,
8088
8106
  handleReplaceFocus,
8089
8107
  handleReplaceInput,
8090
8108
  handleToggleReplaceFocus,
8091
- toggleReplace
8092
- } = createFns(['close', 'focusCloseButton', 'focusFind', 'focusNext', 'focusNextMatchButton', 'focusPrevious', 'focusPreviousMatchButton', 'focusReplace', 'focusReplaceAllButton', 'focusReplaceButton', 'focusToggleReplace', 'handleBlur', 'handleFocus', 'handleInput', 'handleReplaceFocus', 'handleReplaceInput', 'handleToggleReplaceFocus', 'toggleReplace'], 'FindWidget', Find);
8109
+ replace,
8110
+ replaceAll,
8111
+ toggleMatchCase,
8112
+ toggleReplace,
8113
+ toggleUseRegularExpression
8114
+ } = createFns(['close', 'focusCloseButton', 'focusFind', 'focusNext', 'focusNextMatchButton', 'focusPrevious', 'focusPreviousMatchButton', 'focusReplace', 'focusReplaceAllButton', 'focusReplaceButton', 'focusToggleReplace', 'handleBlur', 'handleClickButton', 'handleFocus', 'handleInput', 'handleReplaceFocus', 'handleReplaceInput', 'handleToggleReplaceFocus', 'replace', 'replaceAll', 'toggleMatchCase', 'toggleReplace', 'toggleUseRegularExpression'], 'FindWidget', Find);
8093
8115
 
8094
8116
  const EditorFindWidget = {
8095
8117
  __proto__: null,
@@ -8106,6 +8128,7 @@ const EditorFindWidget = {
8106
8128
  focusReplaceButton,
8107
8129
  focusToggleReplace,
8108
8130
  handleBlur,
8131
+ handleClickButton,
8109
8132
  handleFocus,
8110
8133
  handleInput: handleInput$1,
8111
8134
  handleReplaceFocus,
@@ -8113,7 +8136,11 @@ const EditorFindWidget = {
8113
8136
  handleToggleReplaceFocus,
8114
8137
  remove: remove$6,
8115
8138
  render: render$a,
8116
- toggleReplace
8139
+ replace,
8140
+ replaceAll,
8141
+ toggleMatchCase,
8142
+ toggleReplace,
8143
+ toggleUseRegularExpression
8117
8144
  };
8118
8145
 
8119
8146
  const loadContent = async (editorUid, state, position) => {
@@ -9199,6 +9226,97 @@ const handleTab = async editor => {
9199
9226
  return applyTabCompletion(editor, result);
9200
9227
  };
9201
9228
 
9229
+ const relaunchWorkers = async () => {
9230
+ await dispose();
9231
+ await launch();
9232
+ };
9233
+
9234
+ const getWidgetName = widgetId => {
9235
+ switch (widgetId) {
9236
+ case Find:
9237
+ return `FindWidget`;
9238
+ default:
9239
+ return '';
9240
+ }
9241
+ };
9242
+ const saveWidgetState = async keys => {
9243
+ const savedStates = Object.create(null);
9244
+ for (const key of keys) {
9245
+ const editor = get$4(parseInt(key));
9246
+ const {
9247
+ widgets
9248
+ } = editor.newState;
9249
+ for (const widget of widgets) {
9250
+ const invoke = getWidgetInvoke(widget.id);
9251
+ const fullKey = `${key}:${widget.newState.uid}`;
9252
+ const name = getWidgetName(widget.id);
9253
+ const savedState = await invoke(`${name}.saveState`, widget.newState.uid);
9254
+ savedStates[fullKey] = savedState;
9255
+ }
9256
+ }
9257
+ return savedStates;
9258
+ };
9259
+
9260
+ const restoreWidgetState = async (keys, savedStates) => {
9261
+ const newEditors = [];
9262
+ for (const key of keys) {
9263
+ const editorUid = parseInt(key);
9264
+ const editor = get$4(editorUid);
9265
+ const {
9266
+ widgets
9267
+ } = editor.newState;
9268
+ const newWidgets = [];
9269
+ for (const widget of widgets) {
9270
+ const invoke = getWidgetInvoke(widget.id);
9271
+ const fullKey = `${key}:${widget.newState.uid}`;
9272
+ const savedState = savedStates[fullKey] || {};
9273
+ const name = getWidgetName(widget.id);
9274
+ await invoke(`${name}.create`, widget.newState.uid, widget.newState.x, widget.newState.y, widget.newState.width, widget.newState.height, editorUid);
9275
+ await invoke(`${name}.loadContent`, widget.newState.uid, savedState);
9276
+ const diffResult = await invoke(`${name}.diff2`, widget.newState.uid);
9277
+ const commands = await invoke(`${name}.render2`, widget.newState.uid, diffResult);
9278
+ const newWidget = {
9279
+ ...widget,
9280
+ newState: {
9281
+ ...widget.newState,
9282
+ commands
9283
+ }
9284
+ };
9285
+ newWidgets.push(newWidget);
9286
+ }
9287
+ newEditors.push({
9288
+ ...editor,
9289
+ newState: {
9290
+ ...editor.newState,
9291
+ widgets: newWidgets
9292
+ }
9293
+ });
9294
+ }
9295
+ return newEditors;
9296
+ };
9297
+
9298
+ let isReloading = false;
9299
+ const hotReload = async () => {
9300
+ if (isReloading) {
9301
+ return;
9302
+ }
9303
+ isReloading = true;
9304
+
9305
+ // TODO use getEditors
9306
+ const keys = getKeys$1();
9307
+ const savedStates = await saveWidgetState(keys);
9308
+ await relaunchWorkers();
9309
+ const newEditors = await restoreWidgetState(keys, savedStates);
9310
+ for (const editor of newEditors) {
9311
+ set$6(editor.newState.uid, editor.oldState, editor.newState);
9312
+ }
9313
+
9314
+ // TODO ask renderer worker to rerender all editors
9315
+ // @ts-ignore
9316
+ await invoke$8(`Editor.rerender`);
9317
+ isReloading = false;
9318
+ };
9319
+
9202
9320
  const sendMessagePortToExtensionHostWorker2 = async (port, initialCommand, rpcId) => {
9203
9321
  await invokeAndTransfer('SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker', port, initialCommand, rpcId);
9204
9322
  };
@@ -10262,7 +10380,7 @@ const editorDiagnosticEffect = {
10262
10380
  }
10263
10381
  };
10264
10382
 
10265
- const keep = ['ActivateByEvent.activateByEvent', 'ExtensionHostManagement.activateByEvent', 'Editor.applyEdit2', 'Editor.applyEdits2', 'Editor.closeFind2', 'Editor.closeWidget2', 'Editor.create', 'Editor.getKeyBindings', 'Editor.getSourceActions', 'Editor.getLines2', 'Editor.getPositionAtCursor', 'Editor.getOffsetAtCursor', 'Editor.getQuickPickMenuEntries', 'Editor.getSelections', 'Editor.getSelections2', 'Editor.getText', 'Editor.getWordAt', 'Editor.getWordAt2', 'Editor.getWordAtOffset2', 'Editor.getUri', 'Editor.getWordBefore', 'Editor.getWordBefore2', 'Editor.offsetAt', 'Editor.render', 'Editor.setSelections2', 'Editor.updateDebugInfo', 'Editor.getLanguageId', 'Editor.getProblems', 'Editor.getKeys', 'Font.ensure', 'HandleMessagePort.handleMessagePort', 'Hover.getHoverInfo', 'Hover.handleSashPointerDown', 'Hover.handleSashPointerMove', 'Hover.handleSashPointerUp', 'Hover.loadContent', 'Hover.render', 'Initialize.initialize', 'SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker'
10383
+ const keep = ['ActivateByEvent.activateByEvent', 'ExtensionHostManagement.activateByEvent', 'Editor.applyEdit2', 'Editor.applyEdits2', 'Editor.closeFind2', 'Editor.closeWidget2', 'Editor.create', 'Editor.getKeyBindings', 'Editor.getSourceActions', 'Editor.getLines2', 'Editor.getPositionAtCursor', 'Editor.getOffsetAtCursor', 'Editor.getQuickPickMenuEntries', 'Editor.getSelections', 'Editor.hotReload', 'Editor.getSelections2', 'Editor.getText', 'Editor.getWordAt', 'Editor.getWordAt2', 'Editor.getWordAtOffset2', 'Editor.getUri', 'Editor.getWordBefore', 'Editor.getWordBefore2', 'Editor.offsetAt', 'Editor.render', 'Editor.setSelections2', 'Editor.updateDebugInfo', 'Editor.getLanguageId', 'Editor.getProblems', 'Editor.getKeys', 'Font.ensure', 'HandleMessagePort.handleMessagePort', 'Hover.getHoverInfo', 'Hover.handleSashPointerDown', 'Hover.handleSashPointerMove', 'Hover.handleSashPointerUp', 'Hover.loadContent', 'Hover.render', 'Initialize.initialize', 'SendMessagePortToExtensionHostWorker.sendMessagePortToExtensionHostWorker'
10266
10384
  // 'ColorPicker.handleSliderPointerDown',
10267
10385
  // 'ColorPicker.handleSliderPointerMove',
10268
10386
  // 'ColorPicker.loadContent',
@@ -10477,6 +10595,7 @@ const commandMap = {
10477
10595
  'Editor.toggleComment': toggleComment,
10478
10596
  'Editor.toggleLineComment': editorToggleLineComment,
10479
10597
  'Editor.type': type,
10598
+ 'Editor.hotReload': hotReload,
10480
10599
  'Editor.typeWithAutoClosing': typeWithAutoClosing,
10481
10600
  'Editor.undo': undo,
10482
10601
  'Editor.unIndent': editorUnindent,
@@ -10523,12 +10642,16 @@ const commandMap = {
10523
10642
  'FindWidget.focusReplaceAllButton': focusReplaceAllButton,
10524
10643
  'FindWidget.focusReplaceButton': focusReplaceButton,
10525
10644
  'FindWidget.focusToggleReplace': focusToggleReplace,
10645
+ 'FindWidget.replace': replace,
10646
+ 'FindWidget.replaceAll': replaceAll,
10526
10647
  'FindWidget.handleBlur': handleBlur,
10527
10648
  'FindWidget.handleFocus': handleFocus,
10649
+ 'FindWidget.handleClickButton': handleClickButton,
10528
10650
  'FindWidget.handleInput': handleInput$1,
10529
10651
  'FindWidget.handleReplaceFocus': handleReplaceFocus,
10530
10652
  'FindWidget.handleReplaceInput': handleReplaceInput,
10531
10653
  'FindWidget.handleToggleReplaceFocus': handleToggleReplaceFocus,
10654
+ 'FindWidget.toggleMatchCase': toggleMatchCase,
10532
10655
  'FindWidget.loadContent': loadContent$1,
10533
10656
  'FindWidget.toggleReplace': toggleReplace,
10534
10657
  'Font.ensure': ensure,
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@lvce-editor/editor-worker",
3
- "version": "8.1.0",
3
+ "version": "8.3.0",
4
4
  "license": "MIT",
5
5
  "author": "Lvce Editor",
6
6
  "type": "module",
7
7
  "main": "dist/editorWorkerMain.js",
8
8
  "dependencies": {
9
- "@lvce-editor/constants": "^1.9.0"
9
+ "@lvce-editor/constants": "^1.13.0"
10
10
  }
11
11
  }