@inspecto-dev/plugin 0.3.9 → 0.3.10
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/dist/astro.cjs +59 -17
- package/dist/astro.cjs.map +1 -1
- package/dist/astro.d.cts +1 -1
- package/dist/astro.d.ts +1 -1
- package/dist/astro.js +58 -16
- package/dist/astro.js.map +1 -1
- package/dist/index.cjs +46 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +45 -13
- package/dist/index.js.map +1 -1
- package/dist/legacy/rspack/index.cjs +16 -5
- package/dist/legacy/rspack/index.cjs.map +1 -1
- package/dist/legacy/rspack/index.js +16 -5
- package/dist/legacy/rspack/index.js.map +1 -1
- package/dist/legacy/rspack/loader.cjs +1 -1
- package/dist/legacy/rspack/loader.cjs.map +1 -1
- package/dist/legacy/webpack4/index.cjs +16 -5
- package/dist/legacy/webpack4/index.cjs.map +1 -1
- package/dist/legacy/webpack4/index.js +16 -5
- package/dist/legacy/webpack4/index.js.map +1 -1
- package/dist/legacy/webpack4/loader.cjs +1 -1
- package/dist/legacy/webpack4/loader.cjs.map +1 -1
- package/dist/rollup.cjs +46 -14
- package/dist/rollup.cjs.map +1 -1
- package/dist/rollup.js +45 -13
- package/dist/rollup.js.map +1 -1
- package/dist/rspack.cjs +46 -14
- package/dist/rspack.cjs.map +1 -1
- package/dist/rspack.js +45 -13
- package/dist/rspack.js.map +1 -1
- package/dist/vite.cjs +46 -14
- package/dist/vite.cjs.map +1 -1
- package/dist/vite.js +45 -13
- package/dist/vite.js.map +1 -1
- package/dist/webpack.cjs +46 -14
- package/dist/webpack.cjs.map +1 -1
- package/dist/webpack.js +45 -13
- package/dist/webpack.js.map +1 -1
- package/package.json +4 -4
|
@@ -34,7 +34,7 @@ __export(loader_exports, {
|
|
|
34
34
|
});
|
|
35
35
|
module.exports = __toCommonJS(loader_exports);
|
|
36
36
|
|
|
37
|
-
// ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.
|
|
37
|
+
// ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.14_typescript@5.9.3_yaml@2.8.4/node_modules/tsup/assets/cjs_shims.js
|
|
38
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
39
|
var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
|
|
40
40
|
|
|
@@ -1 +1 @@
|
|
|
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 projectRoot,\n escapeTags: pluginOptions.escapeTags,\n pathType: pluginOptions.pathType,\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 pathType: pluginOptions.pathType,\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 projectRoot?: string\n pathType?: 'absolute' | 'relative'\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 pathType?: 'absolute' | 'relative'\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"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/legacy/webpack4/loader.ts","../../../../../node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.14_typescript@5.9.3_yaml@2.8.4/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 projectRoot,\n escapeTags: pluginOptions.escapeTags,\n pathType: pluginOptions.pathType,\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 pathType: pluginOptions.pathType,\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 projectRoot?: string\n pathType?: 'absolute' | 'relative'\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 pathType?: 'absolute' | 'relative'\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"]}
|
package/dist/rollup.cjs
CHANGED
|
@@ -43,7 +43,7 @@ __export(src_exports, {
|
|
|
43
43
|
});
|
|
44
44
|
module.exports = __toCommonJS(src_exports);
|
|
45
45
|
|
|
46
|
-
// ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.
|
|
46
|
+
// ../../node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.14_typescript@5.9.3_yaml@2.8.4/node_modules/tsup/assets/cjs_shims.js
|
|
47
47
|
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;
|
|
48
48
|
var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
|
|
49
49
|
|
|
@@ -1899,6 +1899,24 @@ function resolveProjectRoot() {
|
|
|
1899
1899
|
return gitRoot;
|
|
1900
1900
|
}
|
|
1901
1901
|
|
|
1902
|
+
// src/server/server-url.ts
|
|
1903
|
+
function resolveServerHost(cwd, configRoot) {
|
|
1904
|
+
const userConfig = loadUserConfigSync(false, cwd, configRoot);
|
|
1905
|
+
const configuredHost = userConfig["server.host"]?.trim();
|
|
1906
|
+
if (configuredHost) return configuredHost;
|
|
1907
|
+
if (process.env["VITEST"]) return "127.0.0.1";
|
|
1908
|
+
return "127.0.0.1";
|
|
1909
|
+
}
|
|
1910
|
+
function resolvePublicServerUrl(args) {
|
|
1911
|
+
const userConfig = loadUserConfigSync(false, args.cwd, args.configRoot);
|
|
1912
|
+
const configuredPublicUrl = userConfig["server.publicUrl"]?.trim();
|
|
1913
|
+
if (configuredPublicUrl) {
|
|
1914
|
+
return configuredPublicUrl.replace(/\/$/, "");
|
|
1915
|
+
}
|
|
1916
|
+
const host = resolveServerHost(args.cwd, args.configRoot);
|
|
1917
|
+
return `http://${host}:${args.port}`;
|
|
1918
|
+
}
|
|
1919
|
+
|
|
1902
1920
|
// src/server/index.ts
|
|
1903
1921
|
var serverLogger4 = createLogger("inspecto:server", { logLevel: getGlobalLogLevel() });
|
|
1904
1922
|
var PORT_FILE_NAME = "inspecto.port.json";
|
|
@@ -1953,6 +1971,7 @@ async function startServer() {
|
|
|
1953
1971
|
serverState.projectRoot = resolveProjectRoot();
|
|
1954
1972
|
serverState.configRoot = serverState.projectRoot;
|
|
1955
1973
|
serverState.cwd = process.cwd();
|
|
1974
|
+
const serverHost = resolveServerHost(serverState.cwd, serverState.configRoot);
|
|
1956
1975
|
import_portfinder.default.basePort = 5678;
|
|
1957
1976
|
const port = await import_portfinder.default.getPortPromise();
|
|
1958
1977
|
watchConfig(
|
|
@@ -1979,7 +1998,7 @@ async function startServer() {
|
|
|
1979
1998
|
});
|
|
1980
1999
|
});
|
|
1981
2000
|
await new Promise((resolve2, reject) => {
|
|
1982
|
-
serverInstance.listen(port,
|
|
2001
|
+
serverInstance.listen(port, serverHost, () => {
|
|
1983
2002
|
serverInstance.unref();
|
|
1984
2003
|
resolve2();
|
|
1985
2004
|
});
|
|
@@ -2001,7 +2020,7 @@ async function startServer() {
|
|
|
2001
2020
|
} catch {
|
|
2002
2021
|
}
|
|
2003
2022
|
});
|
|
2004
|
-
serverLogger4.info(`server running at http
|
|
2023
|
+
serverLogger4.info(`server running at http://${serverHost}:${port}`);
|
|
2005
2024
|
return port;
|
|
2006
2025
|
}
|
|
2007
2026
|
async function readBody(req) {
|
|
@@ -2418,26 +2437,28 @@ var resolveClientModule = () => {
|
|
|
2418
2437
|
};
|
|
2419
2438
|
|
|
2420
2439
|
// src/injectors/webpack.ts
|
|
2421
|
-
function getWebpackHtmlScript(serverPort) {
|
|
2440
|
+
function getWebpackHtmlScript(serverPort, publicServerUrl) {
|
|
2422
2441
|
return `
|
|
2423
2442
|
window.__AI_INSPECTOR_PORT__ = ${serverPort};
|
|
2443
|
+
window.__AI_INSPECTOR_SERVER_URL__ = '${publicServerUrl ?? `http://127.0.0.1:${serverPort}`}';
|
|
2424
2444
|
window.addEventListener('load', () => {
|
|
2425
2445
|
if (window.InspectoClient) {
|
|
2426
2446
|
window.InspectoClient.mountInspector({
|
|
2427
|
-
serverUrl:
|
|
2447
|
+
serverUrl: window.__AI_INSPECTOR_SERVER_URL__,
|
|
2428
2448
|
});
|
|
2429
2449
|
}
|
|
2430
2450
|
});
|
|
2431
2451
|
`;
|
|
2432
2452
|
}
|
|
2433
|
-
function getWebpackAssetScript(serverPort) {
|
|
2453
|
+
function getWebpackAssetScript(serverPort, publicServerUrl) {
|
|
2434
2454
|
return `
|
|
2435
2455
|
if (typeof window !== 'undefined') {
|
|
2436
2456
|
window.__AI_INSPECTOR_PORT__ = ${serverPort};
|
|
2457
|
+
window.__AI_INSPECTOR_SERVER_URL__ = '${publicServerUrl ?? `http://127.0.0.1:${serverPort}`}';
|
|
2437
2458
|
const _initInspecto = () => {
|
|
2438
2459
|
if (window.InspectoClient) {
|
|
2439
2460
|
window.InspectoClient.mountInspector({
|
|
2440
|
-
serverUrl:
|
|
2461
|
+
serverUrl: window.__AI_INSPECTOR_SERVER_URL__,
|
|
2441
2462
|
});
|
|
2442
2463
|
} else {
|
|
2443
2464
|
setTimeout(_initInspecto, 100);
|
|
@@ -2451,7 +2472,7 @@ if (typeof window !== 'undefined') {
|
|
|
2451
2472
|
}
|
|
2452
2473
|
`;
|
|
2453
2474
|
}
|
|
2454
|
-
function injectWebpack(compiler, serverPortFn, resolveClientModule2) {
|
|
2475
|
+
function injectWebpack(compiler, serverPortFn, publicServerUrlFn, resolveClientModule2) {
|
|
2455
2476
|
const inspectoClientPath = resolveClientModule2();
|
|
2456
2477
|
if (compiler.webpack && compiler.webpack.EntryPlugin) {
|
|
2457
2478
|
new compiler.webpack.EntryPlugin(compiler.context, inspectoClientPath, {
|
|
@@ -2466,11 +2487,12 @@ function injectWebpack(compiler, serverPortFn, resolveClientModule2) {
|
|
|
2466
2487
|
const hooks = HtmlWebpackPlugin.constructor.getHooks(compilation);
|
|
2467
2488
|
hooks.alterAssetTagGroups.tapPromise("inspecto-overlay", async (data) => {
|
|
2468
2489
|
const port = await serverPortFn();
|
|
2490
|
+
const publicServerUrl = publicServerUrlFn(port);
|
|
2469
2491
|
data.headTags.unshift({
|
|
2470
2492
|
tagName: "script",
|
|
2471
2493
|
voidTag: false,
|
|
2472
2494
|
meta: { plugin: "inspecto-overlay" },
|
|
2473
|
-
innerHTML: getWebpackHtmlScript(port)
|
|
2495
|
+
innerHTML: getWebpackHtmlScript(port, publicServerUrl)
|
|
2474
2496
|
});
|
|
2475
2497
|
return data;
|
|
2476
2498
|
});
|
|
@@ -2483,13 +2505,14 @@ function injectWebpack(compiler, serverPortFn, resolveClientModule2) {
|
|
|
2483
2505
|
},
|
|
2484
2506
|
async (assets) => {
|
|
2485
2507
|
const port = await serverPortFn();
|
|
2508
|
+
const publicServerUrl = publicServerUrlFn(port);
|
|
2486
2509
|
const mainAssetKey = Object.keys(assets).find(
|
|
2487
2510
|
(key) => key.endsWith(".js") && (key.includes("main") || key.includes("app") || key.includes("umi"))
|
|
2488
2511
|
);
|
|
2489
2512
|
if (!mainAssetKey) return;
|
|
2490
2513
|
const originalSource = assets[mainAssetKey].source();
|
|
2491
2514
|
assets[mainAssetKey] = new compiler.webpack.sources.RawSource(
|
|
2492
|
-
getWebpackAssetScript(port) + "\n" + originalSource
|
|
2515
|
+
getWebpackAssetScript(port, publicServerUrl) + "\n" + originalSource
|
|
2493
2516
|
);
|
|
2494
2517
|
}
|
|
2495
2518
|
);
|
|
@@ -2523,12 +2546,13 @@ function injectRspack(compiler, serverPortFn, resolveClientModule2) {
|
|
|
2523
2546
|
}
|
|
2524
2547
|
|
|
2525
2548
|
// src/injectors/vite.ts
|
|
2526
|
-
function getViteVirtualModuleScript(serverPort) {
|
|
2549
|
+
function getViteVirtualModuleScript(serverPort, publicServerUrl) {
|
|
2527
2550
|
return `
|
|
2528
2551
|
import { mountInspector } from '@inspecto-dev/core';
|
|
2529
2552
|
window.__AI_INSPECTOR_PORT__ = ${serverPort};
|
|
2553
|
+
window.__AI_INSPECTOR_SERVER_URL__ = '${publicServerUrl ?? `http://127.0.0.1:${serverPort}`}';
|
|
2530
2554
|
mountInspector({
|
|
2531
|
-
serverUrl:
|
|
2555
|
+
serverUrl: window.__AI_INSPECTOR_SERVER_URL__,
|
|
2532
2556
|
});
|
|
2533
2557
|
`;
|
|
2534
2558
|
}
|
|
@@ -2561,6 +2585,11 @@ var InspectoPlugin = (0, import_unplugin.createUnplugin)((userOptions = {}) => {
|
|
|
2561
2585
|
}
|
|
2562
2586
|
return serverPort;
|
|
2563
2587
|
};
|
|
2588
|
+
const getPublicServerUrl = (port) => resolvePublicServerUrl({
|
|
2589
|
+
cwd: serverState.cwd || process.cwd(),
|
|
2590
|
+
configRoot: serverState.configRoot || projectRoot,
|
|
2591
|
+
port
|
|
2592
|
+
});
|
|
2564
2593
|
return {
|
|
2565
2594
|
name: "inspecto-overlay",
|
|
2566
2595
|
enforce: "pre",
|
|
@@ -2573,7 +2602,7 @@ var InspectoPlugin = (0, import_unplugin.createUnplugin)((userOptions = {}) => {
|
|
|
2573
2602
|
},
|
|
2574
2603
|
webpack: (compiler) => {
|
|
2575
2604
|
if (isProduction) return;
|
|
2576
|
-
injectWebpack(compiler, ensureServer, resolveClientModule);
|
|
2605
|
+
injectWebpack(compiler, ensureServer, getPublicServerUrl, resolveClientModule);
|
|
2577
2606
|
},
|
|
2578
2607
|
rspack: (compiler) => {
|
|
2579
2608
|
if (isProduction) return;
|
|
@@ -2599,7 +2628,10 @@ var InspectoPlugin = (0, import_unplugin.createUnplugin)((userOptions = {}) => {
|
|
|
2599
2628
|
},
|
|
2600
2629
|
load(id) {
|
|
2601
2630
|
if (id === VITE_VIRTUAL_MODULE_ID) {
|
|
2602
|
-
return getViteVirtualModuleScript(
|
|
2631
|
+
return getViteVirtualModuleScript(
|
|
2632
|
+
serverPort ?? DEFAULT_PORT,
|
|
2633
|
+
getPublicServerUrl(serverPort ?? DEFAULT_PORT)
|
|
2634
|
+
);
|
|
2603
2635
|
}
|
|
2604
2636
|
return null;
|
|
2605
2637
|
},
|