87 lines
2.5 KiB
JavaScript

var f = (t, p, a) => new Promise((i, c) => {
var u = (n) => {
try {
r(a.next(n));
} catch (s) {
c(s);
}
}, e = (n) => {
try {
r(a.throw(n));
} catch (s) {
c(s);
}
}, r = (n) => n.done ? i(n.value) : Promise.resolve(n.value).then(u, e);
r((a = a.apply(t, p)).next());
});
import { isDev as T, getMappingFilePath as v, matchCondition as m, getCodeWithWebComponent as j, isJsTypeFile as F, transformCode as h, parseSFC as P } from "code-inspector-core";
import W from "fs";
import b from "path";
const w = "esbuild-code-inspector-plugin";
function D(t) {
return {
name: w,
setup(p) {
if (t.close || !T(t.dev, !1))
return;
const a = {
port: 0,
entry: "",
output: t.output
}, { escapeTags: i = [] } = t, c = /* @__PURE__ */ new Map();
p.onLoad(
{ filter: t.match || /\.(jsx|tsx|js|ts|mjs|mts)?$/ },
(u) => f(this, null, function* () {
let e = u.path;
e = v(e, t.mappings);
let r = yield W.promises.readFile(e, "utf8"), n = c.get(e);
if (!n || n.originCode !== r) {
let s = r, o = t.exclude || [];
Array.isArray(o) || (o = [o]);
const g = m(
[...o, /\/node_modules\//],
e
), y = m(t.include || [], e);
if (g && !y)
return s;
s = yield j({
options: t,
file: e,
code: s,
record: a
});
let l = "";
if (F(e) ? l = "jsx" : e.endsWith(".svelte") && (l = "svelte"), l)
s = h({
content: s,
filePath: e,
fileType: l,
escapeTags: i,
pathType: t.pathType
});
else if (e.endsWith(".vue")) {
l = "vue";
const { descriptor: d } = P(s, {
sourceMap: !1
}), C = h({
content: d.template.content,
filePath: e,
fileType: l,
escapeTags: i,
pathType: t.pathType
});
s = s.replace(d.template.content, C);
}
const x = b.extname(e).replace(".", "");
n = { originCode: r, output: { contents: s, loader: x } }, c.set(e, n);
}
return n.output;
})
);
}
};
}
export {
D as EsbuildCodeInspectorPlugin
};