UNPKG

vtjump

Version:
303 lines (302 loc) 10.1 kB
import R from "magic-string"; import V from "child_process"; import { parse as L, compileTemplate as J } from "@vue/compiler-sfc"; const C = /* @__PURE__ */ new Map(); let P = 0; function h(o, t) { const s = `vtj-${++P}`; return C.set(s, { file: o, startLine: t, endLine: t }), { id: s, line: t }; } /** * @vue/shared v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ process.env.NODE_ENV !== "production" && Object.freeze({}); process.env.NODE_ENV !== "production" && Object.freeze([]); const T = () => !1; /** * @vue/compiler-core v3.5.13 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/ Symbol(process.env.NODE_ENV !== "production" ? "Fragment" : ""); Symbol(process.env.NODE_ENV !== "production" ? "Teleport" : ""); Symbol(process.env.NODE_ENV !== "production" ? "Suspense" : ""); Symbol(process.env.NODE_ENV !== "production" ? "KeepAlive" : ""); Symbol( process.env.NODE_ENV !== "production" ? "BaseTransition" : "" ); Symbol(process.env.NODE_ENV !== "production" ? "openBlock" : ""); Symbol(process.env.NODE_ENV !== "production" ? "createBlock" : ""); Symbol( process.env.NODE_ENV !== "production" ? "createElementBlock" : "" ); Symbol(process.env.NODE_ENV !== "production" ? "createVNode" : ""); Symbol( process.env.NODE_ENV !== "production" ? "createElementVNode" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "createCommentVNode" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "createTextVNode" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "createStaticVNode" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "resolveComponent" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "resolveDynamicComponent" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "resolveDirective" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "resolveFilter" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "withDirectives" : "" ); Symbol(process.env.NODE_ENV !== "production" ? "renderList" : ""); Symbol(process.env.NODE_ENV !== "production" ? "renderSlot" : ""); Symbol(process.env.NODE_ENV !== "production" ? "createSlots" : ""); Symbol( process.env.NODE_ENV !== "production" ? "toDisplayString" : "" ); Symbol(process.env.NODE_ENV !== "production" ? "mergeProps" : ""); Symbol( process.env.NODE_ENV !== "production" ? "normalizeClass" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "normalizeStyle" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "normalizeProps" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "guardReactiveProps" : "" ); Symbol(process.env.NODE_ENV !== "production" ? "toHandlers" : ""); Symbol(process.env.NODE_ENV !== "production" ? "camelize" : ""); Symbol(process.env.NODE_ENV !== "production" ? "capitalize" : ""); Symbol( process.env.NODE_ENV !== "production" ? "toHandlerKey" : "" ); Symbol( process.env.NODE_ENV !== "production" ? "setBlockTracking" : "" ); Symbol(process.env.NODE_ENV !== "production" ? "pushScopeId" : ""); Symbol(process.env.NODE_ENV !== "production" ? "popScopeId" : ""); Symbol(process.env.NODE_ENV !== "production" ? "withCtx" : ""); Symbol(process.env.NODE_ENV !== "production" ? "unref" : ""); Symbol(process.env.NODE_ENV !== "production" ? "isRef" : ""); Symbol(process.env.NODE_ENV !== "production" ? "withMemo" : ""); Symbol(process.env.NODE_ENV !== "production" ? "isMemoSame" : ""); const g = { ROOT: 0, 0: "ROOT", ELEMENT: 1, 1: "ELEMENT", TEXT: 2, 2: "TEXT", COMMENT: 3, 3: "COMMENT", SIMPLE_EXPRESSION: 4, 4: "SIMPLE_EXPRESSION", INTERPOLATION: 5, 5: "INTERPOLATION", ATTRIBUTE: 6, 6: "ATTRIBUTE", DIRECTIVE: 7, 7: "DIRECTIVE", COMPOUND_EXPRESSION: 8, 8: "COMPOUND_EXPRESSION", IF: 9, 9: "IF", IF_BRANCH: 10, 10: "IF_BRANCH", FOR: 11, 11: "FOR", TEXT_CALL: 12, 12: "TEXT_CALL", VNODE_CALL: 13, 13: "VNODE_CALL", JS_CALL_EXPRESSION: 14, 14: "JS_CALL_EXPRESSION", JS_OBJECT_EXPRESSION: 15, 15: "JS_OBJECT_EXPRESSION", JS_PROPERTY: 16, 16: "JS_PROPERTY", JS_ARRAY_EXPRESSION: 17, 17: "JS_ARRAY_EXPRESSION", JS_FUNCTION_EXPRESSION: 18, 18: "JS_FUNCTION_EXPRESSION", JS_CONDITIONAL_EXPRESSION: 19, 19: "JS_CONDITIONAL_EXPRESSION", JS_CACHE_EXPRESSION: 20, 20: "JS_CACHE_EXPRESSION", JS_BLOCK_STATEMENT: 21, 21: "JS_BLOCK_STATEMENT", JS_TEMPLATE_LITERAL: 22, 22: "JS_TEMPLATE_LITERAL", JS_IF_STATEMENT: 23, 23: "JS_IF_STATEMENT", JS_ASSIGNMENT_EXPRESSION: 24, 24: "JS_ASSIGNMENT_EXPRESSION", JS_SEQUENCE_EXPRESSION: 25, 25: "JS_SEQUENCE_EXPRESSION", JS_RETURN_STATEMENT: 26, 26: "JS_RETURN_STATEMENT" }; function M(o) { throw o; } function w(o) { process.env.NODE_ENV !== "production" && console.warn(`[Vue warn] ${o.message}`); } process.env.NODE_ENV; new RegExp( "\\b" + "arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b") + "\\b" ); function $(o) { return /\bdata-vtjump(?:=|\s|$)|\bdata-vtjump-line(?:=|\s|$)|\bdata-vtjump-file(?:=|\s|$)/.test( o ); } function j(o) { let t = !1, s = !1; for (let n = 0; n < o.length; n++) { const e = o[n]; if (e === "'" && !s) t = !t; else if (e === '"' && !t) s = !s; else if (e === ">" && !t && !s) return n; } return -1; } function X(o, t) { if (!t.endsWith(".vue")) return null; const { descriptor: s } = L(o); if (!s.template) return null; const n = new R(o), e = s.template.content, O = s.template.loc.start.offset, S = /* @__PURE__ */ new Set(), l = (i) => { if (i.type === g.ELEMENT) { const r = i, u = `${r.loc.start.offset}-${r.loc.end.offset}`; if (S.has(u)) return; const a = O + r.loc.start.offset, v = O + r.loc.end.offset, _ = o.slice(0, a).split(` `).length, c = o.slice(a, v), p = j(c); if (p !== -1) { const E = c.slice(0, p + 1), N = /^<([a-zA-Z][\w-]*)(?:\s+([\s\S]*?))?(?:\/)?>/i.exec(E); if (N) { const [, , m = ""] = N; if (!$(m)) { const { id: I, line: f } = h(t, _), A = ` data-vtjump="${I}" data-vtjump-line="${f}" data-vtjump-file="${t}"`; let b = a + p; const D = c[p - 1]; D && D === "/" && (b = a + p - 1), n.appendLeft(b, A), S.add(u); } } } r.children && r.children.forEach((E) => { E.type === g.ELEMENT && l(E); }); } }, d = J({ source: e, filename: t, id: t, compilerOptions: { nodeTransforms: [l] } }); return d.errors && d.errors.length ? (console.error(d.errors), null) : n.hasChanged() ? { code: n.toString(), map: n.generateMap() } : null; } const B = (o = {}) => { let t; return { name: "vite:vtjump", configureServer(s) { t = s, t.middlewares.use(async (n, e, O) => { if (n.url === "/__vtjump") { if (e.setHeader("Access-Control-Allow-Origin", "*"), e.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS"), e.setHeader("Access-Control-Allow-Headers", "Content-Type"), n.method === "GET" || n.method === "OPTIONS") { e.setHeader("Content-Type", "application/json"), e.end("__vtjump"); return; } const S = []; n.on("data", (l) => S.push(l)), n.on("end", () => { const l = JSON.parse(Buffer.concat(S).toString()), { getConfig: d } = l; let { protocols: i, jumpEndpoints: r } = o; if (i || (i = ["cursor", "cursor"]), i.length === 1 && (i = [i[0], i[0]]), r || (r = ["vite", "vite"]), r.length === 1 && (r = [r[0], r[0]]), d) { e.setHeader("Content-Type", "application/json"), e.end( JSON.stringify({ protocols: i, jumpEndpoints: r, workingDir: process.cwd(), assets: o.assets || "/node_modules/vtjump/dist/client/vtjump.js" }) ); return; } function u(c, p) { const E = i[0] || "cursor"; if (r[0] === "browser") e.setHeader("Content-Type", "application/json"), e.end(JSON.stringify({ url: `${E}://file/${c}` })); else if (r[0] === "vite") { let N = ""; process.platform === "win32" ? N = `start ${`${E}://file/${c}:${p}`}` : E === "vscode" ? N = `code -g "${c}:${p}"` : N = `${E} -g "${c}:${p}"`, V.exec(N, (m) => { if (m) { console.warn("Failed to open URL with system command:", m); const I = process.platform === "win32" ? `${E} "${c}:${p}"` : `${E} "${c}"`; V.exec(I, (f) => { f ? (console.error("Failed to open with protocol command:", f), e.statusCode = 500, e.end(JSON.stringify({ error: "Failed to open file" }))) : e.end(JSON.stringify({ success: !0 })); }); } else e.end(JSON.stringify({ success: !0 })); }); } } const { id: a, getInfo: v, path: y, line: _ } = l; if (a) { const c = C.get(a); if (!c) { e.statusCode = 404, e.end(JSON.stringify({ error: "Location not found" })); return; } v ? (e.setHeader("Content-Type", "application/json"), e.end(JSON.stringify({ location: c }))) : u(c.file, c.startLine.toString()); } else y && _ && u(y, _); }); return; } O(); }); }, transform(s, n) { return X(s, n); } }; }, U = (o = {}) => { const t = B(o); return t.transformIndexHtml = (s) => { const n = new R(s), e = s.match(/<\/body>/i); return e && n.appendLeft(e.index, `<script type="module" src="${o.assets}"><\/script> </body>`), { html: n.toString(), tags: [] }; }, t; }; export { U as default };