@rollup/wasm-node 4.18.0 → 4.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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.19.0
4
+ Sat, 20 Jul 2024 05:45:44 GMT - commit 28546b5821efcb72c2eb05f422d986524647a0e3
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,808 @@ 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 + 3];
1271
+ const superClassPosition = buffer[position + 4];
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
+ decorators: convertNodeList(buffer[position + 2], buffer),
1277
+ id: idPosition === 0 ? null : convertNode(idPosition, buffer),
1278
+ superClass: superClassPosition === 0 ? null : convertNode(superClassPosition, buffer),
1279
+ body: convertNode(buffer[position + 5], buffer)
1280
+ };
1281
+ },
1282
+ function classExpression(position, buffer) {
1283
+ const idPosition = buffer[position + 3];
1284
+ const superClassPosition = buffer[position + 4];
1355
1285
  return {
1356
1286
  type: 'ClassExpression',
1357
- start,
1358
- end,
1359
- id,
1360
- superClass,
1361
- body
1287
+ start: buffer[position],
1288
+ end: buffer[position + 1],
1289
+ decorators: convertNodeList(buffer[position + 2], buffer),
1290
+ id: idPosition === 0 ? null : convertNode(idPosition, buffer),
1291
+ superClass: superClassPosition === 0 ? null : convertNode(superClassPosition, buffer),
1292
+ body: convertNode(buffer[position + 5], buffer)
1362
1293
  };
1363
1294
  },
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);
1295
+ function conditionalExpression(position, buffer) {
1370
1296
  return {
1371
1297
  type: 'ConditionalExpression',
1372
- start,
1373
- end,
1374
- test,
1375
- consequent,
1376
- alternate
1298
+ start: buffer[position],
1299
+ end: buffer[position + 1],
1300
+ test: convertNode(buffer[position + 2], buffer),
1301
+ consequent: convertNode(buffer[position + 3], buffer),
1302
+ alternate: convertNode(buffer[position + 4], buffer)
1377
1303
  };
1378
1304
  },
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);
1305
+ function continueStatement(position, buffer) {
1306
+ const labelPosition = buffer[position + 2];
1384
1307
  return {
1385
1308
  type: 'ContinueStatement',
1386
- start,
1387
- end,
1388
- label
1309
+ start: buffer[position],
1310
+ end: buffer[position + 1],
1311
+ label: labelPosition === 0 ? null : convertNode(labelPosition, buffer)
1389
1312
  };
1390
1313
  },
1391
1314
  function debuggerStatement(position, buffer) {
1392
- const start = buffer[position++];
1393
- const end = buffer[position++];
1394
1315
  return {
1395
1316
  type: 'DebuggerStatement',
1396
- start,
1397
- end
1317
+ start: buffer[position],
1318
+ end: buffer[position + 1]
1398
1319
  };
1399
1320
  },
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);
1321
+ function decorator(position, buffer) {
1322
+ return {
1323
+ type: 'Decorator',
1324
+ start: buffer[position],
1325
+ end: buffer[position + 1],
1326
+ expression: convertNode(buffer[position + 2], buffer)
1327
+ };
1328
+ },
1329
+ function directive(position, buffer) {
1405
1330
  return {
1406
1331
  type: 'ExpressionStatement',
1407
- start,
1408
- end,
1409
- directive,
1410
- expression
1332
+ start: buffer[position],
1333
+ end: buffer[position + 1],
1334
+ directive: buffer.convertString(buffer[position + 2]),
1335
+ expression: convertNode(buffer[position + 3], buffer)
1411
1336
  };
1412
1337
  },
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);
1338
+ function doWhileStatement(position, buffer) {
1418
1339
  return {
1419
1340
  type: 'DoWhileStatement',
1420
- start,
1421
- end,
1422
- body,
1423
- test
1341
+ start: buffer[position],
1342
+ end: buffer[position + 1],
1343
+ body: convertNode(buffer[position + 2], buffer),
1344
+ test: convertNode(buffer[position + 3], buffer)
1424
1345
  };
1425
1346
  },
1426
1347
  function emptyStatement(position, buffer) {
1427
- const start = buffer[position++];
1428
- const end = buffer[position++];
1429
1348
  return {
1430
1349
  type: 'EmptyStatement',
1431
- start,
1432
- end
1350
+ start: buffer[position],
1351
+ end: buffer[position + 1]
1433
1352
  };
1434
1353
  },
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);
1354
+ function exportAllDeclaration(position, buffer) {
1355
+ const exportedPosition = buffer[position + 2];
1442
1356
  return {
1443
1357
  type: 'ExportAllDeclaration',
1444
- start,
1445
- end,
1446
- exported,
1447
- source,
1448
- attributes
1358
+ start: buffer[position],
1359
+ end: buffer[position + 1],
1360
+ exported: exportedPosition === 0 ? null : convertNode(exportedPosition, buffer),
1361
+ source: convertNode(buffer[position + 3], buffer),
1362
+ attributes: convertNodeList(buffer[position + 4], buffer)
1449
1363
  };
1450
1364
  },
