oxc-parser 0.67.0 → 0.68.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.
@@ -1853,12 +1853,22 @@ function deserializeTSTypeQuery(pos) {
1853
1853
  }
1854
1854
 
1855
1855
  function deserializeTSImportType(pos) {
1856
+ let options = deserializeOptionBoxObjectExpression(pos + 24);
1857
+ if (options !== null && options.properties.length === 1) {
1858
+ const prop = options.properties[0];
1859
+ if (
1860
+ !prop.method && !prop.shorthand && !prop.computed &&
1861
+ prop.key.type === 'Identifier' && prop.key.name === 'assert'
1862
+ ) {
1863
+ prop.key.name = 'with';
1864
+ }
1865
+ }
1856
1866
  return {
1857
1867
  type: 'TSImportType',
1858
1868
  start: deserializeU32(pos),
1859
1869
  end: deserializeU32(pos + 4),
1860
1870
  argument: deserializeTSType(pos + 8),
1861
- options: deserializeOptionBoxObjectExpression(pos + 24),
1871
+ options,
1862
1872
  qualifier: deserializeOptionTSTypeName(pos + 32),
1863
1873
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 48),
1864
1874
  };
@@ -1898,8 +1908,8 @@ function deserializeTSMappedType(pos) {
1898
1908
  end: deserializeU32(pos + 4),
1899
1909
  nameType: deserializeOptionTSType(pos + 16),
1900
1910
  typeAnnotation: deserializeOptionTSType(pos + 32),
1901
- optional: deserializeTSMappedTypeModifierOperator(pos + 48),
1902
- readonly: deserializeTSMappedTypeModifierOperator(pos + 49),
1911
+ optional: deserializeOptionTSMappedTypeModifierOperator(pos + 48),
1912
+ readonly: deserializeOptionTSMappedTypeModifierOperator(pos + 49),
1903
1913
  key: typeParameter.name,
1904
1914
  constraint: typeParameter.constraint,
1905
1915
  };
@@ -3936,8 +3946,16 @@ function deserializeTSTypeQueryExprName(pos) {
3936
3946
  }
3937
3947
 
3938
3948
  function deserializeTSMappedTypeModifierOperator(pos) {
3939
- const operator = deserializeU8(pos);
3940
- return [true, '+', '-', null][operator];
3949
+ switch (uint8[pos]) {
3950
+ case 0:
3951
+ return true;
3952
+ case 1:
3953
+ return '+';
3954
+ case 2:
3955
+ return '-';
3956
+ default:
3957
+ throw new Error(`Unexpected discriminant ${uint8[pos]} for TSMappedTypeModifierOperator`);
3958
+ }
3941
3959
  }
3942
3960
 
