@inspecto-dev/plugin 0.3.7 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/astro.cjs +2243 -0
- package/dist/astro.cjs.map +1 -0
- package/dist/astro.d.cts +17 -0
- package/dist/astro.d.ts +17 -0
- package/dist/astro.js +2212 -0
- package/dist/astro.js.map +1 -0
- package/dist/index.cjs +415 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -1
- package/dist/index.d.ts +21 -1
- package/dist/index.js +413 -14
- package/dist/index.js.map +1 -1
- package/dist/legacy/rspack/index.cjs +18 -18
- package/dist/legacy/rspack/index.cjs.map +1 -1
- package/dist/legacy/rspack/index.js +18 -18
- package/dist/legacy/rspack/index.js.map +1 -1
- package/dist/legacy/rspack/loader.cjs +404 -3
- package/dist/legacy/rspack/loader.cjs.map +1 -1
- package/dist/legacy/rspack/loader.js +400 -3
- package/dist/legacy/rspack/loader.js.map +1 -1
- package/dist/legacy/webpack4/index.cjs +7 -7
- package/dist/legacy/webpack4/index.cjs.map +1 -1
- package/dist/legacy/webpack4/index.js +7 -7
- package/dist/legacy/webpack4/index.js.map +1 -1
- package/dist/legacy/webpack4/loader.cjs +404 -3
- package/dist/legacy/webpack4/loader.cjs.map +1 -1
- package/dist/legacy/webpack4/loader.js +400 -3
- package/dist/legacy/webpack4/loader.js.map +1 -1
- package/dist/rollup.cjs +415 -14
- package/dist/rollup.cjs.map +1 -1
- package/dist/rollup.d.cts +1 -1
- package/dist/rollup.d.ts +1 -1
- package/dist/rollup.js +413 -14
- package/dist/rollup.js.map +1 -1
- package/dist/rspack.cjs +415 -14
- package/dist/rspack.cjs.map +1 -1
- package/dist/rspack.d.cts +1 -1
- package/dist/rspack.d.ts +1 -1
- package/dist/rspack.js +413 -14
- package/dist/rspack.js.map +1 -1
- package/dist/vite.cjs +415 -14
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.d.cts +1 -1
- package/dist/vite.d.ts +1 -1
- package/dist/vite.js +413 -14
- package/dist/vite.js.map +1 -1
- package/dist/webpack.cjs +415 -14
- package/dist/webpack.cjs.map +1 -1
- package/dist/webpack.d.cts +1 -1
- package/dist/webpack.d.ts +1 -1
- package/dist/webpack.js +413 -14
- package/dist/webpack.js.map +1 -1
- package/package.json +9 -2
|
@@ -34,6 +34,10 @@ __export(loader_exports, {
|
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(loader_exports);
|
|
36
36
|
|
|
37
|
+
// ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.10_typescript@5.9.3_yaml@2.8.3/node_modules/tsup/assets/cjs_shims.js
|
|
38
|
+
var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
|
|
39
|
+
var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
|
|
40
|
+
|
|
37
41
|
// src/transform/index.ts
|
|
38
42
|
var import_node_path3 = __toESM(require("path"), 1);
|
|
39
43
|
|
|
@@ -115,14 +119,14 @@ function extractTransformFilePath(requestId) {
|
|
|
115
119
|
wrapped: filePath !== requestId
|
|
116
120
|
};
|
|
117
121
|
}
|
|
118
|
-
function shouldTransform(filePath,
|
|
122
|
+
function shouldTransform(filePath, _options) {
|
|
119
123
|
const resolvedFilePath = extractTransformFilePath(filePath).filePath;
|
|
120
124
|
if (process.env["NODE_ENV"] === "production") return false;
|
|
121
125
|
if (resolvedFilePath.includes("node_modules")) return false;
|
|
122
126
|
if (resolvedFilePath.startsWith("\0")) return false;
|
|
123
127
|
if (/[/\\](dist|build|\.next|\.nuxt)[/\\]/.test(resolvedFilePath)) return false;
|
|
124
128
|
const ext = resolvedFilePath.split(".").pop()?.toLowerCase();
|
|
125
|
-
if (ext && !["js", "jsx", "ts", "tsx", "mjs", "mts", "vue"].includes(ext)) {
|
|
129
|
+
if (ext && !["js", "jsx", "ts", "tsx", "mjs", "mts", "vue", "svelte", "astro"].includes(ext)) {
|
|
126
130
|
return false;
|
|
127
131
|
}
|
|
128
132
|
return true;
|
|
@@ -276,7 +280,7 @@ function transformVue(options) {
|
|
|
276
280
|
if (escapeTagsSet.has(tagName)) return;
|
|
277
281
|
if (tagName === "template" && node === ast.children[0]) return;
|
|
278
282
|
const alreadyHasAttr = node.props.some(
|
|
279
|
-
(
|
|
283
|
+
(p2) => p2.type === import_compiler_core.NodeTypes.ATTRIBUTE && p2.name === attributeName
|
|
280
284
|
);
|
|
281
285
|
if (alreadyHasAttr) return;
|
|
282
286
|
const loc = node.loc;
|
|
@@ -313,6 +317,387 @@ function walkElement(node, visitor) {
|
|
|
313
317
|
}
|
|
314
318
|
}
|
|
315
319
|
|
|
320
|
+
// src/transform/transform-svelte.ts
|
|
321
|
+
var import_magic_string3 = __toESM(require("magic-string"), 1);
|
|
322
|
+
var import_compiler = require("svelte/compiler");
|
|
323
|
+
function walk(node, visitor) {
|
|
324
|
+
if (!node || typeof node !== "object") return;
|
|
325
|
+
visitor.enter(node);
|
|
326
|
+
for (const key in node) {
|
|
327
|
+
if (key === "parent" || key === "prev" || key === "next") continue;
|
|
328
|
+
const value = node[key];
|
|
329
|
+
if (Array.isArray(value)) {
|
|
330
|
+
value.forEach((child) => {
|
|
331
|
+
if (child && typeof child === "object") walk(child, visitor);
|
|
332
|
+
});
|
|
333
|
+
} else if (value && typeof value === "object") {
|
|
334
|
+
walk(value, visitor);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
function transformSvelte(options) {
|
|
339
|
+
const { filePath, source, escapeTags, attributeName = "data-inspecto" } = options;
|
|
340
|
+
const escapeTagsSet = buildEscapeTagsSet(escapeTags);
|
|
341
|
+
let replacedContent = source;
|
|
342
|
+
const scriptRegex = /<script(?:\s+[a-zA-Z-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^>\s]*))?)?>[\s\S]*?<\/script>/gi;
|
|
343
|
+
const styleRegex = /<style(?:\s+[a-zA-Z-]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^>\s]*))?)?>[\s\S]*?<\/style>/gi;
|
|
344
|
+
const scriptMatches = source.match(scriptRegex) || [];
|
|
345
|
+
const styleMatches = source.match(styleRegex) || [];
|
|
346
|
+
[...scriptMatches, ...styleMatches].forEach((match) => {
|
|
347
|
+
replacedContent = replacedContent.replace(match, " ".repeat(match.length));
|
|
348
|
+
});
|
|
349
|
+
let ast;
|
|
350
|
+
try {
|
|
351
|
+
ast = (0, import_compiler.parse)(replacedContent);
|
|
352
|
+
} catch {
|
|
353
|
+
return { code: source, map: null, changed: false };
|
|
354
|
+
}
|
|
355
|
+
const s2 = new import_magic_string3.default(source);
|
|
356
|
+
let changed = false;
|
|
357
|
+
function countLines(text, position) {
|
|
358
|
+
let lines = 0;
|
|
359
|
+
for (let i2 = 0; i2 < position; i2++) {
|
|
360
|
+
if (text[i2] === "\n") lines++;
|
|
361
|
+
}
|
|
362
|
+
return lines;
|
|
363
|
+
}
|
|
364
|
+
const root = ast.html || ast.fragment || ast;
|
|
365
|
+
walk(root, {
|
|
366
|
+
enter(node) {
|
|
367
|
+
if (node.type === "Element" || node.type === "RegularElement" || node.type === "InlineComponent" || node.type === "Component") {
|
|
368
|
+
const tagName = node.name || "";
|
|
369
|
+
if (tagName && !escapeTagsSet.has(tagName.toLowerCase()) && !node.attributes?.some((attr) => attr.name === attributeName)) {
|
|
370
|
+
const insertPosition = node.start + tagName.length + 1;
|
|
371
|
+
const line = countLines(source, node.start) + 1;
|
|
372
|
+
const lastNewLine = source.lastIndexOf("\n", node.start - 1);
|
|
373
|
+
const column = lastNewLine === -1 ? node.start + 1 : node.start - lastNewLine;
|
|
374
|
+
const attrValue = formatAttrValue(filePath, line, column);
|
|
375
|
+
const addition = ` ${attributeName}="${attrValue}"`;
|
|
376
|
+
s2.appendLeft(insertPosition, addition);
|
|
377
|
+
changed = true;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
});
|
|
382
|
+
return {
|
|
383
|
+
code: s2.toString(),
|
|
384
|
+
map: changed ? s2.generateMap({ source: filePath, includeContent: true }) : null,
|
|
385
|
+
changed
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
// src/transform/transform-astro.ts
|
|
390
|
+
var import_magic_string4 = __toESM(require("magic-string"), 1);
|
|
391
|
+
|
|
392
|
+
// ../../node_modules/.pnpm/@astrojs+compiler@3.0.1/node_modules/@astrojs/compiler/dist/chunk-W5DTLHV4.js
|
|
393
|
+
var import_crypto = __toESM(require("crypto"), 1);
|
|
394
|
+
var import_fs = __toESM(require("fs"), 1);
|
|
395
|
+
var import_util = require("util");
|
|
396
|
+
globalThis.fs || Object.defineProperty(globalThis, "fs", { value: import_fs.default });
|
|
397
|
+
globalThis.process || Object.defineProperties(globalThis, "process", { value: process });
|
|
398
|
+
globalThis.crypto || Object.defineProperty(globalThis, "crypto", { value: import_crypto.default.webcrypto ? import_crypto.default.webcrypto : { getRandomValues(m2) {
|
|
399
|
+
return import_crypto.default.randomFillSync(m2);
|
|
400
|
+
} } });
|
|
401
|
+
globalThis.performance || Object.defineProperty(globalThis, "performance", { value: { now() {
|
|
402
|
+
let [m2, o] = process.hrtime();
|
|
403
|
+
return m2 * 1e3 + o / 1e6;
|
|
404
|
+
} } });
|
|
405
|
+
var y = new import_util.TextEncoder("utf-8");
|
|
406
|
+
var w = new import_util.TextDecoder("utf-8");
|
|
407
|
+
var d = class {
|
|
408
|
+
constructor() {
|
|
409
|
+
this.argv = ["js"], this.env = {}, this.exit = (t) => {
|
|
410
|
+
t !== 0 && console.warn("exit code:", t);
|
|
411
|
+
}, this._exitPromise = new Promise((t) => {
|
|
412
|
+
this._resolveExitPromise = t;
|
|
413
|
+
}), this._pendingEvent = null, this._scheduledTimeouts = /* @__PURE__ */ new Map(), this._nextCallbackTimeoutID = 1;
|
|
414
|
+
let o = (t, e) => {
|
|
415
|
+
this.mem.setUint32(t + 0, e, true), this.mem.setUint32(t + 4, Math.floor(e / 4294967296), true);
|
|
416
|
+
}, n = (t) => {
|
|
417
|
+
let e = this.mem.getUint32(t + 0, true), s2 = this.mem.getInt32(t + 4, true);
|
|
418
|
+
return e + s2 * 4294967296;
|
|
419
|
+
}, r = (t) => {
|
|
420
|
+
let e = this.mem.getFloat64(t, true);
|
|
421
|
+
if (e === 0) return;
|
|
422
|
+
if (!isNaN(e)) return e;
|
|
423
|
+
let s2 = this.mem.getUint32(t, true);
|
|
424
|
+
return this._values[s2];
|
|
425
|
+
}, l = (t, e) => {
|
|
426
|
+
if (typeof e == "number" && e !== 0) {
|
|
427
|
+
if (isNaN(e)) {
|
|
428
|
+
this.mem.setUint32(t + 4, 2146959360, true), this.mem.setUint32(t, 0, true);
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
this.mem.setFloat64(t, e, true);
|
|
432
|
+
return;
|
|
433
|
+
}
|
|
434
|
+
if (e === void 0) {
|
|
435
|
+
this.mem.setFloat64(t, 0, true);
|
|
436
|
+
return;
|
|
437
|
+
}
|
|
438
|
+
let i2 = this._ids.get(e);
|
|
439
|
+
i2 === void 0 && (i2 = this._idPool.pop(), i2 === void 0 && (i2 = this._values.length), this._values[i2] = e, this._goRefCounts[i2] = 0, this._ids.set(e, i2)), this._goRefCounts[i2]++;
|
|
440
|
+
let a = 0;
|
|
441
|
+
switch (typeof e) {
|
|
442
|
+
case "object":
|
|
443
|
+
e !== null && (a = 1);
|
|
444
|
+
break;
|
|
445
|
+
case "string":
|
|
446
|
+
a = 2;
|
|
447
|
+
break;
|
|
448
|
+
case "symbol":
|
|
449
|
+
a = 3;
|
|
450
|
+
break;
|
|
451
|
+
case "function":
|
|
452
|
+
a = 4;
|
|
453
|
+
break;
|
|
454
|
+
}
|
|
455
|
+
this.mem.setUint32(t + 4, 2146959360 | a, true), this.mem.setUint32(t, i2, true);
|
|
456
|
+
}, c = (t) => {
|
|
457
|
+
let e = n(t + 0), s2 = n(t + 8);
|
|
458
|
+
return new Uint8Array(this._inst.exports.mem.buffer, e, s2);
|
|
459
|
+
}, f2 = (t) => {
|
|
460
|
+
let e = n(t + 0), s2 = n(t + 8), i2 = new Array(s2);
|
|
461
|
+
for (let a = 0; a < s2; a++) i2[a] = r(e + a * 8);
|
|
462
|
+
return i2;
|
|
463
|
+
}, u = (t) => {
|
|
464
|
+
let e = n(t + 0), s2 = n(t + 8);
|
|
465
|
+
return w.decode(new DataView(this._inst.exports.mem.buffer, e, s2));
|
|
466
|
+
}, h = Date.now() - performance.now();
|
|
467
|
+
this.importObject = { gojs: { "runtime.wasmExit": (t) => {
|
|
468
|
+
t >>>= 0;
|
|
469
|
+
let e = this.mem.getInt32(t + 8, true);
|
|
470
|
+
this.exited = true, delete this._inst, delete this._values, delete this._goRefCounts, delete this._ids, delete this._idPool, this.exit(e);
|
|
471
|
+
}, "runtime.wasmWrite": (t) => {
|
|
472
|
+
t >>>= 0;
|
|
473
|
+
let e = n(t + 8), s2 = n(t + 16), i2 = this.mem.getInt32(t + 24, true);
|
|
474
|
+
import_fs.default.writeSync(e, new Uint8Array(this._inst.exports.mem.buffer, s2, i2));
|
|
475
|
+
}, "runtime.resetMemoryDataView": (t) => {
|
|
476
|
+
t >>>= 0, this.mem = new DataView(this._inst.exports.mem.buffer);
|
|
477
|
+
}, "runtime.nanotime1": (t) => {
|
|
478
|
+
t >>>= 0, o(t + 8, (h + performance.now()) * 1e6);
|
|
479
|
+
}, "runtime.walltime": (t) => {
|
|
480
|
+
t >>>= 0;
|
|
481
|
+
let e = (/* @__PURE__ */ new Date()).getTime();
|
|
482
|
+
o(t + 8, e / 1e3), this.mem.setInt32(t + 16, e % 1e3 * 1e6, true);
|
|
483
|
+
}, "runtime.scheduleTimeoutEvent": (t) => {
|
|
484
|
+
t >>>= 0;
|
|
485
|
+
let e = this._nextCallbackTimeoutID;
|
|
486
|
+
this._nextCallbackTimeoutID++, this._scheduledTimeouts.set(e, setTimeout(() => {
|
|
487
|
+
for (this._resume(); this._scheduledTimeouts.has(e); ) console.warn("scheduleTimeoutEvent: missed timeout event"), this._resume();
|
|
488
|
+
}, n(t + 8) + 1)), this.mem.setInt32(t + 16, e, true);
|
|
489
|
+
}, "runtime.clearTimeoutEvent": (t) => {
|
|
490
|
+
t >>>= 0;
|
|
491
|
+
let e = this.mem.getInt32(t + 8, true);
|
|
492
|
+
clearTimeout(this._scheduledTimeouts.get(e)), this._scheduledTimeouts.delete(e);
|
|
493
|
+
}, "runtime.getRandomData": (t) => {
|
|
494
|
+
t >>>= 0, globalThis.crypto.getRandomValues(c(t + 8));
|
|
495
|
+
}, "syscall/js.finalizeRef": (t) => {
|
|
496
|
+
t >>>= 0;
|
|
497
|
+
let e = this.mem.getUint32(t + 8, true);
|
|
498
|
+
if (this._goRefCounts[e]--, this._goRefCounts[e] === 0) {
|
|
499
|
+
let s2 = this._values[e];
|
|
500
|
+
this._values[e] = null, this._ids.delete(s2), this._idPool.push(e);
|
|
501
|
+
}
|
|
502
|
+
}, "syscall/js.stringVal": (t) => {
|
|
503
|
+
t >>>= 0, l(t + 24, u(t + 8));
|
|
504
|
+
}, "syscall/js.valueGet": (t) => {
|
|
505
|
+
t >>>= 0;
|
|
506
|
+
let e = Reflect.get(r(t + 8), u(t + 16));
|
|
507
|
+
t = this._inst.exports.getsp() >>> 0, l(t + 32, e);
|
|
508
|
+
}, "syscall/js.valueSet": (t) => {
|
|
509
|
+
t >>>= 0, Reflect.set(r(t + 8), u(t + 16), r(t + 32));
|
|
510
|
+
}, "syscall/js.valueDelete": (t) => {
|
|
511
|
+
t >>>= 0, Reflect.deleteProperty(r(t + 8), u(t + 16));
|
|
512
|
+
}, "syscall/js.valueIndex": (t) => {
|
|
513
|
+
t >>>= 0, l(t + 24, Reflect.get(r(t + 8), n(t + 16)));
|
|
514
|
+
}, "syscall/js.valueSetIndex": (t) => {
|
|
515
|
+
t >>>= 0, Reflect.set(r(t + 8), n(t + 16), r(t + 24));
|
|
516
|
+
}, "syscall/js.valueCall": (t) => {
|
|
517
|
+
t >>>= 0;
|
|
518
|
+
try {
|
|
519
|
+
let e = r(t + 8), s2 = Reflect.get(e, u(t + 16)), i2 = f2(t + 32), a = Reflect.apply(s2, e, i2);
|
|
520
|
+
t = this._inst.exports.getsp() >>> 0, l(t + 56, a), this.mem.setUint8(t + 64, 1);
|
|
521
|
+
} catch (e) {
|
|
522
|
+
t = this._inst.exports.getsp() >>> 0, l(t + 56, e), this.mem.setUint8(t + 64, 0);
|
|
523
|
+
}
|
|
524
|
+
}, "syscall/js.valueInvoke": (t) => {
|
|
525
|
+
t >>>= 0;
|
|
526
|
+
try {
|
|
527
|
+
let e = r(t + 8), s2 = f2(t + 16), i2 = Reflect.apply(e, void 0, s2);
|
|
528
|
+
t = this._inst.exports.getsp() >>> 0, l(t + 40, i2), this.mem.setUint8(t + 48, 1);
|
|
529
|
+
} catch (e) {
|
|
530
|
+
t = this._inst.exports.getsp() >>> 0, l(t + 40, e), this.mem.setUint8(t + 48, 0);
|
|
531
|
+
}
|
|
532
|
+
}, "syscall/js.valueNew": (t) => {
|
|
533
|
+
t >>>= 0;
|
|
534
|
+
try {
|
|
535
|
+
let e = r(t + 8), s2 = f2(t + 16), i2 = Reflect.construct(e, s2);
|
|
536
|
+
t = this._inst.exports.getsp() >>> 0, l(t + 40, i2), this.mem.setUint8(t + 48, 1);
|
|
537
|
+
} catch (e) {
|
|
538
|
+
t = this._inst.exports.getsp() >>> 0, l(t + 40, e), this.mem.setUint8(t + 48, 0);
|
|
539
|
+
}
|
|
540
|
+
}, "syscall/js.valueLength": (t) => {
|
|
541
|
+
t >>>= 0, o(t + 16, Number.parseInt(r(t + 8).length));
|
|
542
|
+
}, "syscall/js.valuePrepareString": (t) => {
|
|
543
|
+
t >>>= 0;
|
|
544
|
+
let e = y.encode(String(r(t + 8)));
|
|
545
|
+
l(t + 16, e), o(t + 24, e.length);
|
|
546
|
+
}, "syscall/js.valueLoadString": (t) => {
|
|
547
|
+
t >>>= 0;
|
|
548
|
+
let e = r(t + 8);
|
|
549
|
+
c(t + 16).set(e);
|
|
550
|
+
}, "syscall/js.valueInstanceOf": (t) => {
|
|
551
|
+
t >>>= 0, this.mem.setUint8(t + 24, r(t + 8) instanceof r(t + 16) ? 1 : 0);
|
|
552
|
+
}, "syscall/js.copyBytesToGo": (t) => {
|
|
553
|
+
t >>>= 0;
|
|
554
|
+
let e = c(t + 8), s2 = r(t + 32);
|
|
555
|
+
if (!(s2 instanceof Uint8Array || s2 instanceof Uint8ClampedArray)) {
|
|
556
|
+
this.mem.setUint8(t + 48, 0);
|
|
557
|
+
return;
|
|
558
|
+
}
|
|
559
|
+
let i2 = s2.subarray(0, e.length);
|
|
560
|
+
e.set(i2), o(t + 40, i2.length), this.mem.setUint8(t + 48, 1);
|
|
561
|
+
}, "syscall/js.copyBytesToJS": (t) => {
|
|
562
|
+
t >>>= 0;
|
|
563
|
+
let e = r(t + 8), s2 = c(t + 16);
|
|
564
|
+
if (!(e instanceof Uint8Array || e instanceof Uint8ClampedArray)) {
|
|
565
|
+
this.mem.setUint8(t + 48, 0);
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
let i2 = s2.subarray(0, e.length);
|
|
569
|
+
e.set(i2), o(t + 40, i2.length), this.mem.setUint8(t + 48, 1);
|
|
570
|
+
}, debug: (t) => {
|
|
571
|
+
console.log(t);
|
|
572
|
+
} } };
|
|
573
|
+
}
|
|
574
|
+
async run(o) {
|
|
575
|
+
if (!(o instanceof WebAssembly.Instance)) throw new Error("Go.run: WebAssembly.Instance expected");
|
|
576
|
+
this._inst = o, this.mem = new DataView(this._inst.exports.mem.buffer), this._values = [Number.NaN, 0, null, true, false, globalThis, this], this._goRefCounts = new Array(this._values.length).fill(Number.POSITIVE_INFINITY), this._ids = /* @__PURE__ */ new Map([[0, 1], [null, 2], [true, 3], [false, 4], [globalThis, 5], [this, 6]]), this._idPool = [], this.exited = false;
|
|
577
|
+
let n = 4096, r = (h) => {
|
|
578
|
+
let t = n, e = y.encode(`${h}\0`);
|
|
579
|
+
return new Uint8Array(this.mem.buffer, n, e.length).set(e), n += e.length, n % 8 !== 0 && (n += 8 - n % 8), t;
|
|
580
|
+
}, l = this.argv.length, c = [];
|
|
581
|
+
this.argv.forEach((h) => {
|
|
582
|
+
c.push(r(h));
|
|
583
|
+
}), c.push(0), Object.keys(this.env).sort().forEach((h) => {
|
|
584
|
+
c.push(r(`${h}=${this.env[h]}`));
|
|
585
|
+
}), c.push(0);
|
|
586
|
+
let u = n;
|
|
587
|
+
c.forEach((h) => {
|
|
588
|
+
this.mem.setUint32(n, h, true), this.mem.setUint32(n + 4, 0, true), n += 8;
|
|
589
|
+
}), this._inst.exports.run(l, u), this.exited && this._resolveExitPromise(), await this._exitPromise;
|
|
590
|
+
}
|
|
591
|
+
_resume() {
|
|
592
|
+
if (this.exited) throw new Error("Go program has already exited");
|
|
593
|
+
this._inst.exports.resume(), this.exited && this._resolveExitPromise();
|
|
594
|
+
}
|
|
595
|
+
_makeFuncWrapper(o) {
|
|
596
|
+
let n = this;
|
|
597
|
+
return function() {
|
|
598
|
+
let r = { id: o, this: this, args: arguments };
|
|
599
|
+
return n._pendingEvent = r, n._resume(), r.result;
|
|
600
|
+
};
|
|
601
|
+
}
|
|
602
|
+
};
|
|
603
|
+
|
|
604
|
+
// ../../node_modules/.pnpm/@astrojs+compiler@3.0.1/node_modules/@astrojs/compiler/dist/node/sync.js
|
|
605
|
+
var import_fs2 = require("fs");
|
|
606
|
+
var import_url = require("url");
|
|
607
|
+
function i() {
|
|
608
|
+
return s || (s = f()), s;
|
|
609
|
+
}
|
|
610
|
+
var s;
|
|
611
|
+
var w2 = (e, t) => i().parse(e, t);
|
|
612
|
+
function f() {
|
|
613
|
+
let e = new d(), t = v2((0, import_url.fileURLToPath)(new URL("../astro.wasm", importMetaUrl)), e.importObject);
|
|
614
|
+
e.run(t);
|
|
615
|
+
let o = globalThis["@astrojs/compiler"];
|
|
616
|
+
return { transform: (n, a) => {
|
|
617
|
+
try {
|
|
618
|
+
return o.transform(n, a || {});
|
|
619
|
+
} catch (r) {
|
|
620
|
+
throw s = void 0, r;
|
|
621
|
+
}
|
|
622
|
+
}, parse: (n, a) => {
|
|
623
|
+
try {
|
|
624
|
+
let r = o.parse(n, a || {});
|
|
625
|
+
return { ...r, ast: JSON.parse(r.ast) };
|
|
626
|
+
} catch (r) {
|
|
627
|
+
throw s = void 0, r;
|
|
628
|
+
}
|
|
629
|
+
}, convertToTSX: (n, a) => {
|
|
630
|
+
try {
|
|
631
|
+
let r = o.convertToTSX(n, a || {});
|
|
632
|
+
return { ...r, map: JSON.parse(r.map) };
|
|
633
|
+
} catch (r) {
|
|
634
|
+
throw s = void 0, r;
|
|
635
|
+
}
|
|
636
|
+
} };
|
|
637
|
+
}
|
|
638
|
+
function v2(e, t) {
|
|
639
|
+
let o = (0, import_fs2.readFileSync)(e);
|
|
640
|
+
return new WebAssembly.Instance(new WebAssembly.Module(o), t);
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
// src/transform/transform-astro.ts
|
|
644
|
+
function walk2(node, visitor) {
|
|
645
|
+
if (!node || typeof node !== "object") return;
|
|
646
|
+
visitor.enter(node);
|
|
647
|
+
if (Array.isArray(node.children)) {
|
|
648
|
+
for (const child of node.children) {
|
|
649
|
+
walk2(child, visitor);
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
function transformAstro(options) {
|
|
654
|
+
const { filePath, source, escapeTags, attributeName = "data-inspecto" } = options;
|
|
655
|
+
const escapeTagsSet = buildEscapeTagsSet(escapeTags);
|
|
656
|
+
let ast;
|
|
657
|
+
try {
|
|
658
|
+
ast = w2(source, { position: true }).ast;
|
|
659
|
+
} catch (_err) {
|
|
660
|
+
return { code: source, map: null, changed: false };
|
|
661
|
+
}
|
|
662
|
+
const s2 = new import_magic_string4.default(source);
|
|
663
|
+
let changed = false;
|
|
664
|
+
walk2(ast, {
|
|
665
|
+
enter(node) {
|
|
666
|
+
if (node.type === "element" || node.type === "component") {
|
|
667
|
+
const tagName = node.name;
|
|
668
|
+
if (tagName && !escapeTagsSet.has(tagName) && !node.attributes?.some((attr) => attr.name === attributeName)) {
|
|
669
|
+
const startOffset = node.position?.start?.offset ?? -1;
|
|
670
|
+
if (startOffset === -1) return;
|
|
671
|
+
let tagStartIndex = startOffset;
|
|
672
|
+
while (tagStartIndex >= 0 && source[tagStartIndex] !== "<") {
|
|
673
|
+
tagStartIndex--;
|
|
674
|
+
}
|
|
675
|
+
if (tagStartIndex >= 0) {
|
|
676
|
+
const substringAfterTag = source.substring(tagStartIndex);
|
|
677
|
+
const escapedTagName = tagName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
678
|
+
const strictRegex = new RegExp(`^<\\s*${escapedTagName}(?=\\s|/|>)`, "i");
|
|
679
|
+
const strictMatch = substringAfterTag.match(strictRegex);
|
|
680
|
+
if (strictMatch) {
|
|
681
|
+
const insertPosition = tagStartIndex + strictMatch[0].length;
|
|
682
|
+
const line = node.position.start.line;
|
|
683
|
+
const column = node.position.start.column;
|
|
684
|
+
const attrValue = formatAttrValue(filePath, line, column);
|
|
685
|
+
const addition = ` ${attributeName}="${attrValue}"`;
|
|
686
|
+
s2.appendLeft(insertPosition, addition);
|
|
687
|
+
changed = true;
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
});
|
|
694
|
+
return {
|
|
695
|
+
code: s2.toString(),
|
|
696
|
+
map: changed ? s2.generateMap({ source: filePath, includeContent: true }) : null,
|
|
697
|
+
changed
|
|
698
|
+
};
|
|
699
|
+
}
|
|
700
|
+
|
|
316
701
|
// src/transform/index.ts
|
|
317
702
|
function transformRouter(options) {
|
|
318
703
|
const { filePath, source, projectRoot, pluginOptions } = options;
|
|
@@ -337,6 +722,22 @@ function transformRouter(options) {
|
|
|
337
722
|
attributeName: pluginOptions.attributeName
|
|
338
723
|
});
|
|
339
724
|
}
|
|
725
|
+
if (ext === ".svelte") {
|
|
726
|
+
return transformSvelte({
|
|
727
|
+
filePath,
|
|
728
|
+
source,
|
|
729
|
+
escapeTags: pluginOptions.escapeTags,
|
|
730
|
+
attributeName: pluginOptions.attributeName
|
|
731
|
+
});
|
|
732
|
+
}
|
|
733
|
+
if (ext === ".astro") {
|
|
734
|
+
return transformAstro({
|
|
735
|
+
filePath,
|
|
736
|
+
source,
|
|
737
|
+
escapeTags: pluginOptions.escapeTags,
|
|
738
|
+
attributeName: pluginOptions.attributeName
|
|
739
|
+
});
|
|
740
|
+
}
|
|
340
741
|
return null;
|
|
341
742
|
}
|
|
342
743
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy/webpack4/loader.ts","../../../src/transform/index.ts","../../../src/transform/transform-jsx.ts","../../../src/transform/utils.ts","../../../src/transform/transform-vue.ts"],"sourcesContent":["import { transformRouter } from '../../transform/index'\nimport { shouldTransform } from '../../transform/utils'\nimport type { UnpluginOptions } from '@inspecto-dev/types'\n\nconst injectedClient = false\n\nexport default function legacyWebpack4Loader(this: any, source: string) {\n const id = this.resourcePath\n\n // In Webpack 4, loader-utils is typically used, or we read from this.query\n // since this.getOptions() is a Webpack 5+ API.\n let options: any = {}\n if (typeof this.getOptions === 'function') {\n options = this.getOptions()\n } else if (this.query) {\n if (typeof this.query === 'string') {\n // Very fallback query parsing\n options = {}\n } else {\n options = this.query\n }\n }\n\n // Give default include/exclude options\n const defaultOptions: Required<UnpluginOptions> = {\n include: options.include || [/\\.[jt]sx?$/, /\\.vue$/],\n exclude: options.exclude || [/node_modules/, /\\.html$/],\n hotKey: options.hotKey || 'altKey',\n ...options,\n }\n\n if (!shouldTransform(id, defaultOptions)) {\n return source\n }\n\n const result = transformRouter({\n filePath: id,\n source,\n projectRoot: process.cwd(),\n pluginOptions: defaultOptions,\n })\n\n let finalSource = result?.changed ? result.code : source\n\n // Inject the client dynamically into the first source module we process\n // WARNING: We must NOT use process-level state like `let injectedClient = false`\n // because in webpack-dev-server, files are recompiled and the loader might hit\n // multiple entries or the same entry again on HMR.\n // Instead, we inject it conditionally based on a known module that acts as an entry\n // Webpack uses standard regex matching, so let's match any file that has `react-dom` rendering\n\n const isMainEntry =\n finalSource.includes('react-dom/client') ||\n finalSource.includes('react-dom') ||\n /[/\\\\](index|main)\\.[jt]sx?$/.test(id)\n\n if (isMainEntry && finalSource.indexOf('window.InspectoClient') === -1) {\n const clientPath = options.clientPath || '@inspecto-dev/core'\n // For Webpack 4 and Babel environments, using require() is safer than prepending `import`\n // to a file that might be CommonJS, and it doesn't get hoisted irregularly.\n finalSource =\n `\nif (typeof window !== 'undefined' && !window.InspectoClient) {\n try {\n var __inspecto_core__ = require('${clientPath.replace(/\\\\/g, '\\\\\\\\')}');\n window.InspectoClient = __inspecto_core__.default || __inspecto_core__;\n } catch (e) {\n console.error('[inspecto] core load error', e);\n }\n}\n` + finalSource\n }\n\n if (result && result.changed) {\n this.callback(null, finalSource, result.map)\n return\n }\n\n return finalSource\n}\n","import path from 'node:path'\nimport type { UnpluginOptions } from '@inspecto-dev/types'\nimport { transformJsx } from './transform-jsx.js'\nimport { transformVue } from './transform-vue.js'\nimport { JSX_EXTENSIONS, type TransformResult } from './utils.js'\n\nexport interface RouterOptions {\n filePath: string\n source: string\n projectRoot: string\n pluginOptions: Required<UnpluginOptions>\n}\n\n/**\n * Route a file to the appropriate transform based on extension.\n * Returns null if no transform applies.\n */\nexport function transformRouter(options: RouterOptions): TransformResult | null {\n const { filePath, source, projectRoot, pluginOptions } = options\n const ext = path.extname(filePath).toLowerCase()\n\n if (JSX_EXTENSIONS.has(ext)) {\n return transformJsx({\n filePath,\n source,\n projectRoot,\n escapeTags: pluginOptions.escapeTags,\n pathType: pluginOptions.pathType,\n attributeName: pluginOptions.attributeName,\n })\n }\n\n // ── Vue SFC ──────────────────────────────────────────────────────────────\n if (ext === '.vue') {\n return transformVue({\n filePath,\n source,\n projectRoot,\n escapeTags: pluginOptions.escapeTags,\n pathType: pluginOptions.pathType,\n attributeName: pluginOptions.attributeName,\n })\n }\n\n return null\n}\n// Export transforms for testing\nexport { transformJsx, transformVue }\n","import * as parser from '@babel/parser'\nimport traverse_ from '@babel/traverse'\n// Support both ESM default and CommonJS module.exports\nconst traverse =\n typeof traverse_ === 'function' ? traverse_ : (traverse_ as any).default || traverse_\nimport type { NodePath } from '@babel/traverse'\nimport type { JSXOpeningElement } from '@babel/types'\nimport MagicString from 'magic-string'\nimport path from 'node:path'\nimport type { UnpluginOptions, PathType } from '@inspecto-dev/types'\nimport { buildEscapeTagsSet, formatAttrValue, type TransformResult } from './utils.js'\n\nexport interface TransformJsxOptions {\n filePath: string\n source: string\n projectRoot: string\n escapeTags?: string[]\n pathType?: PathType\n attributeName?: string\n}\n\n/**\n * Transform JSX/TSX source code by injecting data-inspecto attributes.\n */\nexport function transformJsx(options: TransformJsxOptions): TransformResult {\n const {\n filePath,\n source,\n projectRoot,\n escapeTags,\n pathType = 'absolute',\n attributeName = 'data-inspecto',\n } = options\n\n const escapeTagsSet = buildEscapeTagsSet(escapeTags)\n\n // Resolve the file path based on pathType config\n const resolvedPath =\n pathType === 'absolute'\n ? path.resolve(filePath)\n : path.relative(projectRoot, path.resolve(filePath))\n\n // Normalize path separators on Windows\n const normalizedPath = resolvedPath.replace(/\\\\/g, '/')\n\n let ast: ReturnType<typeof parser.parse>\n try {\n ast = parser.parse(source, {\n sourceType: 'module',\n plugins: [\n 'jsx',\n 'typescript',\n 'decorators-legacy',\n 'classProperties',\n 'optionalChaining',\n 'nullishCoalescingOperator',\n 'importMeta',\n ],\n errorRecovery: true,\n })\n } catch {\n // If parsing fails, return source unchanged\n return { code: source, map: null, changed: false }\n }\n\n const ms = new MagicString(source)\n let changed = false\n\n traverse(ast, {\n JSXOpeningElement(nodePath: NodePath<JSXOpeningElement>) {\n const node = nodePath.node\n\n // Skip elements that already have the attribute\n const alreadyHasAttr = node.attributes.some(\n attr =>\n attr.type === 'JSXAttribute' &&\n attr.name.type === 'JSXIdentifier' &&\n attr.name.name === attributeName,\n )\n if (alreadyHasAttr) return\n\n // Get element tag name\n const nameNode = node.name\n let tagName: string\n if (nameNode.type === 'JSXIdentifier') {\n tagName = nameNode.name\n } else if (nameNode.type === 'JSXMemberExpression') {\n const objName = nameNode.object.type === 'JSXIdentifier' ? nameNode.object.name : ''\n const propName = nameNode.property.type === 'JSXIdentifier' ? nameNode.property.name : ''\n tagName = objName && propName ? `${objName}.${propName}` : objName\n } else {\n tagName = ''\n }\n\n // Skip escaped tags\n if (escapeTagsSet.has(tagName)) return\n\n // Get position from AST location\n const loc = node.loc\n if (!loc) return\n\n const { line, column } = loc.start\n // Babel uses 0-based columns, convert to 1-based\n const attrValue = formatAttrValue(normalizedPath, line, column + 1)\n\n // Determine the best insertion position for the attribute\n // When a JSX element has type arguments (e.g. <Component<string> />),\n // inserting after `node.name.end` might inject inside the generic bracket `<`.\n // The safest place to insert is right before the first attribute,\n // or right before the closing slash/bracket if there are no attributes.\n let insertPos: number | null | undefined = null\n if (node.attributes && node.attributes.length > 0) {\n const firstAttr = node.attributes[0]\n if (firstAttr && firstAttr.start != null) {\n insertPos = firstAttr.start\n }\n }\n\n if (insertPos == null) {\n // Find the start of the closing bracket or self-closing slash\n // We know node.end is the index right after the '>'\n // So we look backwards. But Babel AST doesn't give us exact token positions\n // for the closing tag easily.\n // For a safe fallback, we use node.typeParameters?.end || node.name.end\n if (node.typeParameters && node.typeParameters.end != null) {\n insertPos = node.typeParameters.end\n } else if (node.name.end != null) {\n insertPos = node.name.end\n }\n }\n\n if (insertPos == null) return\n\n ms.appendLeft(\n insertPos,\n ` ${attributeName}=\"${attrValue}\"${node.attributes && node.attributes.length > 0 ? '' : ' '}`,\n )\n changed = true\n },\n })\n\n if (!changed) {\n return { code: source, map: null, changed: false }\n }\n\n return {\n code: ms.toString(),\n map: ms.generateMap({ hires: true, source: filePath }),\n changed: true,\n }\n}\n","import type { UnpluginOptions } from '@inspecto-dev/types'\nimport type MagicString from 'magic-string'\n\nexport interface TransformResult {\n code: string\n map: ReturnType<MagicString['generateMap']> | null\n changed: boolean\n}\n\nexport interface NormalizedTransformTarget {\n requestId: string\n filePath: string\n wrapped: boolean\n}\n\n/** Default tags whose JSX elements should NOT receive data-inspecto attributes */\nexport const DEFAULT_ESCAPE_TAGS = new Set([\n 'template',\n 'script',\n 'style',\n // React special elements\n 'Fragment',\n 'React.Fragment',\n 'StrictMode',\n 'React.StrictMode',\n 'Suspense',\n 'React.Suspense',\n 'Profiler',\n 'React.Profiler',\n // React transitions\n 'Transition',\n 'TransitionGroup',\n // Vue built-in components\n 'KeepAlive',\n 'Teleport',\n 'Suspense',\n // Vue router built-ins\n 'RouterView',\n 'RouterLink',\n 'NuxtPage',\n 'NuxtLink',\n])\n\n/** File extensions that contain JSX/TSX syntax */\nexport const JSX_EXTENSIONS = new Set(['.jsx', '.tsx', '.js', '.ts', '.mjs', '.mts'])\n\nfunction normalizeWebpackModuleRequest(id: string): string {\n return id.replace(/!+$/, '').replace(/^\\((?:app-pages-browser|rsc|ssr)\\)\\/\\.\\//, '')\n}\n\nfunction extractNextModuleRequest(id: string): string | undefined {\n if (!id.includes('next-flight-client-entry-loader.js?')) {\n return undefined\n }\n\n const queryIndex = id.indexOf('?')\n if (queryIndex === -1) {\n return undefined\n }\n\n const params = new URLSearchParams(id.slice(queryIndex + 1).replace(/!+$/, ''))\n for (const entry of params.getAll('modules')) {\n try {\n const parsed = JSON.parse(entry) as { request?: unknown }\n if (typeof parsed.request === 'string' && parsed.request.length > 0) {\n return parsed.request\n }\n } catch {\n continue\n }\n }\n\n return undefined\n}\n\nexport function extractTransformFilePath(requestId: string): NormalizedTransformTarget {\n const normalizedRequestId = normalizeWebpackModuleRequest(requestId)\n const nextModuleRequest = extractNextModuleRequest(normalizedRequestId)\n if (nextModuleRequest) {\n return {\n requestId,\n filePath: nextModuleRequest,\n wrapped: true,\n }\n }\n\n const lastLoaderSeparator = normalizedRequestId.lastIndexOf('!')\n const resourceRequest =\n lastLoaderSeparator >= 0\n ? normalizedRequestId.slice(lastLoaderSeparator + 1)\n : normalizedRequestId\n const queryIndex = resourceRequest.indexOf('?')\n const filePath = queryIndex >= 0 ? resourceRequest.slice(0, queryIndex) : resourceRequest\n\n return {\n requestId,\n filePath,\n wrapped: filePath !== requestId,\n }\n}\n\n/**\n * Determine if a file should be transformed.\n * Always skips node_modules and dist directories.\n */\nexport function shouldTransform(filePath: string, options: Required<UnpluginOptions>): boolean {\n const resolvedFilePath = extractTransformFilePath(filePath).filePath\n\n // Never transform in production\n if (process.env['NODE_ENV'] === 'production') return false\n\n // Skip node_modules always\n if (resolvedFilePath.includes('node_modules')) return false\n\n // Skip virtual modules\n if (resolvedFilePath.startsWith('\\x00')) return false\n\n // Skip dist/build directories\n if (/[/\\\\](dist|build|\\.next|\\.nuxt)[/\\\\]/.test(resolvedFilePath)) return false\n\n // Skip non-code files (like .html, .css)\n const ext = resolvedFilePath.split('.').pop()?.toLowerCase()\n if (ext && !['js', 'jsx', 'ts', 'tsx', 'mjs', 'mts', 'vue'].includes(ext)) {\n return false\n }\n\n // Check user-defined exclude patterns\n // (picomatch integration — see index.ts for how options.exclude is applied)\n\n return true\n}\n\n/**\n * Build the escape tags set from user options merged with defaults.\n */\nexport function buildEscapeTagsSet(escapeTags?: string[]): Set<string> {\n const merged = new Set(DEFAULT_ESCAPE_TAGS)\n if (escapeTags) {\n for (const tag of escapeTags) {\n merged.add(tag)\n }\n }\n return merged\n}\n\n/**\n * Format a source location value for the data-inspecto attribute.\n * Format: \"filepath:line:column\"\n */\nexport function formatAttrValue(file: string, line: number, column: number): string {\n return `${file}:${line}:${column}`\n}\n","import * as vueCompiler from '@vue/compiler-dom'\nimport { parse as parseSFC } from '@vue/compiler-sfc'\nimport type { ElementNode, AttributeNode } from '@vue/compiler-core'\nimport { NodeTypes } from '@vue/compiler-core'\nimport MagicString from 'magic-string'\nimport path from 'node:path'\nimport type { PathType } from '@inspecto-dev/types'\nimport { buildEscapeTagsSet, formatAttrValue, type TransformResult } from './utils.js'\n\nexport interface TransformVueOptions {\n filePath: string\n source: string\n projectRoot: string\n escapeTags?: string[]\n pathType?: PathType\n attributeName?: string\n}\n\n/**\n * Transform Vue SFC source by injecting data-inspecto attributes\n * into template elements.\n *\n * Strategy:\n * 1. Locate the <template> block in the SFC source\n * 2. Parse only the template block with @vue/compiler-dom\n * 3. Walk ElementNode nodes in the AST\n * 4. For each eligible element, inject the attribute using MagicString\n * at the exact offset within the original source\n */\nexport function transformVue(options: TransformVueOptions): TransformResult {\n const {\n filePath,\n source,\n projectRoot,\n escapeTags,\n pathType = 'absolute',\n attributeName = 'data-inspecto',\n } = options\n\n const escapeTagsSet = buildEscapeTagsSet(escapeTags)\n\n // Resolve path\n const resolvedPath =\n pathType === 'absolute'\n ? path.resolve(filePath)\n : path.relative(projectRoot, path.resolve(filePath))\n\n const normalizedPath = resolvedPath.replace(/\\\\/g, '/')\n\n // ── Find <template> block boundaries ──────────────────────────────────────\n // Use @vue/compiler-sfc to parse the file and extract the template block.\n // This is much safer than regex for handling nested templates.\n const { descriptor, errors } = parseSFC(source, {\n filename: filePath,\n sourceMap: false,\n ignoreEmpty: true,\n })\n\n if (errors.length > 0 || !descriptor.template) {\n return { code: source, map: null, changed: false }\n }\n\n const templateContent = descriptor.template.content\n const templateBlockStart = descriptor.template.loc.start.offset\n\n // ── Parse template block ───────────────────────────────────────────────────\n let ast: vueCompiler.RootNode\n try {\n ast = vueCompiler.parse(templateContent, {\n parseMode: 'html',\n // Preserve source locations relative to templateContent\n onError: () => {\n /* ignore non-fatal parse errors */\n },\n })\n } catch {\n return { code: source, map: null, changed: false }\n }\n\n const ms = new MagicString(source)\n let changed = false\n\n // ── Walk AST ───────────────────────────────────────────────────────────────\n walkElement(ast, node => {\n // Skip non-element nodes\n if (node.type !== NodeTypes.ELEMENT) return\n\n const tagName = node.tag\n\n // Skip escaped tags\n if (escapeTagsSet.has(tagName)) return\n\n // Skip <template> wrapper itself (it's the root, not a real element)\n if (tagName === 'template' && node === ast.children[0]) return\n\n // Skip elements that already have the attribute (idempotency)\n const alreadyHasAttr = node.props.some(\n (p): p is AttributeNode => p.type === NodeTypes.ATTRIBUTE && p.name === attributeName,\n )\n if (alreadyHasAttr) return\n\n // node.loc is relative to templateContent — add templateBlockStart offset\n const loc = node.loc\n if (!loc) return\n\n const { line, column } = loc.start\n\n // Calculate absolute line and column in the original source\n // @vue/compiler-dom uses 1-based line and 1-based column\n const templateStartLoc = descriptor.template!.loc.start\n const absoluteLine = templateStartLoc.line + line - 1\n const absoluteColumn = line === 1 ? templateStartLoc.column + column - 1 : column\n\n const attrValue = formatAttrValue(normalizedPath, absoluteLine, absoluteColumn)\n\n // Find insert position: right after the tag name in the original source\n // node.loc.start.offset is 0-based offset within templateContent\n const tagNameEnd = loc.start.offset + tagName.length + 1 // +1 for '<'\n const absoluteOffset = templateBlockStart + tagNameEnd\n\n ms.appendLeft(absoluteOffset, ` ${attributeName}=\"${attrValue}\"`)\n changed = true\n })\n\n if (!changed) {\n return { code: source, map: null, changed: false }\n }\n\n return {\n code: ms.toString(),\n map: ms.generateMap({ hires: true, source: filePath }),\n changed: true,\n }\n}\n\n// ── AST walker ────────────────────────────────────────────────────────────────\n\ntype AnyNode = vueCompiler.RootNode | vueCompiler.TemplateChildNode\n\nfunction walkElement(node: AnyNode, visitor: (node: ElementNode) => void): void {\n if (node.type === NodeTypes.ELEMENT) {\n visitor(node)\n for (const child of node.children) {\n walkElement(child as AnyNode, visitor)\n }\n } else if ('children' in node && Array.isArray(node.children)) {\n for (const child of node.children) {\n walkElement(child as AnyNode, visitor)\n }\n }\n}\n"],"mappings":"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","names":["import_node_path","traverse_","path","MagicString","import_magic_string","import_node_path","path","parseSFC","MagicString","path"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/legacy/webpack4/loader.ts","../../../../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.10_typescript@5.9.3_yaml@2.8.3/node_modules/tsup/assets/cjs_shims.js","../../../src/transform/index.ts","../../../src/transform/transform-jsx.ts","../../../src/transform/utils.ts","../../../src/transform/transform-vue.ts","../../../src/transform/transform-svelte.ts","../../../src/transform/transform-astro.ts","../../../../../node_modules/.pnpm/@astrojs+compiler@3.0.1/node_modules/@astrojs/compiler/dist/chunk-W5DTLHV4.js","../../../../../node_modules/.pnpm/@astrojs+compiler@3.0.1/node_modules/@astrojs/compiler/dist/node/sync.js"],"sourcesContent":["import { transformRouter } from '../../transform/index'\nimport { shouldTransform } from '../../transform/utils'\nimport type { UnpluginOptions } from '@inspecto-dev/types'\n\nconst _injectedClient = false\n\nexport default function legacyWebpack4Loader(this: any, source: string) {\n const id = this.resourcePath\n\n // In Webpack 4, loader-utils is typically used, or we read from this.query\n // since this.getOptions() is a Webpack 5+ API.\n let options: any = {}\n if (typeof this.getOptions === 'function') {\n options = this.getOptions()\n } else if (this.query) {\n if (typeof this.query === 'string') {\n // Very fallback query parsing\n options = {}\n } else {\n options = this.query\n }\n }\n\n // Give default include/exclude options\n const defaultOptions: Required<UnpluginOptions> = {\n include: options.include || [/\\.[jt]sx?$/, /\\.vue$/],\n exclude: options.exclude || [/node_modules/, /\\.html$/],\n hotKey: options.hotKey || 'altKey',\n ...options,\n }\n\n if (!shouldTransform(id, defaultOptions)) {\n return source\n }\n\n const result = transformRouter({\n filePath: id,\n source,\n projectRoot: process.cwd(),\n pluginOptions: defaultOptions,\n })\n\n let finalSource = result?.changed ? result.code : source\n\n // Inject the client dynamically into the first source module we process\n // WARNING: We must NOT use process-level state like `let injectedClient = false`\n // because in webpack-dev-server, files are recompiled and the loader might hit\n // multiple entries or the same entry again on HMR.\n // Instead, we inject it conditionally based on a known module that acts as an entry\n // Webpack uses standard regex matching, so let's match any file that has `react-dom` rendering\n\n const isMainEntry =\n finalSource.includes('react-dom/client') ||\n finalSource.includes('react-dom') ||\n /[/\\\\](index|main)\\.[jt]sx?$/.test(id)\n\n if (isMainEntry && finalSource.indexOf('window.InspectoClient') === -1) {\n const clientPath = options.clientPath || '@inspecto-dev/core'\n // For Webpack 4 and Babel environments, using require() is safer than prepending `import`\n // to a file that might be CommonJS, and it doesn't get hoisted irregularly.\n finalSource =\n `\nif (typeof window !== 'undefined' && !window.InspectoClient) {\n try {\n var __inspecto_core__ = require('${clientPath.replace(/\\\\/g, '\\\\\\\\')}');\n window.InspectoClient = __inspecto_core__.default || __inspecto_core__;\n } catch (e) {\n console.error('[inspecto] core load error', e);\n }\n}\n` + finalSource\n }\n\n if (result && result.changed) {\n this.callback(null, finalSource, result.map)\n return\n }\n\n return finalSource\n}\n","// Shim globals in cjs bundle\n// There's a weird bug that esbuild will always inject importMetaUrl\n// if we export it as `const importMetaUrl = ... __filename ...`\n// But using a function will not cause this issue\n\nconst getImportMetaUrl = () => \n typeof document === \"undefined\" \n ? new URL(`file:${__filename}`).href \n : (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT') \n ? document.currentScript.src \n : new URL(\"main.js\", document.baseURI).href;\n\nexport const importMetaUrl = /* @__PURE__ */ getImportMetaUrl()\n","import path from 'node:path'\nimport type { UnpluginOptions } from '@inspecto-dev/types'\nimport { transformJsx } from './transform-jsx.js'\nimport { transformVue } from './transform-vue.js'\nimport { transformSvelte } from './transform-svelte.js'\nimport { transformAstro } from './transform-astro.js'\nimport { JSX_EXTENSIONS, type TransformResult } from './utils.js'\n\nexport interface RouterOptions {\n filePath: string\n source: string\n projectRoot: string\n pluginOptions: Required<UnpluginOptions>\n}\n\n/**\n * Route a file to the appropriate transform based on extension.\n * Returns null if no transform applies.\n */\nexport function transformRouter(options: RouterOptions): TransformResult | null {\n const { filePath, source, projectRoot, pluginOptions } = options\n const ext = path.extname(filePath).toLowerCase()\n\n if (JSX_EXTENSIONS.has(ext)) {\n return transformJsx({\n filePath,\n source,\n projectRoot,\n escapeTags: pluginOptions.escapeTags,\n pathType: pluginOptions.pathType,\n attributeName: pluginOptions.attributeName,\n })\n }\n\n // ── Vue SFC ──────────────────────────────────────────────────────────────\n if (ext === '.vue') {\n return transformVue({\n filePath,\n source,\n projectRoot,\n escapeTags: pluginOptions.escapeTags,\n pathType: pluginOptions.pathType,\n attributeName: pluginOptions.attributeName,\n })\n }\n\n // ── Svelte ───────────────────────────────────────────────────────────────\n if (ext === '.svelte') {\n return transformSvelte({\n filePath,\n source,\n escapeTags: pluginOptions.escapeTags,\n attributeName: pluginOptions.attributeName,\n })\n }\n\n // ── Astro ────────────────────────────────────────────────────────────────\n if (ext === '.astro') {\n return transformAstro({\n filePath,\n source,\n escapeTags: pluginOptions.escapeTags,\n attributeName: pluginOptions.attributeName,\n })\n }\n\n return null\n}\n// Export transforms for testing\nexport { transformJsx, transformVue, transformSvelte, transformAstro }\n","import * as parser from '@babel/parser'\nimport traverse_ from '@babel/traverse'\n// Support both ESM default and CommonJS module.exports\nconst traverse =\n typeof traverse_ === 'function' ? traverse_ : (traverse_ as any).default || traverse_\nimport type { NodePath } from '@babel/traverse'\nimport type { JSXOpeningElement } from '@babel/types'\nimport MagicString from 'magic-string'\nimport path from 'node:path'\nimport type { PathType } from '@inspecto-dev/types'\nimport { buildEscapeTagsSet, formatAttrValue, type TransformResult } from './utils.js'\n\nexport interface TransformJsxOptions {\n filePath: string\n source: string\n projectRoot: string\n escapeTags?: string[]\n pathType?: PathType\n attributeName?: string\n}\n\n/**\n * Transform JSX/TSX source code by injecting data-inspecto attributes.\n */\nexport function transformJsx(options: TransformJsxOptions): TransformResult {\n const {\n filePath,\n source,\n projectRoot,\n escapeTags,\n pathType = 'absolute',\n attributeName = 'data-inspecto',\n } = options\n\n const escapeTagsSet = buildEscapeTagsSet(escapeTags)\n\n // Resolve the file path based on pathType config\n const resolvedPath =\n pathType === 'absolute'\n ? path.resolve(filePath)\n : path.relative(projectRoot, path.resolve(filePath))\n\n // Normalize path separators on Windows\n const normalizedPath = resolvedPath.replace(/\\\\/g, '/')\n\n let ast: ReturnType<typeof parser.parse>\n try {\n ast = parser.parse(source, {\n sourceType: 'module',\n plugins: [\n 'jsx',\n 'typescript',\n 'decorators-legacy',\n 'classProperties',\n 'optionalChaining',\n 'nullishCoalescingOperator',\n 'importMeta',\n ],\n errorRecovery: true,\n })\n } catch {\n // If parsing fails, return source unchanged\n return { code: source, map: null, changed: false }\n }\n\n const ms = new MagicString(source)\n let changed = false\n\n traverse(ast, {\n JSXOpeningElement(nodePath: NodePath<JSXOpeningElement>) {\n const node = nodePath.node\n\n // Skip elements that already have the attribute\n const alreadyHasAttr = node.attributes.some(\n attr =>\n attr.type === 'JSXAttribute' &&\n attr.name.type === 'JSXIdentifier' &&\n attr.name.name === attributeName,\n )\n if (alreadyHasAttr) return\n\n // Get element tag name\n const nameNode = node.name\n let tagName: string\n if (nameNode.type === 'JSXIdentifier') {\n tagName = nameNode.name\n } else if (nameNode.type === 'JSXMemberExpression') {\n const objName = nameNode.object.type === 'JSXIdentifier' ? nameNode.object.name : ''\n const propName = nameNode.property.type === 'JSXIdentifier' ? nameNode.property.name : ''\n tagName = objName && propName ? `${objName}.${propName}` : objName\n } else {\n tagName = ''\n }\n\n // Skip escaped tags\n if (escapeTagsSet.has(tagName)) return\n\n // Get position from AST location\n const loc = node.loc\n if (!loc) return\n\n const { line, column } = loc.start\n // Babel uses 0-based columns, convert to 1-based\n const attrValue = formatAttrValue(normalizedPath, line, column + 1)\n\n // Determine the best insertion position for the attribute\n // When a JSX element has type arguments (e.g. <Component<string> />),\n // inserting after `node.name.end` might inject inside the generic bracket `<`.\n // The safest place to insert is right before the first attribute,\n // or right before the closing slash/bracket if there are no attributes.\n let insertPos: number | null | undefined = null\n if (node.attributes && node.attributes.length > 0) {\n const firstAttr = node.attributes[0]\n if (firstAttr && firstAttr.start != null) {\n insertPos = firstAttr.start\n }\n }\n\n if (insertPos == null) {\n // Find the start of the closing bracket or self-closing slash\n // We know node.end is the index right after the '>'\n // So we look backwards. But Babel AST doesn't give us exact token positions\n // for the closing tag easily.\n // For a safe fallback, we use node.typeParameters?.end || node.name.end\n if (node.typeParameters && node.typeParameters.end != null) {\n insertPos = node.typeParameters.end\n } else if (node.name.end != null) {\n insertPos = node.name.end\n }\n }\n\n if (insertPos == null) return\n\n ms.appendLeft(\n insertPos,\n ` ${attributeName}=\"${attrValue}\"${node.attributes && node.attributes.length > 0 ? '' : ' '}`,\n )\n changed = true\n },\n })\n\n if (!changed) {\n return { code: source, map: null, changed: false }\n }\n\n return {\n code: ms.toString(),\n map: ms.generateMap({ hires: true, source: filePath }),\n changed: true,\n }\n}\n","import type { UnpluginOptions } from '@inspecto-dev/types'\nimport type MagicString from 'magic-string'\n\nexport interface TransformResult {\n code: string\n map: ReturnType<MagicString['generateMap']> | null\n changed: boolean\n}\n\nexport interface NormalizedTransformTarget {\n requestId: string\n filePath: string\n wrapped: boolean\n}\n\n/** Default tags whose JSX elements should NOT receive data-inspecto attributes */\nexport const DEFAULT_ESCAPE_TAGS = new Set([\n 'template',\n 'script',\n 'style',\n // React special elements\n 'Fragment',\n 'React.Fragment',\n 'StrictMode',\n 'React.StrictMode',\n 'Suspense',\n 'React.Suspense',\n 'Profiler',\n 'React.Profiler',\n // React transitions\n 'Transition',\n 'TransitionGroup',\n // Vue built-in components\n 'KeepAlive',\n 'Teleport',\n 'Suspense',\n // Vue router built-ins\n 'RouterView',\n 'RouterLink',\n 'NuxtPage',\n 'NuxtLink',\n])\n\n/** File extensions that contain JSX/TSX syntax */\nexport const JSX_EXTENSIONS = new Set(['.jsx', '.tsx', '.js', '.ts', '.mjs', '.mts'])\n\nfunction normalizeWebpackModuleRequest(id: string): string {\n return id.replace(/!+$/, '').replace(/^\\((?:app-pages-browser|rsc|ssr)\\)\\/\\.\\//, '')\n}\n\nfunction extractNextModuleRequest(id: string): string | undefined {\n if (!id.includes('next-flight-client-entry-loader.js?')) {\n return undefined\n }\n\n const queryIndex = id.indexOf('?')\n if (queryIndex === -1) {\n return undefined\n }\n\n const params = new URLSearchParams(id.slice(queryIndex + 1).replace(/!+$/, ''))\n for (const entry of params.getAll('modules')) {\n try {\n const parsed = JSON.parse(entry) as { request?: unknown }\n if (typeof parsed.request === 'string' && parsed.request.length > 0) {\n return parsed.request\n }\n } catch {\n continue\n }\n }\n\n return undefined\n}\n\nexport function extractTransformFilePath(requestId: string): NormalizedTransformTarget {\n const normalizedRequestId = normalizeWebpackModuleRequest(requestId)\n const nextModuleRequest = extractNextModuleRequest(normalizedRequestId)\n if (nextModuleRequest) {\n return {\n requestId,\n filePath: nextModuleRequest,\n wrapped: true,\n }\n }\n\n const lastLoaderSeparator = normalizedRequestId.lastIndexOf('!')\n const resourceRequest =\n lastLoaderSeparator >= 0\n ? normalizedRequestId.slice(lastLoaderSeparator + 1)\n : normalizedRequestId\n const queryIndex = resourceRequest.indexOf('?')\n const filePath = queryIndex >= 0 ? resourceRequest.slice(0, queryIndex) : resourceRequest\n\n return {\n requestId,\n filePath,\n wrapped: filePath !== requestId,\n }\n}\n\n/**\n * Determine if a file should be transformed.\n * Always skips node_modules and dist directories.\n */\nexport function shouldTransform(filePath: string, _options: Required<UnpluginOptions>): boolean {\n const resolvedFilePath = extractTransformFilePath(filePath).filePath\n\n // Never transform in production\n if (process.env['NODE_ENV'] === 'production') return false\n\n // Skip node_modules always\n if (resolvedFilePath.includes('node_modules')) return false\n\n // Skip virtual modules\n if (resolvedFilePath.startsWith('\\x00')) return false\n\n // Skip dist/build directories\n if (/[/\\\\](dist|build|\\.next|\\.nuxt)[/\\\\]/.test(resolvedFilePath)) return false\n\n // Skip non-code files (like .html, .css)\n const ext = resolvedFilePath.split('.').pop()?.toLowerCase()\n if (ext && !['js', 'jsx', 'ts', 'tsx', 'mjs', 'mts', 'vue', 'svelte', 'astro'].includes(ext)) {\n return false\n }\n\n // Check user-defined exclude patterns\n // (picomatch integration — see index.ts for how options.exclude is applied)\n\n return true\n}\n\n/**\n * Build the escape tags set from user options merged with defaults.\n */\nexport function buildEscapeTagsSet(escapeTags?: string[]): Set<string> {\n const merged = new Set(DEFAULT_ESCAPE_TAGS)\n if (escapeTags) {\n for (const tag of escapeTags) {\n merged.add(tag)\n }\n }\n return merged\n}\n\n/**\n * Format a source location value for the data-inspecto attribute.\n * Format: \"filepath:line:column\"\n */\nexport function formatAttrValue(file: string, line: number, column: number): string {\n return `${file}:${line}:${column}`\n}\n","import * as vueCompiler from '@vue/compiler-dom'\nimport { parse as parseSFC } from '@vue/compiler-sfc'\nimport type { ElementNode, AttributeNode } from '@vue/compiler-core'\nimport { NodeTypes } from '@vue/compiler-core'\nimport MagicString from 'magic-string'\nimport path from 'node:path'\nimport type { PathType } from '@inspecto-dev/types'\nimport { buildEscapeTagsSet, formatAttrValue, type TransformResult } from './utils.js'\n\nexport interface TransformVueOptions {\n filePath: string\n source: string\n projectRoot: string\n escapeTags?: string[]\n pathType?: PathType\n attributeName?: string\n}\n\n/**\n * Transform Vue SFC source by injecting data-inspecto attributes\n * into template elements.\n *\n * Strategy:\n * 1. Locate the <template> block in the SFC source\n * 2. Parse only the template block with @vue/compiler-dom\n * 3. Walk ElementNode nodes in the AST\n * 4. For each eligible element, inject the attribute using MagicString\n * at the exact offset within the original source\n */\nexport function transformVue(options: TransformVueOptions): TransformResult {\n const {\n filePath,\n source,\n projectRoot,\n escapeTags,\n pathType = 'absolute',\n attributeName = 'data-inspecto',\n } = options\n\n const escapeTagsSet = buildEscapeTagsSet(escapeTags)\n\n // Resolve path\n const resolvedPath =\n pathType === 'absolute'\n ? path.resolve(filePath)\n : path.relative(projectRoot, path.resolve(filePath))\n\n const normalizedPath = resolvedPath.replace(/\\\\/g, '/')\n\n // ── Find <template> block boundaries ──────────────────────────────────────\n // Use @vue/compiler-sfc to parse the file and extract the template block.\n // This is much safer than regex for handling nested templates.\n const { descriptor, errors } = parseSFC(source, {\n filename: filePath,\n sourceMap: false,\n ignoreEmpty: true,\n })\n\n if (errors.length > 0 || !descriptor.template) {\n return { code: source, map: null, changed: false }\n }\n\n const templateContent = descriptor.template.content\n const templateBlockStart = descriptor.template.loc.start.offset\n\n // ── Parse template block ───────────────────────────────────────────────────\n let ast: vueCompiler.RootNode\n try {\n ast = vueCompiler.parse(templateContent, {\n parseMode: 'html',\n // Preserve source locations relative to templateContent\n onError: () => {\n /* ignore non-fatal parse errors */\n },\n })\n } catch {\n return { code: source, map: null, changed: false }\n }\n\n const ms = new MagicString(source)\n let changed = false\n\n // ── Walk AST ───────────────────────────────────────────────────────────────\n walkElement(ast, node => {\n // Skip non-element nodes\n if (node.type !== NodeTypes.ELEMENT) return\n\n const tagName = node.tag\n\n // Skip escaped tags\n if (escapeTagsSet.has(tagName)) return\n\n // Skip <template> wrapper itself (it's the root, not a real element)\n if (tagName === 'template' && node === ast.children[0]) return\n\n // Skip elements that already have the attribute (idempotency)\n const alreadyHasAttr = node.props.some(\n (p): p is AttributeNode => p.type === NodeTypes.ATTRIBUTE && p.name === attributeName,\n )\n if (alreadyHasAttr) return\n\n // node.loc is relative to templateContent — add templateBlockStart offset\n const loc = node.loc\n if (!loc) return\n\n const { line, column } = loc.start\n\n // Calculate absolute line and column in the original source\n // @vue/compiler-dom uses 1-based line and 1-based column\n const templateStartLoc = descriptor.template!.loc.start\n const absoluteLine = templateStartLoc.line + line - 1\n const absoluteColumn = line === 1 ? templateStartLoc.column + column - 1 : column\n\n const attrValue = formatAttrValue(normalizedPath, absoluteLine, absoluteColumn)\n\n // Find insert position: right after the tag name in the original source\n // node.loc.start.offset is 0-based offset within templateContent\n const tagNameEnd = loc.start.offset + tagName.length + 1 // +1 for '<'\n const absoluteOffset = templateBlockStart + tagNameEnd\n\n ms.appendLeft(absoluteOffset, ` ${attributeName}=\"${attrValue}\"`)\n changed = true\n })\n\n if (!changed) {\n return { code: source, map: null, changed: false }\n }\n\n return {\n code: ms.toString(),\n map: ms.generateMap({ hires: true, source: filePath }),\n changed: true,\n }\n}\n\n// ── AST walker ────────────────────────────────────────────────────────────────\n\ntype AnyNode = vueCompiler.RootNode | vueCompiler.TemplateChildNode\n\nfunction walkElement(node: AnyNode, visitor: (node: ElementNode) => void): void {\n if (node.type === NodeTypes.ELEMENT) {\n visitor(node)\n for (const child of node.children) {\n walkElement(child as AnyNode, visitor)\n }\n } else if ('children' in node && Array.isArray(node.children)) {\n for (const child of node.children) {\n walkElement(child as AnyNode, visitor)\n }\n }\n}\n","import MagicString from 'magic-string'\nimport { parse as parseSvelte } from 'svelte/compiler'\nimport { buildEscapeTagsSet, formatAttrValue, type TransformResult } from './utils.js'\n\nexport interface TransformSvelteOptions {\n filePath: string\n source: string\n escapeTags?: string[]\n attributeName?: string\n}\n\nfunction walk(node: any, visitor: { enter: (n: any) => void }) {\n if (!node || typeof node !== 'object') return\n visitor.enter(node)\n\n for (const key in node) {\n if (key === 'parent' || key === 'prev' || key === 'next') continue\n const value = node[key]\n if (Array.isArray(value)) {\n value.forEach(child => {\n if (child && typeof child === 'object') walk(child, visitor)\n })\n } else if (value && typeof value === 'object') {\n walk(value, visitor)\n }\n }\n}\n\nexport function transformSvelte(options: TransformSvelteOptions): TransformResult {\n const { filePath, source, escapeTags, attributeName = 'data-inspecto' } = options\n\n const escapeTagsSet = buildEscapeTagsSet(escapeTags)\n\n // svelte parse doesn't support ts or scss/less\n // so replace the content of <script></script> and <style></style> with space\n // to avoid parser errors while preserving character offsets.\n let replacedContent = source\n const scriptRegex =\n /<script(?:\\s+[a-zA-Z-]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^>\\s]*))?)?>[\\s\\S]*?<\\/script>/gi\n const styleRegex =\n /<style(?:\\s+[a-zA-Z-]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^>\\s]*))?)?>[\\s\\S]*?<\\/style>/gi\n\n const scriptMatches = source.match(scriptRegex) || []\n const styleMatches = source.match(styleRegex) || []\n\n ;[...scriptMatches, ...styleMatches].forEach(match => {\n // Replace with exact same number of spaces to preserve offsets\n replacedContent = replacedContent.replace(match, ' '.repeat(match.length))\n })\n\n let ast: any\n try {\n ast = parseSvelte(replacedContent)\n } catch {\n // Graceful fallback for parse errors\n return { code: source, map: null, changed: false }\n }\n\n const s = new MagicString(source)\n let changed = false\n\n function countLines(text: string, position: number): number {\n let lines = 0\n for (let i = 0; i < position; i++) {\n if (text[i] === '\\n') lines++\n }\n return lines\n }\n\n const root = ast.html || ast.fragment || ast\n\n walk(root, {\n enter(node: any) {\n if (\n node.type === 'Element' ||\n node.type === 'RegularElement' ||\n node.type === 'InlineComponent' ||\n node.type === 'Component'\n ) {\n const tagName = node.name || ''\n\n if (\n tagName &&\n !escapeTagsSet.has(tagName.toLowerCase()) &&\n !node.attributes?.some((attr: any) => attr.name === attributeName)\n ) {\n const insertPosition = node.start + tagName.length + 1\n const line = countLines(source, node.start) + 1\n const lastNewLine = source.lastIndexOf('\\n', node.start - 1)\n const column = lastNewLine === -1 ? node.start + 1 : node.start - lastNewLine\n\n const attrValue = formatAttrValue(filePath, line, column)\n const addition = ` ${attributeName}=\"${attrValue}\"`\n\n s.appendLeft(insertPosition, addition)\n changed = true\n }\n }\n },\n })\n\n return {\n code: s.toString(),\n map: changed ? s.generateMap({ source: filePath, includeContent: true }) : null,\n changed,\n }\n}\n","import MagicString from 'magic-string'\nimport { parse as parseAstro } from '@astrojs/compiler/sync'\nimport { buildEscapeTagsSet, formatAttrValue, type TransformResult } from './utils.js'\n\nexport interface TransformAstroOptions {\n filePath: string\n source: string\n escapeTags?: string[]\n attributeName?: string\n}\n\nfunction walk(node: any, visitor: { enter: (n: any) => void }) {\n if (!node || typeof node !== 'object') return\n visitor.enter(node)\n\n if (Array.isArray(node.children)) {\n for (const child of node.children) {\n walk(child, visitor)\n }\n }\n}\n\nexport function transformAstro(options: TransformAstroOptions): TransformResult {\n const { filePath, source, escapeTags, attributeName = 'data-inspecto' } = options\n\n const escapeTagsSet = buildEscapeTagsSet(escapeTags)\n\n let ast: any\n try {\n ast = parseAstro(source, { position: true }).ast\n } catch (_err) {\n return { code: source, map: null, changed: false }\n }\n\n const s = new MagicString(source)\n let changed = false\n\n walk(ast, {\n enter(node: any) {\n // Element or Component in Astro AST\n if (node.type === 'element' || node.type === 'component') {\n const tagName = node.name\n\n if (\n tagName &&\n !escapeTagsSet.has(tagName) &&\n !node.attributes?.some((attr: any) => attr.name === attributeName)\n ) {\n const startOffset = node.position?.start?.offset ?? -1\n if (startOffset === -1) return\n\n // Find the exact `<` before or at the startOffset\n let tagStartIndex = startOffset\n while (tagStartIndex >= 0 && source[tagStartIndex] !== '<') {\n tagStartIndex--\n }\n\n if (tagStartIndex >= 0) {\n const substringAfterTag = source.substring(tagStartIndex)\n const escapedTagName = tagName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n const strictRegex = new RegExp(`^<\\\\s*${escapedTagName}(?=\\\\s|/|>)`, 'i')\n const strictMatch = substringAfterTag.match(strictRegex)\n\n if (strictMatch) {\n const insertPosition = tagStartIndex + strictMatch[0].length\n const line = node.position.start.line\n const column = node.position.start.column\n\n const attrValue = formatAttrValue(filePath, line, column)\n const addition = ` ${attributeName}=\"${attrValue}\"`\n\n s.appendLeft(insertPosition, addition)\n changed = true\n }\n }\n }\n }\n },\n })\n\n return {\n code: s.toString(),\n map: changed ? s.generateMap({ source: filePath, includeContent: true }) : null,\n changed,\n }\n}\n","import g from\"crypto\";import _ from\"fs\";import{TextDecoder as b,TextEncoder as v}from\"util\";globalThis.fs||Object.defineProperty(globalThis,\"fs\",{value:_});globalThis.process||Object.defineProperties(globalThis,\"process\",{value:process});globalThis.crypto||Object.defineProperty(globalThis,\"crypto\",{value:g.webcrypto?g.webcrypto:{getRandomValues(m){return g.randomFillSync(m)}}});globalThis.performance||Object.defineProperty(globalThis,\"performance\",{value:{now(){let[m,o]=process.hrtime();return m*1e3+o/1e6}}});var y=new v(\"utf-8\"),w=new b(\"utf-8\");var d=class{constructor(){this.argv=[\"js\"],this.env={},this.exit=t=>{t!==0&&console.warn(\"exit code:\",t)},this._exitPromise=new Promise(t=>{this._resolveExitPromise=t}),this._pendingEvent=null,this._scheduledTimeouts=new Map,this._nextCallbackTimeoutID=1;let o=(t,e)=>{this.mem.setUint32(t+0,e,!0),this.mem.setUint32(t+4,Math.floor(e/4294967296),!0)},n=t=>{let e=this.mem.getUint32(t+0,!0),s=this.mem.getInt32(t+4,!0);return e+s*4294967296},r=t=>{let e=this.mem.getFloat64(t,!0);if(e===0)return;if(!isNaN(e))return e;let s=this.mem.getUint32(t,!0);return this._values[s]},l=(t,e)=>{if(typeof e==\"number\"&&e!==0){if(isNaN(e)){this.mem.setUint32(t+4,2146959360,!0),this.mem.setUint32(t,0,!0);return}this.mem.setFloat64(t,e,!0);return}if(e===void 0){this.mem.setFloat64(t,0,!0);return}let i=this._ids.get(e);i===void 0&&(i=this._idPool.pop(),i===void 0&&(i=this._values.length),this._values[i]=e,this._goRefCounts[i]=0,this._ids.set(e,i)),this._goRefCounts[i]++;let a=0;switch(typeof e){case\"object\":e!==null&&(a=1);break;case\"string\":a=2;break;case\"symbol\":a=3;break;case\"function\":a=4;break}this.mem.setUint32(t+4,2146959360|a,!0),this.mem.setUint32(t,i,!0)},c=t=>{let e=n(t+0),s=n(t+8);return new Uint8Array(this._inst.exports.mem.buffer,e,s)},f=t=>{let e=n(t+0),s=n(t+8),i=new Array(s);for(let a=0;a<s;a++)i[a]=r(e+a*8);return i},u=t=>{let e=n(t+0),s=n(t+8);return w.decode(new DataView(this._inst.exports.mem.buffer,e,s))},h=Date.now()-performance.now();this.importObject={gojs:{\"runtime.wasmExit\":t=>{t>>>=0;let e=this.mem.getInt32(t+8,!0);this.exited=!0,delete this._inst,delete this._values,delete this._goRefCounts,delete this._ids,delete this._idPool,this.exit(e)},\"runtime.wasmWrite\":t=>{t>>>=0;let e=n(t+8),s=n(t+16),i=this.mem.getInt32(t+24,!0);_.writeSync(e,new Uint8Array(this._inst.exports.mem.buffer,s,i))},\"runtime.resetMemoryDataView\":t=>{t>>>=0,this.mem=new DataView(this._inst.exports.mem.buffer)},\"runtime.nanotime1\":t=>{t>>>=0,o(t+8,(h+performance.now())*1e6)},\"runtime.walltime\":t=>{t>>>=0;let e=new Date().getTime();o(t+8,e/1e3),this.mem.setInt32(t+16,e%1e3*1e6,!0)},\"runtime.scheduleTimeoutEvent\":t=>{t>>>=0;let e=this._nextCallbackTimeoutID;this._nextCallbackTimeoutID++,this._scheduledTimeouts.set(e,setTimeout(()=>{for(this._resume();this._scheduledTimeouts.has(e);)console.warn(\"scheduleTimeoutEvent: missed timeout event\"),this._resume()},n(t+8)+1)),this.mem.setInt32(t+16,e,!0)},\"runtime.clearTimeoutEvent\":t=>{t>>>=0;let e=this.mem.getInt32(t+8,!0);clearTimeout(this._scheduledTimeouts.get(e)),this._scheduledTimeouts.delete(e)},\"runtime.getRandomData\":t=>{t>>>=0,globalThis.crypto.getRandomValues(c(t+8))},\"syscall/js.finalizeRef\":t=>{t>>>=0;let e=this.mem.getUint32(t+8,!0);if(this._goRefCounts[e]--,this._goRefCounts[e]===0){let s=this._values[e];this._values[e]=null,this._ids.delete(s),this._idPool.push(e)}},\"syscall/js.stringVal\":t=>{t>>>=0,l(t+24,u(t+8))},\"syscall/js.valueGet\":t=>{t>>>=0;let e=Reflect.get(r(t+8),u(t+16));t=this._inst.exports.getsp()>>>0,l(t+32,e)},\"syscall/js.valueSet\":t=>{t>>>=0,Reflect.set(r(t+8),u(t+16),r(t+32))},\"syscall/js.valueDelete\":t=>{t>>>=0,Reflect.deleteProperty(r(t+8),u(t+16))},\"syscall/js.valueIndex\":t=>{t>>>=0,l(t+24,Reflect.get(r(t+8),n(t+16)))},\"syscall/js.valueSetIndex\":t=>{t>>>=0,Reflect.set(r(t+8),n(t+16),r(t+24))},\"syscall/js.valueCall\":t=>{t>>>=0;try{let e=r(t+8),s=Reflect.get(e,u(t+16)),i=f(t+32),a=Reflect.apply(s,e,i);t=this._inst.exports.getsp()>>>0,l(t+56,a),this.mem.setUint8(t+64,1)}catch(e){t=this._inst.exports.getsp()>>>0,l(t+56,e),this.mem.setUint8(t+64,0)}},\"syscall/js.valueInvoke\":t=>{t>>>=0;try{let e=r(t+8),s=f(t+16),i=Reflect.apply(e,void 0,s);t=this._inst.exports.getsp()>>>0,l(t+40,i),this.mem.setUint8(t+48,1)}catch(e){t=this._inst.exports.getsp()>>>0,l(t+40,e),this.mem.setUint8(t+48,0)}},\"syscall/js.valueNew\":t=>{t>>>=0;try{let e=r(t+8),s=f(t+16),i=Reflect.construct(e,s);t=this._inst.exports.getsp()>>>0,l(t+40,i),this.mem.setUint8(t+48,1)}catch(e){t=this._inst.exports.getsp()>>>0,l(t+40,e),this.mem.setUint8(t+48,0)}},\"syscall/js.valueLength\":t=>{t>>>=0,o(t+16,Number.parseInt(r(t+8).length))},\"syscall/js.valuePrepareString\":t=>{t>>>=0;let e=y.encode(String(r(t+8)));l(t+16,e),o(t+24,e.length)},\"syscall/js.valueLoadString\":t=>{t>>>=0;let e=r(t+8);c(t+16).set(e)},\"syscall/js.valueInstanceOf\":t=>{t>>>=0,this.mem.setUint8(t+24,r(t+8)instanceof r(t+16)?1:0)},\"syscall/js.copyBytesToGo\":t=>{t>>>=0;let e=c(t+8),s=r(t+32);if(!(s instanceof Uint8Array||s instanceof Uint8ClampedArray)){this.mem.setUint8(t+48,0);return}let i=s.subarray(0,e.length);e.set(i),o(t+40,i.length),this.mem.setUint8(t+48,1)},\"syscall/js.copyBytesToJS\":t=>{t>>>=0;let e=r(t+8),s=c(t+16);if(!(e instanceof Uint8Array||e instanceof Uint8ClampedArray)){this.mem.setUint8(t+48,0);return}let i=s.subarray(0,e.length);e.set(i),o(t+40,i.length),this.mem.setUint8(t+48,1)},debug:t=>{console.log(t)}}}}async run(o){if(!(o instanceof WebAssembly.Instance))throw new Error(\"Go.run: WebAssembly.Instance expected\");this._inst=o,this.mem=new DataView(this._inst.exports.mem.buffer),this._values=[Number.NaN,0,null,!0,!1,globalThis,this],this._goRefCounts=new Array(this._values.length).fill(Number.POSITIVE_INFINITY),this._ids=new Map([[0,1],[null,2],[!0,3],[!1,4],[globalThis,5],[this,6]]),this._idPool=[],this.exited=!1;let n=4096,r=h=>{let t=n,e=y.encode(`${h}\\0`);return new Uint8Array(this.mem.buffer,n,e.length).set(e),n+=e.length,n%8!==0&&(n+=8-n%8),t},l=this.argv.length,c=[];this.argv.forEach(h=>{c.push(r(h))}),c.push(0),Object.keys(this.env).sort().forEach(h=>{c.push(r(`${h}=${this.env[h]}`))}),c.push(0);let u=n;c.forEach(h=>{this.mem.setUint32(n,h,!0),this.mem.setUint32(n+4,0,!0),n+=8}),this._inst.exports.run(l,u),this.exited&&this._resolveExitPromise(),await this._exitPromise}_resume(){if(this.exited)throw new Error(\"Go program has already exited\");this._inst.exports.resume(),this.exited&&this._resolveExitPromise()}_makeFuncWrapper(o){let n=this;return function(){let r={id:o,this:this,args:arguments};return n._pendingEvent=r,n._resume(),r.result}}};export{d as a};\n","import{a as c}from\"../chunk-W5DTLHV4.js\";import{readFileSync as p}from\"fs\";import{fileURLToPath as m}from\"url\";function i(){return s||(s=f()),s}var s,l=(e,t)=>i().transform(e,t),w=(e,t)=>i().parse(e,t),h=(e,t)=>i().convertToTSX(e,t);function f(){let e=new c,t=v(m(new URL(\"../astro.wasm\",import.meta.url)),e.importObject);e.run(t);let o=globalThis[\"@astrojs/compiler\"];return{transform:(n,a)=>{try{return o.transform(n,a||{})}catch(r){throw s=void 0,r}},parse:(n,a)=>{try{let r=o.parse(n,a||{});return{...r,ast:JSON.parse(r.ast)}}catch(r){throw s=void 0,r}},convertToTSX:(n,a)=>{try{let r=o.convertToTSX(n,a||{});return{...r,map:JSON.parse(r.map)}}catch(r){throw s=void 0,r}}}}function v(e,t){let o=p(e);return new WebAssembly.Instance(new WebAssembly.Module(o),t)}export{h as convertToTSX,w as parse,f as startRunningService,l as transform};\n"],"mappings":"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","names":["import_node_path","traverse_","path","MagicString","import_magic_string","import_node_path","path","parseSFC","MagicString","p","import_magic_string","parseSvelte","s","MagicString","i","import_magic_string","_","g","m","v","b","s","i","f","import_fs","w","v","m","p","walk","w","s","MagicString","path"]}
|