1451
- function exportDefaultDeclaration(position, buffer, readString) {
1452
- const start = buffer[position++];
1453
- const end = buffer[position++];
1454
- const declaration = convertNode(buffer[position], buffer, readString);
1365
+ function exportDefaultDeclaration(position, buffer) {
1455
1366
  return {
1456
1367
  type: 'ExportDefaultDeclaration',
1457
- start,
1458
- end,
1459
- declaration
1368
+ start: buffer[position],
1369
+ end: buffer[position + 1],
1370
+ declaration: convertNode(buffer[position + 2], buffer)
1460
1371
  };
1461
1372
  },
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);
1373
+ function exportNamedDeclaration(position, buffer) {
1374
+ const sourcePosition = buffer[position + 3];
1375
+ const declarationPosition = buffer[position + 5];
1471
1376
  return {
1472
1377
  type: 'ExportNamedDeclaration',
1473
- start,
1474
- end,
1475
- specifiers,
1476
- source,
1477
- attributes,
1478
- declaration
1378
+ start: buffer[position],
1379
+ end: buffer[position + 1],
1380
+ specifiers: convertNodeList(buffer[position + 2], buffer),
1381
+ source: sourcePosition === 0 ? null : convertNode(sourcePosition, buffer),
1382
+ attributes: convertNodeList(buffer[position + 4], buffer),
1383
+ declaration: declarationPosition === 0 ? null : convertNode(declarationPosition, buffer)
1479
1384
  };
1480
1385
  },
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];
1386
+ function exportSpecifier(position, buffer) {
1387
+ const local = convertNode(buffer[position + 2], buffer);
1388
+ const exportedPosition = buffer[position + 3];
1486
1389
  return {
1487
1390
  type: 'ExportSpecifier',
1488
- start,
1489
- end,
1391
+ start: buffer[position],
1392
+ end: buffer[position + 1],
1490
1393
  local,
1491
- exported: exportedPosition === 0 ? { ...local } : convertNode(exportedPosition, buffer, readString)
1394
+ exported: exportedPosition === 0 ? { ...local } : convertNode(exportedPosition, buffer)
1492
1395
  };
1493
1396
  },
1494
- function expressionStatement(position, buffer, readString) {
1495
- const start = buffer[position++];
1496
- const end = buffer[position++];
1497
- const expression = convertNode(buffer[position], buffer, readString);
1397
+ function expressionStatement(position, buffer) {
1498
1398
  return {
1499
1399
  type: 'ExpressionStatement',
1500
- start,
1501
- end,
1502
- expression
1400
+ start: buffer[position],
1401
+ end: buffer[position + 1],
1402
+ expression: convertNode(buffer[position + 2], buffer)
1503
1403
  };
1504
1404
  },
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);
1405
+ function forInStatement(position, buffer) {
1511
1406
  return {
1512
1407
  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);
1408
+ start: buffer[position],
1409
+ end: buffer[position + 1],
1410
+ left: convertNode(buffer[position + 2], buffer),
1411
+ right: convertNode(buffer[position + 3], buffer),
1412
+ body: convertNode(buffer[position + 4], buffer)
1413
+ };
1414
+ },
1415
+ function forOfStatement(position, buffer) {
1416
+ const flags = buffer[position + 2];
1528
1417
  return {
1529
1418
  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);
1419
+ start: buffer[position],
1420
+ end: buffer[position + 1],
1421
+ await: (flags & 1) === 1,
1422
+ left: convertNode(buffer[position + 3], buffer),
1423
+ right: convertNode(buffer[position + 4], buffer),
1424
+ body: convertNode(buffer[position + 5], buffer)
1425
+ };
1426
+ },
1427
+ function forStatement(position, buffer) {
1428
+ const initPosition = buffer[position + 2];
1429
+ const testPosition = buffer[position + 3];
1430
+ const updatePosition = buffer[position + 4];
1548
1431
  return {
1549
1432
  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);
1433
+ start: buffer[position],
1434
+ end: buffer[position + 1],
1435
+ init: initPosition === 0 ? null : convertNode(initPosition, buffer),
1436
+ test: testPosition === 0 ? null : convertNode(testPosition, buffer),
1437
+ update: updatePosition === 0 ? null : convertNode(updatePosition, buffer),
1438
+ body: convertNode(buffer[position + 5], buffer)
1439
+ };
1440
+ },
1441
+ function functionDeclaration(position, buffer) {
1442
+ const flags = buffer[position + 2];
1443
+ const annotations = convertAnnotations(buffer[position + 3], buffer);
1444
+ const idPosition = buffer[position + 4];
1569
1445
  return {
1570
1446
  type: 'FunctionDeclaration',
1571
- start,
1572
- end,
1573
- async,
1574
- generator,
1447
+ start: buffer[position],
1448
+ end: buffer[position + 1],
1449
+ async: (flags & 1) === 1,
1450
+ generator: (flags & 2) === 2,
1575
1451
  ...(annotations.length > 0 ? { [ANNOTATION_KEY]: annotations } : {}),
1576
- id,
1577
- params: parameters,
1578
- body,
1452
+ id: idPosition === 0 ? null : convertNode(idPosition, buffer),
1453
+ params: convertNodeList(buffer[position + 5], buffer),
1454
+ body: convertNode(buffer[position + 6], buffer),
1579
1455
  expression: false
1580
1456
  };
1581
1457
  },
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);
1458
+ function functionExpression(position, buffer) {
1459
+ const flags = buffer[position + 2];
1460
+ const annotations = convertAnnotations(buffer[position + 3], buffer);
1461
+ const idPosition = buffer[position + 4];
1593
1462
  return {
1594
1463
  type: 'FunctionExpression',
1595
- start,
1596
- end,
1597
- async,
1598
- generator,
1464
+ start: buffer[position],
1465
+ end: buffer[position + 1],
1466
+ async: (flags & 1) === 1,
1467
+ generator: (flags & 2) === 2,
1599
1468
  ...(annotations.length > 0 ? { [ANNOTATION_KEY]: annotations } : {}),
1600
- id,
1601
- params: parameters,
1602
- body,
1469
+ id: idPosition === 0 ? null : convertNode(idPosition, buffer),
1470
+ params: convertNodeList(buffer[position + 5], buffer),
1471
+ body: convertNode(buffer[position + 6], buffer),
1603
1472
  expression: false
1604
1473
  };
1605
1474
  },