3943
3961
  function deserializeTSModuleReference(pos) {
@@ -5560,6 +5578,11 @@ function deserializeOptionTSTypeName(pos) {
5560
5578
  return deserializeTSTypeName(pos);
5561
5579
  }
5562
5580
 
5581
+ function deserializeOptionTSMappedTypeModifierOperator(pos) {
5582
+ if (uint8[pos] === 3) return null;
5583
+ return deserializeTSMappedTypeModifierOperator(pos);
5584
+ }
5585
+
5563
5586
  function deserializeBoxTSExternalModuleReference(pos) {
5564
5587
  return deserializeTSExternalModuleReference(uint32[pos >> 2]);
5565
5588
  }
@@ -2005,12 +2005,22 @@ function deserializeTSTypeQuery(pos) {
2005
2005
  }
2006
2006
 
2007
2007
  function deserializeTSImportType(pos) {
2008
+ let options = deserializeOptionBoxObjectExpression(pos + 24);
2009
+ if (options !== null && options.properties.length === 1) {
2010
+ const prop = options.properties[0];
2011
+ if (
2012
+ !prop.method && !prop.shorthand && !prop.computed &&
2013
+ prop.key.type === 'Identifier' && prop.key.name === 'assert'
2014
+ ) {
2015
+ prop.key.name = 'with';
2016
+ }
2017
+ }
2008
2018
  return {
2009
2019
  type: 'TSImportType',
2010
2020
  start: deserializeU32(pos),
2011
2021
  end: deserializeU32(pos + 4),
2012
2022
  argument: deserializeTSType(pos + 8),
2013
- options: deserializeOptionBoxObjectExpression(pos + 24),
2023
+ options,
2014
2024
  qualifier: deserializeOptionTSTypeName(pos + 32),
2015
2025
  typeArguments: deserializeOptionBoxTSTypeParameterInstantiation(pos + 48),
2016
2026
  };
@@ -2050,8 +2060,8 @@ function deserializeTSMappedType(pos) {
2050
2060
  end: deserializeU32(pos + 4),
2051
2061
  nameType: deserializeOptionTSType(pos + 16),
2052
2062
  typeAnnotation: deserializeOptionTSType(pos + 32),
2053
- optional: deserializeTSMappedTypeModifierOperator(pos + 48),
2054
- readonly: deserializeTSMappedTypeModifierOperator(pos + 49),
2063
+ optional: deserializeOptionTSMappedTypeModifierOperator(pos + 48),
2064
+ readonly: deserializeOptionTSMappedTypeModifierOperator(pos + 49),
2055
2065
  key: typeParameter.name,
2056
2066
  constraint: typeParameter.constraint,
2057
2067
  };
@@ -4088,8 +4098,16 @@ function deserializeTSTypeQueryExprName(pos) {
4088
4098
  }
4089
4099
 
4090
4100
  function deserializeTSMappedTypeModifierOperator(pos) {
4091
- const operator = deserializeU8(pos);
4092
- return [true, '+', '-', null][operator];
4101
+ switch (uint8[pos]) {
4102
+ case 0:
4103
+ return true;
4104
+ case 1:
4105
+ return '+';
4106
+ case 2:
4107
+ return '-';
4108
+ default:
4109
+ throw new Error(`Unexpected discriminant ${uint8[pos]} for TSMappedTypeModifierOperator`);
4110
+ }
4093
4111
  }
4094
4112
 
4095
4113
  function deserializeTSModuleReference(pos) {
@@ -5712,6 +5730,11 @@ function deserializeOptionTSTypeName(pos) {
5712
5730
  return deserializeTSTypeName(pos);
5713
5731
  }
5714
5732
 
5733
+ function deserializeOptionTSMappedTypeModifierOperator(pos) {
5734
+ if (uint8[pos] === 3) return null;
5735
+ return deserializeTSMappedTypeModifierOperator(pos);
5736
+ }
5737
+
5715
5738
  function deserializeBoxTSExternalModuleReference(pos) {
5716
5739
  return deserializeTSExternalModuleReference(uint32[pos >> 2]);
5717
5740
  }
package/index.js CHANGED
@@ -1,6 +1,4 @@
1
1
  const bindings = require('./bindings.js');
2
- const deserializeJS = require('./deserialize-js.js');
3
- const deserializeTS = require('./deserialize-ts.js');
4
2
  const { wrap } = require('./wrap.cjs');
5
3
 
6
4
  module.exports.ParseResult = bindings.ParseResult;
@@ -22,7 +20,7 @@ module.exports.parseSync = function parseSync(filename, sourceText, options) {
22
20
  return wrap(bindings.parseSync(filename, sourceText, options));
23
21
  };
24
22
 
25
- let buffer, encoder;
23
+ let buffer, encoder, deserializeJS, deserializeTS;
26
24
 
27
25
  function parseSyncRaw(filename, sourceText, options) {
28
26
  if (!rawTransferSupported()) {
@@ -62,9 +60,23 @@ function parseSyncRaw(filename, sourceText, options) {
62
60
  const astTypeFlagPos = 2147483636;
63
61
  let isJsAst = buffer[astTypeFlagPos] === 0;
64
62
 
65
- const data = isJsAst
66
- ? deserializeJS(buffer, sourceText, sourceByteLen)
67
- : deserializeTS(buffer, sourceText, sourceByteLen);
63
+ // Lazy load deserializer, and deserialize buffer to JS objects
64
+ let data;
65
+ if (isJsAst) {
66
+ if (!deserializeJS) deserializeJS = require('./generated/deserialize/js.js');
67
+ data = deserializeJS(buffer, sourceText, sourceByteLen);
68
+
69
+ // Add a line comment for hashbang
70
+ const { hashbang } = data.program;
71
+ if (hashbang !== null) {
72
+ data.comments.unshift({ type: 'Line', value: hashbang.value, start: hashbang.start, end: hashbang.end });
73
+ }
74
+ } else {
75
+ if (!deserializeTS) deserializeTS = require('./generated/deserialize/ts.js');
76
+ data = deserializeTS(buffer, sourceText, sourceByteLen);
77
+ // Note: Do not add line comment for hashbang, to match `@typescript-eslint/parser`.
78
+ // See https://github.com/oxc-project/oxc/blob/ea784f5f082e4c53c98afde9bf983afd0b95e44e/napi/parser/src/lib.rs#L106-L130
79
+ }
68
80
 
69
81
  return {
70
82
  get program() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxc-parser",
3
- "version": "0.67.0",
3
+ "version": "0.68.0",
4
4
  "main": "index.js",
5
5
  "browser": "wasm.mjs",
6
6
  "engines": {
@@ -31,15 +31,15 @@
31
31
  "wasm.mjs",
32
32
  "bindings.js",
33
33
  "webcontainer-fallback.js",
34
- "deserialize-js.js",
35
- "deserialize-ts.js"
34
+ "generated/deserialize/js.js",
35
+ "generated/deserialize/ts.js"
36
36
  ],
37
37
  "publishConfig": {
38
38
  "registry": "https://registry.npmjs.org/",
39
39
  "access": "public"
40
40
  },
41
41
  "dependencies": {
42
- "@oxc-project/types": "^0.67.0"
42
+ "@oxc-project/types": "^0.68.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@codspeed/vitest-plugin": "^4.0.0",
@@ -72,16 +72,16 @@
72
72
  "dtsHeaderFile": "header.js"
73
73
  },
74
74
  "optionalDependencies": {
75
- "@oxc-parser/binding-win32-x64-msvc": "0.67.0",
76
- "@oxc-parser/binding-win32-arm64-msvc": "0.67.0",
77
- "@oxc-parser/binding-linux-x64-gnu": "0.67.0",
78
- "@oxc-parser/binding-linux-x64-musl": "0.67.0",
79
- "@oxc-parser/binding-linux-arm64-gnu": "0.67.0",
80
- "@oxc-parser/binding-linux-arm64-musl": "0.67.0",
81
- "@oxc-parser/binding-linux-arm-gnueabihf": "0.67.0",
82
- "@oxc-parser/binding-darwin-x64": "0.67.0",
83
- "@oxc-parser/binding-darwin-arm64": "0.67.0",
84
- "@oxc-parser/binding-wasm32-wasi": "0.67.0"
75
+ "@oxc-parser/binding-win32-x64-msvc": "0.68.0",
76
+ "@oxc-parser/binding-win32-arm64-msvc": "0.68.0",
77
+ "@oxc-parser/binding-linux-x64-gnu": "0.68.0",
78
+ "@oxc-parser/binding-linux-x64-musl": "0.68.0",
79
+ "@oxc-parser/binding-linux-arm64-gnu": "0.68.0",
80
+ "@oxc-parser/binding-linux-arm64-musl": "0.68.0",
81
+ "@oxc-parser/binding-linux-arm-gnueabihf": "0.68.0",
82
+ "@oxc-parser/binding-darwin-x64": "0.68.0",
83
+ "@oxc-parser/binding-darwin-arm64": "0.68.0",
84
+ "@oxc-parser/binding-wasm32-wasi": "0.68.0"
85
85
  },
86
86
  "scripts": {
87
87
  "build-dev": "napi build --no-dts-cache --platform --js bindings.js",