@lvce-editor/pty-host 7.1.0 → 8.1.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/ptyHostMain.js +354 -256
  2. package/package.json +2 -2
@@ -1,8 +1,9 @@
1
+ import { spawn } from 'node:child_process';
1
2
  import { fileURLToPath } from 'node:url';
2
3
  import { Console } from 'node:console';
3
4
  import { createWriteStream, readFileSync } from 'node:fs';
4
5
  import { tmpdir } from 'node:os';
5
- import { Buffer } from 'node:buffer';
6
+ import { Buffer as Buffer$1 } from 'node:buffer';
6
7
 
7
8
  class CommandNotFoundError extends Error {
8
9
  constructor(command) {
@@ -25,62 +26,6 @@ const execute = (command, ...args) => {
25
26
  return fn(...args);
26
27
  };
27
28
 
28
- const normalizeLine = line => {
29
- if (line.startsWith('Error: ')) {
30
- return line.slice('Error: '.length);
31
- }
32
- if (line.startsWith('VError: ')) {
33
- return line.slice('VError: '.length);
34
- }
35
- return line;
36
- };
37
- const getCombinedMessage = (error, message) => {
38
- const stringifiedError = normalizeLine(`${error}`);
39
- if (message) {
40
- return `${message}: ${stringifiedError}`;
41
- }
42
- return stringifiedError;
43
- };
44
- const NewLine$4 = '\n';
45
- const getNewLineIndex$2 = (string, startIndex = undefined) => {
46
- return string.indexOf(NewLine$4, startIndex);
47
- };
48
- const mergeStacks = (parent, child) => {
49
- if (!child) {
50
- return parent;
51
- }
52
- const parentNewLineIndex = getNewLineIndex$2(parent);
53
- const childNewLineIndex = getNewLineIndex$2(child);
54
- if (childNewLineIndex === -1) {
55
- return parent;
56
- }
57
- const parentFirstLine = parent.slice(0, parentNewLineIndex);
58
- const childRest = child.slice(childNewLineIndex);
59
- const childFirstLine = normalizeLine(child.slice(0, childNewLineIndex));
60
- if (parentFirstLine.includes(childFirstLine)) {
61
- return parentFirstLine + childRest;
62
- }
63
- return child;
64
- };
65
- class VError extends Error {
66
- constructor(error, message) {
67
- const combinedMessage = getCombinedMessage(error, message);
68
- super(combinedMessage);
69
- this.name = 'VError';
70
- if (error instanceof Error) {
71
- this.stack = mergeStacks(this.stack, error.stack);
72
- }
73
- if (error.codeFrame) {
74
- // @ts-ignore
75
- this.codeFrame = error.codeFrame;
76
- }
77
- if (error.code) {
78
- // @ts-ignore
79
- this.code = error.code;
80
- }
81
- }
82
- }
83
-
84
29
  class AssertionError extends Error {
85
30
  constructor(message) {
86
31
  super(message);
@@ -142,6 +87,147 @@ const string = value => {
142
87
  }
143
88
  };
144
89
 
90
+ const serializeError = error => {
91
+ if (error && typeof error === 'object') {
92
+ return {
93
+ errorCode: 'code' in error && typeof error.code === 'string' ? error.code : undefined,
94
+ errorMessage: 'message' in error && typeof error.message === 'string' ? error.message : 'Unknown error',
95
+ errorStack: 'stack' in error && typeof error.stack === 'string' ? error.stack : undefined
96
+ };
97
+ }
98
+ if (typeof error === 'string') {
99
+ return {
100
+ errorCode: undefined,
101
+ errorMessage: error,
102
+ errorStack: undefined
103
+ };
104
+ }
105
+ return {
106
+ errorCode: undefined,
107
+ errorMessage: 'Unknown error',
108
+ errorStack: undefined
109
+ };
110
+ };
111
+
112
+ const toPath$1 = pathOrUri => {
113
+ if (pathOrUri.startsWith('file://')) {
114
+ return fileURLToPath(pathOrUri);
115
+ }
116
+ return pathOrUri;
117
+ };
118
+ const toString = chunks => {
119
+ return Buffer.concat(chunks).toString();
120
+ };
121
+ const executeShellCommand = async ({
122
+ args,
123
+ cwd,
124
+ toSpawn
125
+ }) => {
126
+ array(args);
127
+ string(cwd);
128
+ string(toSpawn);
129
+ try {
130
+ const {
131
+ promise,
132
+ resolve
133
+ } = Promise.withResolvers();
134
+ const childProcess = spawn(toSpawn, args, {
135
+ cwd: toPath$1(cwd)
136
+ });
137
+ const stdoutChunks = [];
138
+ const stderrChunks = [];
139
+ const handleStdoutData = chunk => {
140
+ stdoutChunks.push(chunk);
141
+ };
142
+ const handleStderrData = chunk => {
143
+ stderrChunks.push(chunk);
144
+ };
145
+ const cleanup = () => {
146
+ childProcess.stdout.off('data', handleStdoutData);
147
+ childProcess.stderr.off('data', handleStderrData);
148
+ childProcess.off('error', handleError);
149
+ childProcess.off('close', handleClose);
150
+ };
151
+ const resolveWithCleanup = result => {
152
+ cleanup();
153
+ resolve(result);
154
+ };
155
+ const handleError = error => {
156
+ resolveWithCleanup(serializeError(error));
157
+ };
158
+ const handleClose = exitCode => {
159
+ resolveWithCleanup({
160
+ exitCode,
161
+ stderr: toString(stderrChunks),
162
+ stdout: toString(stdoutChunks)
163
+ });
164
+ };
165
+ childProcess.stdout.on('data', handleStdoutData);
166
+ childProcess.stderr.on('data', handleStderrData);
167
+ childProcess.on('error', handleError);
168
+ childProcess.on('close', handleClose);
169
+ return await promise;
170
+ } catch (error) {
171
+ return serializeError(error);
172
+ }
173
+ };
174
+
175
+ const normalizeLine = line => {
176
+ if (line.startsWith('Error: ')) {
177
+ return line.slice('Error: '.length);
178
+ }
179
+ if (line.startsWith('VError: ')) {
180
+ return line.slice('VError: '.length);
181
+ }
182
+ return line;
183
+ };
184
+ const getCombinedMessage = (error, message) => {
185
+ const stringifiedError = normalizeLine(`${error}`);
186
+ if (message) {
187
+ return `${message}: ${stringifiedError}`;
188
+ }
189
+ return stringifiedError;
190
+ };
191
+ const NewLine$4 = '\n';
192
+ const getNewLineIndex$2 = (string, startIndex = undefined) => {
193
+ return string.indexOf(NewLine$4, startIndex);
194
+ };
195
+ const mergeStacks = (parent, child) => {
196
+ if (!child) {
197
+ return parent;
198
+ }
199
+ const parentNewLineIndex = getNewLineIndex$2(parent);
200
+ const childNewLineIndex = getNewLineIndex$2(child);
201
+ if (childNewLineIndex === -1) {
202
+ return parent;
203
+ }
204
+ const parentFirstLine = parent.slice(0, parentNewLineIndex);
205
+ const childRest = child.slice(childNewLineIndex);
206
+ const childFirstLine = normalizeLine(child.slice(0, childNewLineIndex));
207
+ if (parentFirstLine.includes(childFirstLine)) {
208
+ return parentFirstLine + childRest;
209
+ }
210
+ return child;
211
+ };
212
+ class VError extends Error {
213
+ constructor(error, message) {
214
+ const combinedMessage = getCombinedMessage(error, message);
215
+ super(combinedMessage);
216
+ this.name = 'VError';
217
+ if (error instanceof Error) {
218
+ this.stack = mergeStacks(this.stack, error.stack);
219
+ }
220
+ if (error.codeFrame) {
221
+ // @ts-ignore
222
+ this.codeFrame = error.codeFrame;
223
+ }
224
+ if (error.code) {
225
+ // @ts-ignore
226
+ this.code = error.code;
227
+ }
228
+ }
229
+ }
230
+
145
231
  const isMessagePort = value => {
146
232
  return value && value instanceof MessagePort;
147
233
  };
@@ -319,8 +405,8 @@ const getModuleNotFoundError = stderr => {
319
405
  const messageIndex = lines.findIndex(isModuleNotFoundMessage);
320
406
  const message = lines[messageIndex];
321
407
  return {
322
- message,
323
- code: ERR_MODULE_NOT_FOUND$1
408
+ code: ERR_MODULE_NOT_FOUND$1,
409
+ message
324
410
  };
325
411
  };
326
412
  const isModuleNotFoundError = stderr => {
@@ -343,14 +429,14 @@ const isUnhelpfulNativeModuleError = stderr => {
343
429
  const getNativeModuleErrorMessage = stderr => {
344
430
  const message = getMessageCodeBlock(stderr);
345
431
  return {
346
- message: `Incompatible native node module: ${message}`,
347
- code: E_INCOMPATIBLE_NATIVE_MODULE
432
+ code: E_INCOMPATIBLE_NATIVE_MODULE,
433
+ message: `Incompatible native node module: ${message}`
348
434
  };
349
435
  };
350
436
  const getModuleSyntaxError = () => {
351
437
  return {
352
- message: `ES Modules are not supported in electron`,
353
- code: E_MODULES_NOT_SUPPORTED_IN_ELECTRON
438
+ code: E_MODULES_NOT_SUPPORTED_IN_ELECTRON,
439
+ message: `ES Modules are not supported in electron`
354
440
  };
355
441
  };
356
442
  const getHelpfulChildProcessError = (stdout, stderr) => {
@@ -369,8 +455,8 @@ const getHelpfulChildProcessError = (stdout, stderr) => {
369
455
  rest
370
456
  } = getDetails$1(lines);
371
457
  return {
372
- message: actualMessage,
373
458
  code: '',
459
+ message: actualMessage,
374
460
  stack: rest
375
461
  };
376
462
  };
@@ -380,8 +466,8 @@ class IpcError extends VError {
380
466
  if (stdout || stderr) {
381
467
  // @ts-ignore
382
468
  const {
383
- message,
384
469
  code,
470
+ message,
385
471
  stack
386
472
  } = getHelpfulChildProcessError(stdout, stderr);
387
473
  const cause = new Error(message);
@@ -577,8 +663,8 @@ const removeListener = (emitter, type, callback) => {
577
663
  };
578
664
  const getFirstEvent = (eventEmitter, eventMap) => {
579
665
  const {
580
- resolve,
581
- promise
666
+ promise,
667
+ resolve
582
668
  } = Promise.withResolvers();
583
669
  const listenerMap = Object.create(null);
584
670
  const cleanup = value => {
@@ -590,8 +676,8 @@ const getFirstEvent = (eventEmitter, eventMap) => {
590
676
  for (const [event, type] of Object.entries(eventMap)) {
591
677
  const listener = event => {
592
678
  cleanup({
593
- type,
594
- event
679
+ event,
680
+ type
595
681
  });
596
682
  };
597
683
  addListener(eventEmitter, event, listener);
@@ -607,28 +693,28 @@ const getFirstWebSocketEvent = async webSocket => {
607
693
  WebSocket
608
694
  } = await import('ws');
609
695
  switch (webSocket.readyState) {
610
- case WebSocket.OPEN:
696
+ case WebSocket.CLOSED:
611
697
  return {
612
- type: Open,
613
- event: undefined
698
+ event: undefined,
699
+ type: Close
614
700
  };
615
- case WebSocket.CLOSED:
701
+ case WebSocket.OPEN:
616
702
  return {
617
- type: Close,
618
- event: undefined
703
+ event: undefined,
704
+ type: Open
619
705
  };
620
706
  }
621
707
  // @ts-ignore
622
708
  const {
623
- type,
624
- event
709
+ event,
710
+ type
625
711
  } = await getFirstEvent(webSocket, {
626
- open: Open,
627
- close: Close
712
+ close: Close,
713
+ open: Open
628
714
  });
629
715
  return {
630
- type,
631
- event
716
+ event,
717
+ type
632
718
  };
633
719
  };
634
720
 
@@ -658,8 +744,8 @@ const handleUpgrade$1 = async (...args) => {
658
744
  return module.handleUpgrade(...args);
659
745
  };
660
746
  const listen$1$1 = async ({
661
- request,
662
- handle
747
+ handle,
748
+ request
663
749
  }) => {
664
750
  if (!request) {
665
751
  throw new IpcError('request must be defined');
@@ -679,14 +765,19 @@ const signal$4 = webSocket => {
679
765
  };
680
766
  const wrap$9 = webSocket => {
681
767
  return {
682
- webSocket,
683
- /**
684
- * @type {any}
685
- */
686
- wrappedListener: undefined,
768
+ dispose() {
769
+ this.webSocket.close();
770
+ },
771
+ // @ts-ignore
772
+ off(event, listener) {
773
+ this.webSocket.off(event, listener);
774
+ },
687
775
  // @ts-ignore
688
776
  on(event, listener) {
689
777
  switch (event) {
778
+ case 'close':
779
+ webSocket.on('close', listener);
780
+ break;
690
781
  case 'message':
691
782
  // @ts-ignore
692
783
  const wrappedListener = message => {
@@ -699,28 +790,23 @@ const wrap$9 = webSocket => {
699
790
  };
700
791
  webSocket.on('message', wrappedListener);
701
792
  break;
702
- case 'close':
703
- webSocket.on('close', listener);
704
- break;
705
793
  default:
706
794
  throw new Error('unknown event listener type');
707
795
  }
708
796
  },
709
797
  // @ts-ignore
710
- off(event, listener) {
711
- this.webSocket.off(event, listener);
712
- },
713
- // @ts-ignore
714
798
  send(message) {
715
799
  const stringifiedMessage = serialize(message);
716
800
  this.webSocket.send(stringifiedMessage);
717
801
  },
718
- dispose() {
719
- this.webSocket.close();
720
- },
721
802
  start() {
722
803
  throw new Error('start method is deprecated');
723
- }
804
+ },
805
+ webSocket,
806
+ /**
807
+ * @type {any}
808
+ */
809
+ wrappedListener: undefined
724
810
  };
725
811
  };
726
812
  const IpcChildWithWebSocket = {
@@ -730,56 +816,14 @@ const IpcChildWithWebSocket = {
730
816
  wrap: wrap$9
731
817
  };
732
818
 
733
- const Two = '2.0';
734
- const create$4 = (method, params) => {
735
- return {
736
- jsonrpc: Two,
737
- method,
738
- params
739
- };
740
- };
819
+ const Two$1 = '2.0';
741
820
  const callbacks = Object.create(null);
742
- const set$1 = (id, fn) => {
743
- callbacks[id] = fn;
744
- };
745
821
  const get$1 = id => {
746
822
  return callbacks[id];
747
823
  };
748
824
  const remove$1 = id => {
749
825
  delete callbacks[id];
750
826
  };
751
- let id = 0;
752
- const create$3 = () => {
753
- return ++id;
754
- };
755
- const registerPromise = () => {
756
- const id = create$3();
757
- const {
758
- resolve,
759
- promise
760
- } = Promise.withResolvers();
761
- set$1(id, resolve);
762
- return {
763
- id,
764
- promise
765
- };
766
- };
767
- const create$2 = (method, params) => {
768
- const {
769
- id,
770
- promise
771
- } = registerPromise();
772
- const message = {
773
- jsonrpc: Two,
774
- method,
775
- params,
776
- id
777
- };
778
- return {
779
- message,
780
- promise
781
- };
782
- };
783
827
  class JsonRpcError extends Error {
784
828
  constructor(message) {
785
829
  super(message);
@@ -796,12 +840,12 @@ const getErrorConstructor = (message, type) => {
796
840
  switch (type) {
797
841
  case DomException:
798
842
  return DOMException;
799
- case TypeError$1:
800
- return TypeError;
801
- case SyntaxError$1:
802
- return SyntaxError;
803
843
  case ReferenceError$1:
804
844
  return ReferenceError;
845
+ case SyntaxError$1:
846
+ return SyntaxError;
847
+ case TypeError$1:
848
+ return TypeError;
805
849
  default:
806
850
  return Error;
807
851
  }
@@ -957,27 +1001,27 @@ const getErrorProperty = (error, prettyError) => {
957
1001
  if (error && error.code === E_COMMAND_NOT_FOUND) {
958
1002
  return {
959
1003
  code: MethodNotFound,
960
- message: error.message,
961
- data: error.stack
1004
+ data: error.stack,
1005
+ message: error.message
962
1006
  };
963
1007
  }
964
1008
  return {
965
1009
  code: Custom,
966
- message: prettyError.message,
967
1010
  data: {
968
- stack: getStack(prettyError),
969
- codeFrame: prettyError.codeFrame,
970
- type: getErrorType(prettyError),
971
1011
  code: prettyError.code,
972
- name: prettyError.name
973
- }
1012
+ codeFrame: prettyError.codeFrame,
1013
+ name: prettyError.name,
1014
+ stack: getStack(prettyError),
1015
+ type: getErrorType(prettyError)
1016
+ },
1017
+ message: prettyError.message
974
1018
  };
975
1019
  };
976
1020
  const create$1$1 = (id, error) => {
977
1021
  return {
978
- jsonrpc: Two,
1022
+ error,
979
1023
  id,
980
- error
1024
+ jsonrpc: Two$1
981
1025
  };
982
1026
  };
983
1027
  const getErrorResponse = (id, error, preparePrettyError, logError) => {
@@ -986,27 +1030,27 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
986
1030
  const errorProperty = getErrorProperty(error, prettyError);
987
1031
  return create$1$1(id, errorProperty);
988
1032
  };
989
- const create$5 = (message, result) => {
1033
+ const create$9 = (message, result) => {
990
1034
  return {
991
- jsonrpc: Two,
992
1035
  id: message.id,
1036
+ jsonrpc: Two$1,
993
1037
  result: result ?? null
994
1038
  };
995
1039
  };
996
1040
  const getSuccessResponse = (message, result) => {
997
1041
  const resultProperty = result ?? null;
998
- return create$5(message, resultProperty);
1042
+ return create$9(message, resultProperty);
999
1043
  };
1000
1044
  const getErrorResponseSimple = (id, error) => {
1001
1045
  return {
1002
- jsonrpc: Two,
1003
- id,
1004
1046
  error: {
1005
1047
  code: Custom,
1048
+ data: error,
1006
1049
  // @ts-ignore
1007
- message: error.message,
1008
- data: error
1009
- }
1050
+ message: error.message
1051
+ },
1052
+ id,
1053
+ jsonrpc: Two$1
1010
1054
  };
1011
1055
  };
1012
1056
  const getResponse = async (message, ipc, execute, preparePrettyError, logError, requiresSocket) => {
@@ -1036,35 +1080,35 @@ const normalizeParams = args => {
1036
1080
  if (args.length === 1) {
1037
1081
  const options = args[0];
1038
1082
  return {
1083
+ execute: options.execute,
1039
1084
  ipc: options.ipc,
1085
+ logError: options.logError || defaultLogError,
1040
1086
  message: options.message,
1041
- execute: options.execute,
1042
- resolve: options.resolve || defaultResolve,
1043
1087
  preparePrettyError: options.preparePrettyError || defaultPreparePrettyError,
1044
- logError: options.logError || defaultLogError,
1045
- requiresSocket: options.requiresSocket || defaultRequiresSocket
1088
+ requiresSocket: options.requiresSocket || defaultRequiresSocket,
1089
+ resolve: options.resolve || defaultResolve
1046
1090
  };
1047
1091
  }
1048
1092
  return {
1093
+ execute: args[2],
1049
1094
  ipc: args[0],
1095
+ logError: args[5],
1050
1096
  message: args[1],
1051
- execute: args[2],
1052
- resolve: args[3],
1053
1097
  preparePrettyError: args[4],
1054
- logError: args[5],
1055
- requiresSocket: args[6]
1098
+ requiresSocket: args[6],
1099
+ resolve: args[3]
1056
1100
  };
1057
1101
  };
1058
1102
  const handleJsonRpcMessage = async (...args) => {
1059
1103
  const options = normalizeParams(args);
1060
1104
  const {
1061
- message,
1062
- ipc,
1063
1105
  execute,
1064
- resolve,
1065
- preparePrettyError,
1106
+ ipc,
1066
1107
  logError,
1067
- requiresSocket
1108
+ message,
1109
+ preparePrettyError,
1110
+ requiresSocket,
1111
+ resolve
1068
1112
  } = options;
1069
1113
  if ('id' in message) {
1070
1114
  if ('method' in message) {
@@ -1086,11 +1130,51 @@ const handleJsonRpcMessage = async (...args) => {
1086
1130
  }
1087
1131
  throw new JsonRpcError('unexpected message');
1088
1132
  };
1089
- const invokeHelper = async (ipc, method, params, useSendAndTransfer) => {
1133
+
1134
+ const Two = '2.0';
1135
+
1136
+ const create$8 = (method, params) => {
1137
+ return {
1138
+ jsonrpc: Two,
1139
+ method,
1140
+ params
1141
+ };
1142
+ };
1143
+
1144
+ const create$7 = (id, method, params) => {
1145
+ const message = {
1146
+ id,
1147
+ jsonrpc: Two,
1148
+ method,
1149
+ params
1150
+ };
1151
+ return message;
1152
+ };
1153
+
1154
+ let id = 0;
1155
+ const create$6 = () => {
1156
+ return ++id;
1157
+ };
1158
+
1159
+ const registerPromise = map => {
1160
+ const id = create$6();
1090
1161
  const {
1091
- message,
1162
+ promise,
1163
+ resolve
1164
+ } = Promise.withResolvers();
1165
+ map[id] = resolve;
1166
+ return {
1167
+ id,
1092
1168
  promise
1093
- } = create$2(method, params);
1169
+ };
1170
+ };
1171
+
1172
+ const invokeHelper = async (callbacks, ipc, method, params, useSendAndTransfer) => {
1173
+ const {
1174
+ id,
1175
+ promise
1176
+ } = registerPromise(callbacks);
1177
+ const message = create$7(id, method, params);
1094
1178
  if (useSendAndTransfer && ipc.sendAndTransfer) {
1095
1179
  ipc.sendAndTransfer(message);
1096
1180
  } else {
@@ -1099,39 +1183,40 @@ const invokeHelper = async (ipc, method, params, useSendAndTransfer) => {
1099
1183
  const responseMessage = await promise;
1100
1184
  return unwrapJsonRpcResult(responseMessage);
1101
1185
  };
1102
- const send = (transport, method, ...params) => {
1103
- const message = create$4(method, params);
1104
- transport.send(message);
1105
- };
1106
- const invoke = (ipc, method, ...params) => {
1107
- return invokeHelper(ipc, method, params, false);
1108
- };
1109
- const invokeAndTransfer = (ipc, method, ...params) => {
1110
- return invokeHelper(ipc, method, params, true);
1111
- };
1112
-
1113
1186
  const createRpc = ipc => {
1187
+ const callbacks = Object.create(null);
1188
+ ipc._resolve = (id, response) => {
1189
+ const fn = callbacks[id];
1190
+ if (!fn) {
1191
+ console.warn(`callback ${id} may already be disposed`);
1192
+ return;
1193
+ }
1194
+ fn(response);
1195
+ delete callbacks[id];
1196
+ };
1114
1197
  const rpc = {
1198
+ async dispose() {
1199
+ await ipc?.dispose();
1200
+ },
1201
+ invoke(method, ...params) {
1202
+ return invokeHelper(callbacks, ipc, method, params, false);
1203
+ },
1204
+ invokeAndTransfer(method, ...params) {
1205
+ return invokeHelper(callbacks, ipc, method, params, true);
1206
+ },
1115
1207
  // @ts-ignore
1116
1208
  ipc,
1117
1209
  /**
1118
1210
  * @deprecated
1119
1211
  */
1120
1212
  send(method, ...params) {
1121
- send(ipc, method, ...params);
1122
- },
1123
- invoke(method, ...params) {
1124
- return invoke(ipc, method, ...params);
1125
- },
1126
- invokeAndTransfer(method, ...params) {
1127
- return invokeAndTransfer(ipc, method, ...params);
1128
- },
1129
- async dispose() {
1130
- await ipc?.dispose();
1213
+ const message = create$8(method, params);
1214
+ ipc.send(message);
1131
1215
  }
1132
1216
  };
1133
1217
  return rpc;
1134
1218
  };
1219
+
1135
1220
  const requiresSocket$1 = () => {
1136
1221
  return false;
1137
1222
  };
@@ -1144,8 +1229,9 @@ const logError = () => {
1144
1229
  const handleMessage = event => {
1145
1230
  const actualRequiresSocket = event?.target?.requiresSocket || requiresSocket$1;
1146
1231
  const actualExecute = event?.target?.execute || execute;
1147
- return handleJsonRpcMessage(event.target, event.data, actualExecute, resolve, preparePrettyError, logError, actualRequiresSocket);
1232
+ return handleJsonRpcMessage(event.target, event.data, actualExecute, event.target._resolve, preparePrettyError, logError, actualRequiresSocket);
1148
1233
  };
1234
+
1149
1235
  const handleIpc = ipc => {
1150
1236
  if ('addEventListener' in ipc) {
1151
1237
  ipc.addEventListener('message', handleMessage);
@@ -1154,6 +1240,7 @@ const handleIpc = ipc => {
1154
1240
  ipc.on('message', handleMessage);
1155
1241
  }
1156
1242
  };
1243
+
1157
1244
  const listen$2 = async (module, options) => {
1158
1245
  const rawIpc = await module.listen(options);
1159
1246
  if (module.signal) {
@@ -1162,7 +1249,8 @@ const listen$2 = async (module, options) => {
1162
1249
  const ipc = module.wrap(rawIpc);
1163
1250
  return ipc;
1164
1251
  };
1165
- const create$k = async ({
1252
+
1253
+ const create$5 = async ({
1166
1254
  commandMap,
1167
1255
  messagePort,
1168
1256
  requiresSocket
@@ -1179,11 +1267,13 @@ const create$k = async ({
1179
1267
  const rpc = createRpc(ipc);
1180
1268
  return rpc;
1181
1269
  };
1270
+
1182
1271
  const ElectronMessagePortRpcClient = {
1183
1272
  __proto__: null,
1184
- create: create$k
1273
+ create: create$5
1185
1274
  };
1186
- const create$j = async ({
1275
+
1276
+ const create$4 = async ({
1187
1277
  commandMap
1188
1278
  }) => {
1189
1279
  // TODO create a commandMap per rpc instance
@@ -1193,11 +1283,13 @@ const create$j = async ({
1193
1283
  const rpc = createRpc(ipc);
1194
1284
  return rpc;
1195
1285
  };
1286
+
1196
1287
  const ElectronUtilityProcessRpcClient = {
1197
1288
  __proto__: null,
1198
- create: create$j
1289
+ create: create$4
1199
1290
  };
1200
- const create$a = async ({
1291
+
1292
+ const create$3 = async ({
1201
1293
  commandMap
1202
1294
  }) => {
1203
1295
  // TODO create a commandMap per rpc instance
@@ -1207,21 +1299,23 @@ const create$a = async ({
1207
1299
  const rpc = createRpc(ipc);
1208
1300
  return rpc;
1209
1301
  };
1302
+
1210
1303
  const NodeForkedProcessRpcClient = {
1211
1304
  __proto__: null,
1212
- create: create$a
1305
+ create: create$3
1213
1306
  };
1214
- const create$8 = async ({
1307
+
1308
+ const create$2 = async ({
1215
1309
  commandMap,
1216
- request,
1217
1310
  handle,
1311
+ request,
1218
1312
  requiresSocket
1219
1313
  }) => {
1220
1314
  // TODO create a commandMap per rpc instance
1221
1315
  register(commandMap);
1222
1316
  const ipc = await listen$2(IpcChildWithWebSocket, {
1223
- request,
1224
- handle
1317
+ handle,
1318
+ request
1225
1319
  });
1226
1320
  if (requiresSocket) {
1227
1321
  ipc.requiresSocket = requiresSocket;
@@ -1230,9 +1324,10 @@ const create$8 = async ({
1230
1324
  const rpc = createRpc(ipc);
1231
1325
  return rpc;
1232
1326
  };
1327
+
1233
1328
  const NodeWebSocketRpcClient = {
1234
1329
  __proto__: null,
1235
- create: create$8
1330
+ create: create$2
1236
1331
  };
1237
1332
 
1238
1333
  const METHODS_THAT_REQUIRE_SOCKET = new Set(['Terminal.create']);
@@ -1242,7 +1337,7 @@ const requiresSocket = method => {
1242
1337
 
1243
1338
  const handleElectronMessagePort = async messagePort => {
1244
1339
  object(messagePort);
1245
- await ElectronMessagePortRpcClient.create({
1340
+ await create$5({
1246
1341
  commandMap: {},
1247
1342
  messagePort,
1248
1343
  requiresSocket: requiresSocket
@@ -1309,7 +1404,7 @@ const handleNodeMessagePort = async messagePort => {
1309
1404
  const handleWebSocket = async (handle, request) => {
1310
1405
  object(handle);
1311
1406
  object(request);
1312
- await NodeWebSocketRpcClient.create({
1407
+ await create$2({
1313
1408
  commandMap: {},
1314
1409
  handle,
1315
1410
  request,
@@ -1459,6 +1554,7 @@ const HandleElectronMessagePort = 'HandleElectronMessagePort.handleElectronMessa
1459
1554
  const HandleNodeMessagePort = 'HandleNodeMessagePort.handleNodeMessagePort';
1460
1555
  const HandleWebSocket = 'HandleWebSocket.handleWebSocket';
1461
1556
  const TerminalCreate = 'Terminal.create';
1557
+ const TerminalExecuteShellCommand = 'Terminal.executeShellCommand';
1462
1558
  const TerminalResize = 'Terminal.resize';
1463
1559
  const TerminalWrite = 'Terminal.write';
1464
1560
  const TerminalDispose = 'Terminal.dispose';
@@ -1469,6 +1565,7 @@ const commandMap = {
1469
1565
  [HandleWebSocket]: handleWebSocket,
1470
1566
  [TerminalCreate]: create,
1471
1567
  [TerminalDispose]: dispose,
1568
+ [TerminalExecuteShellCommand]: executeShellCommand,
1472
1569
  [TerminalResize]: resize,
1473
1570
  [TerminalWrite]: write
1474
1571
  };
@@ -1672,13 +1769,13 @@ function requireIdentifier () {
1672
1769
  identifier.isIdentifierChar = isIdentifierChar;
1673
1770
  identifier.isIdentifierName = isIdentifierName;
1674
1771
  identifier.isIdentifierStart = isIdentifierStart;
1675
- let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
1676
- let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
1772
+ let nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088f\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5c\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdc-\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7dc\ua7f1-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc";
1773
+ let nonASCIIidentifierChars = "\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1add\u1ae0-\u1aeb\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65";
1677
1774
  const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
1678
1775
  const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
1679
1776
  nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
1680
- const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 2, 60, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 42, 9, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 496, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 4191];
1681
- const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 80, 3, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 343, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 726, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
1777
+ const astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 4, 51, 13, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 7, 25, 39, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 39, 27, 10, 22, 251, 41, 7, 1, 17, 5, 57, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 31, 9, 2, 0, 3, 0, 2, 37, 2, 0, 26, 0, 2, 0, 45, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 200, 32, 32, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 24, 43, 261, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 26, 3994, 6, 582, 6842, 29, 1763, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 433, 44, 212, 63, 33, 24, 3, 24, 45, 74, 6, 0, 67, 12, 65, 1, 2, 0, 15, 4, 10, 7381, 42, 31, 98, 114, 8702, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 229, 29, 3, 0, 208, 30, 2, 2, 2, 1, 2, 6, 3, 4, 10, 1, 225, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4381, 3, 5773, 3, 7472, 16, 621, 2467, 541, 1507, 4938, 6, 8489];
1778
+ const astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 7, 9, 32, 4, 318, 1, 78, 5, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 68, 8, 2, 0, 3, 0, 2, 3, 2, 4, 2, 0, 15, 1, 83, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 7, 19, 58, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 199, 7, 137, 9, 54, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 55, 9, 266, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 10, 5350, 0, 7, 14, 11465, 27, 2343, 9, 87, 9, 39, 4, 60, 6, 26, 9, 535, 9, 470, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4178, 9, 519, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 245, 1, 2, 9, 233, 0, 3, 0, 8, 1, 6, 0, 475, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
1682
1779
  function isInAstralSet(code, set) {
1683
1780
  let pos = 0x10000;
1684
1781
  for (let i = 0, length = set.length; i < length; i += 2) {
@@ -1883,39 +1980,39 @@ function requireLib () {
1883
1980
  const NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/;
1884
1981
  const BRACKET = /^[()[\]{}]$/;
1885
1982
  let tokenize;
1886
- {
1887
- const JSX_TAG = /^[a-z][\w-]*$/i;
1888
- const getTokenType = function (token, offset, text) {
1889
- if (token.type === "name") {
1890
- if (helperValidatorIdentifier.isKeyword(token.value) || helperValidatorIdentifier.isStrictReservedWord(token.value, true) || sometimesKeywords.has(token.value)) {
1891
- return "keyword";
1892
- }
1893
- if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) {
1894
- return "jsxIdentifier";
1895
- }
1896
- if (token.value[0] !== token.value[0].toLowerCase()) {
1897
- return "capitalized";
1898
- }
1983
+ const JSX_TAG = /^[a-z][\w-]*$/i;
1984
+ const getTokenType = function (token, offset, text) {
1985
+ if (token.type === "name") {
1986
+ const tokenValue = token.value;
1987
+ if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {
1988
+ return "keyword";
1899
1989
  }
1900
- if (token.type === "punctuator" && BRACKET.test(token.value)) {
1901
- return "bracket";
1990
+ if (JSX_TAG.test(tokenValue) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) {
1991
+ return "jsxIdentifier";
1902
1992
  }
1903
- if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
1904
- return "punctuator";
1993
+ const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));
1994
+ if (firstChar !== firstChar.toLowerCase()) {
1995
+ return "capitalized";
1905
1996
  }
1906
- return token.type;
1907
- };
1908
- tokenize = function* (text) {
1909
- let match;
1910
- while (match = jsTokens.default.exec(text)) {
1911
- const token = jsTokens.matchToToken(match);
1912
- yield {
1913
- type: getTokenType(token, match.index, text),
1914
- value: token.value
1915
- };
1916
- }
1917
- };
1918
- }
1997
+ }
1998
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
1999
+ return "bracket";
2000
+ }
2001
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
2002
+ return "punctuator";
2003
+ }
2004
+ return token.type;
2005
+ };
2006
+ tokenize = function* (text) {
2007
+ let match;
2008
+ while (match = jsTokens.default.exec(text)) {
2009
+ const token = jsTokens.matchToToken(match);
2010
+ yield {
2011
+ type: getTokenType(token, match.index, text),
2012
+ value: token.value
2013
+ };
2014
+ }
2015
+ };
1919
2016
  function highlight(text) {
1920
2017
  if (text === "") return "";
1921
2018
  const defs = getDefs(true);
@@ -1934,7 +2031,7 @@ function requireLib () {
1934
2031
  }
1935
2032
  let deprecationWarningShown = false;
1936
2033
  const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
1937
- function getMarkerLines(loc, source, opts) {
2034
+ function getMarkerLines(loc, source, opts, startLineBaseZero) {
1938
2035
  const startLoc = Object.assign({
1939
2036
  column: 0,
1940
2037
  line: -1
@@ -1944,9 +2041,9 @@ function requireLib () {
1944
2041
  linesAbove = 2,
1945
2042
  linesBelow = 3
1946
2043
  } = opts || {};
1947
- const startLine = startLoc.line;
2044
+ const startLine = startLoc.line - startLineBaseZero;
1948
2045
  const startColumn = startLoc.column;
1949
- const endLine = endLoc.line;
2046
+ const endLine = endLoc.line - startLineBaseZero;
1950
2047
  const endColumn = endLoc.column;
1951
2048
  let start = Math.max(startLine - (linesAbove + 1), 0);
1952
2049
  let end = Math.min(source.length, endLine + linesBelow);
@@ -1992,19 +2089,20 @@ function requireLib () {
1992
2089
  }
1993
2090
  function codeFrameColumns(rawLines, loc, opts = {}) {
1994
2091
  const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;
2092
+ const startLineBaseZero = (opts.startLine || 1) - 1;
1995
2093
  const defs = getDefs(shouldHighlight);
1996
2094
  const lines = rawLines.split(NEWLINE);
1997
2095
  const {
1998
2096
  start,
1999
2097
  end,
2000
2098
  markerLines
2001
- } = getMarkerLines(loc, lines, opts);
2099
+ } = getMarkerLines(loc, lines, opts, startLineBaseZero);
2002
2100
  const hasColumns = loc.start && typeof loc.start.column === "number";
2003
- const numberMaxWidth = String(end).length;
2101
+ const numberMaxWidth = String(end + startLineBaseZero).length;
2004
2102
  const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;
2005
2103
  let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
2006
2104
  const number = start + 1 + index;
2007
- const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
2105
+ const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);
2008
2106
  const gutter = ` ${paddedNumber} |`;
2009
2107
  const hasMarker = markerLines[number];
2010
2108
  const lastMarkerLine = !markerLines[number + 1];
@@ -2321,7 +2419,7 @@ const doSocketUpgrade = (webSocketServer, request, socket) => {
2321
2419
  promise,
2322
2420
  resolve
2323
2421
  } = Promise.withResolvers();
2324
- webSocketServer.handleUpgrade(request, socket, Buffer.alloc(0), resolve);
2422
+ webSocketServer.handleUpgrade(request, socket, Buffer$1.alloc(0), resolve);
2325
2423
  return promise;
2326
2424
  };
2327
2425
  const handleUpgrade = async (request, socket) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/pty-host",
3
- "version": "7.1.0",
3
+ "version": "8.1.0",
4
4
  "keywords": [
5
5
  "lvce-editor",
6
6
  "pty-host"
@@ -16,6 +16,6 @@
16
16
  "bin": "bin/ptyHost.js",
17
17
  "dependencies": {},
18
18
  "optionalDependencies": {
19
- "node-pty": "^1.1.0-beta34"
19
+ "node-pty": "1.1.0-beta34"
20
20
  }
21
21
  }