1606
- function identifier(position, buffer, readString) {
1607
- const start = buffer[position++];
1608
- const end = buffer[position++];
1609
- const name = convertString(buffer[position], buffer, readString);
1475
+ function identifier(position, buffer) {
1610
1476
  return {
1611
1477
  type: 'Identifier',
1612
- start,
1613
- end,
1614
- name
1478
+ start: buffer[position],
1479
+ end: buffer[position + 1],
1480
+ name: buffer.convertString(buffer[position + 2])
1615
1481
  };
1616
1482
  },
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);
1483
+ function ifStatement(position, buffer) {
1484
+ const alternatePosition = buffer[position + 4];
1624
1485
  return {
1625
1486
  type: 'IfStatement',
1626
- start,
1627
- end,
1628
- test,
1629
- consequent,
1630
- alternate
1487
+ start: buffer[position],
1488
+ end: buffer[position + 1],
1489
+ test: convertNode(buffer[position + 2], buffer),
1490
+ consequent: convertNode(buffer[position + 3], buffer),
1491
+ alternate: alternatePosition === 0 ? null : convertNode(alternatePosition, buffer)
1631
1492
  };
1632
1493
  },
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);
1494
+ function importAttribute(position, buffer) {
1638
1495
  return {
1639
1496
  type: 'ImportAttribute',
1640
- start,
1641
- end,
1642
- key,
1643
- value
1497
+ start: buffer[position],
1498
+ end: buffer[position + 1],
1499
+ key: convertNode(buffer[position + 2], buffer),
1500
+ value: convertNode(buffer[position + 3], buffer)
1644
1501
  };
1645
1502
  },
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);
1503
+ function importDeclaration(position, buffer) {
1652
1504
  return {
1653
1505
  type: 'ImportDeclaration',
1654
- start,
1655
- end,
1656
- specifiers,
1657
- source,
1658
- attributes
1506
+ start: buffer[position],
1507
+ end: buffer[position + 1],
1508
+ specifiers: convertNodeList(buffer[position + 2], buffer),
1509
+ source: convertNode(buffer[position + 3], buffer),
1510
+ attributes: convertNodeList(buffer[position + 4], buffer)
1659
1511
  };
1660
1512
  },
1661
- function importDefaultSpecifier(position, buffer, readString) {
1662
- const start = buffer[position++];
1663
- const end = buffer[position++];
1664
- const local = convertNode(buffer[position], buffer, readString);
1513
+ function importDefaultSpecifier(position, buffer) {
1665
1514
  return {
1666
1515
  type: 'ImportDefaultSpecifier',
1667
- start,
1668
- end,
1669
- local
1516
+ start: buffer[position],
1517
+ end: buffer[position + 1],
1518
+ local: convertNode(buffer[position + 2], buffer)
1670
1519
  };
1671
1520
  },
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);
1521
+ function importExpression(position, buffer) {
1522
+ const optionsPosition = buffer[position + 3];
1678
1523
  return {
1679
1524
  type: 'ImportExpression',
1680
- start,
1681
- end,
1682
- source,
1683
- options
1525
+ start: buffer[position],
1526
+ end: buffer[position + 1],
1527
+ source: convertNode(buffer[position + 2], buffer),
1528
+ options: optionsPosition === 0 ? null : convertNode(optionsPosition, buffer)
1684
1529
  };
1685
1530
  },
