-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathbabelTransform.js
More file actions
45 lines (39 loc) · 1.3 KB
/
babelTransform.js
File metadata and controls
45 lines (39 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
const { transformAsync } = require('@babel/core')
const babelPluginWcHmr = require('./babelPluginWcHmr.js')
const { createError } = require('../utils.js')
/** @typedef {import('./babelPluginWcHmr').BabelPluginWcHmrOptions} BabelPluginWcHmrOptions */
/**
* @param {string} code
* @param {string} filename
* @param {BabelPluginWcHmrOptions} options
* @return {Promise<import('@babel/core').BabelFileResult>}
*/
async function babelTransform(code, filename, options) {
const largeFile = code.length > 100000
const result = await transformAsync(code, {
caller: {
name: '@open-wc/dev-server-hmr',
supportsStaticESM: true,
},
plugins: [
[babelPluginWcHmr, options],
require.resolve('@babel/plugin-syntax-class-properties'),
[
require.resolve('@babel/plugin-syntax-import-attributes'),
{ deprecatedAssertSyntax: true }, // See: https://babeljs.io/docs/v8-migration#babelplugin-syntax-import-assertions
],
require.resolve('@babel/plugin-syntax-top-level-await'),
],
filename,
babelrc: false,
configFile: false,
compact: largeFile,
sourceType: 'module',
sourceMaps: true,
})
if (!result || !result.code) {
throw createError(`Failed to babel transform ${filename}`)
}
return result
}
module.exports = { babelTransform }