@rollup/wasm-node 4.17.2 → 4.18.1

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.
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  @license
3
- Rollup.js v4.17.2
4
- Tue, 30 Apr 2024 05:00:09 GMT - commit 5e955a1c2c5e080f80f20f650da9b44909d65d56
3
+ Rollup.js v4.18.1
4
+ Mon, 08 Jul 2024 15:24:39 GMT - commit 21f9a4949358b60801c948cd4777d7a39d9e6de0
5
5
 
6
6
  https://github.com/rollup/rollup
7
7
 
@@ -1001,6 +1001,8 @@ const EMPTY_SET = Object.freeze(new (class extends Set {
1001
1001
  }
1002
1002
  })());
1003
1003
 
1004
+ // This file is generated by scripts/generate-node-types.js.
1005
+ // Do not edit this file directly.
1004
1006
  const ArrowFunctionExpression = 'ArrowFunctionExpression';
1005
1007
  const BlockStatement = 'BlockStatement';
1006
1008
  const CallExpression = 'CallExpression';
@@ -1014,6 +1016,7 @@ const ParseError = 'ParseError';
1014
1016
  const Program = 'Program';
1015
1017
  const Property = 'Property';
1016
1018
  const ReturnStatement = 'ReturnStatement';
1019
+ const StaticBlock = 'StaticBlock';
1017
1020
  const TemplateLiteral = 'TemplateLiteral';
1018
1021
  const VariableDeclarator = 'VariableDeclarator';
1019
1022
 
@@ -1103,16 +1106,11 @@ const convertAnnotation = (position, buffer) => {
1103
1106
  const type = FIXED_STRINGS[buffer[position]];
1104
1107
  return { end, start, type };
1105
1108
  };
1106
- const convertString = (position, buffer, readString) => {
1107
- const length = buffer[position++];
1108
- const bytePosition = position << 2;
1109
- return readString(bytePosition, length);
1110
- };
1111
1109
 
1112
1110
  // This file is generated by scripts/generate-buffer-to-ast.js.
1113
1111
  // Do not edit this file directly.