1686
- function importNamespaceSpecifier(position, buffer, readString) {
1687
- const start = buffer[position++];
1688
- const end = buffer[position++];
1689
- const local = convertNode(buffer[position], buffer, readString);
1531
+ function importNamespaceSpecifier(position, buffer) {
1690
1532
  return {
1691
1533
  type: 'ImportNamespaceSpecifier',
1692
- start,
1693
- end,
1694
- local
1534
+ start: buffer[position],
1535
+ end: buffer[position + 1],
1536
+ local: convertNode(buffer[position + 2], buffer)
1695
1537
  };
1696
1538
  },
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);
1539
+ function importSpecifier(position, buffer) {
1540
+ const importedPosition = buffer[position + 2];
1541
+ const local = convertNode(buffer[position + 3], buffer);
1702
1542
  return {
1703
1543
  type: 'ImportSpecifier',
1704
- start,
1705
- end,
1706
- imported: importedPosition === 0 ? { ...local } : convertNode(importedPosition, buffer, readString),
1544
+ start: buffer[position],
1545
+ end: buffer[position + 1],
1546
+ imported: importedPosition === 0 ? { ...local } : convertNode(importedPosition, buffer),
1707
1547
  local
1708
1548
  };
1709
1549
  },
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);
1550
+ function labeledStatement(position, buffer) {
1715
1551
  return {
1716
1552
  type: 'LabeledStatement',
1717
- start,
1718
- end,
1719
- label,
1720
- body
1553
+ start: buffer[position],
1554
+ end: buffer[position + 1],
1555
+ label: convertNode(buffer[position + 2], buffer),
1556
+ body: convertNode(buffer[position + 3], buffer)
1721
1557
  };
1722
1558
  },
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);
1559
+ function literalBigInt(position, buffer) {
1560
+ const bigint = buffer.convertString(buffer[position + 2]);
1728
1561
  return {
1729
1562
  type: 'Literal',
1730
- start,
1731
- end,
1563
+ start: buffer[position],
1564
+ end: buffer[position + 1],
1732
1565
  bigint,
1733
- raw,
1566
+ raw: buffer.convertString(buffer[position + 3]),
1734
1567
  value: BigInt(bigint)
1735
1568
  };
1736
1569
  },
1737
1570
  function literalBoolean(position, buffer) {
1738
- const start = buffer[position++];
1739
- const end = buffer[position++];
1740
- const flags = buffer[position++];
1571
+ const flags = buffer[position + 2];
1741
1572
  const value = (flags & 1) === 1;
1742
1573
  return {
1743
1574
  type: 'Literal',
1744
- start,
1745
- end,
1575
+ start: buffer[position],
1576
+ end: buffer[position + 1],
1746
1577
  value,
1747
1578
  raw: value ? 'true' : 'false'
1748
1579
  };
1749
1580
  },
1750
1581
  function literalNull(position, buffer) {
1751
- const start = buffer[position++];
1752
- const end = buffer[position++];
1753
1582
  return {
1754
1583
  type: 'Literal',
1755
- start,
1756
- end,
1584
+ start: buffer[position],
1585
+ end: buffer[position + 1],
1757
1586
  raw: 'null',
1758
1587
  value: null
1759
1588
  };
1760
1589
  },
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);
1590
+ function literalNumber(position, buffer) {
1591
+ const rawPosition = buffer[position + 2];
1767
1592
  return {
1768
1593
  type: 'Literal',
1769
- start,
1770
- end,
1771
- raw,
1772
- value
1594
+ start: buffer[position],
1595
+ end: buffer[position + 1],
1596
+ raw: rawPosition === 0 ? undefined : buffer.convertString(rawPosition),
1597
+ value: new DataView(buffer.buffer).getFloat64((position + 3) << 2, true)
1773
1598
  };
1774
1599
  },
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);
1600
+ function literalRegExp(position, buffer) {
1601
+ const flags = buffer.convertString(buffer[position + 2]);
1602
+ const pattern = buffer.convertString(buffer[position + 3]);
1780
1603
  return {
1781
1604
  type: 'Literal',
1782
- start,
1783
- end,
1605
+ start: buffer[position],
1606
+ end: buffer[position + 1],
1784
1607
  raw: `/${pattern}/${flags}`,
1785
1608
  regex: { flags, pattern },
1786
1609
  value: new RegExp(pattern, flags)
1787
1610
  };
1788
1611
  },
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);
1612
+ function literalString(position, buffer) {
1613
+ const rawPosition = buffer[position + 3];
1795
1614
  return {
1796
1615
  type: 'Literal',
1797
- start,
1798
- end,
1799
- value,
1800
- raw
1616
+ start: buffer[position],
1617
+ end: buffer[position + 1],
1618
+ value: buffer.convertString(buffer[position + 2]),
1619
+ raw: rawPosition === 0 ? undefined : buffer.convertString(rawPosition)
1801
1620
  };
1802
1621
  },
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);
1622
+ function logicalExpression(position, buffer) {
1809
1623
  return {
1810
1624
  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);
1625
+ start: buffer[position],
1626
+ end: buffer[position + 1],
1627
+ operator: FIXED_STRINGS[buffer[position + 2]],
1628
+ left: convertNode(buffer[position + 3], buffer),
1629
+ right: convertNode(buffer[position + 4], buffer)
1630
+ };
1631
+ },
1632
+ function memberExpression(position, buffer) {
1633
+ const flags = buffer[position + 2];
1826
1634
  return {
1827
1635
  type: 'MemberExpression',
1828
- start,
1829
- end,
1830
- computed,
1831
- optional,
1832
- object,
1833
- property
1636
+ start: buffer[position],
1637
+ end: buffer[position + 1],
1638
+ computed: (flags & 1) === 1,
1639
+ optional: (flags & 2) === 2,
1640
+ object: convertNode(buffer[position + 3], buffer),
1641
+ property: convertNode(buffer[position + 4], buffer)
1834
1642
  };
1835
1643
  },
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);
1644
+ function metaProperty(position, buffer) {
1841
1645
  return {
1842
1646
  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]];
