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