1114
- function convertProgram(buffer, readString) {
1115
- const node = convertNode(0, new Uint32Array(buffer), readString);
1112
+ function convertProgram(buffer) {
1113
+ const node = convertNode(0, buffer);
1116
1114
  switch (node.type) {
1117
1115
  case PanicError: {
1118
1116
  return error(getRollupError(logParseError(node.message)));
@@ -1127,1104 +1125,796 @@ function convertProgram(buffer, readString) {
1127
1125
  }
1128
1126
  /* eslint-disable sort-keys */
1129
1127
  const nodeConverters = [
1130
- function panicError(position, buffer, readString) {
1131
- const start = buffer[position++];
1132
- const end = buffer[position++];
1133
- const message = convertString(buffer[position], buffer, readString);
1128
+ function panicError(position, buffer) {
1134
1129
  return {
1135
1130
  type: 'PanicError',
1136
- start,
1137
- end,
1138
- message
1131
+ start: buffer[position],
1132
+ end: buffer[position + 1],
1133
+ message: buffer.convertString(buffer[position + 2])
1139
1134
  };
1140
1135
  },
1141
- function parseError(position, buffer, readString) {
1142
- const start = buffer[position++];
1143
- const end = buffer[position++];
1144
- const message = convertString(buffer[position], buffer, readString);
1136
+ function parseError(position, buffer) {
1145
1137
  return {
1146
1138
  type: 'ParseError',
1147
- start,
1148
- end,
1149
- message
1139
+ start: buffer[position],
1140
+ end: buffer[position + 1],
1141
+ message: buffer.convertString(buffer[position + 2])
1150
1142
  };
1151
1143
  },
1152
- function arrayExpression(position, buffer, readString) {
1153
- const start = buffer[position++];
1154
- const end = buffer[position++];
1155
- const elements = convertNodeList(buffer[position], buffer, readString);
1144
+ function arrayExpression(position, buffer) {
1156
1145
  return {
1157
1146
  type: 'ArrayExpression',
1158
- start,
1159
- end,
1160
- elements
1147
+ start: buffer[position],
1148
+ end: buffer[position + 1],
1149
+ elements: convertNodeList(buffer[position + 2], buffer)
1161
1150
  };
1162
1151
  },
1163
- function arrayPattern(position, buffer, readString) {
1164
- const start = buffer[position++];
1165
- const end = buffer[position++];
1166
- const elements = convertNodeList(buffer[position], buffer, readString);
1152
+ function arrayPattern(position, buffer) {
1167
1153
  return {
1168
1154
  type: 'ArrayPattern',
1169
- start,
1170
- end,
1171
- elements
1172
- };
1173
- },
1174
- function arrowFunctionExpression(position, buffer, readString) {
1175
- const start = buffer[position++];
1176
- const end = buffer[position++];
1177
- const flags = buffer[position++];
1178
- const async = (flags & 1) === 1;
1179
- const expression = (flags & 2) === 2;
1180
- const generator = (flags & 4) === 4;
1181
- const annotations = convertAnnotations(buffer[position++], buffer);
1182
- const parameters = convertNodeList(buffer[position++], buffer, readString);
1183
- const body = convertNode(buffer[position], buffer, readString);
1155
+ start: buffer[position],
1156
+ end: buffer[position + 1],
1157
+ elements: convertNodeList(buffer[position + 2], buffer)
1158
+ };
1159
+ },
1160
+ function arrowFunctionExpression(position, buffer) {
1161
+ const flags = buffer[position + 2];
1162
+ const annotations = convertAnnotations(buffer[position + 3], buffer);
1184
1163
  return {
1185
1164
  type: 'ArrowFunctionExpression',
1186
- start,
1187
- end,
1188
- async,
1189
- expression,
1190
- generator,
1165
+ start: buffer[position],
1166
+ end: buffer[position + 1],
1167
+ async: (flags & 1) === 1,
1168
+ expression: (flags & 2) === 2,
1169
+ generator: (flags & 4) === 4,
1191
1170
  ...(annotations.length > 0 ? { [ANNOTATION_KEY]: annotations } : {}),
1192
- params: parameters,
1193
- body,
1171
+ params: convertNodeList(buffer[position + 4], buffer),
1172
+ body: convertNode(buffer[position + 5], buffer),
1194
1173
  id: null
1195
1174
  };
1196
1175
  },
1197
- function assignmentExpression(position, buffer, readString) {
1198
- const start = buffer[position++];
1199
- const end = buffer[position++];
1200
- const operator = FIXED_STRINGS[buffer[position++]];
1201
- const left = convertNode(buffer[position++], buffer, readString);
1202
- const right = convertNode(buffer[position], buffer, readString);
1176
+ function assignmentExpression(position, buffer) {
1203
1177
  return {
1204
1178
  type: 'AssignmentExpression',
1205
- start,
1206
- end,
1207
- operator,
1208
- left,
1209
- right
1179
+ start: buffer[position],
1180
+ end: buffer[position + 1],
1181
+ operator: FIXED_STRINGS[buffer[position + 2]],
1182
+ left: convertNode(buffer[position + 3], buffer),
1183
+ right: convertNode(buffer[position + 4], buffer)
1210
1184
  };
1211
1185
  },
1212
- function assignmentPattern(position, buffer, readString) {
1213
- const start = buffer[position++];
1214
- const end = buffer[position++];
1215
- const left = convertNode(buffer[position++], buffer, readString);
1216
- const right = convertNode(buffer[position], buffer, readString);
1186
+ function assignmentPattern(position, buffer) {
1217
1187
  return {
1218
1188
  type: 'AssignmentPattern',
1219
- start,
1220
- end,
1221
- left,
1222
- right
1189
+ start: buffer[position],
1190
+ end: buffer[position + 1],
1191
+ left: convertNode(buffer[position + 2], buffer),
1192
+ right: convertNode(buffer[position + 3], buffer)
1223
1193
  };
1224
1194
  },
1225
- function awaitExpression(position, buffer, readString) {
1226
- const start = buffer[position++];
1227
- const end = buffer[position++];
1228
- const argument = convertNode(buffer[position], buffer, readString);
1195
+ function awaitExpression(position, buffer) {
1229
1196
  return {
1230
1197
  type: 'AwaitExpression',
1231
- start,
1232
- end,
1233
- argument
1198
+ start: buffer[position],
1199
+ end: buffer[position + 1],
1200
+ argument: convertNode(buffer[position + 2], buffer)
1234
1201
  };
1235
1202
  },
1236
- function binaryExpression(position, buffer, readString) {
1237
- const start = buffer[position++];
1238
- const end = buffer[position++];
1239
- const operator = FIXED_STRINGS[buffer[position++]];
1240
- const left = convertNode(buffer[position++], buffer, readString);
1241
- const right = convertNode(buffer[position], buffer, readString);
1203
+ function binaryExpression(position, buffer) {
1242
1204
  return {
1243
1205
  type: 'BinaryExpression',
1244
- start,
1245
- end,
1246
- operator,
1247
- left,
1248
- right
1206
+ start: buffer[position],
1207
+ end: buffer[position + 1],
1208
+ operator: FIXED_STRINGS[buffer[position + 2]],
1209
+ left: convertNode(buffer[position + 3], buffer),
1210
+ right: convertNode(buffer[position + 4], buffer)
1249
1211
  };
1250
1212
  },
1251
- function blockStatement(position, buffer, readString) {
1252
- const start = buffer[position++];
1253
- const end = buffer[position++];
1254
- const body = convertNodeList(buffer[position], buffer, readString);
1213
+ function blockStatement(position, buffer) {
1255
1214
  return {
1256
1215
  type: 'BlockStatement',
1257
- start,
1258
- end,
1259
- body
1216
+ start: buffer[position],
1217
+ end: buffer[position + 1],
1218
+ body: convertNodeList(buffer[position + 2], buffer)
1260
1219
  };
1261
1220
  },
1262
- function breakStatement(position, buffer, readString) {
1263
- const start = buffer[position++];
1264
- const end = buffer[position++];
1265
- const labelPosition = buffer[position];
1266
- const label = labelPosition === 0 ? null : convertNode(labelPosition, buffer, readString);
1221
+ function breakStatement(position, buffer) {
1222
+ const labelPosition = buffer[position + 2];
1267
1223
  return {
1268
1224
  type: 'BreakStatement',
1269
- start,
1270
- end,
1271
- label
1225
+ start: buffer[position],
1226
+ end: buffer[position + 1],
1227
+ label: labelPosition === 0 ? null : convertNode(labelPosition, buffer)
1272
1228
  };
1273
1229
  },
1274
- function callExpression(position, buffer, readString) {
1275
- const start = buffer[position++];
1276
- const end = buffer[position++];
1277
- const flags = buffer[position++];
1278
- const optional = (flags & 1) === 1;
1279
- const annotations = convertAnnotations(buffer[position++], buffer);
1280
- const callee = convertNode(buffer[position++], buffer, readString);
1281
- const callArguments = convertNodeList(buffer[position], buffer, readString);
1230
+ function callExpression(position, buffer) {
1231
+ const flags = buffer[position + 2];
1232
+ const annotations = convertAnnotations(buffer[position + 3], buffer);
1282
1233
  return {
1283
1234
  type: 'CallExpression',
1284
- start,
1285
- end,
1286
- optional,
1235
+ start: buffer[position],
1236
+ end: buffer[position + 1],
1237
+ optional: (flags & 1) === 1,
1287
1238
  ...(annotations.length > 0 ? { [ANNOTATION_KEY]: annotations } : {}),
1288
- callee,
1289
- arguments: callArguments
1239
+ callee: convertNode(buffer[position + 4], buffer),
1240
+ arguments: convertNodeList(buffer[position + 5], buffer)
1290
1241
  };
1291
1242
  },
1292
- function catchClause(position, buffer, readString) {
1293
- const start = buffer[position++];
1294
- const end = buffer[position++];
1295
- const parameterPosition = buffer[position++];
1296
- const parameter = parameterPosition === 0 ? null : convertNode(parameterPosition, buffer, readString);
1297
- const body = convertNode(buffer[position], buffer, readString);
1243
+ function catchClause(position, buffer) {
1244
+ const parameterPosition = buffer[position + 2];
1298
1245
  return {
1299
1246
  type: 'CatchClause',
1300
- start,
1301
- end,
1302
- param: parameter,
1303
- body
1247
+ start: buffer[position],
1248
+ end: buffer[position + 1],
1249
+ param: parameterPosition === 0 ? null : convertNode(parameterPosition, buffer),
1250
+ body: convertNode(buffer[position + 3], buffer)
1304
1251
  };
1305
1252
  },
1306
- function chainExpression(position, buffer, readString) {
1307
- const start = buffer[position++];
1308
- const end = buffer[position++];
1309
- const expression = convertNode(buffer[position], buffer, readString);
1253
+ function chainExpression(position, buffer) {
1310
1254
  return {
1311
1255
  type: 'ChainExpression',
1312
- start,
1313
- end,
1314
- expression
1256
+ start: buffer[position],
1257
+ end: buffer[position + 1],
1258
+ expression: convertNode(buffer[position + 2], buffer)
1315
1259
  };
1316
1260
  },
1317
- function classBody(position, buffer, readString) {
1318
- const start = buffer[position++];
1319
- const end = buffer[position++];
1320
- const body = convertNodeList(buffer[position], buffer, readString);
1261
+ function classBody(position, buffer) {
1321
1262
  return {
1322
1263
  type: 'ClassBody',
1323
- start,
1324
- end,
1325
- body
1264
+ start: buffer[position],
1265
+ end: buffer[position + 1],
1266
+ body: convertNodeList(buffer[position + 2], buffer)
1326
1267
  };
1327
1268
  },
1328
- function classDeclaration(position, buffer, readString) {
1329
- const start = buffer[position++];
1330
- const end = buffer[position++];
1331
- const idPosition = buffer[position++];
1332
- const id = idPosition === 0 ? null : convertNode(idPosition, buffer, readString);
1333
- const superClassPosition = buffer[position++];
1334
- const superClass = superClassPosition === 0 ? null : convertNode(superClassPosition, buffer, readString);
1335
- const body = convertNode(buffer[position], buffer, readString);
1269
+ function classDeclaration(position, buffer) {
1270
+ const idPosition = buffer[position + 2];
1271
+ const superClassPosition = buffer[position + 3];
1336
1272
  return {
1337
1273
  type: 'ClassDeclaration',
1338
- start,
1339
- end,
1340
- id,
1341
- superClass,
1342
- body
1343
- };
1344
- },
1345
- function classExpression(position, buffer, readString) {
1346
- const start = buffer[position++];
1347
- const end = buffer[position++];
1348
- const idPosition = buffer[position++];
1349
- const id = idPosition === 0 ? null : convertNode(idPosition, buffer, readString);
1350
- const superClassPosition = buffer[position++];
1351
- const superClass = superClassPosition === 0 ? null : convertNode(superClassPosition, buffer, readString);
1352
- const body = convertNode(buffer[position], buffer, readString);
1274
+ start: buffer[position],
1275
+ end: buffer[position + 1],
1276
+ id: idPosition === 0 ? null : convertNode(idPosition, buffer),
1277
+ superClass: superClassPosition === 0 ? null : convertNode(superClassPosition, buffer),
1278
+ body: convertNode(buffer[position + 4], buffer)
1279
+ };
1280
+ },
1281
+ function classExpression(position, buffer) {
1282
+ const idPosition = buffer[position + 2];
1283
+ const superClassPosition = buffer[position + 3];
1353
1284
  return {
1354
1285
  type: 'ClassExpression',
1355
- start,
1356
- end,
1357
- id,
1358
- superClass,
1359
- body
1286
+ start: buffer[position],
1287
+ end: buffer[position + 1],
1288
+ id: idPosition === 0 ? null : convertNode(idPosition, buffer),
1289
+ superClass: superClassPosition === 0 ? null : convertNode(superClassPosition, buffer),
1290
+ body: convertNode(buffer[position + 4], buffer)
1360
1291
  };
1361
1292
  },
1362
- function conditionalExpression(position, buffer, readString) {
1363
- const start = buffer[position++];
1364
- const end = buffer[position++];
1365
- const test = convertNode(buffer[position++], buffer, readString);
1366
- const consequent = convertNode(buffer[position++], buffer, readString);
1367
- const alternate = convertNode(buffer[position], buffer, readString);
1293
+ function conditionalExpression(position, buffer) {
1368
1294
  return {
1369
1295
  type: 'ConditionalExpression',
1370
- start,
1371
- end,
1372
- test,
1373
- consequent,
1374
- alternate
1296
+ start: buffer[position],
1297
+ end: buffer[position + 1],
1298
+ test: convertNode(buffer[position + 2], buffer),
1299
+ consequent: convertNode(buffer[position + 3], buffer),
1300
+ alternate: convertNode(buffer[position + 4], buffer)
1375
1301
  };
1376
1302
  },
1377
- function continueStatement(position, buffer, readString) {
1378
- const start = buffer[position++];
1379
- const end = buffer[position++];
1380
- const labelPosition = buffer[position];
1381
- const label = labelPosition === 0 ? null : convertNode(labelPosition, buffer, readString);
1303
+ function continueStatement(position, buffer) {
1304
+ const labelPosition = buffer[position + 2];
1382
1305
  return {
1383
1306
  type: 'ContinueStatement',
1384
- start,
1385
- end,
1386
- label
1307
+ start: buffer[position],
1308
+ end: buffer[position + 1],
1309
+ label: labelPosition === 0 ? null : convertNode(labelPosition, buffer)
1387
1310
  };
1388
1311
  },
1389
1312
  function debuggerStatement(position, buffer) {
1390
- const start = buffer[position++];
1391
- const end = buffer[position++];
1392
1313
  return {
1393
1314
  type: 'DebuggerStatement',
1394
- start,
1395
- end
1315
+ start: buffer[position],
1316
+ end: buffer[position + 1]
1396
1317
  };
1397
1318
  },
1398
- function directive(position, buffer, readString) {
1399
- const start = buffer[position++];
1400
- const end = buffer[position++];
1401
- const directive = convertString(buffer[position++], buffer, readString);
1402
- const expression = convertNode(buffer[position], buffer, readString);
1319
+ function directive(position, buffer) {
1403
1320
  return {
1404
1321
  type: 'ExpressionStatement',
1405
- start,
1406
- end,
1407
- directive,
1408
- expression
1322
+ start: buffer[position],
1323
+ end: buffer[position + 1],
1324
+ directive: buffer.convertString(buffer[position + 2]),
1325
+ expression: convertNode(buffer[position + 3], buffer)
1409
1326
  };
1410
1327
  },
1411
- function doWhileStatement(position, buffer, readString) {
1412
- const start = buffer[position++];
1413
- const end = buffer[position++];
1414
- const body = convertNode(buffer[position++], buffer, readString);
1415
- const test = convertNode(buffer[position], buffer, readString);
1328
+ function doWhileStatement(position, buffer) {
1416
1329
  return {
1417
1330
  type: 'DoWhileStatement',
1418
- start,
1419
- end,
1420
- body,
1421
- test
1331
+ start: buffer[position],
1332
+ end: buffer[position + 1],
1333
+ body: convertNode(buffer[position + 2], buffer),
1334
+ test: convertNode(buffer[position + 3], buffer)
1422
1335
  };
1423
1336
  },
1424
1337
  function emptyStatement(position, buffer) {
1425
- const start = buffer[position++];
1426
- const end = buffer[position++];
1427
1338
  return {
1428
1339
  type: 'EmptyStatement',
1429
- start,
1430
- end
1340
+ start: buffer[position],
1341
+ end: buffer[position + 1]
1431
1342
  };
1432
1343
  },
1433
- function exportAllDeclaration(position, buffer, readString) {
1434
- const start = buffer[position++];
1435
- const end = buffer[position++];
1436
- const exportedPosition = buffer[position++];
1437
- const exported = exportedPosition === 0 ? null : convertNode(exportedPosition, buffer, readString);
1438
- const source = convertNode(buffer[position++], buffer, readString);
1439
- const attributes = convertNodeList(buffer[position], buffer, readString);
1344
+ function exportAllDeclaration(position, buffer) {
1345
+ const exportedPosition = buffer[position + 2];
1440
1346
  return {
1441
1347
  type: 'ExportAllDeclaration',
1442
- start,
1443
- end,
1444
- exported,
1445
- source,
1446
- attributes
1348
+ start: buffer[position],
1349
+ end: buffer[position + 1],
1350
+ exported: exportedPosition === 0 ? null : convertNode(exportedPosition, buffer),
1351
+ source: convertNode(buffer[position + 3], buffer),
1352
+ attributes: convertNodeList(buffer[position + 4], buffer)
1447
1353
  };
1448
1354
  },
1449
- function exportDefaultDeclaration(position, buffer, readString) {
1450
- const start = buffer[position++];
1451
- const end = buffer[position++];
1452
- const declaration = convertNode(buffer[position], buffer, readString);
1355
+ function exportDefaultDeclaration(position, buffer) {
1453
1356
  return {
1454
1357
  type: 'ExportDefaultDeclaration',
1455
- start,
1456
- end,
1457
- declaration
1358
+ start: buffer[position],
1359
+ end: buffer[position + 1],
1360
+ declaration: convertNode(buffer[position + 2], buffer)
1458
1361
  };
1459
1362
  },
1460
- function exportNamedDeclaration(position, buffer, readString) {
1461
- const start = buffer[position++];
1462
- const end = buffer[position++];
1463
- const specifiers = convertNodeList(buffer[position++], buffer, readString);
1464
- const sourcePosition = buffer[position++];
1465
- const source = sourcePosition === 0 ? null : convertNode(sourcePosition, buffer, readString);
1466
- const attributes = convertNodeList(buffer[position++], buffer, readString);
1467
- const declarationPosition = buffer[position];
1468
- const declaration = declarationPosition === 0 ? null : convertNode(declarationPosition, buffer, readString);
1363
+ function exportNamedDeclaration(position, buffer) {
1364
+ const sourcePosition = buffer[position + 3];
1365
+ const declarationPosition = buffer[position + 5];
1469
1366
  return {
1470
1367
  type: 'ExportNamedDeclaration',
1471
- start,
1472
- end,
1473
- specifiers,
1474
- source,
1475
- attributes,
1476
- declaration
1368
+ start: buffer[position],
1369
+ end: buffer[position + 1],
1370
+ specifiers: convertNodeList(buffer[position + 2], buffer),
1371
+ source: sourcePosition === 0 ? null : convertNode(sourcePosition, buffer),
1372
+ attributes: convertNodeList(buffer[position + 4], buffer),
1373
+ declaration: declarationPosition === 0 ? null : convertNode(declarationPosition, buffer)
1477
1374
  };
1478
1375
  },
1479
- function exportSpecifier(position, buffer, readString) {
1480
- const start = buffer[position++];
1481
- const end = buffer[position++];
1482
- const local = convertNode(buffer[position++], buffer, readString);
1483
- const exportedPosition = buffer[position];
1376
+ function exportSpecifier(position, buffer) {
1377
+ const local = convertNode(buffer[position + 2], buffer);
1378
+ const exportedPosition = buffer[position + 3];
1484
1379
  return {
1485
1380
  type: 'ExportSpecifier',
1486
- start,
1487
- end,
1381
+ start: buffer[position],
1382
+ end: buffer[position + 1],
1488
1383
  local,
1489
- exported: exportedPosition === 0 ? { ...local } : convertNode(exportedPosition, buffer, readString)
1384
+ exported: exportedPosition === 0 ? { ...local } : convertNode(exportedPosition, buffer)
1490
1385
  };
1491
1386
  },
1492
- function expressionStatement(position, buffer, readString) {
1493
- const start = buffer[position++];
1494
- const end = buffer[position++];
1495
- const expression = convertNode(buffer[position], buffer, readString);
1387
+ function expressionStatement(position, buffer) {
1496
1388
  return {
1497
1389
  type: 'ExpressionStatement',
1498
- start,
1499
- end,
1500
- expression
1390
+ start: buffer[position],
1391
+ end: buffer[position + 1],
1392
+ expression: convertNode(buffer[position + 2], buffer)
1501
1393
  };
1502
1394
  },
1503
- function forInStatement(position, buffer, readString) {
1504
- const start = buffer[position++];
1505
- const end = buffer[position++];
1506
- const left = convertNode(buffer[position++], buffer, readString);
1507
- const right = convertNode(buffer[position++], buffer, readString);
1508
- const body = convertNode(buffer[position], buffer, readString);
1395
+ function forInStatement(position, buffer) {
1509
1396
  return {
1510
1397
  type: 'ForInStatement',
1511
- start,
1512
- end,
1513
- left,
1514
- right,
1515
- body
1516
- };
1517
- },
1518
- function forOfStatement(position, buffer, readString) {
1519
- const start = buffer[position++];
1520
- const end = buffer[position++];
1521
- const flags = buffer[position++];
1522
- const awaited = (flags & 1) === 1;
1523
- const left = convertNode(buffer[position++], buffer, readString);
1524
- const right = convertNode(buffer[position++], buffer, readString);
1525
- const body = convertNode(buffer[position], buffer, readString);
1398
+ start: buffer[position],
1399
+ end: buffer[position + 1],
1400
+ left: convertNode(buffer[position + 2], buffer),
1401
+ right: convertNode(buffer[position + 3], buffer),
1402
+ body: convertNode(buffer[position + 4], buffer)
1403
+ };
1404
+ },
1405
+ function forOfStatement(position, buffer) {
1406
+ const flags = buffer[position + 2];
1526
1407
  return {
1527
1408
  type: 'ForOfStatement',
1528
- start,
1529
- end,
1530
- await: awaited,
1531
- left,
1532
- right,
1533
- body
1534
- };
1535
- },
1536
- function forStatement(position, buffer, readString) {
1537
- const start = buffer[position++];
1538
- const end = buffer[position++];
1539
- const initPosition = buffer[position++];
1540
- const init = initPosition === 0 ? null : convertNode(initPosition, buffer, readString);
1541
- const testPosition = buffer[position++];
1542
- const test = testPosition === 0 ? null : convertNode(testPosition, buffer, readString);
1543
- const updatePosition = buffer[position++];
1544
- const update = updatePosition === 0 ? null : convertNode(updatePosition, buffer, readString);
1545
- const body = convertNode(buffer[position], buffer, readString);
1409
+ start: buffer[position],
1410
+ end: buffer[position + 1],
1411
+ await: (flags & 1) === 1,
1412
+ left: convertNode(buffer[position + 3], buffer),
1413
+ right: convertNode(buffer[position + 4], buffer),
1414
+ body: convertNode(buffer[position + 5], buffer)
1415
+ };
1416
+ },
1417
+ function forStatement(position, buffer) {
1418
+ const initPosition = buffer[position + 2];
1419
+ const testPosition = buffer[position + 3];
1420
+ const updatePosition = buffer[position + 4];
1546
1421
  return {
1547
1422
  type: 'ForStatement',
1548
- start,
1549
- end,
1550
- init,
1551
- test,
1552
- update,
1553
- body
1554
- };
1555
- },
1556
- function functionDeclaration(position, buffer, readString) {
1557
- const start = buffer[position++];
1558
- const end = buffer[position++];
1559
- const flags = buffer[position++];
1560
- const async = (flags & 1) === 1;
1561
- const generator = (flags & 2) === 2;
1562
- const annotations = convertAnnotations(buffer[position++], buffer);
1563
- const idPosition = buffer[position++];
1564
- const id = idPosition === 0 ? null : convertNode(idPosition, buffer, readString);
1565
- const parameters = convertNodeList(buffer[position++], buffer, readString);
1566
- const body = convertNode(buffer[position], buffer, readString);
1423
+ start: buffer[position],
1424
+ end: buffer[position + 1],
1425
+ init: initPosition === 0 ? null : convertNode(initPosition, buffer),
1426
+ test: testPosition === 0 ? null : convertNode(testPosition, buffer),
1427
+ update: updatePosition === 0 ? null : convertNode(updatePosition, buffer),
1428
+ body: convertNode(buffer[position + 5], buffer)
1429
+ };
1430
+ },
1431
+ function functionDeclaration(position, buffer) {
1432
+ const flags = buffer[position + 2];
1433
+ const annotations = convertAnnotations(buffer[position + 3], buffer);
1434
+ const idPosition = buffer[position + 4];
1567
1435
  return {
1568
1436
  type: 'FunctionDeclaration',
1569
- start,
1570
- end,
1571
- async,
1572
- generator,
1437
+ start: buffer[position],
1438
+ end: buffer[position + 1],
1439
+ async: (flags & 1) === 1,
1440
+ generator: (flags & 2) === 2,
1573
1441
  ...(annotations.length > 0 ? { [ANNOTATION_KEY]: annotations } : {}),
1574
- id,
1575
- params: parameters,
1576
- body,
1442
+ id: idPosition === 0 ? null : convertNode(idPosition, buffer),
1443
+ params: convertNodeList(buffer[position + 5], buffer),
1444
+ body: convertNode(buffer[position + 6], buffer),
1577
1445
  expression: false
1578
1446
  };
1579
1447
  },
1580
- function functionExpression(position, buffer, readString) {
1581
- const start = buffer[position++];
1582
- const end = buffer[position++];
1583
- const flags = buffer[position++];
1584
- const async = (flags & 1) === 1;
1585
- const generator = (flags & 2) === 2;
1586
- const annotations = convertAnnotations(buffer[position++], buffer);
1587
- const idPosition = buffer[position++];
1588
- const id = idPosition === 0 ? null : convertNode(idPosition, buffer, readString);
1589
- const parameters = convertNodeList(buffer[position++], buffer, readString);
1590
- const body = convertNode(buffer[position], buffer, readString);
1448
+ function functionExpression(position, buffer) {
1449
+ const flags = buffer[position + 2];
1450
+ const annotations = convertAnnotations(buffer[position + 3], buffer);
1451
+ const idPosition = buffer[position + 4];
1591
1452
  return {
1592
1453
  type: 'FunctionExpression',
1593
- start,
1594
- end,
1595
- async,
1596
- generator,
1454
+ start: buffer[position],
1455
+ end: buffer[position + 1],
1456
+ async: (flags & 1) === 1,
1457
+ generator: (flags & 2) === 2,
1597
1458
  ...(annotations.length > 0 ? { [ANNOTATION_KEY]: annotations } : {}),
1598
- id,
1599
- params: parameters,
1600
- body,
1459
+ id: idPosition === 0 ? null : convertNode(idPosition, buffer),
1460
+ params: convertNodeList(buffer[position + 5], buffer),
1461
+ body: convertNode(buffer[position + 6], buffer),
1601
1462
  expression: false
1602
1463
  };
1603
1464
  },
1604
- function identifier(position, buffer, readString) {
1605
- const start = buffer[position++];
1606
- const end = buffer[position++];
1607
- const name = convertString(buffer[position], buffer, readString);
1465
+ function identifier(position, buffer) {
1608
1466
  return {
1609
1467
  type: 'Identifier',
1610
- start,
1611
- end,
1612
- name
1468
+ start: buffer[position],
1469
+ end: buffer[position + 1],
1470
+ name: buffer.convertString(buffer[position + 2])
1613
1471
  };
1614
1472
  },
1615
- function ifStatement(position, buffer, readString) {
1616
- const start = buffer[position++];
1617
- const end = buffer[position++];
1618
- const test = convertNode(buffer[position++], buffer, readString);
1619
- const consequent = convertNode(buffer[position++], buffer, readString);
1620
- const alternatePosition = buffer[position];
1621
- const alternate = alternatePosition === 0 ? null : convertNode(alternatePosition, buffer, readString);
1473
+ function ifStatement(position, buffer) {
1474
+ const alternatePosition = buffer[position + 4];
1622
1475
  return {
1623
1476
  type: 'IfStatement',
1624
- start,
1625
- end,
1626
- test,
1627
- consequent,
1628
- alternate
1477
+ start: buffer[position],
1478
+ end: buffer[position + 1],
1479
+ test: convertNode(buffer[position + 2], buffer),
1480
+ consequent: convertNode(buffer[position + 3], buffer),
1481
+ alternate: alternatePosition === 0 ? null : convertNode(alternatePosition, buffer)
1629
1482
  };
1630
1483
  },
1631
- function importAttribute(position, buffer, readString) {
1632
- const start = buffer[position++];
1633
- const end = buffer[position++];
1634
- const key = convertNode(buffer[position++], buffer, readString);
1635
- const value = convertNode(buffer[position], buffer, readString);
1484
+ function importAttribute(position, buffer) {
1636
1485
  return {
1637
1486
  type: 'ImportAttribute',
1638
- start,
1639
- end,
1640
- key,
1641
- value
1487
+ start: buffer[position],
1488
+ end: buffer[position + 1],
1489
+ key: convertNode(buffer[position + 2], buffer),
1490
+ value: convertNode(buffer[position + 3], buffer)
1642
1491
  };
1643
1492
  },
1644
- function importDeclaration(position, buffer, readString) {
1645
- const start = buffer[position++];
1646
- const end = buffer[position++];
1647
- const specifiers = convertNodeList(buffer[position++], buffer, readString);
1648
- const source = convertNode(buffer[position++], buffer, readString);
1649
- const attributes = convertNodeList(buffer[position], buffer, readString);
1493
+ function importDeclaration(position, buffer) {
1650
1494
  return {
1651
1495
  type: 'ImportDeclaration',
1652
- start,
1653
- end,
1654
- specifiers,
1655
- source,
1656
- attributes
1496
+ start: buffer[position],
1497
+ end: buffer[position + 1],
1498
+ specifiers: convertNodeList(buffer[position + 2], buffer),
1499
+ source: convertNode(buffer[position + 3], buffer),
1500
+ attributes: convertNodeList(buffer[position + 4], buffer)
1657
1501
  };
1658
1502
  },
1659
- function importDefaultSpecifier(position, buffer, readString) {
1660
- const start = buffer[position++];
1661
- const end = buffer[position++];
1662
- const local = convertNode(buffer[position], buffer, readString);
1503
+ function importDefaultSpecifier(position, buffer) {
1663
1504
  return {
1664
1505
  type: 'ImportDefaultSpecifier',
1665
- start,
1666
- end,
1667
- local
1506
+ start: buffer[position],
1507
+ end: buffer[position + 1],
1508
+ local: convertNode(buffer[position + 2], buffer)
1668
1509
  };
1669
1510
  },
1670
- function importExpression(position, buffer, readString) {
1671
- const start = buffer[position++];
1672
- const end = buffer[position++];
1673
- const source = convertNode(buffer[position++], buffer, readString);
1674
- const optionsPosition = buffer[position];
1675
- const options = optionsPosition === 0 ? null : convertNode(optionsPosition, buffer, readString);
1511
+ function importExpression(position, buffer) {
1512
+ const optionsPosition = buffer[position + 3];
1676
1513
  return {
1677
1514
  type: 'ImportExpression',
1678
- start,
1679
- end,
1680
- source,
1681
- options
1515
+ start: buffer[position],
1516
+ end: buffer[position + 1],
1517
+ source: convertNode(buffer[position + 2], buffer),
1518
+ options: optionsPosition === 0 ? null : convertNode(optionsPosition, buffer)
1682
1519
  };
1683
1520
  },
1684
- function importNamespaceSpecifier(position, buffer, readString) {
1685
- const start = buffer[position++];
1686
- const end = buffer[position++];
1687
- const local = convertNode(buffer[position], buffer, readString);
1521
+ function importNamespaceSpecifier(position, buffer) {
1688
1522
  return {
1689
1523
  type: 'ImportNamespaceSpecifier',
1690
- start,
1691
- end,
1692
- local
1524
+ start: buffer[position],
1525
+ end: buffer[position + 1],
1526
+ local: convertNode(buffer[position + 2], buffer)
1693
1527
  };
1694
1528
  },
1695
- function importSpecifier(position, buffer, readString) {
1696
- const start = buffer[position++];
1697
- const end = buffer[position++];
1698
- const importedPosition = buffer[position++];
1699
- const local = convertNode(buffer[position], buffer, readString);
1529
+ function importSpecifier(position, buffer) {
1530
+ const importedPosition = buffer[position + 2];
1531
+ const local = convertNode(buffer[position + 3], buffer);
1700
1532
  return {
1701
1533
  type: 'ImportSpecifier',
1702
- start,
1703
- end,
1704
- imported: importedPosition === 0 ? { ...local } : convertNode(importedPosition, buffer, readString),
1534
+ start: buffer[position],
1535
+ end: buffer[position + 1],
1536
+ imported: importedPosition === 0 ? { ...local } : convertNode(importedPosition, buffer),
1705
1537
  local
1706
1538
  };
1707
1539
  },
1708
- function labeledStatement(position, buffer, readString) {
1709
- const start = buffer[position++];
1710
- const end = buffer[position++];
1711
- const label = convertNode(buffer[position++], buffer, readString);
1712
- const body = convertNode(buffer[position], buffer, readString);
1540
+ function labeledStatement(position, buffer) {
1713
1541
  return {
1714
1542
  type: 'LabeledStatement',
1715
- start,
1716
- end,
1717
- label,
1718
- body
1543
+ start: buffer[position],
1544
+ end: buffer[position + 1],
1545
+ label: convertNode(buffer[position + 2], buffer),
1546
+ body: convertNode(buffer[position + 3], buffer)
1719
1547
  };
1720
1548
  },
1721
- function literalBigInt(position, buffer, readString) {
1722
- const start = buffer[position++];
1723
- const end = buffer[position++];
1724
- const bigint = convertString(buffer[position++], buffer, readString);
1725
- const raw = convertString(buffer[position], buffer, readString);
1549
+ function literalBigInt(position, buffer) {
1550
+ const bigint = buffer.convertString(buffer[position + 2]);
1726
1551
  return {
1727
1552
  type: 'Literal',
1728
- start,
1729
- end,
1553
+ start: buffer[position],
1554
+ end: buffer[position + 1],
1730
1555
  bigint,
1731
- raw,
1556
+ raw: buffer.convertString(buffer[position + 3]),
1732
1557
  value: BigInt(bigint)
1733
1558
  };
1734
1559
  },
1735
1560
  function literalBoolean(position, buffer) {
1736
- const start = buffer[position++];
1737
- const end = buffer[position++];
1738
- const flags = buffer[position++];
1561
+ const flags = buffer[position + 2];
1739
1562
  const value = (flags & 1) === 1;
1740
1563
  return {
1741
1564
  type: 'Literal',
1742
- start,
1743
- end,
1565
+ start: buffer[position],
1566
+ end: buffer[position + 1],
1744
1567
  value,
1745
1568
  raw: value ? 'true' : 'false'
1746
1569
  };
1747
1570
  },
1748
1571
  function literalNull(position, buffer) {
1749
- const start = buffer[position++];
1750
- const end = buffer[position++];
1751
1572
  return {
1752
1573
  type: 'Literal',
1753
- start,
1754
- end,
1574
+ start: buffer[position],
1575
+ end: buffer[position + 1],
1755
1576
  raw: 'null',
1756
1577
  value: null
1757
1578
  };
1758
1579
  },
1759
- function literalNumber(position, buffer, readString) {
1760
- const start = buffer[position++];
1761
- const end = buffer[position++];
1762
- const rawPosition = buffer[position++];
1763
- const raw = rawPosition === 0 ? undefined : convertString(rawPosition, buffer, readString);
1764
- const value = new DataView(buffer.buffer).getFloat64(position << 2, true);
1580
+ function literalNumber(position, buffer) {
1581
+ const rawPosition = buffer[position + 2];
1765
1582
  return {
1766
1583
  type: 'Literal',
1767
- start,
1768
- end,
1769
- raw,
1770
- value
1584
+ start: buffer[position],
1585
+ end: buffer[position + 1],
1586
+ raw: rawPosition === 0 ? undefined : buffer.convertString(rawPosition),
1587
+ value: new DataView(buffer.buffer).getFloat64((position + 3) << 2, true)
1771
1588
  };
1772
1589
  },
1773
- function literalRegExp(position, buffer, readString) {
1774
- const start = buffer[position++];
1775
- const end = buffer[position++];
1776
- const flags = convertString(buffer[position++], buffer, readString);
1777
- const pattern = convertString(buffer[position], buffer, readString);
1590
+ function literalRegExp(position, buffer) {
1591
+ const flags = buffer.convertString(buffer[position + 2]);
1592
+ const pattern = buffer.convertString(buffer[position + 3]);
1778
1593
  return {
1779
1594
  type: 'Literal',
1780
- start,
1781
- end,
1595
+ start: buffer[position],
1596
+ end: buffer[position + 1],
1782
1597
  raw: `/${pattern}/${flags}`,
1783
1598
  regex: { flags, pattern },
1784
1599
  value: new RegExp(pattern, flags)
1785
1600
  };
1786
1601
  },
1787
- function literalString(position, buffer, readString) {
1788
- const start = buffer[position++];
1789
- const end = buffer[position++];
1790
- const value = convertString(buffer[position++], buffer, readString);
1791
- const rawPosition = buffer[position];
1792
- const raw = rawPosition === 0 ? undefined : convertString(rawPosition, buffer, readString);
1602
+ function literalString(position, buffer) {
1603
+ const rawPosition = buffer[position + 3];
1793
1604
  return {
1794
1605
  type: 'Literal',
1795
- start,
1796
- end,
1797
- value,
1798
- raw
1606
+ start: buffer[position],
1607
+ end: buffer[position + 1],
1608
+ value: buffer.convertString(buffer[position + 2]),
1609
+ raw: rawPosition === 0 ? undefined : buffer.convertString(rawPosition)
1799
1610
  };
1800
1611
  },
1801
- function logicalExpression(position, buffer, readString) {
1802
- const start = buffer[position++];
1803
- const end = buffer[position++];
1804
- const operator = FIXED_STRINGS[buffer[position++]];
1805
- const left = convertNode(buffer[position++], buffer, readString);
1806
- const right = convertNode(buffer[position], buffer, readString);
1612
+ function logicalExpression(position, buffer) {
1807
1613
  return {
1808
1614
  type: 'LogicalExpression',
1809
- start,
1810
- end,
1811
- operator,
1812
- left,
1813
- right
1814
- };
1815
- },
1816
- function memberExpression(position, buffer, readString) {
1817
- const start = buffer[position++];
1818
- const end = buffer[position++];
1819
- const flags = buffer[position++];
1820
- const computed = (flags & 1) === 1;
1821
- const optional = (flags & 2) === 2;
1822
- const object = convertNode(buffer[position++], buffer, readString);
1823
- const property = convertNode(buffer[position], buffer, readString);
1615
+ start: buffer[position],
1616
+ end: buffer[position + 1],
1617
+ operator: FIXED_STRINGS[buffer[position + 2]],
1618
+ left: convertNode(buffer[position + 3], buffer),
1619
+ right: convertNode(buffer[position + 4], buffer)
1620
+ };
1621
+ },
1622
+ function memberExpression(position, buffer) {
1623
+ const flags = buffer[position + 2];
1824
1624
  return {
1825
1625
  type: 'MemberExpression',
1826
- start,
1827
- end,
1828
- computed,
1829
- optional,
1830
- object,
1831
- property
1626
+ start: buffer[position],
1627
+ end: buffer[position + 1],
1628
+ computed: (flags & 1) === 1,
1629
+ optional: (flags & 2) === 2,
1630
+ object: convertNode(buffer[position + 3], buffer),
1631
+ property: convertNode(buffer[position + 4], buffer)
1832
1632
  };
1833
1633
  },
1834
- function metaProperty(position, buffer, readString) {
1835
- const start = buffer[position++];
1836
- const end = buffer[position++];
1837
- const meta = convertNode(buffer[position++], buffer, readString);
1838
- const property = convertNode(buffer[position], buffer, readString);
1634
+ function metaProperty(position, buffer) {
1839
1635
  return {
1840
1636
  type: 'MetaProperty',
1841
- start,
1842
- end,
1843
- meta,
1844
- property
1845
- };
1846
- },
1847
- function methodDefinition(position, buffer, readString) {
1848
- const start = buffer[position++];
1849
- const end = buffer[position++];
1850
- const flags = buffer[position++];
1851
- const isStatic = (flags & 1) === 1;
1852
- const computed = (flags & 2) === 2;
1853
- const key = convertNode(buffer[position++], buffer, readString);
1854
- const value = convertNode(buffer[position++], buffer, readString);
1855
- const kind = FIXED_STRINGS[buffer[position]];
1637
+ start: buffer[position],
1638
+ end: buffer[position + 1],
1639
+ meta: convertNode(buffer[position + 2], buffer),
1640
+ property: convertNode(buffer[position + 3], buffer)
1641
+ };
1642
+ },
1643
+ function methodDefinition(position, buffer) {
1644
+ const flags = buffer[position + 2];
1856
1645
  return {
1857
1646
  type: 'MethodDefinition',
1858
- start,
1859
- end,
1860
- static: isStatic,
1861
- computed,
1862
- key,
1863
- value,
1864
- kind
1647
+ start: buffer[position],
1648
+ end: buffer[position + 1],
1649
+ static: (flags & 1) === 1,
1650
+ computed: (flags & 2) === 2,
1651
+ key: convertNode(buffer[position + 3], buffer),
1652
+ value: convertNode(buffer[position + 4], buffer),
1653
+ kind: FIXED_STRINGS[buffer[position + 5]]
1865
1654
  };
1866
1655
  },
1867
- function newExpression(position, buffer, readString) {
1868
- const start = buffer[position++];
1869
- const end = buffer[position++];
1870
- const annotations = convertAnnotations(buffer[position++], buffer);
1871
- const callee = convertNode(buffer[position++], buffer, readString);
1872
- const callArguments = convertNodeList(buffer[position], buffer, readString);
1656
+ function newExpression(position, buffer) {
1657
+ const annotations = convertAnnotations(buffer[position + 2], buffer);
1873
1658
  return {
1874
1659
  type: 'NewExpression',
1875
- start,
1876
- end,
1660
+ start: buffer[position],
1661
+ end: buffer[position + 1],
1877
1662
  ...(annotations.length > 0 ? { [ANNOTATION_KEY]: annotations } : {}),
1878
- callee,
1879
- arguments: callArguments
1663
+ callee: convertNode(buffer[position + 3], buffer),
1664
+ arguments: convertNodeList(buffer[position + 4], buffer)
1880
1665
  };
1881
1666
  },
1882
- function objectExpression(position, buffer, readString) {
1883
- const start = buffer[position++];
1884
- const end = buffer[position++];
1885
- const properties = convertNodeList(buffer[position], buffer, readString);
1667
+ function objectExpression(position, buffer) {
1886
1668
  return {
1887
1669
  type: 'ObjectExpression',
1888
- start,
1889
- end,
1890
- properties
1670
+ start: buffer[position],
1671
+ end: buffer[position + 1],
1672
+ properties: convertNodeList(buffer[position + 2], buffer)
1891
1673
  };
1892
1674
  },
1893
- function objectPattern(position, buffer, readString) {
1894
- const start = buffer[position++];
1895
- const end = buffer[position++];
1896
- const properties = convertNodeList(buffer[position], buffer, readString);
1675
+ function objectPattern(position, buffer) {
1897
1676
  return {
1898
1677
  type: 'ObjectPattern',
1899
- start,
1900
- end,
1901
- properties
1678
+ start: buffer[position],
1679
+ end: buffer[position + 1],
1680
+ properties: convertNodeList(buffer[position + 2], buffer)
1902
1681
  };
1903
1682
  },
1904
- function privateIdentifier(position, buffer, readString) {
1905
- const start = buffer[position++];
1906
- const end = buffer[position++];
1907
- const name = convertString(buffer[position], buffer, readString);
1683
+ function privateIdentifier(position, buffer) {
1908
1684
  return {
1909
1685
  type: 'PrivateIdentifier',
1910
- start,
1911
- end,
1912
- name
1686
+ start: buffer[position],
1687
+ end: buffer[position + 1],
1688
+ name: buffer.convertString(buffer[position + 2])
1913
1689
  };
1914
1690
  },
1915
- function program(position, buffer, readString) {
1916
- const start = buffer[position++];
1917
- const end = buffer[position++];
1918
- const body = convertNodeList(buffer[position++], buffer, readString);
1919
- const invalidAnnotations = convertAnnotations(buffer[position], buffer);
1691
+ function program(position, buffer) {
1692
+ const invalidAnnotations = convertAnnotations(buffer[position + 3], buffer);
1920
1693
  return {
1921
1694
  type: 'Program',
1922
- start,
1923
- end,
1924
- body,
1695
+ start: buffer[position],
1696
+ end: buffer[position + 1],
1697
+ body: convertNodeList(buffer[position + 2], buffer),
1925
1698
  ...(invalidAnnotations.length > 0 ? { [INVALID_ANNOTATION_KEY]: invalidAnnotations } : {}),
1926
1699
  sourceType: 'module'
1927
1700
  };
1928
1701
  },
1929
- function property(position, buffer, readString) {
1930
- const start = buffer[position++];
1931
- const end = buffer[position++];
1932
- const flags = buffer[position++];
1933
- const method = (flags & 1) === 1;
1934
- const shorthand = (flags & 2) === 2;
1935
- const computed = (flags & 4) === 4;
1936
- const keyPosition = buffer[position++];
1937
- const value = convertNode(buffer[position++], buffer, readString);
1938
- const kind = FIXED_STRINGS[buffer[position]];
1702
+ function property(position, buffer) {
1703
+ const flags = buffer[position + 2];
1704
+ const keyPosition = buffer[position + 3];
1705
+ const value = convertNode(buffer[position + 4], buffer);
1939
1706
  return {
1940
1707
  type: 'Property',
1941
- start,
1942
- end,
1943
- method,
1944
- shorthand,
1945
- computed,
1946
- key: keyPosition === 0 ? { ...value } : convertNode(keyPosition, buffer, readString),
1708
+ start: buffer[position],
1709
+ end: buffer[position + 1],
1710
+ method: (flags & 1) === 1,
1711
+ shorthand: (flags & 2) === 2,
1712
+ computed: (flags & 4) === 4,
1713
+ key: keyPosition === 0 ? { ...value } : convertNode(keyPosition, buffer),
1947
1714
  value,
1948
- kind
1715
+ kind: FIXED_STRINGS[buffer[position + 5]]
1949
1716
  };
1950
1717
  },
1951
- function propertyDefinition(position, buffer, readString) {
1952
- const start = buffer[position++];
1953
- const end = buffer[position++];
1954
- const flags = buffer[position++];
1955
- const isStatic = (flags & 1) === 1;
1956
- const computed = (flags & 2) === 2;
1957
- const key = convertNode(buffer[position++], buffer, readString);
1958
- const valuePosition = buffer[position];
1959
- const value = valuePosition === 0 ? null : convertNode(valuePosition, buffer, readString);
1718
+ function propertyDefinition(position, buffer) {
1719
+ const flags = buffer[position + 2];
1720
+ const valuePosition = buffer[position + 4];
1960
1721
  return {
1961
1722
  type: 'PropertyDefinition',
1962
- start,
1963
- end,
1964
- static: isStatic,
1965
- computed,
1966
- key,
1967
- value
1723
+ start: buffer[position],
1724
+ end: buffer[position + 1],
1725
+ static: (flags & 1) === 1,
1726
+ computed: (flags & 2) === 2,
1727
+ key: convertNode(buffer[position + 3], buffer),
1728
+ value: valuePosition === 0 ? null : convertNode(valuePosition, buffer)
1968
1729
  };
1969
1730
  },
1970
- function restElement(position, buffer, readString) {
1971
- const start = buffer[position++];
1972
- const end = buffer[position++];
1973
- const argument = convertNode(buffer[position], buffer, readString);
1731
+ function restElement(position, buffer) {
1974
1732
  return {
1975
1733
  type: 'RestElement',
1976
- start,
1977
- end,
1978
- argument
1734
+ start: buffer[position],
1735
+ end: buffer[position + 1],
1736
+ argument: convertNode(buffer[position + 2], buffer)
1979
1737
  };
1980
1738
  },
1981
- function returnStatement(position, buffer, readString) {
1982
- const start = buffer[position++];
1983
- const end = buffer[position++];
1984
- const argumentPosition = buffer[position];
1985
- const argument = argumentPosition === 0 ? null : convertNode(argumentPosition, buffer, readString);
1739
+ function returnStatement(position, buffer) {
1740
+ const argumentPosition = buffer[position + 2];
1986
1741
  return {
1987
1742
  type: 'ReturnStatement',
1988
- start,
1989
- end,
1990
- argument
1743
+ start: buffer[position],
1744
+ end: buffer[position + 1],
1745
+ argument: argumentPosition === 0 ? null : convertNode(argumentPosition, buffer)
1991
1746
  };
1992
1747
  },
1993
- function sequenceExpression(position, buffer, readString) {
1994
- const start = buffer[position++];
1995
- const end = buffer[position++];
1996
- const expressions = convertNodeList(buffer[position], buffer, readString);
1748
+ function sequenceExpression(position, buffer) {
1997
1749
  return {
1998
1750
  type: 'SequenceExpression',
1999
- start,
2000
- end,
2001
- expressions
1751
+ start: buffer[position],
1752
+ end: buffer[position + 1],
1753
+ expressions: convertNodeList(buffer[position + 2], buffer)
2002
1754
  };
2003
1755
  },
2004
- function spreadElement(position, buffer, readString) {
2005
- const start = buffer[position++];
2006
- const end = buffer[position++];
2007
- const argument = convertNode(buffer[position], buffer, readString);
1756
+ function spreadElement(position, buffer) {
2008
1757
  return {
2009
1758
  type: 'SpreadElement',
2010
- start,
2011
- end,
2012
- argument
1759
+ start: buffer[position],
1760
+ end: buffer[position + 1],
1761
+ argument: convertNode(buffer[position + 2], buffer)
2013
1762
  };
2014
1763
  },
2015
- function staticBlock(position, buffer, readString) {
2016
- const start = buffer[position++];
2017
- const end = buffer[position++];
2018
- const body = convertNodeList(buffer[position], buffer, readString);
1764
+ function staticBlock(position, buffer) {
2019
1765
  return {
2020
1766
  type: 'StaticBlock',
2021
- start,
2022
- end,
2023
- body
1767
+ start: buffer[position],
1768
+ end: buffer[position + 1],
1769
+ body: convertNodeList(buffer[position + 2], buffer)
2024
1770
  };
2025
1771
  },
2026
1772
  function superElement(position, buffer) {
2027
- const start = buffer[position++];
2028
- const end = buffer[position++];
2029
1773
  return {
2030
1774
  type: 'Super',
2031
- start,
2032
- end
1775
+ start: buffer[position],
1776
+ end: buffer[position + 1]
2033
1777
  };
2034
1778
  },
2035
- function switchCase(position, buffer, readString) {
2036
- const start = buffer[position++];
2037
- const end = buffer[position++];
2038
- const testPosition = buffer[position++];
2039
- const test = testPosition === 0 ? null : convertNode(testPosition, buffer, readString);
2040
- const consequent = convertNodeList(buffer[position], buffer, readString);
1779
+ function switchCase(position, buffer) {
1780
+ const testPosition = buffer[position + 2];
2041
1781
  return {
2042
1782
  type: 'SwitchCase',
2043
- start,
2044
- end,
2045
- test,
2046
- consequent
1783
+ start: buffer[position],
1784
+ end: buffer[position + 1],
1785
+ test: testPosition === 0 ? null : convertNode(testPosition, buffer),
1786
+ consequent: convertNodeList(buffer[position + 3], buffer)
2047
1787
  };
2048
1788
  },
2049
- function switchStatement(position, buffer, readString) {
2050
- const start = buffer[position++];
2051
- const end = buffer[position++];
2052
- const discriminant = convertNode(buffer[position++], buffer, readString);
2053
- const cases = convertNodeList(buffer[position], buffer, readString);
1789
+ function switchStatement(position, buffer) {
2054
1790
  return {
2055
1791
  type: 'SwitchStatement',
2056
- start,
2057
- end,
2058
- discriminant,
2059
- cases
1792
+ start: buffer[position],
1793
+ end: buffer[position + 1],
1794
+ discriminant: convertNode(buffer[position + 2], buffer),
1795
+ cases: convertNodeList(buffer[position + 3], buffer)
2060
1796
  };
2061
1797
  },
2062
- function taggedTemplateExpression(position, buffer, readString) {
2063
- const start = buffer[position++];
2064
- const end = buffer[position++];
2065
- const tag = convertNode(buffer[position++], buffer, readString);
2066
- const quasi = convertNode(buffer[position], buffer, readString);
1798
+ function taggedTemplateExpression(position, buffer) {
2067
1799
  return {
2068
1800
  type: 'TaggedTemplateExpression',
2069
- start,
2070
- end,
2071
- tag,
2072
- quasi
1801
+ start: buffer[position],
1802
+ end: buffer[position + 1],
1803
+ tag: convertNode(buffer[position + 2], buffer),
1804
+ quasi: convertNode(buffer[position + 3], buffer)
2073
1805
  };
2074
1806
  },
2075
- function templateElement(position, buffer, readString) {
2076
- const start = buffer[position++];
2077
- const end = buffer[position++];
2078
- const flags = buffer[position++];
2079
- const tail = (flags & 1) === 1;
2080
- const cookedPosition = buffer[position++];
2081
- const cooked = cookedPosition === 0 ? undefined : convertString(cookedPosition, buffer, readString);
2082
- const raw = convertString(buffer[position], buffer, readString);
1807
+ function templateElement(position, buffer) {
1808
+ const flags = buffer[position + 2];
1809
+ const cookedPosition = buffer[position + 3];
1810
+ const cooked = cookedPosition === 0 ? undefined : buffer.convertString(cookedPosition);
1811
+ const raw = buffer.convertString(buffer[position + 4]);
2083
1812
  return {
2084
1813
  type: 'TemplateElement',
2085
- start,
2086
- end,
2087
- tail,
1814
+ start: buffer[position],
1815
+ end: buffer[position + 1],
1816
+ tail: (flags & 1) === 1,
2088
1817
  value: { cooked, raw }
2089
1818
  };
2090
1819
  },
2091
- function templateLiteral(position, buffer, readString) {
2092
- const start = buffer[position++];
2093
- const end = buffer[position++];
2094
- const quasis = convertNodeList(buffer[position++], buffer, readString);
2095
- const expressions = convertNodeList(buffer[position], buffer, readString);
1820
+ function templateLiteral(position, buffer) {
2096
1821
  return {
2097
1822
  type: 'TemplateLiteral',
2098
- start,
2099
- end,
2100
- quasis,
2101
- expressions
1823
+ start: buffer[position],
1824
+ end: buffer[position + 1],
1825
+ quasis: convertNodeList(buffer[position + 2], buffer),
1826
+ expressions: convertNodeList(buffer[position + 3], buffer)
2102
1827
  };
2103
1828
  },
2104
1829
  function thisExpression(position, buffer) {
2105
- const start = buffer[position++];
2106
- const end = buffer[position++];
2107
1830
  return {
2108
1831
  type: 'ThisExpression',
2109
- start,
2110
- end
1832
+ start: buffer[position],
1833
+ end: buffer[position + 1]
2111
1834
  };
2112
1835
  },
2113
- function throwStatement(position, buffer, readString) {
2114
- const start = buffer[position++];
2115
- const end = buffer[position++];
2116
- const argument = convertNode(buffer[position], buffer, readString);
1836
+ function throwStatement(position, buffer) {
2117
1837
  return {
2118
1838
  type: 'ThrowStatement',
2119
- start,
2120
- end,
2121
- argument
1839
+ start: buffer[position],
1840
+ end: buffer[position + 1],
1841
+ argument: convertNode(buffer[position + 2], buffer)
2122
1842
  };
2123
1843
  },
2124
- function tryStatement(position, buffer, readString) {
2125
- const start = buffer[position++];
2126
- const end = buffer[position++];
2127
- const block = convertNode(buffer[position++], buffer, readString);
2128
- const handlerPosition = buffer[position++];
2129
- const handler = handlerPosition === 0 ? null : convertNode(handlerPosition, buffer, readString);
2130
- const finalizerPosition = buffer[position];
2131
- const finalizer = finalizerPosition === 0 ? null : convertNode(finalizerPosition, buffer, readString);
1844
+ function tryStatement(position, buffer) {
1845
+ const handlerPosition = buffer[position + 3];
1846
+ const finalizerPosition = buffer[position + 4];
2132
1847
  return {
2133
1848
  type: 'TryStatement',
2134
- start,
2135
- end,
2136
- block,
2137
- handler,
2138
- finalizer
1849
+ start: buffer[position],
1850
+ end: buffer[position + 1],
1851
+ block: convertNode(buffer[position + 2], buffer),
1852
+ handler: handlerPosition === 0 ? null : convertNode(handlerPosition, buffer),
1853
+ finalizer: finalizerPosition === 0 ? null : convertNode(finalizerPosition, buffer)
2139
1854
  };
2140
1855
  },
2141
- function unaryExpression(position, buffer, readString) {
2142
- const start = buffer[position++];
2143
- const end = buffer[position++];
2144
- const operator = FIXED_STRINGS[buffer[position++]];
2145
- const argument = convertNode(buffer[position], buffer, readString);
1856
+ function unaryExpression(position, buffer) {
2146
1857
  return {
2147
1858
  type: 'UnaryExpression',
2148
- start,
2149
- end,
2150
- operator,
2151
- argument,
1859
+ start: buffer[position],
1860
+ end: buffer[position + 1],
1861
+ operator: FIXED_STRINGS[buffer[position + 2]],
1862
+ argument: convertNode(buffer[position + 3], buffer),
2152
1863
  prefix: true
2153
1864
  };
2154
1865
  },
2155
- function updateExpression(position, buffer, readString) {
2156
- const start = buffer[position++];
2157
- const end = buffer[position++];
2158
- const flags = buffer[position++];
2159
- const prefix = (flags & 1) === 1;
2160
- const operator = FIXED_STRINGS[buffer[position++]];
2161
- const argument = convertNode(buffer[position], buffer, readString);
1866
+ function updateExpression(position, buffer) {
1867
+ const flags = buffer[position + 2];
2162
1868
  return {
2163
1869
  type: 'UpdateExpression',
2164
- start,
2165
- end,
2166
- prefix,
2167
- operator,
2168
- argument
1870
+ start: buffer[position],
1871
+ end: buffer[position + 1],
1872
+ prefix: (flags & 1) === 1,
1873
+ operator: FIXED_STRINGS[buffer[position + 3]],
1874
+ argument: convertNode(buffer[position + 4], buffer)
2169
1875
  };
2170
1876
  },
2171
- function variableDeclaration(position, buffer, readString) {
2172
- const start = buffer[position++];
2173
- const end = buffer[position++];
2174
- const kind = FIXED_STRINGS[buffer[position++]];
2175
- const declarations = convertNodeList(buffer[position], buffer, readString);
1877
+ function variableDeclaration(position, buffer) {
2176
1878
  return {
2177
1879
  type: 'VariableDeclaration',
2178
- start,
2179
- end,
2180
- kind,
2181
- declarations
1880
+ start: buffer[position],
1881
+ end: buffer[position + 1],
1882
+ kind: FIXED_STRINGS[buffer[position + 2]],
1883
+ declarations: convertNodeList(buffer[position + 3], buffer)
2182
1884
  };
2183
1885
  },
2184
- function variableDeclarator(position, buffer, readString) {
2185
- const start = buffer[position++];
2186
- const end = buffer[position++];
2187
- const id = convertNode(buffer[position++], buffer, readString);
2188
- const initPosition = buffer[position];
2189
- const init = initPosition === 0 ? null : convertNode(initPosition, buffer, readString);
1886
+ function variableDeclarator(position, buffer) {
1887
+ const initPosition = buffer[position + 3];
2190
1888
  return {
2191
1889
  type: 'VariableDeclarator',
2192
- start,
2193
- end,
2194
- id,
2195
- init
1890
+ start: buffer[position],
1891
+ end: buffer[position + 1],
1892
+ id: convertNode(buffer[position + 2], buffer),
1893
+ init: initPosition === 0 ? null : convertNode(initPosition, buffer)
2196
1894
  };
2197
1895
  },
2198
- function whileStatement(position, buffer, readString) {
2199
- const start = buffer[position++];
2200
- const end = buffer[position++];
2201
- const test = convertNode(buffer[position++], buffer, readString);
2202
- const body = convertNode(buffer[position], buffer, readString);
1896
+ function whileStatement(position, buffer) {
2203
1897
  return {
2204
1898
  type: 'WhileStatement',
2205
- start,
2206
- end,
2207
- test,
2208
- body
1899
+ start: buffer[position],
1900
+ end: buffer[position + 1],
1901
+ test: convertNode(buffer[position + 2], buffer),
1902
+ body: convertNode(buffer[position + 3], buffer)
2209
1903
  };
2210
1904
  },
2211
- function yieldExpression(position, buffer, readString) {
2212
- const start = buffer[position++];
2213
- const end = buffer[position++];
2214
- const flags = buffer[position++];
2215
- const delegate = (flags & 1) === 1;
2216
- const argumentPosition = buffer[position];
2217
- const argument = argumentPosition === 0 ? null : convertNode(argumentPosition, buffer, readString);
1905
+ function yieldExpression(position, buffer) {
1906
+ const flags = buffer[position + 2];
1907
+ const argumentPosition = buffer[position + 3];
2218
1908
  return {
2219
1909
  type: 'YieldExpression',
2220
- start,
2221
- end,
2222
- delegate,
2223
- argument
1910
+ start: buffer[position],
1911
+ end: buffer[position + 1],
1912
+ delegate: (flags & 1) === 1,
1913
+ argument: argumentPosition === 0 ? null : convertNode(argumentPosition, buffer)
2224
1914
  };
2225
1915
  }
2226
1916
  ];
2227
- function convertNode(position, buffer, readString) {
1917
+ function convertNode(position, buffer) {
2228
1918
  const nodeType = buffer[position];
2229
1919
  const converter = nodeConverters[nodeType];
2230
1920
  /* istanbul ignore if: This should never be executed but is a safeguard against faulty buffers */
@@ -2232,42 +1922,43 @@ function convertNode(position, buffer, readString) {
2232
1922
  console.trace();
2233
1923
  throw new Error(`Unknown node type: ${nodeType}`);
2234
1924
  }
2235
- return converter(position + 1, buffer, readString);
1925
+ return converter(position + 1, buffer);
2236
1926
  }
2237
- function convertNodeList(position, buffer, readString) {
1927
+ function convertNodeList(position, buffer) {
2238
1928
  if (position === 0)
2239
1929
  return EMPTY_ARRAY;
2240
1930
  const length = buffer[position++];
2241
1931
  const list = [];
2242
1932
  for (let index = 0; index < length; index++) {
2243
1933
  const nodePosition = buffer[position++];
2244
- list.push(nodePosition ? convertNode(nodePosition, buffer, readString) : null);
1934
+ list.push(nodePosition ? convertNode(nodePosition, buffer) : null);
2245
1935
  }
2246
1936
  return list;
2247
1937
  }
2248
1938
 
2249
- function getReadStringFunction(astBuffer) {
1939
+ function getAstBuffer(astBuffer) {
1940
+ const array = new Uint32Array(astBuffer.buffer);
1941
+ let convertString;
2250
1942
  if (typeof Buffer !== 'undefined' && astBuffer instanceof Buffer) {
2251
- return function readString(start, length) {
2252
- return astBuffer.toString('utf8', start, start + length);
1943
+ convertString = (position) => {
1944
+ const length = array[position++];
1945
+ const bytePosition = position << 2;
1946
+ return astBuffer.toString('utf8', bytePosition, bytePosition + length);
2253
1947
  };
2254
1948
  }
2255
1949
  else {
2256
1950
  const textDecoder = new TextDecoder();
2257
- return function readString(start, length) {
2258
- return textDecoder.decode(astBuffer.subarray(start, start + length));
1951
+ convertString = (position) => {
1952
+ const length = array[position++];
1953
+ const bytePosition = position << 2;
1954
+ return textDecoder.decode(astBuffer.subarray(bytePosition, bytePosition + length));
2259
1955
  };
2260
1956
  }
1957
+ return Object.assign(array, { convertString });
2261
1958
  }
2262
1959
 
2263
- const parseAst = (input, { allowReturnOutsideFunction = false } = {}) => {
2264
- const astBuffer = native_js.parse(input, allowReturnOutsideFunction);
2265
- return convertProgram(astBuffer.buffer, getReadStringFunction(astBuffer));
2266
- };
2267
- const parseAstAsync = async (input, { allowReturnOutsideFunction = false, signal } = {}) => {
2268
- const astBuffer = await native_js.parseAsync(input, allowReturnOutsideFunction, signal);
2269
- return convertProgram(astBuffer.buffer, getReadStringFunction(astBuffer));
2270
- };
1960
+ const parseAst = (input, { allowReturnOutsideFunction = false } = {}) => convertProgram(getAstBuffer(native_js.parse(input, allowReturnOutsideFunction)));
1961
+ const parseAstAsync = async (input, { allowReturnOutsideFunction = false, signal } = {}) => convertProgram(getAstBuffer(await native_js.parseAsync(input, allowReturnOutsideFunction, signal)));
2271
1962
 
2272
1963
  exports.ANNOTATION_KEY = ANNOTATION_KEY;
2273
1964
  exports.ArrowFunctionExpression = ArrowFunctionExpression;
@@ -2291,6 +1982,7 @@ exports.Literal = Literal;
2291
1982
  exports.Program = Program;
2292
1983
  exports.Property = Property;
2293
1984
  exports.ReturnStatement = ReturnStatement;
1985
+ exports.StaticBlock = StaticBlock;
2294
1986
  exports.TemplateLiteral = TemplateLiteral;
2295
1987
  exports.URL_AVOIDING_EVAL = URL_AVOIDING_EVAL;
2296
1988
  exports.URL_NAME_IS_NOT_EXPORTED = URL_NAME_IS_NOT_EXPORTED;
@@ -2320,11 +2012,10 @@ exports.augmentCodeLocation = augmentCodeLocation;
2320
2012
  exports.augmentLogMessage = augmentLogMessage;
2321
2013
  exports.convertAnnotations = convertAnnotations;
2322
2014
  exports.convertNode = convertNode;
2323
- exports.convertString = convertString;
2324
2015
  exports.error = error;
2325
2016
  exports.getAliasName = getAliasName;
2017
+ exports.getAstBuffer = getAstBuffer;
2326
2018
  exports.getImportPath = getImportPath;
2327
- exports.getReadStringFunction = getReadStringFunction;
2328
2019
  exports.getRollupError = getRollupError;
2329
2020
  exports.getRollupUrl = getRollupUrl;
2330
2021
  exports.isAbsolute = isAbsolute;