2021-09-13 15:49:29 +02:00
|
|
|
import { Span } from '../../../trace'
|
2021-04-08 14:03:02 +02:00
|
|
|
import transform from './transform'
|
|
|
|
import { NextJsLoaderContext } from './types'
|
|
|
|
|
|
|
|
async function nextBabelLoader(
|
|
|
|
this: NextJsLoaderContext,
|
|
|
|
parentTrace: Span,
|
|
|
|
inputSource: string,
|
|
|
|
inputSourceMap: object | null | undefined
|
|
|
|
) {
|
|
|
|
const filename = this.resourcePath
|
|
|
|
const target = this.target
|
|
|
|
const loaderOptions = parentTrace
|
|
|
|
.traceChild('get-options')
|
2021-11-02 16:13:15 +01:00
|
|
|
// @ts-ignore TODO: remove ignore once webpack 5 types are used
|
|
|
|
.traceFn(() => this.getOptions())
|
2021-04-08 14:03:02 +02:00
|
|
|
|
|
|
|
const loaderSpanInner = parentTrace.traceChild('next-babel-turbo-transform')
|
2021-08-17 09:18:08 +02:00
|
|
|
const { code: transformedSource, map: outputSourceMap } =
|
|
|
|
loaderSpanInner.traceFn(() =>
|
|
|
|
transform.call(
|
|
|
|
this,
|
|
|
|
inputSource,
|
|
|
|
inputSourceMap,
|
|
|
|
loaderOptions,
|
|
|
|
filename,
|
|
|
|
target,
|
|
|
|
loaderSpanInner
|
|
|
|
)
|
2021-04-08 14:03:02 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
return [transformedSource, outputSourceMap]
|
|
|
|
}
|
|
|
|
|
|
|
|
const nextBabelLoaderOuter = function nextBabelLoaderOuter(
|
|
|
|
this: NextJsLoaderContext,
|
|
|
|
inputSource: string,
|
|
|
|
inputSourceMap: object | null | undefined
|
|
|
|
) {
|
|
|
|
const callback = this.async()
|
|
|
|
|
2021-08-25 10:47:16 +02:00
|
|
|
const loaderSpan = this.currentTraceSpan.traceChild('next-babel-turbo-loader')
|
2021-04-08 14:03:02 +02:00
|
|
|
loaderSpan
|
|
|
|
.traceAsyncFn(() =>
|
|
|
|
nextBabelLoader.call(this, loaderSpan, inputSource, inputSourceMap)
|
|
|
|
)
|
|
|
|
.then(
|
2022-02-10 18:48:14 +01:00
|
|
|
([transformedSource, outputSourceMap]: any) =>
|
2021-04-08 14:03:02 +02:00
|
|
|
callback?.(null, transformedSource, outputSourceMap || inputSourceMap),
|
|
|
|
(err) => {
|
|
|
|
callback?.(err)
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default nextBabelLoaderOuter
|