1647
+ start: buffer[position],
1648
+ end: buffer[position + 1],
1649
+ meta: convertNode(buffer[position + 2], buffer),
1650
+ property: convertNode(buffer[position + 3], buffer)
1651
+ };
1652
+ },
1653
+ function methodDefinition(position, buffer) {
1654
+ const flags = buffer[position + 2];
1858
1655
  return {
1859
1656
  type: 'MethodDefinition',
1860
- start,
1861
- end,
1862
- static: isStatic,
1863
- computed,
1864
- key,
1865
- value,
1866
- kind
1657
+ start: buffer[position],
1658
+ end: buffer[position + 1],
1659
+ static: (flags & 1) === 1,
1660
+ computed: (flags & 2) === 2,
1661
+ decorators: convertNodeList(buffer[position + 3], buffer),
1662
+ key: convertNode(buffer[position + 4], buffer),
1663
+ value: convertNode(buffer[position + 5], buffer),
1664
+ kind: FIXED_STRINGS[buffer[position + 6]]
1867
1665
  };
1868
1666
  },
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);
1667
+ function newExpression(position, buffer) {
1668
+ const annotations = convertAnnotations(buffer[position + 2], buffer);
1875
1669
  return {
1876
1670
  type: 'NewExpression',
1877
- start,
1878
- end,
1671
+ start: buffer[position],
1672
+ end: buffer[position + 1],
1879
1673
  ...(annotations.length > 0 ? { [ANNOTATION_KEY]: annotations } : {}),
1880
- callee,
1881
- arguments: callArguments
1674
+ callee: convertNode(buffer[position + 3], buffer),
1675
+ arguments: convertNodeList(buffer[position + 4], buffer)
1882
1676
  };
1883
1677
  },
1884
- function objectExpression(position, buffer, readString) {
1885
- const start = buffer[position++];
1886
- const end = buffer[position++];
1887
- const properties = convertNodeList(buffer[position], buffer, readString);
1678
+ function objectExpression(position, buffer) {
1888
1679
  return {
1889
1680
  type: 'ObjectExpression',
1890
- start,
1891
- end,
1892
- properties
1681
+ start: buffer[position],
1682
+ end: buffer[position + 1],
1683
+ properties: convertNodeList(buffer[position + 2], buffer)
1893
1684
  };
1894
1685
  },
1895
- function objectPattern(position, buffer, readString) {
1896
- const start = buffer[position++];
1897
- const end = buffer[position++];
1898
- const properties = convertNodeList(buffer[position], buffer, readString);
1686
+ function objectPattern(position, buffer) {
1899
1687
  return {
1900
1688
  type: 'ObjectPattern',
1901
- start,
1902
- end,
1903
- properties
1689
+ start: buffer[position],
1690
+ end: buffer[position + 1],
1691
+ properties: convertNodeList(buffer[position + 2], buffer)
1904
1692
  };
1905
1693
  },
1906
- function privateIdentifier(position, buffer, readString) {
1907
- const start = buffer[position++];
1908
- const end = buffer[position++];
1909
- const name = convertString(buffer[position], buffer, readString);
1694
+ function privateIdentifier(position, buffer) {
1910
1695
  return {
1911
1696
  type: 'PrivateIdentifier',
1912
- start,
1913
- end,
1914
- name
1697
+ start: buffer[position],
1698
+ end: buffer[position + 1],
1699
+ name: buffer.convertString(buffer[position + 2])
1915
1700
  };
1916
1701
  },
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);
1702
+ function program(position, buffer) {
1703
+ const invalidAnnotations = convertAnnotations(buffer[position + 3], buffer);
1922
1704
  return {
1923
1705
  type: 'Program',
1924
- start,
1925
- end,
1926
- body,
1706
+ start: buffer[position],
1707
+ end: buffer[position + 1],
1708
+ body: convertNodeList(buffer[position + 2], buffer),
1927
1709
  ...(invalidAnnotations.length > 0 ? { [INVALID_ANNOTATION_KEY]: invalidAnnotations } : {}),
1928
1710
  sourceType: 'module'
1929
1711
  };
1930
1712
  },
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]];
1713
+ function property(position, buffer) {
1714
+ const flags = buffer[position + 2];
1715
+ const keyPosition = buffer[position + 3];
1716
+ const value = convertNode(buffer[position + 4], buffer);
1941
1717
  return {
1942
1718
  type: 'Property',
1943
- start,
1944
- end,
1945
- method,
1946
- shorthand,
1947
- computed,
1948
- key: keyPosition === 0 ? { ...value } : convertNode(keyPosition, buffer, readString),
1719
+ start: buffer[position],
1720
+ end: buffer[position + 1],
1721
+ method: (flags & 1) === 1,
1722
+ shorthand: (flags & 2) === 2,
1723
+ computed: (flags & 4) === 4,
1724
+ key: keyPosition === 0 ? { ...value } : convertNode(keyPosition, buffer),
1949
1725
  value,
1950
- kind
1726
+ kind: FIXED_STRINGS[buffer[position + 5]]
1951
1727
  };
1952
1728
  },
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);
1729
+ function propertyDefinition(position, buffer) {
1730
+ const flags = buffer[position + 2];
1731
+ const valuePosition = buffer[position + 5];
1962
1732
  return {
1963
1733
  type: 'PropertyDefinition',
1964
- start,
1965
- end,
1966
- static: isStatic,
1967
- computed,
1968
- key,
1969
- value
1734
+ start: buffer[position],
1735
+ end: buffer[position + 1],
1736
+ static: (flags & 1) === 1,
1737
+ computed: (flags & 2) === 2,
1738
+ decorators: convertNodeList(buffer[position + 3], buffer),
1739
+ key: convertNode(buffer[position + 4], buffer),
1740
+ value: valuePosition === 0 ? null : convertNode(valuePosition, buffer)
1970
1741
  };
1971
1742
  },
