Skip to content

[Bug]: generating source maps fails due to sourcesContent being undefined #15444

@christian-bromann

Description

@christian-bromann

💻

  • Would you like to work on a fix?

How are you using Babel?

Programmatic API (babel.transform, babel.parse)

Input code

I am trying to transform code via:

const { transformSync } = require('@babel/core');
const codeMap = transformSync(code, babelOpts);

where code is:

 var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __decorateClass = (decorators, target, key, kind) => {
  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
  for (var i = decorators.length - 1, decorator; i >= 0; i--)
    if (decorator = decorators[i])
      result = (kind ? decorator(target, key, result) : decorator(result)) || result;
  if (kind && result)
    __defProp(target, key, result);
  return result;
};
import { LitElement, css, html } from "lit";
import { customElement, property } from "lit/decorators.js";
export let SimpleGreeting = class extends LitElement {
  constructor() {
    super(...arguments);
    // eslint-disable-next-line indent
    this.name = "World";
  }
  // Render the UI as a function of component state
  render() {
    return html`<p>Hello, ${this.name}! ${this.getQuestion()}</p>`;
  }
  getQuestion() {
    return "How are you today?";
  }
};
// Define scoped styles right with your component, in plain CSS
SimpleGreeting.styles = css`
    :host {
        color: blue;
    }`;
__decorateClass([
  property()
], SimpleGreeting.prototype, "name", 2);
SimpleGreeting = __decorateClass([
  customElement("simple-greeting")
], SimpleGreeting);

and babelOpts is:

{
  configFile: false,
  babelrc: false,
  ast: true,
  filename: '/webdriverio/examples/wdio/browser-runner/components/LitComponent.ts',
  inputSourceMap: {
    version: 3,
    sources: [
      '/webdriverio/examples/wdio/browser-runner/components/LitComponent.ts'
    ],
    mappings: ';;;;;;;;;;;AAAA,SAAS,YAAY,KAAK,YAAY;AACtC,SAAS,eAAe,gBAAgB;AAGjC,WAAM,iBAAN,cAA6B,WAAW;AAAA,EAAxC;AAAA;AAUH;AAAA,gBAAgB;AAAA;AAAA;AAAA,EAGhB,SAAS;AACL,WAAO,iBAAiB,KAAK,SAAS,KAAK,YAAY;AAAA,EAC3D;AAAA,EAEA,cAAe;AACX,WAAO;AAAA,EACX;AACJ;AAAA;AApBa,eAEF,SAAS;AAAA;AAAA;AAAA;AAQhB;AAAA,EAFC,SAAS;AAAA,GARD,eAUT;AAVS,iBAAN;AAAA,EADN,cAAc,iBAAiB;AAAA,GACnB;',
    names: []
  },
  sourceMaps: true,
  compact: false,
  comments: true,
  parserOpts: {
    allowReturnOutsideFunction: true,
    sourceType: 'module',
    plugins: [
      'asyncGenerators',
      'bigInt',
      'classProperties',
      'classPrivateProperties',
      'classPrivateMethods',
      'dynamicImport',
      'importMeta',
      'numericSeparator',
      'objectRestSpread',
      'optionalCatchBinding',
      'topLevelAwait'
    ]
  },
  plugins: [ [ [Function (anonymous)] ] ]
}

Configuration file name

No response

Configuration

n/a

Current and expected behavior

It currently fails with latest release on:

 Cannot read properties of undefined (reading '0')
/examples/wdio/browser-runner/components/LitComponent.ts

    at new SourceMap (/packages/wdio-browser-runner/node_modules/@babel/generator/lib/source-map.js:31:99)
    at new Generator (/packages/wdio-browser-runner/node_modules/@babel/generator/lib/index.js:13:35)
    at generate (/packages/wdio-browser-runner/node_modules/@babel/generator/lib/index.js:88:15)
    at generateCode (/packages/wdio-browser-runner/node_modules/@babel/core/lib/transformation/file/generate.js:48:39)
    at run (/packages/wdio-browser-runner/node_modules/@babel/core/lib/transformation/index.js:39:33)
    at run.next (<anonymous>)
    at transform (/packages/wdio-browser-runner/node_modules/@babel/core/lib/transform.js:22:41)
    at transform.next (<anonymous>)
    at evaluateSync (/packages/wdio-browser-runner/node_modules/gensync/index.js:251:28)
    at sync (/packages/wdio-browser-runner/node_modules/gensync/index.js:89:14)
    at stopHiding - secret - don't use this - v1 (/packages/wdio-browser-runner/node_modules/@babel/core/lib/errors/rewrite-stack-trace.js:46:12)
    at transformSync (/packages/wdio-browser-runner/node_modules/@babel/core/lib/transform.js:43:76)
    at Instrumenter.instrumentSync (/packages/wdio-browser-runner/node_modules/istanbul-lib-instrument/src/instrumenter.js:102:25)
    at TransformContext.transform (file:///packages/wdio-browser-runner/node_modules/vite-plugin-istanbul/dist/index.mjs:109:35)
    at Object.transform (file:///packages/wdio-browser-runner/node_modules/vite/dist/node/chunks/dep-ae3fae1b.js:41674:44)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async loadAndTransform (file:///packages/wdio-browser-runner/node_modules/vite/dist/node/chunks/dep-ae3fae1b.js:39479:29

because when creating the trace map at

this._inputMap = new _traceMapping.TraceMap(opts.inputSourceMap);

the returned object has sourcesContent: undefined,.

Environment

@babel/generator: 7.21.0
Node.js v18.7.0
NPM v8.15.0
macOS

Possible solution

No response

Additional context

This happened during recent Babel updates. It is hard for me to say what is the root cause of this. I am working on WebdriverIO and we use Babel as part of vite-plugin-istanbul to generate code coverage reports.

You can reproduce this by checking out https://github.com/webdriverio/component-testing-examples/tree/main/create-react-app and run any of the example directories.

I am aware that this is not necessary an issue of Babel but would love to understand what the root cause of this is and am happy to work on a fix if someone can give me any pointers.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions