@lvce-editor/file-search-worker 8.4.0 → 8.5.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.
@@ -96,7 +96,6 @@ const walkValue = (value, transferrables, isTransferrable) => {
96
96
  for (const property of Object.values(value)) {
97
97
  walkValue(property, transferrables, isTransferrable);
98
98
  }
99
- return;
100
99
  }
101
100
  };
102
101
  const getTransferrables = value => {
@@ -250,7 +249,14 @@ class IpcError extends VError {
250
249
  const cause = new Error(message);
251
250
  // @ts-ignore
252
251
  cause.code = code;
253
- cause.stack = stack;
252
+ if (stack) {
253
+ Object.defineProperty(cause, 'stack', {
254
+ configurable: true,
255
+ enumerable: false,
256
+ value: stack,
257
+ writable: true
258
+ });
259
+ }
254
260
  super(cause, betterMessage);
255
261
  } else {
256
262
  super(betterMessage);
@@ -537,7 +543,10 @@ const constructError = (message, type, name) => {
537
543
  if (ErrorConstructor === Error) {
538
544
  const error = new Error(message);
539
545
  if (name && name !== 'VError') {
540
- error.name = name;
546
+ Object.defineProperty(error, 'name', {
547
+ configurable: true,
548
+ value: name
549
+ });
541
550
  }
542
551
  return error;
543
552
  }
@@ -554,8 +563,10 @@ const getCurrentStack = () => {
554
563
  const currentStack = joinLines(splitLines$1(new Error().stack || '').slice(stackLinesToSkip));
555
564
  return currentStack;
556
565
  };
557
- const getNewLineIndex = (string, startIndex = undefined) => {
558
- return string.indexOf(NewLine, startIndex);
566
+ const getNewLineIndex = (string, startIndex) => {
567
+ {
568
+ return string.indexOf(NewLine);
569
+ }
559
570
  };
560
571
  const getParentStack = error => {
561
572
  let parentStack = error.stack || error.data || error.message || '';
@@ -566,55 +577,91 @@ const getParentStack = error => {
566
577
  };
567
578
  const MethodNotFound = -32601;
568
579
  const Custom = -32001;
580
+ const setStack = (error, stack) => {
581
+ const descriptor = Object.getOwnPropertyDescriptor(error, 'stack');
582
+ if (descriptor) {
583
+ if (!descriptor.configurable && !descriptor.writable) {
584
+ return;
585
+ }
586
+ if (!descriptor.configurable && descriptor.writable) {
587
+ error.stack = stack;
588
+ return;
589
+ }
590
+ }
591
+ Object.defineProperty(error, 'stack', {
592
+ configurable: true,
593
+ value: stack,
594
+ writable: true
595
+ });
596
+ };
597
+ const restoreExistingError = (error, currentStack) => {
598
+ if (typeof error.stack === 'string') {
599
+ setStack(error, `${error.stack}${NewLine}${currentStack}`);
600
+ }
601
+ return error;
602
+ };
603
+ const restoreMethodNotFoundError = (error, currentStack) => {
604
+ const restoredError = new JsonRpcError(error.message);
605
+ const parentStack = getParentStack(error);
606
+ setStack(restoredError, `${parentStack}${NewLine}${currentStack}`);
607
+ return restoredError;
608
+ };
609
+ const restoreStackFromData = (restoredError, error, currentStack) => {
610
+ if (error.data.stack && error.data.type && error.message) {
611
+ setStack(restoredError, `${error.data.type}: ${error.message}${NewLine}${error.data.stack}${NewLine}${currentStack}`);
612
+ return;
613
+ }
614
+ if (error.data.stack) {
615
+ setStack(restoredError, error.data.stack);
616
+ }
617
+ };
618
+ const applyDataProperties = (restoredError, error) => {
619
+ restoreStackFromData(restoredError, error, getCurrentStack());
620
+ if (error.data.codeFrame) {
621
+ // @ts-ignore
622
+ restoredError.codeFrame = error.data.codeFrame;
623
+ }
624
+ if (error.data.code) {
625
+ // @ts-ignore
626
+ restoredError.code = error.data.code;
627
+ }
628
+ if (error.data.type) {
629
+ // @ts-ignore
630
+ restoredError.name = error.data.type;
631
+ }
632
+ };
633
+ const applyDirectProperties = (restoredError, error) => {
634
+ if (error.stack) {
635
+ const lowerStack = restoredError.stack || '';
636
+ const indexNewLine = getNewLineIndex(lowerStack);
637
+ const parentStack = getParentStack(error);
638
+ // @ts-ignore
639
+ setStack(restoredError, `${parentStack}${lowerStack.slice(indexNewLine)}`);
640
+ }
641
+ if (error.codeFrame) {
642
+ // @ts-ignore
643
+ restoredError.codeFrame = error.codeFrame;
644
+ }
645
+ };
646
+ const restoreMessageError = (error, _currentStack) => {
647
+ const restoredError = constructError(error.message, error.type, error.name);
648
+ if (error.data) {
649
+ applyDataProperties(restoredError, error);
650
+ } else {
651
+ applyDirectProperties(restoredError, error);
652
+ }
653
+ return restoredError;
654
+ };
569
655
  const restoreJsonRpcError = error => {
570
656
  const currentStack = getCurrentStack();
571
657
  if (error && error instanceof Error) {
572
- if (typeof error.stack === 'string') {
573
- error.stack = error.stack + NewLine + currentStack;
574
- }
575
- return error;
658
+ return restoreExistingError(error, currentStack);
576
659
  }
577
660
  if (error && error.code && error.code === MethodNotFound) {
578
- const restoredError = new JsonRpcError(error.message);
579
- const parentStack = getParentStack(error);
580
- restoredError.stack = parentStack + NewLine + currentStack;
581
- return restoredError;
661
+ return restoreMethodNotFoundError(error, currentStack);
582
662
  }
583
663
  if (error && error.message) {
584
- const restoredError = constructError(error.message, error.type, error.name);
585
- if (error.data) {
586
- if (error.data.stack && error.data.type && error.message) {
587
- restoredError.stack = error.data.type + ': ' + error.message + NewLine + error.data.stack + NewLine + currentStack;
588
- } else if (error.data.stack) {
589
- restoredError.stack = error.data.stack;
590
- }
591
- if (error.data.codeFrame) {
592
- // @ts-ignore
593
- restoredError.codeFrame = error.data.codeFrame;
594
- }
595
- if (error.data.code) {
596
- // @ts-ignore
597
- restoredError.code = error.data.code;
598
- }
599
- if (error.data.type) {
600
- // @ts-ignore
601
- restoredError.name = error.data.type;
602
- }
603
- } else {
604
- if (error.stack) {
605
- const lowerStack = restoredError.stack || '';
606
- // @ts-ignore
607
- const indexNewLine = getNewLineIndex(lowerStack);
608
- const parentStack = getParentStack(error);
609
- // @ts-ignore
610
- restoredError.stack = parentStack + lowerStack.slice(indexNewLine);
611
- }
612
- if (error.codeFrame) {
613
- // @ts-ignore
614
- restoredError.codeFrame = error.codeFrame;
615
- }
616
- }
617
- return restoredError;
664
+ return restoreMessageError(error);
618
665
  }
619
666
  if (typeof error === 'string') {
620
667
  return new Error(`JsonRpc Error: ${error}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/file-search-worker",
3
- "version": "8.4.0",
3
+ "version": "8.5.0",
4
4
  "description": "Web worker for file search backends in LVCE Editor.",
5
5
  "keywords": [
6
6
  "file-search",