1972
- function restElement(position, buffer, readString) {
1973
- const start = buffer[position++];
1974
- const end = buffer[position++];
1975
- const argument = convertNode(buffer[position], buffer, readString);
1743
+ function restElement(position, buffer) {
1976
1744
  return {
1977
1745
  type: 'RestElement',
1978
- start,
1979
- end,
1980
- argument
1746
+ start: buffer[position],
1747
+ end: buffer[position + 1],
1748
+ argument: convertNode(buffer[position + 2], buffer)
1981
1749
  };
1982
1750
  },
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);
1751
+ function returnStatement(position, buffer) {
1752
+ const argumentPosition = buffer[position + 2];
1988
1753
  return {
1989
1754
  type: 'ReturnStatement',
1990
- start,
1991
- end,
1992
- argument
1755
+ start: buffer[position],
1756
+ end: buffer[position + 1],
1757
+ argument: argumentPosition === 0 ? null : convertNode(argumentPosition, buffer)
1993
1758
  };
1994
1759
  },
1995
- function sequenceExpression(position, buffer, readString) {
1996
- const start = buffer[position++];
1997
- const end = buffer[position++];
1998
- const expressions = convertNodeList(buffer[position], buffer, readString);
1760
+ function sequenceExpression(position, buffer) {
1999
1761
  return {
2000
1762
  type: 'SequenceExpression',
2001
- start,
2002
- end,
2003
- expressions
1763
+ start: buffer[position],
1764
+ end: buffer[position + 1],
1765
+ expressions: convertNodeList(buffer[position + 2], buffer)
2004
1766
  };
2005
1767
  },
2006
- function spreadElement(position, buffer, readString) {
2007
- const start = buffer[position++];
2008
- const end = buffer[position++];
2009
- const argument = convertNode(buffer[position], buffer, readString);
1768
+ function spreadElement(position, buffer) {
2010
1769
  return {
2011
1770
  type: 'SpreadElement',
2012
- start,
2013
- end,
2014
- argument
1771
+ start: buffer[position],
1772
+ end: buffer[position + 1],
1773
+ argument: convertNode(buffer[position + 2], buffer)
2015
1774
  };
2016
1775
  },
2017
- function staticBlock(position, buffer, readString) {
2018
- const start = buffer[position++];
2019
- const end = buffer[position++];
2020
- const body = convertNodeList(buffer[position], buffer, readString);
1776
+ function staticBlock(position, buffer) {
2021
1777
  return {
2022
1778
  type: 'StaticBlock',
2023
- start,
2024
- end,
2025
- body
1779
+ start: buffer[position],
1780
+ end: buffer[position + 1],
1781
+ body: convertNodeList(buffer[position + 2], buffer)
2026
1782
  };
2027
1783
  },
2028
1784
  function superElement(position, buffer) {
2029
- const start = buffer[position++];
2030
- const end = buffer[position++];
2031
1785
  return {
2032
1786
  type: 'Super',
2033
- start,
2034
- end
1787
+ start: buffer[position],
1788
+ end: buffer[position + 1]
2035
1789
  };
2036
1790
  },
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);
1791
+ function switchCase(position, buffer) {
1792
+ const testPosition = buffer[position + 2];
2043
1793
  return {
2044
1794
  type: 'SwitchCase',
2045
- start,
2046
- end,
2047
- test,
2048
- consequent
1795
+ start: buffer[position],
1796
+ end: buffer[position + 1],
1797
+ test: testPosition === 0 ? null : convertNode(testPosition, buffer),
1798
+ consequent: convertNodeList(buffer[position + 3], buffer)
2049
1799
  };
2050
1800
  },
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);
1801
+ function switchStatement(position, buffer) {
2056
1802
  return {
2057
1803
  type: 'SwitchStatement',
2058
- start,
2059
- end,
2060
- discriminant,
2061
- cases
1804
+ start: buffer[position],
1805
+ end: buffer[position + 1],
1806
+ discriminant: convertNode(buffer[position + 2], buffer),
1807
+ cases: convertNodeList(buffer[position + 3], buffer)
2062
1808
  };
2063
1809
  },
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);
1810
+ function taggedTemplateExpression(position, buffer) {
2069
1811
  return {
2070
1812
  type: 'TaggedTemplateExpression',
2071
- start,
2072
- end,
2073
- tag,
2074
- quasi
1813
+ start: buffer[position],
1814
+ end: buffer[position + 1],
1815
+ tag: convertNode(buffer[position + 2], buffer),
1816
+ quasi: convertNode(buffer[position + 3], buffer)
2075
1817
  };
2076
1818
  },
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);
1819
+ function templateElement(position, buffer) {
1820
+ const flags = buffer[position + 2];
1821
+ const cookedPosition = buffer[position + 3];
1822
+ const cooked = cookedPosition === 0 ? undefined : buffer.convertString(cookedPosition);
1823
+ const raw = buffer.convertString(buffer[position + 4]);
2085
1824
  return {
2086
1825
  type: 'TemplateElement',
2087
- start,
2088
- end,
2089
- tail,
1826
+ start: buffer[position],
1827
+ end: buffer[position + 1],
1828
+ tail: (flags & 1) === 1,
2090
1829
  value: { cooked, raw }
2091
1830
  };
2092
1831
  },
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);
1832
+ function templateLiteral(position, buffer) {
2098
1833
  return {
2099
1834
  type: 'TemplateLiteral',
2100
- start,
2101
- end,
2102
- quasis,
2103
- expressions
1835
+ start: buffer[position],
1836
+ end: buffer[position + 1],
1837
+ quasis: convertNodeList(buffer[position + 2], buffer),
1838
+ expressions: convertNodeList(buffer[position + 3], buffer)
2104
1839
  };
2105
1840
  },
