@zk-tech/rrt-plugin-rspack 0.0.3 → 0.0.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/config.ts","../../devtools-shared/dist/index.js","../src/middlewares/utils.ts","../src/middlewares/standalone.ts","../src/middlewares/read-file.ts","../src/middlewares/launch-editor.ts","../src/utilities/scripts.ts","../src/index.ts"],"sourcesContent":["export const coreSrc = 'perf-monitor-core.bundle.js';\nexport const clientSrc = 'perf-monitor-client.bundle.js';\n","var commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar lodash_debounce;\nvar hasRequiredLodash_debounce;\nfunction requireLodash_debounce() {\n if (hasRequiredLodash_debounce) return lodash_debounce;\n hasRequiredLodash_debounce = 1;\n var FUNC_ERROR_TEXT = \"Expected a function\";\n var NAN = 0 / 0;\n var symbolTag = \"[object Symbol]\";\n var reTrim = /^\\s+|\\s+$/g;\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n var reIsBinary = /^0b[01]+$/i;\n var reIsOctal = /^0o[0-7]+$/i;\n var freeParseInt = parseInt;\n var freeGlobal = typeof commonjsGlobal == \"object\" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n var freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\n var root = freeGlobal || freeSelf || Function(\"return this\")();\n var objectProto = Object.prototype;\n var objectToString = objectProto.toString;\n var nativeMax = Math.max, nativeMin = Math.min;\n var now = function() {\n return root.Date.now();\n };\n function debounce(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;\n return maxing ? nativeMin(result2, maxWait - timeSinceLastInvoke) : result2;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n function isObject(value) {\n var type = typeof value;\n return !!value && (type == \"object\" || type == \"function\");\n }\n function isObjectLike(value) {\n return !!value && typeof value == \"object\";\n }\n function isSymbol(value) {\n return typeof value == \"symbol\" || isObjectLike(value) && objectToString.call(value) == symbolTag;\n }\n function toNumber(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, \"\");\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n }\n lodash_debounce = debounce;\n return lodash_debounce;\n}\nvar lodash_debounceExports = requireLodash_debounce();\nconst index = /* @__PURE__ */ getDefaultExportFromCjs(lodash_debounceExports);\nconst noop = () => null;\nconst groupBy = (array, fn) => array.reduce(\n (acc, item) => {\n const key = fn(item);\n const group = acc[key] || [];\n acc[key] = [...group, item];\n return acc;\n },\n {}\n);\nconst DEVTOOLS_SHADOW_DOM_ID = \"__perf-monitor-devtools-container__\";\nconst DEVTOOLS_SHADOW_DOM_ROOT_ID = \"__perf-monitor-devtools-root__\";\nconst DEVTOOLS_OPEN_EDITOR_ENDPOINT = \"/__react-render-tracker__/open\";\nconst DEVTOOLS_READ_FILE_ENDPOINT = \"/__react-render-tracker__/read\";\nconst DEVTOOLS_STANDALONE = \"/__react-render-tracker__/standalone\";\nconst ElementTypeClass = 1;\nconst ElementTypeFunction = 2;\nconst ElementTypeMemo = 3;\nconst ElementTypeForwardRef = 4;\nconst ElementTypeProvider = 5;\nconst ElementTypeConsumer = 6;\nconst ElementTypeHostRoot = 7;\nconst ElementTypeHostComponent = 8;\nconst ElementTypeHostText = 9;\nconst ElementTypeHostPortal = 10;\nconst ElementTypeSuspense = 11;\nconst ElementTypeSuspenseList = 12;\nconst ElementTypeProfiler = 13;\nconst ElementTypeOtherOrUnknown = 14;\nconst FiberTypeName = {\n [ElementTypeClass]: \"Class component\",\n [ElementTypeFunction]: \"Function component\",\n [ElementTypeMemo]: \"Memo\",\n [ElementTypeForwardRef]: \"ForwardRef\",\n [ElementTypeProvider]: \"Provider\",\n [ElementTypeConsumer]: \"Consumer\",\n [ElementTypeHostRoot]: \"Render root\",\n [ElementTypeHostComponent]: \"Host component\",\n [ElementTypeHostText]: \"Host text\",\n [ElementTypeHostPortal]: \"Host portal\",\n [ElementTypeSuspense]: \"Suspense\",\n [ElementTypeSuspenseList]: \"Suspense list\",\n [ElementTypeProfiler]: \"Profiler\",\n [ElementTypeOtherOrUnknown]: \"Unknown\"\n};\nconst LegacyRoot = 0;\nconst ConcurrentRoot = 1;\nconst fiberRootMode = {\n [LegacyRoot]: \"Legacy Mode\",\n [ConcurrentRoot]: \"Concurrent Mode\"\n};\nconst TrackingObjectFiber = 0;\nconst TrackingObjectAlternate = 1;\nconst TrackingObjectStateNode = 2;\nconst TrackingObjectHook = 3;\nconst TrackingObjectTypeName = {\n [TrackingObjectFiber]: \"fiber\",\n [TrackingObjectAlternate]: \"alternate\",\n [TrackingObjectStateNode]: \"stateNode\",\n [TrackingObjectHook]: \"hook\"\n};\nexport {\n ConcurrentRoot,\n DEVTOOLS_OPEN_EDITOR_ENDPOINT,\n DEVTOOLS_READ_FILE_ENDPOINT,\n DEVTOOLS_SHADOW_DOM_ID,\n DEVTOOLS_SHADOW_DOM_ROOT_ID,\n DEVTOOLS_STANDALONE,\n ElementTypeClass,\n ElementTypeConsumer,\n ElementTypeForwardRef,\n ElementTypeFunction,\n ElementTypeHostComponent,\n ElementTypeHostPortal,\n ElementTypeHostRoot,\n ElementTypeHostText,\n ElementTypeMemo,\n ElementTypeOtherOrUnknown,\n ElementTypeProfiler,\n ElementTypeProvider,\n ElementTypeSuspense,\n ElementTypeSuspenseList,\n FiberTypeName,\n LegacyRoot,\n TrackingObjectAlternate,\n TrackingObjectFiber,\n TrackingObjectHook,\n TrackingObjectStateNode,\n TrackingObjectTypeName,\n index as debounce,\n fiberRootMode,\n groupBy,\n noop\n};\n//# sourceMappingURL=index.js.map\n","export const formatRequestURL = (url: string) => new URL(url, 'https://base.com');\n\nexport const parseQuery = <T = unknown>(searchParams: URLSearchParams) =>\n Object.fromEntries(searchParams.entries()) as T;\n","import { DEVTOOLS_STANDALONE } from '@zk-tech/rrt-shared';\n\nimport { clientSrc } from '@/config';\n\nimport type { RequestHandler } from './types';\nimport { formatRequestURL } from './utils';\n\nexport const standaloneHandler: RequestHandler = (req, res, next) => {\n const url = formatRequestURL(req.url || '');\n\n if (url.pathname.startsWith(DEVTOOLS_STANDALONE)) {\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/html; charset=utf-8');\n return res.end(`\n <!doctype html>\n <html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Perf Monitor Devtools</title>\n <script>\n window.__PERF_MONITOR_DEVTOOLS_CLIENT_SEPARATE__ = true;\n </script>\n </head>\n <body></body>\n <script src=\"/${clientSrc}\"></script>\n </html>\n `);\n }\n\n next();\n};\n","import fs from 'node:fs';\nimport { DEVTOOLS_READ_FILE_ENDPOINT } from '@zk-tech/rrt-shared';\n\nimport type { ReadFileParams, RequestHandler } from './types';\nimport { formatRequestURL, parseQuery } from './utils';\n\nexport const readFileHandler: RequestHandler = (req, res, next) => {\n const url = formatRequestURL(req.url || '');\n\n if (url.pathname.startsWith(DEVTOOLS_READ_FILE_ENDPOINT)) {\n const params = parseQuery<ReadFileParams>(url.searchParams);\n\n if (!params.filename || !fs.existsSync(params.filename)) {\n return next();\n }\n\n const content = fs.readFileSync(params.filename, 'utf-8');\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/plain; charset=utf-8');\n return res.end(content);\n }\n\n next();\n};\n","import { spawn } from 'node:child_process';\nimport { DEVTOOLS_OPEN_EDITOR_ENDPOINT } from '@zk-tech/rrt-shared';\n\nimport type { Editor, LaunchEditorParams, RequestHandler } from './types';\nimport { formatRequestURL, parseQuery } from './utils';\n\nfunction buildEditorCommand(\n editor: Editor,\n filename: string,\n line?: string,\n col?: string,\n): { command: string; args: string[] } {\n const hasLine = Boolean(line);\n const hasCol = Boolean(col);\n\n if (editor === 'code' || editor === 'code-insiders' || editor === 'cursor' || editor === 'zed') {\n if (hasLine || hasCol) {\n const targetLine = line || '1';\n const targetCol = col || '1';\n return {\n command: editor,\n args: ['-g', `${filename}:${targetLine}:${targetCol}`],\n };\n }\n\n return {\n command: editor,\n args: [filename],\n };\n }\n\n return {\n command: editor,\n args: [filename],\n };\n}\n\nexport const createLaunchEditorHandler = (editor: Editor = 'code') => {\n const handler: RequestHandler = (req, res, next) => {\n const url = formatRequestURL(req.url || '');\n\n if (url.pathname.startsWith(DEVTOOLS_OPEN_EDITOR_ENDPOINT)) {\n const params = parseQuery<LaunchEditorParams>(url.searchParams);\n\n if (!params.filename) {\n return next();\n }\n\n const selectedEditor = params.editor || editor;\n\n try {\n const { command, args } = buildEditorCommand(\n selectedEditor,\n params.filename,\n params.line,\n params.col,\n );\n const child = spawn(command, args, {\n detached: true,\n stdio: 'ignore',\n });\n child.unref();\n } catch (error) {\n res.statusCode = 500;\n return res.end(\n JSON.stringify({\n message: 'Failed to launch editor.',\n error: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n\n res.statusCode = 200;\n return res.end();\n }\n\n next();\n };\n\n return handler;\n};\n","import type { BackendEnv } from '@zk-tech/rrt-shared';\nimport type { PluginOptions } from '..';\n\nexport const getPluginScripts = (options?: PluginOptions) => {\n const { rendererId, separate, diffMode = 'lite', updateTrace = true, commitTrace = true } =\n options || {};\n\n const env: BackendEnv = {\n clientHost: separate ? 'separate' : 'inpage',\n bundler: 'rspack',\n bundlerVersion: __PLUGIN_VERSION__,\n diffMode,\n updateTrace,\n commitTrace,\n };\n\n let settingScript = `window.__PERF_MONITOR_DEVTOOLS_ENV__ = ${JSON.stringify(env)};`;\n\n if (rendererId) {\n settingScript += `window.__PERF_MONITOR_DEVTOOLS_CONTEXT__ = { rendererId: ${rendererId} };`;\n }\n\n const coreScript = __CORE_SCRIPT__;\n const clientScript = __CLIENT_SCRIPT__;\n\n return {\n settingScript,\n coreScript,\n clientScript,\n };\n};\n","import type { BackendEnv } from '@zk-tech/rrt-shared';\n\nimport { clientSrc, coreSrc } from './config';\nimport { createLaunchEditorHandler, type Editor, readFileHandler, standaloneHandler } from './middlewares';\nimport { getPluginScripts } from './utilities/scripts';\n\ninterface PluginOptions {\n /**\n * Specifies whether the devtools should be disabled.\n */\n disabled?: boolean;\n /**\n * Sets the rendererId to inspect, only if you know what it is used for.\n *\n * It is recommended to use the plugin's rendererId selection feature before manually configuring the rendererId when using the plugin for the first time.\n */\n rendererId?: number;\n /**\n * Whether devtools client runs in a separate window.\n */\n separate?: boolean;\n /**\n * The editor instance used to open files from DevTools.\n * @default \"code\"\n */\n editor?: Editor;\n /**\n * The diff mode to use. Defaults to lite diff mode. Full diff mode is not supported yet.\n * - \"off\": No diffs (Performance will be slightly improved).\n * - \"lite\": Only simple diffs (Performance will be slightly impacted).\n * - \"full\": All nested diffs (Performance will be significantly impacted).\n * @default \"lite\"\n */\n diffMode?: BackendEnv['diffMode'];\n /**\n * Whether to record update related events.\n * @default true\n */\n updateTrace?: boolean;\n /**\n * Whether to record commit.\n * @default true\n */\n commitTrace?: boolean;\n}\n\ninterface HtmlTag {\n attributes: Record<string, string | boolean>;\n tagName: string;\n voidTag: boolean;\n innerHTML?: string;\n meta: Record<string, unknown>;\n}\n\ninterface HtmlTagGroupsData {\n headTags: HtmlTag[];\n}\n\ninterface HtmlTagGroupsHook {\n tapPromise: (\n name: string,\n fn: (data: HtmlTagGroupsData) => Promise<HtmlTagGroupsData | void> | HtmlTagGroupsData | void,\n ) => void;\n}\n\ninterface HtmlRspackPluginLike {\n getCompilationHooks: (compilation: CompilationLike) => {\n alterAssetTagGroups: HtmlTagGroupsHook;\n };\n}\n\ninterface RawSourceConstructor {\n new (source: string): unknown;\n}\n\ninterface CompilationLike {\n assets?: Record<string, unknown>;\n emitAsset?: (name: string, source: unknown) => void;\n}\n\ntype DevServerRequestHandler = (\n req: import('node:http').IncomingMessage,\n res: import('node:http').ServerResponse,\n next: () => void,\n) => void;\n\ninterface CompilerLike {\n hooks: {\n compilation: {\n tap: (name: string, fn: (compilation: CompilationLike) => void) => void;\n };\n };\n options?: {\n devServer?: {\n setupMiddlewares?: (\n middlewares: DevServerRequestHandler[],\n devServer: unknown,\n ) => DevServerRequestHandler[] | void;\n };\n };\n webpack?: {\n sources?: {\n RawSource?: RawSourceConstructor;\n };\n };\n rspack?: {\n HtmlRspackPlugin?: HtmlRspackPluginLike;\n };\n}\n\nconst pluginName = 'PerfMonitorRspackPlugin';\n\nfunction emitAsset(compilation: CompilationLike, filename: string, source: unknown) {\n if (typeof compilation.emitAsset === 'function') {\n compilation.emitAsset(filename, source);\n return;\n }\n\n if (!compilation.assets) {\n compilation.assets = {};\n }\n compilation.assets[filename] = source;\n}\n\nfunction attachDevServerMiddlewares(compiler: CompilerLike, options: PluginOptions) {\n if (!compiler.options) {\n return;\n }\n\n const devServer = compiler.options.devServer || (compiler.options.devServer = {});\n const existingSetupMiddlewares = devServer.setupMiddlewares;\n const standalone = Boolean(options.separate);\n const editor = options.editor || 'code';\n let injected = false;\n\n devServer.setupMiddlewares = (middlewares, devServerContext) => {\n const middlewareStack = Array.isArray(middlewares) ? middlewares : [];\n const handled =\n typeof existingSetupMiddlewares === 'function'\n ? existingSetupMiddlewares(middlewareStack, devServerContext)\n : middlewareStack;\n\n const targetMiddlewares = Array.isArray(handled) ? handled : middlewareStack;\n if (injected) {\n return targetMiddlewares;\n }\n\n if (standalone) {\n targetMiddlewares.unshift(standaloneHandler);\n }\n targetMiddlewares.unshift(readFileHandler);\n targetMiddlewares.unshift(createLaunchEditorHandler(editor));\n injected = true;\n\n return targetMiddlewares;\n };\n}\n\nclass PerfMonitorRspackPlugin {\n options: PluginOptions;\n\n constructor(pluginOptions?: PluginOptions) {\n this.options = pluginOptions || {\n disabled: false,\n };\n }\n\n apply(compiler: CompilerLike) {\n if (this.options.disabled) {\n return;\n }\n\n attachDevServerMiddlewares(compiler, this.options);\n\n const HtmlRspackPlugin = compiler.rspack?.HtmlRspackPlugin;\n if (!HtmlRspackPlugin?.getCompilationHooks) {\n throw new Error(\n `${pluginName} requires rspack.HtmlRspackPlugin. Add \"new rspack.HtmlRspackPlugin()\" before this plugin.`,\n );\n }\n\n compiler.hooks.compilation.tap(pluginName, (compilation) => {\n const RawSource = compiler.webpack?.sources?.RawSource;\n if (!RawSource) {\n throw new Error(`${pluginName} requires compiler.webpack.sources.RawSource.`);\n }\n\n const { coreScript, clientScript, settingScript } = getPluginScripts(this.options);\n emitAsset(compilation, coreSrc, new RawSource(coreScript));\n emitAsset(compilation, clientSrc, new RawSource(clientScript));\n\n HtmlRspackPlugin.getCompilationHooks(compilation).alterAssetTagGroups.tapPromise(\n pluginName,\n async (data) => {\n const scripts: HtmlTag[] = [\n {\n attributes: {},\n tagName: 'script',\n voidTag: false,\n innerHTML: settingScript,\n meta: {},\n },\n {\n attributes: { defer: true, src: `/${coreSrc}` },\n tagName: 'script',\n voidTag: false,\n meta: {},\n },\n ];\n\n if (!this.options.separate) {\n scripts.splice(1, 0, {\n attributes: { defer: true, src: `/${clientSrc}` },\n tagName: 'script',\n voidTag: false,\n meta: {},\n });\n }\n\n data.headTags.unshift(...scripts);\n return data;\n },\n );\n });\n }\n}\n\nexport { PerfMonitorRspackPlugin, type PluginOptions };\n"],"names":["coreSrc","clientSrc","commonjsGlobal","lodash_debounce","hasRequiredLodash_debounce","requireLodash_debounce","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","root","objectProto","objectToString","nativeMax","nativeMin","now","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","toNumber","isObject","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","result2","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","value","type","isObjectLike","isSymbol","other","isBinary","DEVTOOLS_OPEN_EDITOR_ENDPOINT","DEVTOOLS_READ_FILE_ENDPOINT","DEVTOOLS_STANDALONE","formatRequestURL","url","parseQuery","searchParams","standaloneHandler","req","res","next","readFileHandler","params","fs","content","buildEditorCommand","editor","filename","line","col","hasLine","hasCol","createLaunchEditorHandler","selectedEditor","command","spawn","error","getPluginScripts","rendererId","separate","diffMode","updateTrace","commitTrace","settingScript","pluginName","emitAsset","compilation","source","attachDevServerMiddlewares","compiler","devServer","existingSetupMiddlewares","standalone","injected","middlewares","devServerContext","middlewareStack","handled","targetMiddlewares","PerfMonitorRspackPlugin","pluginOptions","HtmlRspackPlugin","_a","RawSource","_b","coreScript","clientScript","data","scripts"],"mappings":"4IAAaA,EAAU,8BACVC,EAAY,gCCDzB,IAAIC,EAAiB,OAAO,WAAe,IAAc,WAAa,OAAO,OAAW,IAAc,OAAS,OAAO,OAAW,IAAc,OAAS,OAAO,KAAS,IAAc,KAAO,CAAA,EAIzLC,EACAC,EACJ,SAASC,IAAyB,CAChC,GAAID,EAA4B,OAAOD,EACvCC,EAA6B,EAC7B,IAAIE,EAAkB,sBAClBC,EAAM,IACNC,EAAY,kBACZC,EAAS,aACTC,EAAa,qBACbC,EAAa,aACbC,EAAY,cACZC,EAAe,SACfC,EAAa,OAAOZ,GAAkB,UAAYA,GAAkBA,EAAe,SAAW,QAAUA,EACxGa,EAAW,OAAO,MAAQ,UAAY,MAAQ,KAAK,SAAW,QAAU,KACxEC,EAAOF,GAAcC,GAAY,SAAS,aAAa,EAAC,EACxDE,EAAc,OAAO,UACrBC,EAAiBD,EAAY,SAC7BE,EAAY,KAAK,IAAKC,EAAY,KAAK,IACvCC,EAAM,UAAW,CACnB,OAAOL,EAAK,KAAK,IAAG,CACtB,EACA,SAASM,EAASC,EAAMC,EAAMC,EAAS,CACrC,IAAIC,EAAUC,EAAUC,EAASC,EAAQC,EAASC,EAAcC,EAAiB,EAAGC,EAAU,GAAOC,EAAS,GAAOC,EAAW,GAChI,GAAI,OAAOZ,GAAQ,WACjB,MAAM,IAAI,UAAUjB,CAAe,EAErCkB,EAAOY,EAASZ,CAAI,GAAK,EACrBa,EAASZ,CAAO,IAClBQ,EAAU,CAAC,CAACR,EAAQ,QACpBS,EAAS,YAAaT,EACtBG,EAAUM,EAASf,EAAUiB,EAASX,EAAQ,OAAO,GAAK,EAAGD,CAAI,EAAII,EACrEO,EAAW,aAAcV,EAAU,CAAC,CAACA,EAAQ,SAAWU,GAE1D,SAASG,EAAWC,EAAM,CACxB,IAAIC,EAAOd,EAAUe,EAAUd,EAC/B,OAAAD,EAAWC,EAAW,OACtBK,EAAiBO,EACjBV,EAASN,EAAK,MAAMkB,EAASD,CAAI,EAC1BX,CACT,CACA,SAASa,EAAYH,EAAM,CACzB,OAAAP,EAAiBO,EACjBT,EAAU,WAAWa,EAAcnB,CAAI,EAChCS,EAAUK,EAAWC,CAAI,EAAIV,CACtC,CACA,SAASe,GAAcL,EAAM,CAC3B,IAAIM,EAAoBN,EAAOR,EAAce,EAAsBP,EAAOP,EAAgBe,EAAUvB,EAAOqB,EAC3G,OAAOX,EAASd,EAAU2B,EAASnB,EAAUkB,CAAmB,EAAIC,CACtE,CACA,SAASC,EAAaT,EAAM,CAC1B,IAAIM,EAAoBN,EAAOR,EAAce,EAAsBP,EAAOP,EAC1E,OAAOD,IAAiB,QAAUc,GAAqBrB,GAAQqB,EAAoB,GAAKX,GAAUY,GAAuBlB,CAC3H,CACA,SAASe,GAAe,CACtB,IAAIJ,EAAOlB,EAAG,EACd,GAAI2B,EAAaT,CAAI,EACnB,OAAOU,EAAaV,CAAI,EAE1BT,EAAU,WAAWa,EAAcC,GAAcL,CAAI,CAAC,CACxD,CACA,SAASU,EAAaV,EAAM,CAE1B,OADAT,EAAU,OACNK,GAAYT,EACPY,EAAWC,CAAI,GAExBb,EAAWC,EAAW,OACfE,EACT,CACA,SAASqB,IAAS,CACZpB,IAAY,QACd,aAAaA,CAAO,EAEtBE,EAAiB,EACjBN,EAAWK,EAAeJ,EAAWG,EAAU,MACjD,CACA,SAASqB,IAAQ,CACf,OAAOrB,IAAY,OAASD,EAASoB,EAAa5B,EAAG,CAAE,CACzD,CACA,SAAS+B,GAAY,CACnB,IAAIb,EAAOlB,EAAG,EAAIgC,EAAaL,EAAaT,CAAI,EAIhD,GAHAb,EAAW,UACXC,EAAW,KACXI,EAAeQ,EACXc,EAAY,CACd,GAAIvB,IAAY,OACd,OAAOY,EAAYX,CAAY,EAEjC,GAAIG,EACF,OAAAJ,EAAU,WAAWa,EAAcnB,CAAI,EAChCc,EAAWP,CAAY,CAElC,CACA,OAAID,IAAY,SACdA,EAAU,WAAWa,EAAcnB,CAAI,GAElCK,CACT,CACA,OAAAuB,EAAU,OAASF,GACnBE,EAAU,MAAQD,GACXC,CACT,CACA,SAASf,EAASiB,EAAO,CACvB,IAAIC,EAAO,OAAOD,EAClB,MAAO,CAAC,CAACA,IAAUC,GAAQ,UAAYA,GAAQ,WACjD,CACA,SAASC,EAAaF,EAAO,CAC3B,MAAO,CAAC,CAACA,GAAS,OAAOA,GAAS,QACpC,CACA,SAASG,EAASH,EAAO,CACvB,OAAO,OAAOA,GAAS,UAAYE,EAAaF,CAAK,GAAKpC,EAAe,KAAKoC,CAAK,GAAK9C,CAC1F,CACA,SAAS4B,EAASkB,EAAO,CACvB,GAAI,OAAOA,GAAS,SAClB,OAAOA,EAET,GAAIG,EAASH,CAAK,EAChB,OAAO/C,EAET,GAAI8B,EAASiB,CAAK,EAAG,CACnB,IAAII,EAAQ,OAAOJ,EAAM,SAAW,WAAaA,EAAM,QAAO,EAAKA,EACnEA,EAAQjB,EAASqB,CAAK,EAAIA,EAAQ,GAAKA,CACzC,CACA,GAAI,OAAOJ,GAAS,SAClB,OAAOA,IAAU,EAAIA,EAAQ,CAACA,EAEhCA,EAAQA,EAAM,QAAQ7C,EAAQ,EAAE,EAChC,IAAIkD,EAAWhD,EAAW,KAAK2C,CAAK,EACpC,OAAOK,GAAY/C,EAAU,KAAK0C,CAAK,EAAIzC,EAAayC,EAAM,MAAM,CAAC,EAAGK,EAAW,EAAI,CAAC,EAAIjD,EAAW,KAAK4C,CAAK,EAAI/C,EAAM,CAAC+C,CAC9H,CACA,OAAAnD,EAAkBmB,EACXnB,CACT,CAC6BE,GAAsB,EAcnD,MAAMuD,GAAgC,iCAChCC,GAA8B,iCAC9BC,GAAsB,uCCzJfC,EAAoBC,GAAgB,IAAI,IAAIA,EAAK,kBAAkB,EAEnEC,EAA2BC,GACtC,OAAO,YAAYA,EAAa,SAAS,ECI9BC,GAAoC,CAACC,EAAKC,EAAKC,IAAS,CAGnE,GAFYP,EAAiBK,EAAI,KAAO,EAAE,EAElC,SAAS,WAAWN,EAAmB,EAC7C,OAAAO,EAAI,WAAa,IACjBA,EAAI,UAAU,eAAgB,0BAA0B,EACjDA,EAAI,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAYKpE,CAAS;AAAA;AAAA,KAE5B,EAGHqE,EAAA,CACF,ECzBaC,GAAkC,CAACH,EAAKC,EAAKC,IAAS,CACjE,MAAMN,EAAMD,EAAiBK,EAAI,KAAO,EAAE,EAE1C,GAAIJ,EAAI,SAAS,WAAWH,EAA2B,EAAG,CACxD,MAAMW,EAASP,EAA2BD,EAAI,YAAY,EAE1D,GAAI,CAACQ,EAAO,UAAY,CAACC,EAAG,WAAWD,EAAO,QAAQ,EACpD,OAAOF,EAAA,EAGT,MAAMI,EAAUD,EAAG,aAAaD,EAAO,SAAU,OAAO,EACxD,OAAAH,EAAI,WAAa,IACjBA,EAAI,UAAU,eAAgB,2BAA2B,EAClDA,EAAI,IAAIK,CAAO,CACxB,CAEAJ,EAAA,CACF,ECjBA,SAASK,GACPC,EACAC,EACAC,EACAC,EACqC,CACrC,MAAMC,EAAU,EAAQF,EAClBG,EAAS,EAAQF,EAEvB,OAAIH,IAAW,QAAUA,IAAW,iBAAmBA,IAAW,UAAYA,IAAW,MACnFI,GAAWC,EAGN,CACL,QAASL,EACT,KAAM,CAAC,KAAM,GAAGC,CAAQ,IAJPC,GAAQ,GAIa,IAHtBC,GAAO,GAG4B,EAAE,CAAA,EAIlD,CACL,QAASH,EACT,KAAM,CAACC,CAAQ,CAAA,EAIZ,CACL,QAASD,EACT,KAAM,CAACC,CAAQ,CAAA,CAEnB,CAEO,MAAMK,GAA4B,CAACN,EAAiB,SACzB,CAACR,EAAKC,EAAKC,IAAS,CAClD,MAAMN,EAAMD,EAAiBK,EAAI,KAAO,EAAE,EAE1C,GAAIJ,EAAI,SAAS,WAAWJ,EAA6B,EAAG,CAC1D,MAAMY,EAASP,EAA+BD,EAAI,YAAY,EAE9D,GAAI,CAACQ,EAAO,SACV,OAAOF,EAAA,EAGT,MAAMa,EAAiBX,EAAO,QAAUI,EAExC,GAAI,CACF,KAAM,CAAE,QAAAQ,EAAS,KAAA5C,CAAA,EAASmC,GACxBQ,EACAX,EAAO,SACPA,EAAO,KACPA,EAAO,GAAA,EAEKa,GAAAA,MAAMD,EAAS5C,EAAM,CACjC,SAAU,GACV,MAAO,QAAA,CACR,EACK,MAAA,CACR,OAAS8C,EAAO,CACd,OAAAjB,EAAI,WAAa,IACVA,EAAI,IACT,KAAK,UAAU,CACb,QAAS,2BACT,MAAOiB,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAAA,CAC7D,CAAA,CAEL,CAEA,OAAAjB,EAAI,WAAa,IACVA,EAAI,IAAA,CACb,CAEAC,EAAA,CACF,EC1EWiB,GAAoB9D,GAA4B,CAC3D,KAAM,CAAE,WAAA+D,EAAY,SAAAC,EAAU,SAAAC,EAAW,OAAQ,YAAAC,EAAc,GAAM,YAAAC,EAAc,EAAA,EACjFnE,GAAW,CAAA,EAWb,IAAIoE,EAAgB,0CAA0C,KAAK,UAT3C,CACtB,WAAYJ,EAAW,WAAa,SACpC,QAAS,SACT,eAAgB,QAChB,SAAAC,EACA,YAAAC,EACA,YAAAC,CAAA,CAG8E,CAAC,IAEjF,OAAIJ,IACFK,GAAiB,4DAA4DL,CAAU,OAMlF,CACL,cAAAK,EACA,WALiB,475KAMjB,aALmB,mll6CAKnB,CAEJ,ECgFMC,EAAa,0BAEnB,SAASC,EAAUC,EAA8BnB,EAAkBoB,EAAiB,CAClF,GAAI,OAAOD,EAAY,WAAc,WAAY,CAC/CA,EAAY,UAAUnB,EAAUoB,CAAM,EACtC,MACF,CAEKD,EAAY,SACfA,EAAY,OAAS,CAAA,GAEvBA,EAAY,OAAOnB,CAAQ,EAAIoB,CACjC,CAEA,SAASC,GAA2BC,EAAwB1E,EAAwB,CAClF,GAAI,CAAC0E,EAAS,QACZ,OAGF,MAAMC,EAAYD,EAAS,QAAQ,YAAcA,EAAS,QAAQ,UAAY,IACxEE,EAA2BD,EAAU,iBACrCE,EAAa,EAAQ7E,EAAQ,SAC7BmD,EAASnD,EAAQ,QAAU,OACjC,IAAI8E,EAAW,GAEfH,EAAU,iBAAmB,CAACI,EAAaC,IAAqB,CAC9D,MAAMC,EAAkB,MAAM,QAAQF,CAAW,EAAIA,EAAc,CAAA,EAC7DG,EACJ,OAAON,GAA6B,WAChCA,EAAyBK,EAAiBD,CAAgB,EAC1DC,EAEAE,EAAoB,MAAM,QAAQD,CAAO,EAAIA,EAAUD,EAC7D,OAAIH,IAIAD,GACFM,EAAkB,QAAQzC,EAAiB,EAE7CyC,EAAkB,QAAQrC,EAAe,EACzCqC,EAAkB,QAAQ1B,GAA0BN,CAAM,CAAC,EAC3D2B,EAAW,IAEJK,CACT,CACF,CAEA,MAAMC,EAAwB,CAG5B,YAAYC,EAA+B,CACzC,KAAK,QAAUA,GAAiB,CAC9B,SAAU,EAAA,CAEd,CAEA,MAAMX,EAAwB,OAC5B,GAAI,KAAK,QAAQ,SACf,OAGFD,GAA2BC,EAAU,KAAK,OAAO,EAEjD,MAAMY,GAAmBC,EAAAb,EAAS,SAAT,YAAAa,EAAiB,iBAC1C,GAAI,EAACD,GAAA,MAAAA,EAAkB,qBACrB,MAAM,IAAI,MACR,GAAGjB,CAAU,4FAAA,EAIjBK,EAAS,MAAM,YAAY,IAAIL,EAAaE,GAAgB,SAC1D,MAAMiB,GAAYC,GAAAF,EAAAb,EAAS,UAAT,YAAAa,EAAkB,UAAlB,YAAAE,EAA2B,UAC7C,GAAI,CAACD,EACH,MAAM,IAAI,MAAM,GAAGnB,CAAU,+CAA+C,EAG9E,KAAM,CAAE,WAAAqB,EAAY,aAAAC,EAAc,cAAAvB,GAAkBN,GAAiB,KAAK,OAAO,EACjFQ,EAAUC,EAAahG,EAAS,IAAIiH,EAAUE,CAAU,CAAC,EACzDpB,EAAUC,EAAa/F,EAAW,IAAIgH,EAAUG,CAAY,CAAC,EAE7DL,EAAiB,oBAAoBf,CAAW,EAAE,oBAAoB,WACpEF,EACA,MAAOuB,GAAS,CACd,MAAMC,EAAqB,CACzB,CACE,WAAY,CAAA,EACZ,QAAS,SACT,QAAS,GACT,UAAWzB,EACX,KAAM,CAAA,CAAC,EAET,CACE,WAAY,CAAE,MAAO,GAAM,IAAK,IAAI7F,CAAO,EAAA,EAC3C,QAAS,SACT,QAAS,GACT,KAAM,CAAA,CAAC,CACT,EAGF,OAAK,KAAK,QAAQ,UAChBsH,EAAQ,OAAO,EAAG,EAAG,CACnB,WAAY,CAAE,MAAO,GAAM,IAAK,IAAIrH,CAAS,EAAA,EAC7C,QAAS,SACT,QAAS,GACT,KAAM,CAAA,CAAC,CACR,EAGHoH,EAAK,SAAS,QAAQ,GAAGC,CAAO,EACzBD,CACT,CAAA,CAEJ,CAAC,CACH,CACF"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/config.ts","../../devtools-shared/dist/index.js","../src/middlewares/utils.ts","../src/middlewares/standalone.ts","../src/middlewares/read-file.ts","../src/middlewares/launch-editor.ts","../src/utilities/console.ts","../src/utilities/scripts.ts","../src/index.ts"],"sourcesContent":["export const coreSrc = 'perf-monitor-core.bundle.js';\nexport const clientSrc = 'perf-monitor-client.bundle.js';\n","var commonjsGlobal = typeof globalThis !== \"undefined\" ? globalThis : typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : {};\nfunction getDefaultExportFromCjs(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar lodash_debounce;\nvar hasRequiredLodash_debounce;\nfunction requireLodash_debounce() {\n if (hasRequiredLodash_debounce) return lodash_debounce;\n hasRequiredLodash_debounce = 1;\n var FUNC_ERROR_TEXT = \"Expected a function\";\n var NAN = 0 / 0;\n var symbolTag = \"[object Symbol]\";\n var reTrim = /^\\s+|\\s+$/g;\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n var reIsBinary = /^0b[01]+$/i;\n var reIsOctal = /^0o[0-7]+$/i;\n var freeParseInt = parseInt;\n var freeGlobal = typeof commonjsGlobal == \"object\" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n var freeSelf = typeof self == \"object\" && self && self.Object === Object && self;\n var root = freeGlobal || freeSelf || Function(\"return this\")();\n var objectProto = Object.prototype;\n var objectToString = objectProto.toString;\n var nativeMax = Math.max, nativeMin = Math.min;\n var now = function() {\n return root.Date.now();\n };\n function debounce(func, wait, options) {\n var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;\n if (typeof func != \"function\") {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = \"maxWait\" in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = \"trailing\" in options ? !!options.trailing : trailing;\n }\n function invokeFunc(time) {\n var args = lastArgs, thisArg = lastThis;\n lastArgs = lastThis = void 0;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n function leadingEdge(time) {\n lastInvokeTime = time;\n timerId = setTimeout(timerExpired, wait);\n return leading ? invokeFunc(time) : result;\n }\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;\n return maxing ? nativeMin(result2, maxWait - timeSinceLastInvoke) : result2;\n }\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;\n return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n function trailingEdge(time) {\n timerId = void 0;\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = void 0;\n return result;\n }\n function cancel() {\n if (timerId !== void 0) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = void 0;\n }\n function flush() {\n return timerId === void 0 ? result : trailingEdge(now());\n }\n function debounced() {\n var time = now(), isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n if (isInvoking) {\n if (timerId === void 0) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === void 0) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n function isObject(value) {\n var type = typeof value;\n return !!value && (type == \"object\" || type == \"function\");\n }\n function isObjectLike(value) {\n return !!value && typeof value == \"object\";\n }\n function isSymbol(value) {\n return typeof value == \"symbol\" || isObjectLike(value) && objectToString.call(value) == symbolTag;\n }\n function toNumber(value) {\n if (typeof value == \"number\") {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == \"function\" ? value.valueOf() : value;\n value = isObject(other) ? other + \"\" : other;\n }\n if (typeof value != \"string\") {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, \"\");\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n }\n lodash_debounce = debounce;\n return lodash_debounce;\n}\nvar lodash_debounceExports = requireLodash_debounce();\nconst index = /* @__PURE__ */ getDefaultExportFromCjs(lodash_debounceExports);\nconst noop = () => null;\nconst groupBy = (array, fn) => array.reduce(\n (acc, item) => {\n const key = fn(item);\n const group = acc[key] || [];\n acc[key] = [...group, item];\n return acc;\n },\n {}\n);\nconst DEVTOOLS_SHADOW_DOM_ID = \"__perf-monitor-devtools-container__\";\nconst DEVTOOLS_SHADOW_DOM_ROOT_ID = \"__perf-monitor-devtools-root__\";\nconst DEVTOOLS_OPEN_EDITOR_ENDPOINT = \"/__react-render-tracker__/open\";\nconst DEVTOOLS_READ_FILE_ENDPOINT = \"/__react-render-tracker__/read\";\nconst DEVTOOLS_STANDALONE = \"/__react-render-tracker__/standalone\";\nconst ElementTypeClass = 1;\nconst ElementTypeFunction = 2;\nconst ElementTypeMemo = 3;\nconst ElementTypeForwardRef = 4;\nconst ElementTypeProvider = 5;\nconst ElementTypeConsumer = 6;\nconst ElementTypeHostRoot = 7;\nconst ElementTypeHostComponent = 8;\nconst ElementTypeHostText = 9;\nconst ElementTypeHostPortal = 10;\nconst ElementTypeSuspense = 11;\nconst ElementTypeSuspenseList = 12;\nconst ElementTypeProfiler = 13;\nconst ElementTypeOtherOrUnknown = 14;\nconst FiberTypeName = {\n [ElementTypeClass]: \"Class component\",\n [ElementTypeFunction]: \"Function component\",\n [ElementTypeMemo]: \"Memo\",\n [ElementTypeForwardRef]: \"ForwardRef\",\n [ElementTypeProvider]: \"Provider\",\n [ElementTypeConsumer]: \"Consumer\",\n [ElementTypeHostRoot]: \"Render root\",\n [ElementTypeHostComponent]: \"Host component\",\n [ElementTypeHostText]: \"Host text\",\n [ElementTypeHostPortal]: \"Host portal\",\n [ElementTypeSuspense]: \"Suspense\",\n [ElementTypeSuspenseList]: \"Suspense list\",\n [ElementTypeProfiler]: \"Profiler\",\n [ElementTypeOtherOrUnknown]: \"Unknown\"\n};\nconst LegacyRoot = 0;\nconst ConcurrentRoot = 1;\nconst fiberRootMode = {\n [LegacyRoot]: \"Legacy Mode\",\n [ConcurrentRoot]: \"Concurrent Mode\"\n};\nconst TrackingObjectFiber = 0;\nconst TrackingObjectAlternate = 1;\nconst TrackingObjectStateNode = 2;\nconst TrackingObjectHook = 3;\nconst TrackingObjectTypeName = {\n [TrackingObjectFiber]: \"fiber\",\n [TrackingObjectAlternate]: \"alternate\",\n [TrackingObjectStateNode]: \"stateNode\",\n [TrackingObjectHook]: \"hook\"\n};\nexport {\n ConcurrentRoot,\n DEVTOOLS_OPEN_EDITOR_ENDPOINT,\n DEVTOOLS_READ_FILE_ENDPOINT,\n DEVTOOLS_SHADOW_DOM_ID,\n DEVTOOLS_SHADOW_DOM_ROOT_ID,\n DEVTOOLS_STANDALONE,\n ElementTypeClass,\n ElementTypeConsumer,\n ElementTypeForwardRef,\n ElementTypeFunction,\n ElementTypeHostComponent,\n ElementTypeHostPortal,\n ElementTypeHostRoot,\n ElementTypeHostText,\n ElementTypeMemo,\n ElementTypeOtherOrUnknown,\n ElementTypeProfiler,\n ElementTypeProvider,\n ElementTypeSuspense,\n ElementTypeSuspenseList,\n FiberTypeName,\n LegacyRoot,\n TrackingObjectAlternate,\n TrackingObjectFiber,\n TrackingObjectHook,\n TrackingObjectStateNode,\n TrackingObjectTypeName,\n index as debounce,\n fiberRootMode,\n groupBy,\n noop\n};\n//# sourceMappingURL=index.js.map\n","export const formatRequestURL = (url: string) => new URL(url, 'https://base.com');\n\nexport const parseQuery = <T = unknown>(searchParams: URLSearchParams) =>\n Object.fromEntries(searchParams.entries()) as T;\n","import { DEVTOOLS_STANDALONE } from '@zk-tech/rrt-shared';\n\nimport { clientSrc } from '@/config';\n\nimport type { RequestHandler } from './types';\nimport { formatRequestURL } from './utils';\n\nexport const standaloneHandler: RequestHandler = (req, res, next) => {\n const url = formatRequestURL(req.url || '');\n\n if (url.pathname.startsWith(DEVTOOLS_STANDALONE)) {\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/html; charset=utf-8');\n return res.end(`\n <!doctype html>\n <html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Perf Monitor Devtools</title>\n <script>\n window.__PERF_MONITOR_DEVTOOLS_CLIENT_SEPARATE__ = true;\n </script>\n </head>\n <body></body>\n <script src=\"/${clientSrc}\"></script>\n </html>\n `);\n }\n\n next();\n};\n","import fs from 'node:fs';\nimport { DEVTOOLS_READ_FILE_ENDPOINT } from '@zk-tech/rrt-shared';\n\nimport type { ReadFileParams, RequestHandler } from './types';\nimport { formatRequestURL, parseQuery } from './utils';\n\nexport const readFileHandler: RequestHandler = (req, res, next) => {\n const url = formatRequestURL(req.url || '');\n\n if (url.pathname.startsWith(DEVTOOLS_READ_FILE_ENDPOINT)) {\n const params = parseQuery<ReadFileParams>(url.searchParams);\n\n if (!params.filename || !fs.existsSync(params.filename)) {\n return next();\n }\n\n const content = fs.readFileSync(params.filename, 'utf-8');\n res.statusCode = 200;\n res.setHeader('Content-Type', 'text/plain; charset=utf-8');\n return res.end(content);\n }\n\n next();\n};\n","import { spawn } from 'node:child_process';\nimport { DEVTOOLS_OPEN_EDITOR_ENDPOINT } from '@zk-tech/rrt-shared';\n\nimport type { Editor, LaunchEditorParams, RequestHandler } from './types';\nimport { formatRequestURL, parseQuery } from './utils';\n\nfunction buildEditorCommand(\n editor: Editor,\n filename: string,\n line?: string,\n col?: string,\n): { command: string; args: string[] } {\n const hasLine = Boolean(line);\n const hasCol = Boolean(col);\n\n if (editor === 'code' || editor === 'code-insiders' || editor === 'cursor' || editor === 'zed') {\n if (hasLine || hasCol) {\n const targetLine = line || '1';\n const targetCol = col || '1';\n return {\n command: editor,\n args: ['-g', `${filename}:${targetLine}:${targetCol}`],\n };\n }\n\n return {\n command: editor,\n args: [filename],\n };\n }\n\n return {\n command: editor,\n args: [filename],\n };\n}\n\nexport const createLaunchEditorHandler = (editor: Editor = 'code') => {\n const handler: RequestHandler = (req, res, next) => {\n const url = formatRequestURL(req.url || '');\n\n if (url.pathname.startsWith(DEVTOOLS_OPEN_EDITOR_ENDPOINT)) {\n const params = parseQuery<LaunchEditorParams>(url.searchParams);\n\n if (!params.filename) {\n return next();\n }\n\n const selectedEditor = params.editor || editor;\n\n try {\n const { command, args } = buildEditorCommand(\n selectedEditor,\n params.filename,\n params.line,\n params.col,\n );\n const child = spawn(command, args, {\n detached: true,\n stdio: 'ignore',\n });\n child.unref();\n } catch (error) {\n res.statusCode = 500;\n return res.end(\n JSON.stringify({\n message: 'Failed to launch editor.',\n error: error instanceof Error ? error.message : String(error),\n }),\n );\n }\n\n res.statusCode = 200;\n return res.end();\n }\n\n next();\n };\n\n return handler;\n};\n","import { DEVTOOLS_STANDALONE } from '@zk-tech/rrt-shared';\nimport type { AddressInfo } from 'node:net';\n\nimport type { PluginOptions } from '..';\n\ninterface LoggerLike {\n info?: (message: string) => void;\n}\n\nconst getRecord = (value: unknown): Record<string, unknown> | null => {\n if (typeof value === 'object' && value !== null) {\n return value as Record<string, unknown>;\n }\n return null;\n};\n\nconst toPortNumber = (value: unknown): number | null => {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /^\\d+$/.test(value)) {\n return Number(value);\n }\n\n return null;\n};\n\nconst resolvePort = (devServer: Record<string, unknown>): number | null => {\n const server = getRecord(devServer.server);\n const addressFn = server?.address;\n\n if (typeof addressFn === 'function') {\n const address = addressFn() as string | AddressInfo | null;\n if (address && typeof address === 'object') {\n const port = toPortNumber(address.port);\n if (port !== null) {\n return port;\n }\n }\n }\n\n const options = getRecord(devServer.options);\n return toPortNumber(options?.port);\n};\n\nconst resolveHost = (devServer: Record<string, unknown>): string => {\n const options = getRecord(devServer.options);\n const host = options?.host;\n\n if (typeof host === 'string' && host.length > 0) {\n if (host === '0.0.0.0' || host === '::') {\n return 'localhost';\n }\n return host;\n }\n\n return 'localhost';\n};\n\nconst resolveProtocol = (devServer: Record<string, unknown>): 'http' | 'https' => {\n const options = getRecord(devServer.options);\n\n if (options?.https === true) {\n return 'https';\n }\n\n const server = options?.server;\n if (typeof server === 'string') {\n return server.includes('https') ? 'https' : 'http';\n }\n\n const serverObject = getRecord(server);\n if (typeof serverObject?.type === 'string') {\n return serverObject.type.includes('https') ? 'https' : 'http';\n }\n\n return 'http';\n};\n\nconst resolveHref = (devServer: unknown): string | null => {\n const server = getRecord(devServer);\n if (!server) {\n return null;\n }\n\n const port = resolvePort(server);\n if (port === null) {\n return null;\n }\n\n const host = resolveHost(server);\n const protocol = resolveProtocol(server);\n\n return `${protocol}://${host}:${port}`;\n};\n\nexport const getConsolePrintMessages = (href: string, options?: PluginOptions) => {\n const { separate } = options || {};\n\n const separateMessage = `\\n \\u001b[1m> Perf Monitor DevTools: \\u001b[0m\\u001b[32mOpen \\u001b[22m\\u001b[96m${href}${DEVTOOLS_STANDALONE}\\u001b[0m\\u001b[32m as a separate window\\u001b[0m\\n`;\n const shortcutMessage =\n ' \\u001b[1m> Perf Monitor DevTools: \\u001b[0m\\u001b[32mPress \\u001b[32;1mAlt(⌥)\\u001b[0m\\u001b[32m + \\u001b[32;1mShift(⇧)\\u001b[0m\\u001b[32m + \\u001b[32;1mD\\u001b[0m\\u001b[32m in App to toggle DevTools\\u001b[0m\\n';\n\n if (separate) {\n return separateMessage + shortcutMessage;\n }\n\n return shortcutMessage;\n};\n\nexport const printDevServerMessages = (devServer: unknown, options?: PluginOptions) => {\n const server = getRecord(devServer);\n if (!server) {\n return;\n }\n\n const href = resolveHref(server);\n if (!href) {\n return;\n }\n\n const logger = getRecord(server.logger) as LoggerLike | null;\n const message = getConsolePrintMessages(href, options);\n\n if (typeof logger?.info === 'function') {\n logger.info(message);\n return;\n }\n\n console.info(message);\n};\n","import type { BackendEnv } from '@zk-tech/rrt-shared';\nimport type { PluginOptions } from '..';\n\nexport const getPluginScripts = (options?: PluginOptions) => {\n const { rendererId, separate, diffMode = 'lite', updateTrace = true, commitTrace = true } =\n options || {};\n\n const env: BackendEnv = {\n clientHost: separate ? 'separate' : 'inpage',\n bundler: 'rspack',\n bundlerVersion: __PLUGIN_VERSION__,\n diffMode,\n updateTrace,\n commitTrace,\n };\n\n let settingScript = `window.__PERF_MONITOR_DEVTOOLS_ENV__ = ${JSON.stringify(env)};`;\n\n if (rendererId) {\n settingScript += `window.__PERF_MONITOR_DEVTOOLS_CONTEXT__ = { rendererId: ${rendererId} };`;\n }\n\n const coreScript = __CORE_SCRIPT__;\n const clientScript = __CLIENT_SCRIPT__;\n\n return {\n settingScript,\n coreScript,\n clientScript,\n };\n};\n","import type { BackendEnv } from '@zk-tech/rrt-shared';\n\nimport { clientSrc, coreSrc } from './config';\nimport { createLaunchEditorHandler, type Editor, readFileHandler, standaloneHandler } from './middlewares';\nimport { printDevServerMessages } from './utilities/console';\nimport { getPluginScripts } from './utilities/scripts';\n\ninterface PluginOptions {\n /**\n * Specifies whether the devtools should be disabled.\n */\n disabled?: boolean;\n /**\n * Sets the rendererId to inspect, only if you know what it is used for.\n *\n * It is recommended to use the plugin's rendererId selection feature before manually configuring the rendererId when using the plugin for the first time.\n */\n rendererId?: number;\n /**\n * Whether devtools client runs in a separate window.\n */\n separate?: boolean;\n /**\n * The editor instance used to open files from DevTools.\n * @default \"code\"\n */\n editor?: Editor;\n /**\n * The diff mode to use. Defaults to lite diff mode. Full diff mode is not supported yet.\n * - \"off\": No diffs (Performance will be slightly improved).\n * - \"lite\": Only simple diffs (Performance will be slightly impacted).\n * - \"full\": All nested diffs (Performance will be significantly impacted).\n * @default \"lite\"\n */\n diffMode?: BackendEnv['diffMode'];\n /**\n * Whether to record update related events.\n * @default true\n */\n updateTrace?: boolean;\n /**\n * Whether to record commit.\n * @default true\n */\n commitTrace?: boolean;\n}\n\ninterface HtmlTag {\n attributes: Record<string, string | boolean>;\n tagName: string;\n voidTag: boolean;\n innerHTML?: string;\n meta: Record<string, unknown>;\n}\n\ninterface HtmlTagGroupsData {\n headTags: HtmlTag[];\n}\n\ninterface HtmlTagGroupsHook {\n tapPromise: (\n name: string,\n fn: (data: HtmlTagGroupsData) => Promise<HtmlTagGroupsData | void> | HtmlTagGroupsData | void,\n ) => void;\n}\n\ninterface HtmlRspackPluginLike {\n getCompilationHooks: (compilation: CompilationLike) => {\n alterAssetTagGroups: HtmlTagGroupsHook;\n };\n}\n\ninterface RawSourceConstructor {\n new (source: string): unknown;\n}\n\ninterface CompilationLike {\n assets?: Record<string, unknown>;\n emitAsset?: (name: string, source: unknown) => void;\n}\n\ntype DevServerRequestHandler = (\n req: import('node:http').IncomingMessage,\n res: import('node:http').ServerResponse,\n next: () => void,\n) => void;\n\ninterface CompilerLike {\n hooks: {\n compilation: {\n tap: (name: string, fn: (compilation: CompilationLike) => void) => void;\n };\n };\n options?: {\n devServer?: {\n setupMiddlewares?: (\n middlewares: DevServerRequestHandler[],\n devServer: unknown,\n ) => DevServerRequestHandler[] | void;\n onListening?: (devServer: unknown) => void;\n };\n };\n webpack?: {\n sources?: {\n RawSource?: RawSourceConstructor;\n };\n };\n rspack?: {\n HtmlRspackPlugin?: HtmlRspackPluginLike;\n };\n}\n\nconst pluginName = 'PerfMonitorRspackPlugin';\n\nfunction emitAsset(compilation: CompilationLike, filename: string, source: unknown) {\n if (typeof compilation.emitAsset === 'function') {\n compilation.emitAsset(filename, source);\n return;\n }\n\n if (!compilation.assets) {\n compilation.assets = {};\n }\n compilation.assets[filename] = source;\n}\n\nfunction attachDevServerMiddlewares(compiler: CompilerLike, options: PluginOptions) {\n if (!compiler.options) {\n return;\n }\n\n const devServer = compiler.options.devServer || (compiler.options.devServer = {});\n const existingSetupMiddlewares = devServer.setupMiddlewares;\n const existingOnListening = devServer.onListening;\n const standalone = Boolean(options.separate);\n const editor = options.editor || 'code';\n let injected = false;\n let printed = false;\n\n devServer.setupMiddlewares = (middlewares, devServerContext) => {\n const middlewareStack = Array.isArray(middlewares) ? middlewares : [];\n const handled =\n typeof existingSetupMiddlewares === 'function'\n ? existingSetupMiddlewares(middlewareStack, devServerContext)\n : middlewareStack;\n\n const targetMiddlewares = Array.isArray(handled) ? handled : middlewareStack;\n if (injected) {\n return targetMiddlewares;\n }\n\n if (standalone) {\n targetMiddlewares.unshift(standaloneHandler);\n }\n targetMiddlewares.unshift(readFileHandler);\n targetMiddlewares.unshift(createLaunchEditorHandler(editor));\n injected = true;\n\n return targetMiddlewares;\n };\n\n devServer.onListening = (devServerContext) => {\n if (!printed) {\n printDevServerMessages(devServerContext, options);\n printed = true;\n }\n\n if (typeof existingOnListening === 'function') {\n existingOnListening(devServerContext);\n }\n };\n}\n\nclass PerfMonitorRspackPlugin {\n options: PluginOptions;\n\n constructor(pluginOptions?: PluginOptions) {\n this.options = pluginOptions || {\n disabled: false,\n };\n }\n\n apply(compiler: CompilerLike) {\n if (this.options.disabled) {\n return;\n }\n\n attachDevServerMiddlewares(compiler, this.options);\n\n const HtmlRspackPlugin = compiler.rspack?.HtmlRspackPlugin;\n if (!HtmlRspackPlugin?.getCompilationHooks) {\n throw new Error(\n `${pluginName} requires rspack.HtmlRspackPlugin. Add \"new rspack.HtmlRspackPlugin()\" before this plugin.`,\n );\n }\n\n compiler.hooks.compilation.tap(pluginName, (compilation) => {\n const RawSource = compiler.webpack?.sources?.RawSource;\n if (!RawSource) {\n throw new Error(`${pluginName} requires compiler.webpack.sources.RawSource.`);\n }\n\n const { coreScript, clientScript, settingScript } = getPluginScripts(this.options);\n emitAsset(compilation, coreSrc, new RawSource(coreScript));\n emitAsset(compilation, clientSrc, new RawSource(clientScript));\n\n HtmlRspackPlugin.getCompilationHooks(compilation).alterAssetTagGroups.tapPromise(\n pluginName,\n async (data) => {\n const scripts: HtmlTag[] = [\n {\n attributes: {},\n tagName: 'script',\n voidTag: false,\n innerHTML: settingScript,\n meta: {},\n },\n {\n attributes: { defer: true, src: `/${coreSrc}` },\n tagName: 'script',\n voidTag: false,\n meta: {},\n },\n ];\n\n if (!this.options.separate) {\n scripts.splice(1, 0, {\n attributes: { defer: true, src: `/${clientSrc}` },\n tagName: 'script',\n voidTag: false,\n meta: {},\n });\n }\n\n data.headTags.unshift(...scripts);\n return data;\n },\n );\n });\n }\n}\n\nexport { PerfMonitorRspackPlugin, type PluginOptions };\n"],"names":["coreSrc","clientSrc","commonjsGlobal","lodash_debounce","hasRequiredLodash_debounce","requireLodash_debounce","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","freeSelf","root","objectProto","objectToString","nativeMax","nativeMin","now","debounce","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","toNumber","isObject","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","result2","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","value","type","isObjectLike","isSymbol","other","isBinary","DEVTOOLS_OPEN_EDITOR_ENDPOINT","DEVTOOLS_READ_FILE_ENDPOINT","DEVTOOLS_STANDALONE","formatRequestURL","url","parseQuery","searchParams","standaloneHandler","req","res","next","readFileHandler","params","fs","content","buildEditorCommand","editor","filename","line","col","hasLine","hasCol","createLaunchEditorHandler","selectedEditor","command","spawn","error","getRecord","toPortNumber","resolvePort","devServer","server","addressFn","address","port","resolveHost","host","resolveProtocol","serverObject","resolveHref","getConsolePrintMessages","href","separate","separateMessage","shortcutMessage","printDevServerMessages","logger","message","getPluginScripts","rendererId","diffMode","updateTrace","commitTrace","settingScript","pluginName","emitAsset","compilation","source","attachDevServerMiddlewares","compiler","existingSetupMiddlewares","existingOnListening","standalone","injected","printed","middlewares","devServerContext","middlewareStack","handled","targetMiddlewares","PerfMonitorRspackPlugin","pluginOptions","HtmlRspackPlugin","_a","RawSource","_b","coreScript","clientScript","data","scripts"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -74,6 +74,7 @@ interface CompilerLike {
74
74
  options?: {
75
75
  devServer?: {
76
76
  setupMiddlewares?: (middlewares: DevServerRequestHandler[], devServer: unknown) => DevServerRequestHandler[] | void;
77
+ onListening?: (devServer: unknown) => void;
77
78
  };
78
79
  };
79
80
  webpack?: {
@@ -0,0 +1,3 @@
1
+ import { PluginOptions } from '..';
2
+ export declare const getConsolePrintMessages: (href: string, options?: PluginOptions) => string;
3
+ export declare const printDevServerMessages: (devServer: unknown, options?: PluginOptions) => void;
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@zk-tech/rrt-plugin-rspack",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "main": "./dist/index.cjs",
5
5
  "module": "./dist/index.cjs",
6
6
  "dependencies": {
7
- "@zk-tech/rrt-client": "0.0.3",
8
- "@zk-tech/rrt-shared": "0.0.3",
9
- "@zk-tech/rrt-core": "0.0.3"
7
+ "@zk-tech/rrt-client": "0.0.4",
8
+ "@zk-tech/rrt-core": "0.0.4",
9
+ "@zk-tech/rrt-shared": "0.0.4"
10
10
  },
11
11
  "peerDependencies": {
12
12
  "@rspack/core": ">=0.5.0"