summaryrefslogtreecommitdiff
path: root/packages/merchant-backend-ui/trim-extension.cjs
blob: 00e8f9f015cfd6600e79bfff4960b697e7985756 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Simple plugin to trim extensions from the filename of relative import statements.
// Required to get linaria to work with `moduleResulution: "Node16"` imports.
// @author Florian Dold
module.exports = function({ types: t }) {
  return {
    name: "trim-extension",
    visitor: {
      ImportDeclaration: (x) => {
        const src = x.node.source;
        if (src.value.startsWith(".")) {
          if (src.value.endsWith(".js")) {
            const newVal = src.value.replace(/[.]js$/, "")
            x.node.source = t.stringLiteral(newVal);
          }
        }
        if (src.value.endsWith(".jsx")) {
          const newVal = src.value.replace(/[.]jsx$/, "")
          x.node.source = t.stringLiteral(newVal);
        }
      },
    }
  };
}