2106
1841
  function thisExpression(position, buffer) {
2107
- const start = buffer[position++];
2108
- const end = buffer[position++];
2109
1842
  return {
2110
1843
  type: 'ThisExpression',
2111
- start,
2112
- end
1844
+ start: buffer[position],
1845
+ end: buffer[position + 1]
2113
1846
  };
2114
1847
  },
2115
- function throwStatement(position, buffer, readString) {
2116
- const start = buffer[position++];
2117
- const end = buffer[position++];
2118
- const argument = convertNode(buffer[position], buffer, readString);
1848
+ function throwStatement(position, buffer) {
2119
1849
  return {
2120
1850
  type: 'ThrowStatement',
2121
- start,
2122
- end,
2123
- argument
1851
+ start: buffer[position],
1852
+ end: buffer[position + 1],
1853
+ argument: convertNode(buffer[position + 2], buffer)
2124
1854
  };
2125
1855
  },
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);
1856
+ function tryStatement(position, buffer) {
1857
+ const handlerPosition = buffer[position + 3];
1858
+ const finalizerPosition = buffer[position + 4];
2134
1859
  return {
2135
1860
  type: 'TryStatement',
2136
- start,
2137
- end,
2138
- block,
2139
- handler,
2140
- finalizer
1861
+ start: buffer[position],
1862
+ end: buffer[position + 1],
1863
+ block: convertNode(buffer[position + 2], buffer),
1864
+ handler: handlerPosition === 0 ? null : convertNode(handlerPosition, buffer),
1865
+ finalizer: finalizerPosition === 0 ? null : convertNode(finalizerPosition, buffer)
2141
1866
  };
2142
1867
  },
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);
1868
+ function unaryExpression(position, buffer) {
2148
1869
  return {
2149
1870
  type: 'UnaryExpression',
2150
- start,
2151
- end,
2152
- operator,
2153
- argument,
1871
+ start: buffer[position],
1872
+ end: buffer[position + 1],
1873
+ operator: FIXED_STRINGS[buffer[position + 2]],
1874
+ argument: convertNode(buffer[position + 3], buffer),
2154
1875
  prefix: true
2155
1876
  };
2156
1877
  },
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);
1878
+ function updateExpression(position, buffer) {
1879
+ const flags = buffer[position + 2];
2164
1880
  return {
2165
1881
  type: 'UpdateExpression',
2166
- start,
2167
- end,
2168
- prefix,
2169
- operator,
2170
- argument
1882
+ start: buffer[position],
1883
+ end: buffer[position + 1],
1884
+ prefix: (flags & 1) === 1,
1885
+ operator: FIXED_STRINGS[buffer[position + 3]],
1886
+ argument: convertNode(buffer[position + 4], buffer)
2171
1887
  };
2172
1888
  },
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);
1889
+ function variableDeclaration(position, buffer) {
2178
1890
  return {
2179
1891
  type: 'VariableDeclaration',
2180
- start,
2181
- end,
2182
- kind,
2183
- declarations
1892
+ start: buffer[position],
1893
+ end: buffer[position + 1],
1894
+ kind: FIXED_STRINGS[buffer[position + 2]],
1895
+ declarations: convertNodeList(buffer[position + 3], buffer)
2184
1896
  };
2185
1897
  },
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);
1898
+ function variableDeclarator(position, buffer) {
1899
+ const initPosition = buffer[position + 3];
2192
1900
  return {
2193
1901
  type: 'VariableDeclarator',
2194
- start,
2195
- end,
2196
- id,
2197
- init
1902
+ start: buffer[position],
1903
+ end: buffer[position + 1],
1904
+ id: convertNode(buffer[position + 2], buffer),
1905
+ init: initPosition === 0 ? null : convertNode(initPosition, buffer)
2198
1906
  };
2199
1907
  },
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);
1908
+ function whileStatement(position, buffer) {
2205
1909
  return {
2206
1910
  type: 'WhileStatement',
2207
- start,
2208
- end,
2209
- test,
2210
- body
1911
+ start: buffer[position],
1912
+ end: buffer[position + 1],
1913
+ test: convertNode(buffer[position + 2], buffer),
1914
+ body: convertNode(buffer[position + 3], buffer)
2211
1915
  };
2212
1916
  },
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);
1917
+ function yieldExpression(position, buffer) {
1918
+ const flags = buffer[position + 2];
1919
+ const argumentPosition = buffer[position + 3];
2220
1920
  return {
2221
1921
  type: 'YieldExpression',
2222
- start,
2223
- end,
2224
- delegate,
2225
- argument
1922
+ start: buffer[position],
1923
+ end: buffer[position + 1],
1924
+ delegate: (flags & 1) === 1,
1925
+ argument: argumentPosition === 0 ? null : convertNode(argumentPosition, buffer)
2226
1926
  };
2227
1927
  }
