diff options
| author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
|---|---|---|
| committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
| commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
| tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/babel-preset-current-node-syntax/src | |
| parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
| download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip  | |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/babel-preset-current-node-syntax/src')
| -rw-r--r-- | node_modules/babel-preset-current-node-syntax/src/index.js | 57 | 
1 files changed, 57 insertions, 0 deletions
diff --git a/node_modules/babel-preset-current-node-syntax/src/index.js b/node_modules/babel-preset-current-node-syntax/src/index.js new file mode 100644 index 0000000..e0243bd --- /dev/null +++ b/node_modules/babel-preset-current-node-syntax/src/index.js @@ -0,0 +1,57 @@ +const tests = { +  // ECMAScript 2018 +  "object-rest-spread": ["({ ...{} })", "({ ...x } = {})"], // Babel 7.2.0 +  "async-generators": ["async function* f() {}"], //  Babel 7.2.0 + +  // ECMAScript 2019 +  "optional-catch-binding": ["try {} catch {}"], // Babel 7.2.0 +  "json-strings": ["'\\u2028'"], // Babel 7.2.0 + +  // ECMAScript 2020 +  "bigint": ["1n"], // Babel 7.8.0 +  "optional-chaining": ["a?.b"], // Babel 7.9.0 +  "nullish-coalescing-operator": ["a ?? b"], // Babel 7.9.0 +  // import.meta is handled manually + +  // Stage 3 +  "numeric-separator": ["1_2"], +  "class-properties": [ +    "(class { x = 1 })", +    "(class { #x = 1 })", +    "(class { #x() {} })", +  ], +  "logical-assignment-operators": ["a ||= b", "a &&= b", "a ??= c"], +}; + +const plugins = []; +const works = (test) => { +  try { +    // Wrap the test in a function to only test the syntax, without executing it +    (0, eval)(`(() => { ${test} })`); +    return true; +  } catch (_error) { +    return false; +  } +}; + +for (const [name, cases] of Object.entries(tests)) { +  if (cases.some(works)) { +    plugins.push(require.resolve(`@babel/plugin-syntax-${name}`)); +  } +} + +// import.meta is only allowed in modules, and modules can only be evaluated +// synchronously. For this reason, we cannot detect import.meta support at +// runtime. It is supported starting from 10.4, so we can check the version. +const major = parseInt(process.versions.node, 10); +const minor = parseInt(process.versions.node.match(/^\d+\.(\d+)/)[1], 10); +if (major > 10 || (major === 10 && minor >= 4)) { +  plugins.push(require.resolve("@babel/plugin-syntax-import-meta")); +} +// Same for top level await - it is only supported in modules. It is supported +// from 14.3.0 +if (major > 14 || (major === 14 && minor >= 3)) { +  plugins.push(require.resolve("@babel/plugin-syntax-top-level-await")); +} + +module.exports = () => ({ plugins });  | 
