@lvce-editor/status-bar-worker 3.2.1 → 3.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.
@@ -325,7 +325,6 @@ const walkValue = (value, transferrables, isTransferrable) => {
325
325
  for (const property of Object.values(value)) {
326
326
  walkValue(property, transferrables, isTransferrable);
327
327
  }
328
- return;
329
328
  }
330
329
  };
331
330
  const getTransferrables = value => {
@@ -479,7 +478,14 @@ class IpcError extends VError {
479
478
  const cause = new Error(message);
480
479
  // @ts-ignore
481
480
  cause.code = code;
482
- cause.stack = stack;
481
+ if (stack) {
482
+ Object.defineProperty(cause, 'stack', {
483
+ configurable: true,
484
+ enumerable: false,
485
+ value: stack,
486
+ writable: true
487
+ });
488
+ }
483
489
  super(cause, betterMessage);
484
490
  } else {
485
491
  super(betterMessage);
@@ -766,7 +772,10 @@ const constructError = (message, type, name) => {
766
772
  if (ErrorConstructor === Error) {
767
773
  const error = new Error(message);
768
774
  if (name && name !== 'VError') {
769
- error.name = name;
775
+ Object.defineProperty(error, 'name', {
776
+ configurable: true,
777
+ value: name
778
+ });
770
779
  }
771
780
  return error;
772
781
  }
@@ -783,8 +792,10 @@ const getCurrentStack = () => {
783
792
  const currentStack = joinLines(splitLines(new Error().stack || '').slice(stackLinesToSkip));
784
793
  return currentStack;
785
794
  };
786
- const getNewLineIndex = (string, startIndex = undefined) => {
787
- return string.indexOf(NewLine, startIndex);
795
+ const getNewLineIndex = (string, startIndex) => {
796
+ {
797
+ return string.indexOf(NewLine);
798
+ }
788
799
  };
789
800
  const getParentStack = error => {
790
801
  let parentStack = error.stack || error.data || error.message || '';
@@ -795,55 +806,91 @@ const getParentStack = error => {
795
806
  };
796
807
  const MethodNotFound = -32601;
797
808
  const Custom = -32001;
809
+ const setStack = (error, stack) => {
810
+ const descriptor = Object.getOwnPropertyDescriptor(error, 'stack');
811
+ if (descriptor) {
812
+ if (!descriptor.configurable && !descriptor.writable) {
813
+ return;
814
+ }
815
+ if (!descriptor.configurable && descriptor.writable) {
816
+ error.stack = stack;
817
+ return;
818
+ }
819
+ }
820
+ Object.defineProperty(error, 'stack', {
821
+ configurable: true,
822
+ value: stack,
823
+ writable: true
824
+ });
825
+ };
826
+ const restoreExistingError = (error, currentStack) => {
827
+ if (typeof error.stack === 'string') {
828
+ setStack(error, `${error.stack}${NewLine}${currentStack}`);
829
+ }
830
+ return error;
831
+ };
832
+ const restoreMethodNotFoundError = (error, currentStack) => {
833
+ const restoredError = new JsonRpcError(error.message);
834
+ const parentStack = getParentStack(error);
835
+ setStack(restoredError, `${parentStack}${NewLine}${currentStack}`);
836
+ return restoredError;
837
+ };
838
+ const restoreStackFromData = (restoredError, error, currentStack) => {
839
+ if (error.data.stack && error.data.type && error.message) {
840
+ setStack(restoredError, `${error.data.type}: ${error.message}${NewLine}${error.data.stack}${NewLine}${currentStack}`);
841
+ return;
842
+ }
843
+ if (error.data.stack) {
844
+ setStack(restoredError, error.data.stack);
845
+ }
846
+ };
847
+ const applyDataProperties = (restoredError, error) => {
848
+ restoreStackFromData(restoredError, error, getCurrentStack());
849
+ if (error.data.codeFrame) {
850
+ // @ts-ignore
851
+ restoredError.codeFrame = error.data.codeFrame;
852
+ }
853
+ if (error.data.code) {
854
+ // @ts-ignore
855
+ restoredError.code = error.data.code;
856
+ }
857
+ if (error.data.type) {
858
+ // @ts-ignore
859
+ restoredError.name = error.data.type;
860
+ }
861
+ };
862
+ const applyDirectProperties = (restoredError, error) => {
863
+ if (error.stack) {
864
+ const lowerStack = restoredError.stack || '';
865
+ const indexNewLine = getNewLineIndex(lowerStack);
866
+ const parentStack = getParentStack(error);
867
+ // @ts-ignore
868
+ setStack(restoredError, `${parentStack}${lowerStack.slice(indexNewLine)}`);
869
+ }
870
+ if (error.codeFrame) {
871
+ // @ts-ignore
872
+ restoredError.codeFrame = error.codeFrame;
873
+ }
874
+ };
875
+ const restoreMessageError = (error, _currentStack) => {
876
+ const restoredError = constructError(error.message, error.type, error.name);
877
+ if (error.data) {
878
+ applyDataProperties(restoredError, error);
879
+ } else {
880
+ applyDirectProperties(restoredError, error);
881
+ }
882
+ return restoredError;
883
+ };
798
884
  const restoreJsonRpcError = error => {
799
885
  const currentStack = getCurrentStack();
800
886
  if (error && error instanceof Error) {
801
- if (typeof error.stack === 'string') {
802
- error.stack = error.stack + NewLine + currentStack;
803
- }
804
- return error;
887
+ return restoreExistingError(error, currentStack);
805
888
  }
806
889
  if (error && error.code && error.code === MethodNotFound) {
807
- const restoredError = new JsonRpcError(error.message);
808
- const parentStack = getParentStack(error);
809
- restoredError.stack = parentStack + NewLine + currentStack;
810
- return restoredError;
890
+ return restoreMethodNotFoundError(error, currentStack);
811
891
  }
812
892
  if (error && error.message) {
813
- const restoredError = constructError(error.message, error.type, error.name);
814
- if (error.data) {
815
- if (error.data.stack && error.data.type && error.message) {
816
- restoredError.stack = error.data.type + ': ' + error.message + NewLine + error.data.stack + NewLine + currentStack;
817
- } else if (error.data.stack) {
818
- restoredError.stack = error.data.stack;
819
- }
820
- if (error.data.codeFrame) {
821
- // @ts-ignore
822
- restoredError.codeFrame = error.data.codeFrame;
823
- }
824
- if (error.data.code) {
825
- // @ts-ignore
826
- restoredError.code = error.data.code;
827
- }
828
- if (error.data.type) {
829
- // @ts-ignore
830
- restoredError.name = error.data.type;
831
- }
832
- } else {
833
- if (error.stack) {
834
- const lowerStack = restoredError.stack || '';
835
- // @ts-ignore
836
- const indexNewLine = getNewLineIndex(lowerStack);
837
- const parentStack = getParentStack(error);
838
- // @ts-ignore
839
- restoredError.stack = parentStack + lowerStack.slice(indexNewLine);
840
- }
841
- if (error.codeFrame) {
842
- // @ts-ignore
843
- restoredError.codeFrame = error.codeFrame;
844
- }
845
- }
846
- return restoredError;
893
+ return restoreMessageError(error);
847
894
  }
848
895
  if (typeof error === 'string') {
849
896
  return new Error(`JsonRpc Error: ${error}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/status-bar-worker",
3
- "version": "3.2.1",
3
+ "version": "3.4.0",
4
4
  "description": "Status Bar Worker",
5
5
  "repository": {
6
6
  "type": "git",