* processResult tap body. Returns the input untouched unless this is a * TypeScript module that needs to be transformed. * @param {Result} result loader result tuple * @param {NormalModuleType} module the normal module * @returns {Result} possibly transformed result
(result, module)
| 167 | * @returns {Result} possibly transformed result |
| 168 | */ |
| 169 | _processResult(result, module) { |
| 170 | if (!JS_MODULE_TYPES.has(module.type)) return result; |
| 171 | |
| 172 | const parser = /** @type {JavascriptParser} */ (module.parser); |
| 173 | if (!parser.options.typescript) return result; |
| 174 | |
| 175 | const resource = module.nameForCondition(); |
| 176 | if (!resource || !isTypeScriptResource(resource)) return result; |
| 177 | |
| 178 | if (TSX_RESOURCE_RE.test(resource)) { |
| 179 | throw new ModuleBuildError(new Error(TSX_NOT_SUPPORTED)); |
| 180 | } |
| 181 | |
| 182 | if (!("stripTypeScriptTypes" in mod)) { |
| 183 | throw new ModuleBuildError(new Error(NODE_API_MISSING)); |
| 184 | } |
| 185 | |
| 186 | const [rawSource, loaderSourceMap, ...rest] = result; |
| 187 | const preStripSource = toBomFreeString(rawSource); |
| 188 | const strippedSource = stripTypes(preStripSource); |
| 189 | |
| 190 | const needSourceMap = module.useSourceMap || module.useSimpleSourceMap; |
| 191 | const stripMap = needSourceMap |
| 192 | ? createIdentitySourceMap(module.resource, preStripSource) |
| 193 | : undefined; |
| 194 | |
| 195 | const outputSourceMap = |
| 196 | stripMap && loaderSourceMap |
| 197 | ? composeWithLoaderSourceMap( |
| 198 | module.resource, |
| 199 | strippedSource, |
| 200 | stripMap, |
| 201 | preStripSource, |
| 202 | loaderSourceMap |
| 203 | ) |
| 204 | : stripMap || loaderSourceMap; |
| 205 | |
| 206 | return [strippedSource, outputSourceMap, ...rest]; |
| 207 | } |
| 208 | } |
| 209 | |
| 210 | module.exports = TypeScriptPlugin; |
no test coverage detected