Skip to content

Commit 3b34d2d

Browse files
committed
fix: more dumb cjs/esm issues
1 parent cf1fc62 commit 3b34d2d

File tree

7 files changed

+35
-21
lines changed

7 files changed

+35
-21
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@
152152
"@jedwards1211/eslint-config": "^2.0.2",
153153
"@jedwards1211/eslint-config-typescript": "^2.0.2",
154154
"@types/babel__code-frame": "^7.0.3",
155-
"@types/babel__generator": "^7.6.3",
155+
"@types/babel__generator": "^7.6.5",
156156
"@types/babel__parser": "^7.1.1",
157157
"@types/chai": "^4.2.14",
158158
"@types/chai-as-promised": "^7.1.5",

pnpm-lock.yaml

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/babel/BabelBackend.ts

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import { Node, File, Statement, Expression } from '@babel/types'
22
import { Backend } from '../backend/Backend'
3-
import * as defaultParser from '@babel/parser'
3+
import defaultParser from '@babel/parser'
44
import { ParserOptions } from '@babel/parser'
55
import * as defaultTypes from '@babel/types'
66
import * as defaultGenerator from '@babel/generator'
7-
import * as AstTypes from 'ast-types'
7+
import type * as AstTypes from 'ast-types'
88
import babelAstTypes from './babelAstTypes'
99
import { Comment, Location } from '../types'
1010
import reprint from './reprint'
1111
import detectChangedNodes from '../util/detectChangedNodes'
1212
import { cloneAstWithOriginals } from '../util/cloneAstWithOriginals'
13+
import babelInterop from './babelInterop'
1314

1415
interface Parser {
1516
parse(code: string, parserOpts?: ParserOptions): File
@@ -34,8 +35,8 @@ export default class BabelBackend extends Backend<Node> {
3435
constructor({
3536
parser = defaultParser,
3637
parserOptions,
37-
generator = defaultGenerator,
38-
types = defaultTypes,
38+
generator = babelInterop(defaultGenerator),
39+
types = babelInterop(defaultTypes),
3940
preserveFormat,
4041
}: {
4142
parser?: Parser
@@ -46,6 +47,10 @@ export default class BabelBackend extends Backend<Node> {
4647
} = {}) {
4748
super()
4849

50+
if (typeof generator.default !== 'function') {
51+
throw new Error(`typeof generator.default should === 'function'`)
52+
}
53+
4954
const t = babelAstTypes(types)
5055

5156
this.t = t

src/babel/babelInterop.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export default function babelInterop<T>(module: T): T {
2+
return (module as any).default instanceof Object &&
3+
Object.getPrototypeOf(module) == null
4+
? (module as any).default
5+
: module
6+
}

src/babel/getBabelAutoBackend.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import path from 'path'
22
import _resolve from 'resolve'
33
import BabelBackend from './BabelBackend'
4-
import * as defaultBabelTypes from '@babel/types'
5-
import * as defaultBabelGenerator from '@babel/generator'
4+
import * as defaultTypes from '@babel/types'
5+
import * as defaultGenerator from '@babel/generator'
66
import { getParserAsync } from 'babel-parse-wild-code'
77
import { promisify } from 'util'
8+
import babelInterop from './babelInterop'
89

910
const resolve: (
1011
id: string,
@@ -27,13 +28,12 @@ export default async function getBabelAutoBackend(
2728
const basedir = path.dirname(file)
2829
const [_parser, types, generator] = await Promise.all([
2930
getParserAsync(file, options),
30-
importLocal<typeof defaultBabelTypes>('@babel/types', basedir).catch(
31-
() => defaultBabelTypes
31+
importLocal<typeof defaultTypes>('@babel/types', basedir).catch(
32+
() => defaultTypes
33+
),
34+
importLocal<typeof defaultGenerator>('@babel/generator', basedir).catch(
35+
() => defaultGenerator
3236
),
33-
importLocal<typeof defaultBabelGenerator>(
34-
'@babel/generator',
35-
basedir
36-
).catch(() => defaultBabelGenerator),
3737
])
3838
const parser = (
3939
_parser.parserOpts.sourceType
@@ -44,7 +44,7 @@ export default async function getBabelAutoBackend(
4444
parser: parser as any,
4545
parserOptions: options,
4646
preserveFormat,
47-
generator,
48-
types,
47+
generator: babelInterop(generator),
48+
types: babelInterop(types),
4949
})
5050
}

src/babel/reprint.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as babelGenerator from '@babel/generator'
1+
import type * as babelGenerator from '@babel/generator'
22
import { Comment, Node } from '../types'
33
import { original, rangeWithWhitespace, source } from '../util/symbols'
44

src/node/runTransformOnFile.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ export default async function runTransformOnFile({
6666
}: RunTransformOnFileOptions): Promise<TransformResult> {
6767
const transform: Transform = transformFile
6868
? await import(transformFile)
69-
: _transform
69+
: _transform ??
70+
((): Transform => {
71+
throw new Error('transformFile or transform is required')
72+
})()
7073

7174
const baseConfig = (await astxCosmiconfig.search(Path.dirname(file)))
7275
?.config as AstxConfig | undefined

0 commit comments

Comments
 (0)