@lvce-editor/pty-host 8.0.0 → 8.2.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 +223 -221
  2. package/package.json +2 -2
@@ -36,7 +36,7 @@ const Object$1 = 1;
36
36
  const Number$1 = 2;
37
37
  const Array$1 = 3;
38
38
  const String$1 = 4;
39
- const Boolean = 5;
39
+ const Boolean$1 = 5;
40
40
  const Function = 6;
41
41
  const Null = 7;
42
42
  const Unknown = 8;
@@ -57,7 +57,7 @@ const getType = value => {
57
57
  }
58
58
  return Object$1;
59
59
  case 'boolean':
60
- return Boolean;
60
+ return Boolean$1;
61
61
  default:
62
62
  return Unknown;
63
63
  }
@@ -405,8 +405,8 @@ const getModuleNotFoundError = stderr => {
405
405
  const messageIndex = lines.findIndex(isModuleNotFoundMessage);
406
406
  const message = lines[messageIndex];
407
407
  return {
408
- message,
409
- code: ERR_MODULE_NOT_FOUND$1
408
+ code: ERR_MODULE_NOT_FOUND$1,
409
+ message
410
410
  };
411
411
  };
412
412
  const isModuleNotFoundError = stderr => {
@@ -429,14 +429,14 @@ const isUnhelpfulNativeModuleError = stderr => {
429
429
  const getNativeModuleErrorMessage = stderr => {
430
430
  const message = getMessageCodeBlock(stderr);
431
431
  return {
432
- message: `Incompatible native node module: ${message}`,
433
- code: E_INCOMPATIBLE_NATIVE_MODULE
432
+ code: E_INCOMPATIBLE_NATIVE_MODULE,
433
+ message: `Incompatible native node module: ${message}`
434
434
  };
435
435
  };
436
436
  const getModuleSyntaxError = () => {
437
437
  return {
438
- message: `ES Modules are not supported in electron`,
439
- code: E_MODULES_NOT_SUPPORTED_IN_ELECTRON
438
+ code: E_MODULES_NOT_SUPPORTED_IN_ELECTRON,
439
+ message: `ES Modules are not supported in electron`
440
440
  };
441
441
  };
442
442
  const getHelpfulChildProcessError = (stdout, stderr) => {
@@ -455,8 +455,8 @@ const getHelpfulChildProcessError = (stdout, stderr) => {
455
455
  rest
456
456
  } = getDetails$1(lines);
457
457
  return {
458
- message: actualMessage,
459
458
  code: '',
459
+ message: actualMessage,
460
460
  stack: rest
461
461
  };
462
462
  };
@@ -466,8 +466,8 @@ class IpcError extends VError {
466
466
  if (stdout || stderr) {
467
467
  // @ts-ignore
468
468
  const {
469
- message,
470
469
  code,
470
+ message,
471
471
  stack
472
472
  } = getHelpfulChildProcessError(stdout, stderr);
473
473
  const cause = new Error(message);
@@ -663,8 +663,8 @@ const removeListener = (emitter, type, callback) => {
663
663
  };
664
664
  const getFirstEvent = (eventEmitter, eventMap) => {
665
665
  const {
666
- resolve,
667
- promise
666
+ promise,
667
+ resolve
668
668
  } = Promise.withResolvers();
669
669
  const listenerMap = Object.create(null);
670
670
  const cleanup = value => {
@@ -676,8 +676,8 @@ const getFirstEvent = (eventEmitter, eventMap) => {
676
676
  for (const [event, type] of Object.entries(eventMap)) {
677
677
  const listener = event => {
678
678
  cleanup({
679
- type,
680
- event
679
+ event,
680
+ type
681
681
  });
682
682
  };
683
683
  addListener(eventEmitter, event, listener);
@@ -693,28 +693,28 @@ const getFirstWebSocketEvent = async webSocket => {
693
693
  WebSocket
694
694
  } = await import('ws');
695
695
  switch (webSocket.readyState) {
696
- case WebSocket.OPEN:
696
+ case WebSocket.CLOSED:
697
697
  return {
698
- type: Open,
699
- event: undefined
698
+ event: undefined,
699
+ type: Close
700
700
  };
701
- case WebSocket.CLOSED:
701
+ case WebSocket.OPEN:
702
702
  return {
703
- type: Close,
704
- event: undefined
703
+ event: undefined,
704
+ type: Open
705
705
  };
706
706
  }
707
707
  // @ts-ignore
708
708
  const {
709
- type,
710
- event
709
+ event,
710
+ type
711
711
  } = await getFirstEvent(webSocket, {
712
- open: Open,
713
- close: Close
712
+ close: Close,
713
+ open: Open
714
714
  });
715
715
  return {
716
- type,
717
- event
716
+ event,
717
+ type
718
718
  };
719
719
  };
720
720
 
@@ -744,8 +744,8 @@ const handleUpgrade$1 = async (...args) => {
744
744
  return module.handleUpgrade(...args);
745
745
  };
746
746
  const listen$1$1 = async ({
747
- request,
748
- handle
747
+ handle,
748
+ request
749
749
  }) => {
750
750
  if (!request) {
751
751
  throw new IpcError('request must be defined');
@@ -765,14 +765,19 @@ const signal$4 = webSocket => {
765
765
  };
766
766
  const wrap$9 = webSocket => {
767
767
  return {
768
- webSocket,
769
- /**
770
- * @type {any}
771
- */
772
- wrappedListener: undefined,
768
+ dispose() {
769
+ this.webSocket.close();
770
+ },
771
+ // @ts-ignore
772
+ off(event, listener) {
773
+ this.webSocket.off(event, listener);
774
+ },
773
775
  // @ts-ignore
774
776
  on(event, listener) {
775
777
  switch (event) {
778
+ case 'close':
779
+ webSocket.on('close', listener);
780
+ break;
776
781
  case 'message':
777
782
  // @ts-ignore
778
783
  const wrappedListener = message => {
@@ -785,28 +790,23 @@ const wrap$9 = webSocket => {
785
790
  };
786
791
  webSocket.on('message', wrappedListener);
787
792
  break;
788
- case 'close':
789
- webSocket.on('close', listener);
790
- break;
791
793
  default:
792
794
  throw new Error('unknown event listener type');
793
795
  }
794
796
  },
795
797
  // @ts-ignore
796
- off(event, listener) {
797
- this.webSocket.off(event, listener);
798
- },
799
- // @ts-ignore
800
798
  send(message) {
801
799
  const stringifiedMessage = serialize(message);
802
800
  this.webSocket.send(stringifiedMessage);
803
801
  },
804
- dispose() {
805
- this.webSocket.close();
806
- },
807
802
  start() {
808
803
  throw new Error('start method is deprecated');
809
- }
804
+ },
805
+ webSocket,
806
+ /**
807
+ * @type {any}
808
+ */
809
+ wrappedListener: undefined
810
810
  };
811
811
  };
812
812
  const IpcChildWithWebSocket = {
@@ -816,56 +816,14 @@ const IpcChildWithWebSocket = {
816
816
  wrap: wrap$9
817
817
  };
818
818
 
819
- const Two = '2.0';
820
- const create$4 = (method, params) => {
821
- return {
822
- jsonrpc: Two,
823
- method,
824
- params
825
- };
826
- };
819
+ const Two$1 = '2.0';
827
820
  const callbacks = Object.create(null);
828
- const set$1 = (id, fn) => {
829
- callbacks[id] = fn;
830
- };
831
821
  const get$1 = id => {
832
822
  return callbacks[id];
833
823
  };
834
824
  const remove$1 = id => {
835
825
  delete callbacks[id];
836
826
  };
837
- let id = 0;
838
- const create$3 = () => {
839
- return ++id;
840
- };
841
- const registerPromise = () => {
842
- const id = create$3();
843
- const {
844
- resolve,
845
- promise
846
- } = Promise.withResolvers();
847
- set$1(id, resolve);
848
- return {
849
- id,
850
- promise
851
- };
852
- };
853
- const create$2 = (method, params) => {
854
- const {
855
- id,
856
- promise
857
- } = registerPromise();
858
- const message = {
859
- jsonrpc: Two,
860
- method,
861
- params,
862
- id
863
- };
864
- return {
865
- message,
866
- promise
867
- };
868
- };
869
827
  class JsonRpcError extends Error {
870
828
  constructor(message) {
871
829
  super(message);
@@ -882,12 +840,12 @@ const getErrorConstructor = (message, type) => {
882
840
  switch (type) {
883
841
  case DomException:
884
842
  return DOMException;
885
- case TypeError$1:
886
- return TypeError;
887
- case SyntaxError$1:
888
- return SyntaxError;
889
843
  case ReferenceError$1:
890
844
  return ReferenceError;
845
+ case SyntaxError$1:
846
+ return SyntaxError;
847
+ case TypeError$1:
848
+ return TypeError;
891
849
  default:
892
850
  return Error;
893
851
  }
@@ -1043,27 +1001,27 @@ const getErrorProperty = (error, prettyError) => {
1043
1001
  if (error && error.code === E_COMMAND_NOT_FOUND) {
1044
1002
  return {
1045
1003
  code: MethodNotFound,
1046
- message: error.message,
1047
- data: error.stack
1004
+ data: error.stack,
1005
+ message: error.message
1048
1006
  };
1049
1007
  }
1050
1008
  return {
1051
1009
  code: Custom,
1052
- message: prettyError.message,
1053
1010
  data: {
1054
- stack: getStack(prettyError),
1055
- codeFrame: prettyError.codeFrame,
1056
- type: getErrorType(prettyError),
1057
1011
  code: prettyError.code,
1058
- name: prettyError.name
1059
- }
1012
+ codeFrame: prettyError.codeFrame,
1013
+ name: prettyError.name,
1014
+ stack: getStack(prettyError),
1015
+ type: getErrorType(prettyError)
1016
+ },
1017
+ message: prettyError.message
1060
1018
  };
1061
1019
  };
1062
1020
  const create$1$1 = (id, error) => {
1063
1021
  return {
1064
- jsonrpc: Two,
1022
+ error,
1065
1023
  id,
1066
- error
1024
+ jsonrpc: Two$1
1067
1025
  };
1068
1026
  };
1069
1027
  const getErrorResponse = (id, error, preparePrettyError, logError) => {
@@ -1072,27 +1030,27 @@ const getErrorResponse = (id, error, preparePrettyError, logError) => {
1072
1030
  const errorProperty = getErrorProperty(error, prettyError);
1073
1031
  return create$1$1(id, errorProperty);
1074
1032
  };
1075
- const create$5 = (message, result) => {
1033
+ const create$9 = (message, result) => {
1076
1034
  return {
1077
- jsonrpc: Two,
1078
1035
  id: message.id,
1036
+ jsonrpc: Two$1,
1079
1037
  result: result ?? null
1080
1038
  };
1081
1039
  };
1082
1040
  const getSuccessResponse = (message, result) => {
1083
1041
  const resultProperty = result ?? null;
1084
- return create$5(message, resultProperty);
1042
+ return create$9(message, resultProperty);
1085
1043
  };
1086
1044
  const getErrorResponseSimple = (id, error) => {
1087
1045
  return {
1088
- jsonrpc: Two,
1089
- id,
1090
1046
  error: {
1091
1047
  code: Custom,
1048
+ data: error,
1092
1049
  // @ts-ignore
1093
- message: error.message,
1094
- data: error
1095
- }
1050
+ message: error.message
1051
+ },
1052
+ id,
1053
+ jsonrpc: Two$1
1096
1054
  };
1097
1055
  };
1098
1056
  const getResponse = async (message, ipc, execute, preparePrettyError, logError, requiresSocket) => {
@@ -1122,35 +1080,35 @@ const normalizeParams = args => {
1122
1080
  if (args.length === 1) {
1123
1081
  const options = args[0];
1124
1082
  return {
1083
+ execute: options.execute,
1125
1084
  ipc: options.ipc,
1085
+ logError: options.logError || defaultLogError,
1126
1086
  message: options.message,
1127
- execute: options.execute,
1128
- resolve: options.resolve || defaultResolve,
1129
1087
  preparePrettyError: options.preparePrettyError || defaultPreparePrettyError,
1130
- logError: options.logError || defaultLogError,
1131
- requiresSocket: options.requiresSocket || defaultRequiresSocket
1088
+ requiresSocket: options.requiresSocket || defaultRequiresSocket,
1089
+ resolve: options.resolve || defaultResolve
1132
1090
  };
1133
1091
  }
1134
1092
  return {
1093
+ execute: args[2],
1135
1094
  ipc: args[0],
1095
+ logError: args[5],
1136
1096
  message: args[1],
1137
- execute: args[2],
1138
- resolve: args[3],
1139
1097
  preparePrettyError: args[4],
1140
- logError: args[5],
1141
- requiresSocket: args[6]
1098
+ requiresSocket: args[6],
1099
+ resolve: args[3]
1142
1100
  };
1143
1101
  };
1144
1102
  const handleJsonRpcMessage = async (...args) => {
1145
1103
  const options = normalizeParams(args);
1146
1104
  const {
1147
- message,
1148
- ipc,
1149
1105
  execute,
1150
- resolve,
1151
- preparePrettyError,
1106
+ ipc,
1152
1107
  logError,
1153
- requiresSocket
1108
+ message,
1109
+ preparePrettyError,
1110
+ requiresSocket,
1111
+ resolve
1154
1112
  } = options;
1155
1113
  if ('id' in message) {
1156
1114
  if ('method' in message) {
@@ -1172,11 +1130,51 @@ const handleJsonRpcMessage = async (...args) => {
1172
1130
  }
1173
1131
  throw new JsonRpcError('unexpected message');
1174
1132
  };
1175
- 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();
1176
1161
  const {
1177
- message,
1162
+ promise,
1163
+ resolve
1164
+ } = Promise.withResolvers();
1165
+ map[id] = resolve;
1166
+ return {
1167
+ id,
1168
+ promise
1169
+ };
1170
+ };
1171
+
1172
+ const invokeHelper = async (callbacks, ipc, method, params, useSendAndTransfer) => {
1173
+ const {
1174
+ id,
1178
1175
  promise
1179
- } = create$2(method, params);
1176
+ } = registerPromise(callbacks);
1177
+ const message = create$7(id, method, params);
1180
1178
  if (useSendAndTransfer && ipc.sendAndTransfer) {
1181
1179
  ipc.sendAndTransfer(message);
1182
1180
  } else {
@@ -1185,39 +1183,40 @@ const invokeHelper = async (ipc, method, params, useSendAndTransfer) => {
1185
1183
  const responseMessage = await promise;
1186
1184
  return unwrapJsonRpcResult(responseMessage);
1187
1185
  };
1188
- const send = (transport, method, ...params) => {
1189
- const message = create$4(method, params);
1190
- transport.send(message);
1191
- };
1192
- const invoke = (ipc, method, ...params) => {
1193
- return invokeHelper(ipc, method, params, false);
1194
- };
1195
- const invokeAndTransfer = (ipc, method, ...params) => {
1196
- return invokeHelper(ipc, method, params, true);
1197
- };
1198
-
1199
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
+ };
1200
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
+ },
1201
1207
  // @ts-ignore
1202
1208
  ipc,
1203
1209
  /**
1204
1210
  * @deprecated
1205
1211
  */
1206
1212
  send(method, ...params) {
1207
- send(ipc, method, ...params);
1208
- },
1209
- invoke(method, ...params) {
1210
- return invoke(ipc, method, ...params);
1211
- },
1212
- invokeAndTransfer(method, ...params) {
1213
- return invokeAndTransfer(ipc, method, ...params);
1214
- },
1215
- async dispose() {
1216
- await ipc?.dispose();
1213
+ const message = create$8(method, params);
1214
+ ipc.send(message);
1217
1215
  }
1218
1216
  };
1219
1217
  return rpc;
1220
1218
  };
1219
+
1221
1220
  const requiresSocket$1 = () => {
1222
1221
  return false;
1223
1222
  };
@@ -1230,8 +1229,9 @@ const logError = () => {
1230
1229
  const handleMessage = event => {
1231
1230
  const actualRequiresSocket = event?.target?.requiresSocket || requiresSocket$1;
1232
1231
  const actualExecute = event?.target?.execute || execute;
1233
- 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);
1234
1233
  };
1234
+
1235
1235
  const handleIpc = ipc => {
1236
1236
  if ('addEventListener' in ipc) {
1237
1237
  ipc.addEventListener('message', handleMessage);
@@ -1240,6 +1240,7 @@ const handleIpc = ipc => {
1240
1240
  ipc.on('message', handleMessage);
1241
1241
  }
1242
1242
  };
1243
+
1243
1244
  const listen$2 = async (module, options) => {
1244
1245
  const rawIpc = await module.listen(options);
1245
1246
  if (module.signal) {
@@ -1248,7 +1249,8 @@ const listen$2 = async (module, options) => {
1248
1249
  const ipc = module.wrap(rawIpc);
1249
1250
  return ipc;
1250
1251
  };
1251
- const create$k = async ({
1252
+
1253
+ const create$5 = async ({
1252
1254
  commandMap,
1253
1255
  messagePort,
1254
1256
  requiresSocket
@@ -1265,11 +1267,13 @@ const create$k = async ({
1265
1267
  const rpc = createRpc(ipc);
1266
1268
  return rpc;
1267
1269
  };
1270
+
1268
1271
  const ElectronMessagePortRpcClient = {
1269
1272
  __proto__: null,
1270
- create: create$k
1273
+ create: create$5
1271
1274
  };
1272
- const create$j = async ({
1275
+
1276
+ const create$4 = async ({
1273
1277
  commandMap
1274
1278
  }) => {
1275
1279
  // TODO create a commandMap per rpc instance
@@ -1279,11 +1283,13 @@ const create$j = async ({
1279
1283
  const rpc = createRpc(ipc);
1280
1284
  return rpc;
1281
1285
  };
1286
+
1282
1287
  const ElectronUtilityProcessRpcClient = {
1283
1288
  __proto__: null,
1284
- create: create$j
1289
+ create: create$4
1285
1290
  };
1286
- const create$a = async ({
1291
+
1292
+ const create$3 = async ({
1287
1293
  commandMap
1288
1294
  }) => {
1289
1295
  // TODO create a commandMap per rpc instance
@@ -1293,21 +1299,23 @@ const create$a = async ({
1293
1299
  const rpc = createRpc(ipc);
1294
1300
  return rpc;
1295
1301
  };
1302
+
1296
1303
  const NodeForkedProcessRpcClient = {
1297
1304
  __proto__: null,
1298
- create: create$a
1305
+ create: create$3
1299
1306
  };
1300
- const create$8 = async ({
1307
+
1308
+ const create$2 = async ({
1301
1309
  commandMap,
1302
- request,
1303
1310
  handle,
1311
+ request,
1304
1312
  requiresSocket
1305
1313
  }) => {
1306
1314
  // TODO create a commandMap per rpc instance
1307
1315
  register(commandMap);
1308
1316
  const ipc = await listen$2(IpcChildWithWebSocket, {
1309
- request,
1310
- handle
1317
+ handle,
1318
+ request
1311
1319
  });
1312
1320
  if (requiresSocket) {
1313
1321
  ipc.requiresSocket = requiresSocket;
@@ -1316,9 +1324,10 @@ const create$8 = async ({
1316
1324
  const rpc = createRpc(ipc);
1317
1325
  return rpc;
1318
1326
  };
1327
+
1319
1328
  const NodeWebSocketRpcClient = {
1320
1329
  __proto__: null,
1321
- create: create$8
1330
+ create: create$2
1322
1331
  };
1323
1332
 
1324
1333
  const METHODS_THAT_REQUIRE_SOCKET = new Set(['Terminal.create']);
@@ -1328,7 +1337,7 @@ const requiresSocket = method => {
1328
1337
 
1329
1338
  const handleElectronMessagePort = async messagePort => {
1330
1339
  object(messagePort);
1331
- await ElectronMessagePortRpcClient.create({
1340
+ await create$5({
1332
1341
  commandMap: {},
1333
1342
  messagePort,
1334
1343
  requiresSocket: requiresSocket
@@ -1395,7 +1404,7 @@ const handleNodeMessagePort = async messagePort => {
1395
1404
  const handleWebSocket = async (handle, request) => {
1396
1405
  object(handle);
1397
1406
  object(request);
1398
- await NodeWebSocketRpcClient.create({
1407
+ await create$2({
1399
1408
  commandMap: {},
1400
1409
  handle,
1401
1410
  request,
@@ -1446,7 +1455,7 @@ class Pty extends EventTarget {
1446
1455
  }
1447
1456
  const toPath = pathOrUri => {
1448
1457
  if (pathOrUri && pathOrUri.startsWith('file://')) {
1449
- return fileURLToPath(pathOrUri).toString();
1458
+ return fileURLToPath(pathOrUri);
1450
1459
  }
1451
1460
  return pathOrUri;
1452
1461
  };
@@ -1596,15 +1605,7 @@ const isConnected = () => {
1596
1605
  };
1597
1606
 
1598
1607
  const isIgnoredError = error => {
1599
- if (error && error.code === EPIPE && !process.connected) {
1600
- // parent process is disposed, ignore
1601
- return true;
1602
- }
1603
- if (error && error.code === ERR_IPC_CHANNEL_CLOSED && !isConnected()) {
1604
- // parent process is disposed, ignore
1605
- return true;
1606
- }
1607
- return false;
1608
+ return Boolean(error && (error.code === EPIPE && !process.connected || error.code === ERR_IPC_CHANNEL_CLOSED && !isConnected()));
1608
1609
  };
1609
1610
 
1610
1611
  // TODO mock this module when used in unit tests
@@ -1760,13 +1761,13 @@ function requireIdentifier () {
1760
1761
  identifier.isIdentifierChar = isIdentifierChar;
1761
1762
  identifier.isIdentifierName = isIdentifierName;
1762
1763
  identifier.isIdentifierStart = isIdentifierStart;
1763
- 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";
1764
- 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";
1764
+ 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";
1765
+ 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";
1765
1766
  const nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
1766
1767
  const nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
1767
1768
  nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
1768
- 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];
1769
- 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];
1769
+ 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];
1770
+ 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];
1770
1771
  function isInAstralSet(code, set) {
1771
1772
  let pos = 0x10000;
1772
1773
  for (let i = 0, length = set.length; i < length; i += 2) {
@@ -1870,54 +1871,54 @@ var hasRequiredLib$1;
1870
1871
  function requireLib$1 () {
1871
1872
  if (hasRequiredLib$1) return lib;
1872
1873
  hasRequiredLib$1 = 1;
1873
- (function (exports$1) {
1874
+ (function (exports) {
1874
1875
 
1875
- Object.defineProperty(exports$1, "__esModule", {
1876
+ Object.defineProperty(exports, "__esModule", {
1876
1877
  value: true
1877
1878
  });
1878
- Object.defineProperty(exports$1, "isIdentifierChar", {
1879
+ Object.defineProperty(exports, "isIdentifierChar", {
1879
1880
  enumerable: true,
1880
1881
  get: function () {
1881
1882
  return _identifier.isIdentifierChar;
1882
1883
  }
1883
1884
  });
1884
- Object.defineProperty(exports$1, "isIdentifierName", {
1885
+ Object.defineProperty(exports, "isIdentifierName", {
1885
1886
  enumerable: true,
1886
1887
  get: function () {
1887
1888
  return _identifier.isIdentifierName;
1888
1889
  }
1889
1890
  });
1890
- Object.defineProperty(exports$1, "isIdentifierStart", {
1891
+ Object.defineProperty(exports, "isIdentifierStart", {
1891
1892
  enumerable: true,
1892
1893
  get: function () {
1893
1894
  return _identifier.isIdentifierStart;
1894
1895
  }
1895
1896
  });
1896
- Object.defineProperty(exports$1, "isKeyword", {
1897
+ Object.defineProperty(exports, "isKeyword", {
1897
1898
  enumerable: true,
1898
1899
  get: function () {
1899
1900
  return _keyword.isKeyword;
1900
1901
  }
1901
1902
  });
1902
- Object.defineProperty(exports$1, "isReservedWord", {
1903
+ Object.defineProperty(exports, "isReservedWord", {
1903
1904
  enumerable: true,
1904
1905
  get: function () {
1905
1906
  return _keyword.isReservedWord;
1906
1907
  }
1907
1908
  });
1908
- Object.defineProperty(exports$1, "isStrictBindOnlyReservedWord", {
1909
+ Object.defineProperty(exports, "isStrictBindOnlyReservedWord", {
1909
1910
  enumerable: true,
1910
1911
  get: function () {
1911
1912
  return _keyword.isStrictBindOnlyReservedWord;
1912
1913
  }
1913
1914
  });
1914
- Object.defineProperty(exports$1, "isStrictBindReservedWord", {
1915
+ Object.defineProperty(exports, "isStrictBindReservedWord", {
1915
1916
  enumerable: true,
1916
1917
  get: function () {
1917
1918
  return _keyword.isStrictBindReservedWord;
1918
1919
  }
1919
1920
  });
1920
- Object.defineProperty(exports$1, "isStrictReservedWord", {
1921
+ Object.defineProperty(exports, "isStrictReservedWord", {
1921
1922
  enumerable: true,
1922
1923
  get: function () {
1923
1924
  return _keyword.isStrictReservedWord;
@@ -1971,39 +1972,39 @@ function requireLib () {
1971
1972
  const NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/;
1972
1973
  const BRACKET = /^[()[\]{}]$/;
1973
1974
  let tokenize;
1974
- {
1975
- const JSX_TAG = /^[a-z][\w-]*$/i;
1976
- const getTokenType = function (token, offset, text) {
1977
- if (token.type === "name") {
1978
- if (helperValidatorIdentifier.isKeyword(token.value) || helperValidatorIdentifier.isStrictReservedWord(token.value, true) || sometimesKeywords.has(token.value)) {
1979
- return "keyword";
1980
- }
1981
- if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) {
1982
- return "jsxIdentifier";
1983
- }
1984
- if (token.value[0] !== token.value[0].toLowerCase()) {
1985
- return "capitalized";
1986
- }
1987
- }
1988
- if (token.type === "punctuator" && BRACKET.test(token.value)) {
1989
- return "bracket";
1975
+ const JSX_TAG = /^[a-z][\w-]*$/i;
1976
+ const getTokenType = function (token, offset, text) {
1977
+ if (token.type === "name") {
1978
+ const tokenValue = token.value;
1979
+ if (helperValidatorIdentifier.isKeyword(tokenValue) || helperValidatorIdentifier.isStrictReservedWord(tokenValue, true) || sometimesKeywords.has(tokenValue)) {
1980
+ return "keyword";
1990
1981
  }
1991
- if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
1992
- return "punctuator";
1982
+ if (JSX_TAG.test(tokenValue) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) {
1983
+ return "jsxIdentifier";
1993
1984
  }
1994
- return token.type;
1995
- };
1996
- tokenize = function* (text) {
1997
- let match;
1998
- while (match = jsTokens.default.exec(text)) {
1999
- const token = jsTokens.matchToToken(match);
2000
- yield {
2001
- type: getTokenType(token, match.index, text),
2002
- value: token.value
2003
- };
1985
+ const firstChar = String.fromCodePoint(tokenValue.codePointAt(0));
1986
+ if (firstChar !== firstChar.toLowerCase()) {
1987
+ return "capitalized";
2004
1988
  }
2005
- };
2006
- }
1989
+ }
1990
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
1991
+ return "bracket";
1992
+ }
1993
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
1994
+ return "punctuator";
1995
+ }
1996
+ return token.type;
1997
+ };
1998
+ tokenize = function* (text) {
1999
+ let match;
2000
+ while (match = jsTokens.default.exec(text)) {
2001
+ const token = jsTokens.matchToToken(match);
2002
+ yield {
2003
+ type: getTokenType(token, match.index, text),
2004
+ value: token.value
2005
+ };
2006
+ }
2007
+ };
2007
2008
  function highlight(text) {
2008
2009
  if (text === "") return "";
2009
2010
  const defs = getDefs(true);
@@ -2022,7 +2023,7 @@ function requireLib () {
2022
2023
  }
2023
2024
  let deprecationWarningShown = false;
2024
2025
  const NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
2025
- function getMarkerLines(loc, source, opts) {
2026
+ function getMarkerLines(loc, source, opts, startLineBaseZero) {
2026
2027
  const startLoc = Object.assign({
2027
2028
  column: 0,
2028
2029
  line: -1
@@ -2032,9 +2033,9 @@ function requireLib () {
2032
2033
  linesAbove = 2,
2033
2034
  linesBelow = 3
2034
2035
  } = opts || {};
2035
- const startLine = startLoc.line;
2036
+ const startLine = startLoc.line - startLineBaseZero;
2036
2037
  const startColumn = startLoc.column;
2037
- const endLine = endLoc.line;
2038
+ const endLine = endLoc.line - startLineBaseZero;
2038
2039
  const endColumn = endLoc.column;
2039
2040
  let start = Math.max(startLine - (linesAbove + 1), 0);
2040
2041
  let end = Math.min(source.length, endLine + linesBelow);
@@ -2080,19 +2081,20 @@ function requireLib () {
2080
2081
  }
2081
2082
  function codeFrameColumns(rawLines, loc, opts = {}) {
2082
2083
  const shouldHighlight = opts.forceColor || isColorSupported() && opts.highlightCode;
2084
+ const startLineBaseZero = (opts.startLine || 1) - 1;
2083
2085
  const defs = getDefs(shouldHighlight);
2084
2086
  const lines = rawLines.split(NEWLINE);
2085
2087
  const {
2086
2088
  start,
2087
2089
  end,
2088
2090
  markerLines
2089
- } = getMarkerLines(loc, lines, opts);
2091
+ } = getMarkerLines(loc, lines, opts, startLineBaseZero);
2090
2092
  const hasColumns = loc.start && typeof loc.start.column === "number";
2091
- const numberMaxWidth = String(end).length;
2093
+ const numberMaxWidth = String(end + startLineBaseZero).length;
2092
2094
  const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;
2093
2095
  let frame = highlightedLines.split(NEWLINE, end).slice(start, end).map((line, index) => {
2094
2096
  const number = start + 1 + index;
2095
- const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
2097
+ const paddedNumber = ` ${number + startLineBaseZero}`.slice(-numberMaxWidth);
2096
2098
  const gutter = ` ${paddedNumber} |`;
2097
2099
  const hasMarker = markerLines[number];
2098
2100
  const lastMarkerLine = !markerLines[number + 1];
@@ -2358,7 +2360,7 @@ const firstErrorLine = error => {
2358
2360
  if (error.message) {
2359
2361
  return error.message;
2360
2362
  }
2361
- return `${error}`;
2363
+ return String(error);
2362
2364
  };
2363
2365
  const handleUncaughtExceptionMonitor$1 = error$1 => {
2364
2366
  info(`[pty host] uncaught exception: ${firstErrorLine(error$1)}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lvce-editor/pty-host",
3
- "version": "8.0.0",
3
+ "version": "8.2.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
  }