2228
1928
  ];
2229
- function convertNode(position, buffer, readString) {
1929
+ function convertNode(position, buffer) {
2230
1930
  const nodeType = buffer[position];
2231
1931
  const converter = nodeConverters[nodeType];
2232
1932
  /* istanbul ignore if: This should never be executed but is a safeguard against faulty buffers */
@@ -2234,42 +1934,43 @@ function convertNode(position, buffer, readString) {
2234
1934
  console.trace();
2235
1935
  throw new Error(`Unknown node type: ${nodeType}`);
2236
1936
  }
2237
- return converter(position + 1, buffer, readString);
1937
+ return converter(position + 1, buffer);
2238
1938
  }
2239
- function convertNodeList(position, buffer, readString) {
1939
+ function convertNodeList(position, buffer) {
2240
1940
  if (position === 0)
2241
1941
  return EMPTY_ARRAY;
2242
1942
  const length = buffer[position++];
2243
1943
  const list = [];
2244
1944
  for (let index = 0; index < length; index++) {
2245
1945
  const nodePosition = buffer[position++];
2246
- list.push(nodePosition ? convertNode(nodePosition, buffer, readString) : null);
1946
+ list.push(nodePosition ? convertNode(nodePosition, buffer) : null);
2247
1947
  }
2248
1948
  return list;
2249
1949
  }
2250
1950
 
2251
- function getReadStringFunction(astBuffer) {
1951
+ function getAstBuffer(astBuffer) {
1952
+ const array = new Uint32Array(astBuffer.buffer);
1953
+ let convertString;
2252
1954
  if (typeof Buffer !== 'undefined' && astBuffer instanceof Buffer) {
2253
- return function readString(start, length) {
2254
- return astBuffer.toString('utf8', start, start + length);
1955
+ convertString = (position) => {
1956
+ const length = array[position++];
1957
+ const bytePosition = position << 2;
1958
+ return astBuffer.toString('utf8', bytePosition, bytePosition + length);
2255
1959
  };
2256
1960
  }
2257
1961
  else {
2258
1962
  const textDecoder = new TextDecoder();
2259
- return function readString(start, length) {
2260
- return textDecoder.decode(astBuffer.subarray(start, start + length));
1963
+ convertString = (position) => {
1964
+ const length = array[position++];
1965
+ const bytePosition = position << 2;
1966
+ return textDecoder.decode(astBuffer.subarray(bytePosition, bytePosition + length));
2261
1967
  };
2262
1968
  }
1969
+ return Object.assign(array, { convertString });
2263
1970
  }
2264
1971
 
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
- };
1972
+ const parseAst = (input, { allowReturnOutsideFunction = false } = {}) => convertProgram(getAstBuffer(native_js.parse(input, allowReturnOutsideFunction)));
1973
+ const parseAstAsync = async (input, { allowReturnOutsideFunction = false, signal } = {}) => convertProgram(getAstBuffer(await native_js.parseAsync(input, allowReturnOutsideFunction, signal)));
2273
1974
 
2274
1975
  exports.ANNOTATION_KEY = ANNOTATION_KEY;
2275
1976
  exports.ArrowFunctionExpression = ArrowFunctionExpression;
@@ -2293,6 +1994,7 @@ exports.Literal = Literal;
2293
1994
  exports.Program = Program;
2294
1995
  exports.Property = Property;
2295
1996
  exports.ReturnStatement = ReturnStatement;
1997
+ exports.StaticBlock = StaticBlock;
2296
1998
  exports.TemplateLiteral = TemplateLiteral;
2297
1999
  exports.URL_AVOIDING_EVAL = URL_AVOIDING_EVAL;
2298
2000
  exports.URL_NAME_IS_NOT_EXPORTED = URL_NAME_IS_NOT_EXPORTED;
@@ -2322,11 +2024,10 @@ exports.augmentCodeLocation = augmentCodeLocation;
2322
2024
  exports.augmentLogMessage = augmentLogMessage;
2323
2025
  exports.convertAnnotations = convertAnnotations;
2324
2026
  exports.convertNode = convertNode;
2325
- exports.convertString = convertString;
2326
2027
  exports.error = error;
2327
2028
  exports.getAliasName = getAliasName;
2029
+ exports.getAstBuffer = getAstBuffer;
2328
2030
  exports.getImportPath = getImportPath;
2329
- exports.getReadStringFunction = getReadStringFunction;
2330
2031
  exports.getRollupError = getRollupError;
2331
2032
  exports.getRollupUrl = getRollupUrl;
2332
2033
  exports.isAbsolute = isAbsolute;