@metricinsights/pp-dev 1.0.0-beta.2 → 1.1.0

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +72 -11
  3. package/dist/CHANGELOG.md +27 -0
  4. package/dist/README.md +72 -11
  5. package/dist/cjs/cli.js +1 -1
  6. package/dist/cjs/cli.js.map +1 -1
  7. package/dist/cjs/index-ctxv-2Kt.js +2 -0
  8. package/dist/cjs/index-ctxv-2Kt.js.map +1 -0
  9. package/dist/cjs/index.js +1 -1
  10. package/dist/cjs/package.json +3 -3
  11. package/dist/cjs/plugin-cgWPoZgR.js +2 -0
  12. package/dist/cjs/plugin-cgWPoZgR.js.map +1 -0
  13. package/dist/cjs/plugin.js +1 -1
  14. package/dist/cjs/{version-plugin-DsC5NLoX.js → version-plugin-Bhywa-Hu.js} +2 -2
  15. package/dist/cjs/{version-plugin-DsC5NLoX.js.map → version-plugin-Bhywa-Hu.js.map} +1 -1
  16. package/dist/esm/cli.js +1 -1
  17. package/dist/esm/cli.js.map +1 -1
  18. package/dist/esm/index-N58WZBr_.js +2 -0
  19. package/dist/esm/index-N58WZBr_.js.map +1 -0
  20. package/dist/esm/index.js +1 -1
  21. package/dist/esm/package.json +3 -3
  22. package/dist/esm/plugin-ClbE2EOy.js +2 -0
  23. package/dist/esm/plugin-ClbE2EOy.js.map +1 -0
  24. package/dist/esm/plugin.js +1 -1
  25. package/dist/esm/{version-plugin-BGWVTSsN.js → version-plugin-Lyuzh4c2.js} +2 -2
  26. package/dist/esm/{version-plugin-BGWVTSsN.js.map → version-plugin-Lyuzh4c2.js.map} +1 -1
  27. package/dist/types/index.d.ts +10 -2
  28. package/package.json +3 -3
  29. package/dist/cjs/index-DeUfAH6g.js +0 -2
  30. package/dist/cjs/index-DeUfAH6g.js.map +0 -1
  31. package/dist/cjs/plugin-Cm9vRLCu.js +0 -2
  32. package/dist/cjs/plugin-Cm9vRLCu.js.map +0 -1
  33. package/dist/esm/index-DOjGFYJ7.js +0 -2
  34. package/dist/esm/index-DOjGFYJ7.js.map +0 -1
  35. package/dist/esm/plugin-B2ocw-wb.js +0 -2
  36. package/dist/esm/plugin-B2ocw-wb.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DOjGFYJ7.js","sources":["../../../src/lib/dev-panel.ts","../../../src/plugins/client-injection-plugin.ts","../../../src/banner/header.ts","../../../src/lib/next-import.ts","../../../src/config.ts","../../../src/index.ts","../../../src/plugins/mi-topbar-plugin.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["CLIENT_DIST_DIR","path","dirname","PP_DEV_CLIENT_ENTRY","TEMPLATE_PATH","join","compiledTemplate","getDevPanelAssetPaths","base","css","posix","PACKAGE_NAME","js","renderDevPanelMarkup","data","templateContent","fs","readFileSync","encoding","ejs","compile","openDelimiter","closeDelimiter","async","rmWhitespace","compileDebug","getTemplate","template","VERSION","backendBaseURL","templateLess","appId","canSync","devPanelPosition","devPanelHidden","devPanelAutoHide","injectDevPanel","html","test","linkTag","bodyPrepend","result","linkInjected","replace","head","CONTENT_TYPES","createDevPanelAssetMiddleware","assetPrefix","allowed","Set","req","res","next","pathname","url","split","startsWith","fileName","slice","length","has","filePath","readFile","err","content","statusCode","setHeader","extname","end","DIRNAME","__filename","resolve","fileURLToPath","URL","process","cwd","normalizePath","PP_DEV_PACKAGE_DIR","PACKAGE_REGEXP","RegExp","cachedTemplateContent","cachedTemplate","clientInjectionPlugin","opts","name","apply","config","optimizeDeps","exclude","push","resolveId","source","match","resolvedId","id","transformIndexHtml","ctx","server","templatePath","cache","filename","assetPaths","tags","tag","injectTo","attrs","rel","href","templateData","children","src","type","configureServer","clientDir","root","allow","replacer","substring","$1","header","_chunk","safeNextImport","constants","Promise","all","import","default","error","Error","isNextAvailable","getNextVersion","version","configCache","Map","CACHE_TTL","packageJsonCache","getPackageJson","now","Date","timestamp","JSON","parse","flag","empty","esbuildModule","loadTsConfig","cacheKey","cached","get","isESM","pkg","esbuild","getEsbuild","build","absWorkingDir","entryPoints","outfile","write","target","platform","bundle","packages","format","mainFields","sourcemap","metafile","text","code","outputFiles","fileNameTmp","Math","random","toString","fileUrl","pathToFileURL","writeFileSync","conf","set","existsSync","unlink","loadJsConfig","loadJSONConfig","dirContentCache","getPkg","getConfig","dirContent","files","endsWithRegExp","readdirSync","withFileTypes","filter","value","isFile","map","getDirectoryContent","configFound","newConfig","dirFiles","configNames","configName","includes","endsWith","loadConfig","PP_DEV_CONFIG_NAMES","packageConfig","Array","isArray","clear","PP_DEV_CONFIG_GROUPS","resolveRepositoryUrl","repository","directCiRepositoryUrlEnvVars","variableName","ciRepositoryUrl","env","trim","githubRepository","GITHUB_REPOSITORY","GITHUB_SERVER_URL","gitlabProjectPath","CI_PROJECT_PATH","CI_SERVER_URL","bitbucketRepositoryFullName","BITBUCKET_REPO_FULL_NAME","travisRepositorySlug","TRAVIS_REPO_SLUG","gitRemoteOriginUrl","execSync","stdio","getViteConfig","templateName","ppDevConfig","validatePPDevConfig","normalizedPPDevConfig","normalizePPDevConfig","vitePPDev","plugins","outDir","distZip","versionPlugin","imageOptimizer","integrateMiTopBar","addRootElement","addSharedComponentsScripts","defer","miTopBarPlugin","ViteImageOptimizer","undefined","versionPluginFn","packageVersion","packageRepositoryUrl","zipPack","outFileName","enforce","PATH_PAGE_PREFIX","PATH_TEMPLATE_PREFIX","port","minify","assetsInlineLimit","rollupOptions","output","banner","modules","localsConvention","getPPDevConfigFromNextConfig","nextConfig","ppDev","withPPDev","nextjsConfig","phase","PHASE_DEVELOPMENT_SERVER","nextConfiguration","mergedConfig","configs","merged","mutableMerged","key","Object","entries","mergePPDevConfigs","normalized","v7Features","isDevelopment","basePath","PATH_TEMPLATE_LOCAL_PREFIX","createBasePath","baseConfig","trailingSlash","prefix","assign","defineProperty","enumerable","configurable","createLogger","String"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{createProxyMiddleware as e,responseInterceptor as t}from"http-proxy-middleware";import{fileURLToPath as n,URL as s}from"url";import{createLogger as r}from"vite";import{createColors as i}from"picocolors";import a,{isAxiosError as o}from"axios";import l from"node:http";import c from"node:https";import{JSDOM as d}from"jsdom";import*as p from"path";import u,{resolve as h}from"path";import{readFileSync as m,existsSync as f,statSync as g,writeFileSync as y,readdirSync as v,promises as b}from"fs";import*as w from"crypto";import{createHash as x,randomUUID as k}from"crypto";import*as E from"process";import*as T from"child_process";import{execSync as $}from"child_process";import*as S from"os";import{createRequire as B}from"module";import A from"extract-zip";import I from"jszip";import*as R from"memory-cache";import{inflateSync as C,brotliDecompressSync as P,unzipSync as F,deflateSync as L,brotliCompressSync as j,gzipSync as H}from"zlib";import N from"express";import{randomUUID as q}from"node:crypto";const O=h("undefined"!=typeof __filename&&__filename||n(import.meta.url),"../../.."),D=h("undefined"!=typeof __filename&&__filename||n(import.meta.url),"../.."),M=f(h(O,"package.json"))?O:D,z=h(M,"dist/client/client.js"),{version:U,name:_}=JSON.parse(m(h(M,"package.json")).toString()),V=U,Z=_,W="/@pp-dev-hmr",J="/p",K="/pt",G="/pl",Y=[".pp-dev.config.js",".pp-dev.config.cjs",".pp-dev.config.mjs",".pp-dev.config.ts",".pp-dev.config.cts",".pp-dev.config.mts",".pp-dev.config.json","pp-dev.config.js","pp-dev.config.cjs","pp-dev.config.mjs","pp-dev.config.ts","pp-dev.config.cts","pp-dev.config.mts","pp-dev.config.json"];let X=new Map;const Q="default",ee=(e="info",t=Q)=>{if(X&&"function"==typeof X.has||(X=new Map),X.has(t))return X.get(t);if(t===Q){const n=r(e);return X.set(t,n),n}const n=r(e);return X.set(t,n),n},te=i(),ne=(e,t,n)=>{const s=new RegExp(`(!!)?(https?(:(\\\\)?/(\\\\)?/)${e})`,"gi");return n.replace(s,(e,...n)=>e.startsWith("!!")?n[1]:`http${n[2]}${t}`)},se=(e,t,n)=>{e.setHeader("location",t),e.statusCode=n,e.end()};const re=function(){const e={personal:{placeholder:"API Token",caption:`You can get the API Token\n <a href="https://${host}/api-token" target="_blank" \n style="color: #007bff; text-decoration: none;">here</a>`,endpoint:"/@api/login"},regular:{placeholder:"Legacy Token",caption:`You can get the Legacy Token\n <a href="https://${host}/api/get_token" target="_blank" \n style="color: #007bff; text-decoration: none;">here</a>`,endpoint:"/@api/login"}};function t(t,n,s){const r=e[t];r&&(n.placeholder=r.placeholder,s.innerHTML=r.caption)}function n(e,t){t.textContent=e,t.classList.add("show")}function s(e){e.classList.remove("show")}function r(e,t,r,i){r.addEventListener("click",async r=>{if(r.preventDefault(),s(i),!t.value.trim())return n(`${t.placeholder} is required`,i),void t.focus();const a=document.getElementById("token-type-switcher"),o=a?.querySelector(".token-type-option.active"),l=o?.dataset.value||"personal";await async function(e,t,s,r){try{s.classList.add("loading");const i=await fetch("/@api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e,tokenType:t}),redirect:"follow"}),a=i.url&&new URL(i.url,window.location.origin);if(!a||a.pathname.startsWith("/login")||a.pathname.startsWith("/@api/"))try{const e=await i.json();n(`Login failed: ${e?.error||"Unknown error occurred"}`,r)}catch(e){n("Login failed: Unable to parse response",r)}else window.location.href=i.url}catch(e){n("Login failed: Network error. Please check your connection.",r)}finally{s.classList.remove("loading")}}(t.value.trim(),l,e,i)}),t.addEventListener("keydown",e=>{"Enter"===e.key&&(e.preventDefault(),r.click())}),t.addEventListener("input",()=>{s(i)})}function i(e){const n=e.firstChild;if(!n)return;const s=n.lastChild?.cloneNode(!0);if(!s)return;s.innerHTML="";const i=s.cloneNode(!0);i.innerText="OR",i.setAttribute("role","separator"),i.setAttribute("aria-label","Alternative login method");const a=s.cloneNode(!0),o=document.createElement("div"),l=document.createElement("style");l.textContent="\n.helper-login-wrapper {\n font-family: Arial, sans-serif;\n color: #222;\n padding: 8px;\n background-color: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #ddd;\n width: 100%;\n max-width: 400px;\n margin: 0 auto;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.helper-login-wrapper .title {\n font-weight: bold;\n font-size: 18px;\n margin-bottom: 12px;\n text-align: center;\n}\n\n.helper-login-wrapper .control {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.helper-login-wrapper .control input {\n border: 1px solid #ddd;\n border-radius: 4px;\n width: 100%;\n box-sizing: border-box;\n text-align: center;\n height: 26px;\n padding: 0 8px;\n font-size: 14px;\n}\n\n.helper-login-wrapper .control input:focus {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.helper-login-wrapper .control .caption {\n font-size: 12px;\n color: #666;\n text-align: center;\n}\n\n.helper-login-wrapper .footer {\n margin-top: 16px;\n text-align: center;\n}\n\n.helper-login-wrapper .footer .btn.submit {\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n width: 100%;\n font-size: 14px;\n transition: background-color 0.3s;\n height: 26px;\n font-weight: 500;\n}\n\n.helper-login-wrapper .footer .btn.submit:hover {\n background-color: #0056b3;\n}\n\n.helper-login-wrapper .footer .btn.submit:disabled {\n background-color: #6c757d;\n cursor: not-allowed;\n}\n\n.helper-login-wrapper .token-type-switcher {\n display: flex;\n border: 1px solid #ccc;\n border-radius: 4px;\n overflow: hidden;\n margin-bottom: 12px;\n width: 100%;\n}\n\n.helper-login-wrapper .token-type-option {\n padding: 4px 8px;\n cursor: pointer;\n background-color: #f8f9fa;\n color: #666;\n font-size: 12px;\n text-align: center;\n transition: background-color 0.2s, color 0.2s;\n border-right: 1px solid #ccc;\n flex: 1;\n user-select: none;\n}\n\n.helper-login-wrapper .token-type-option:last-child {\n border-right: none;\n}\n\n.helper-login-wrapper .token-type-option.active {\n background-color: #007bff;\n color: white;\n font-weight: bold;\n}\n\n.helper-login-wrapper .token-type-option:not(.active):hover {\n background-color: #e9ecef;\n}\n\n.helper-login-wrapper .error-message {\n color: #dc3545;\n font-size: 12px;\n text-align: center;\n margin-top: 8px;\n display: none;\n}\n\n.helper-login-wrapper .error-message.show {\n display: block;\n}\n\n.helper-login-wrapper .loading {\n opacity: 0.6;\n pointer-events: none;\n}\n",document.head.appendChild(l),o.innerHTML=`\n<div class="helper-login-wrapper" role="form" aria-label="PP Dev Helper Login">\n <div class="title" role="heading" aria-level="2">PP Dev Helper</div>\n\n <div class="token-type-switcher" id="token-type-switcher" role="tablist" aria-label="Token type selection">\n <div class="token-type-option active" data-value="personal" role="tab" aria-selected="true" tabindex="0">\n API Token\n </div>\n <div class="token-type-option" data-value="regular" role="tab" aria-selected="false" tabindex="0">\n Legacy Token\n </div>\n </div>\n\n <div class="control">\n <input \n type="password" \n id="helper-token" \n placeholder="API Token"\n aria-label="Token input"\n aria-describedby="token-caption"\n >\n <span class="caption" id="token-caption">\n You can get the API Token\n <a href="https://${host}/api-token" target="_blank" style="color: #007bff; text-decoration: none;">here</a>\n </span>\n </div>\n\n <div class="error-message" id="error-message" role="alert" aria-live="polite"></div>\n\n <div class="footer">\n <button id="helper-token-submit" class="btn submit" type="button">\n Token Login\n </button>\n </div>\n</div>`,a.appendChild(o),n.appendChild(i),n.appendChild(a);const c=document.getElementById("token-type-switcher"),d=document.getElementById("helper-token"),p=document.getElementById("token-caption"),u=document.getElementById("helper-token-submit"),h=document.getElementById("error-message"),m=o.querySelector(".helper-login-wrapper");c&&d&&p&&u&&h&&m?(!function(e,n,s){const r=e.querySelectorAll(".token-type-option"),i=e=>{const i=e.dataset.value;r.forEach(e=>{e.classList.remove("active"),e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1")}),e.classList.add("active"),e.setAttribute("aria-selected","true"),e.setAttribute("tabindex","0"),t(i,n,s)};r.forEach(e=>{e.addEventListener("click",e=>{const t=e.currentTarget;i(t)}),e.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),i(e))})})}(c,d,p),r(m,d,u,h),t("personal",d,p)):console.error("Failed to find required form elements")}const a='#mi-react-root form:not([id]):has(input[name="login"]):has(input[name="password"])',o=new MutationObserver(e=>{for(const t of e)if("childList"===t.type){const e=document.querySelector(a);if(e){o.disconnect(),i(e);break}}});o.observe(document.body,{childList:!0,subtree:!0});const l=document.querySelector(a);l&&(o.disconnect(),i(l))},ie=/^(https?:\/\/)([^/]+)(\/.*)?$/i,ae="X-PP-Proxy";function oe(n){const{rewritePath:r=/^\/(?!p[tl]).*/i,baseURL:i="",disableSSLValidation:a=!1,miAPI:o,templateName:l}=n;if(!i)throw new Error("Base url is required");const c=i.replace(ie,"$2"),d=i.replace(ie,"$1$2"),p=import("file-type"),u=ee();return e({selfHandleResponse:!0,pathFilter:(e,t)=>!(n.proxyIgnore||[]).some(t=>"string"==typeof t?e.startsWith(t):"function"!=typeof t.test||t.test(e))&&("string"==typeof r?e.startsWith(r):Array.isArray(r)?r.some(t=>e.startsWith(t)):"function"==typeof r.test&&r.test(e)),target:i,changeOrigin:!0,autoRewrite:!0,cookieDomainRewrite:{[c]:"localhost"},logger:{info:()=>{},warn:()=>{},error:()=>{}},secure:!a,headers:{host:c,origin:d},on:{proxyReq(e,t,n){const r=t.headers.host,a=e.getHeader("referer");r&&a&&"string"==typeof a&&e.setHeader("referer",a.replace(new RegExp(`https?://${r}`),i)),o.personalAccessToken&&e.setHeader("Authorization",`Bearer ${o.personalAccessToken}`);const c=t.url??"/",d=function(e,t,n,r){if(!t||!n||!r||n===r)return e;try{const t=new s(e,"http://localhost"),i=t.pathname.match(/^\/data\/page\/([^/]+)(\/.*)?$/);if(!i)return e;let a;try{a=decodeURIComponent(i[1])}catch{a=i[1]}if(a!==n)return e;return`/data/page/${r}${i[2]??""}`+t.search+t.hash}catch{return e}}(c,o.v7Features,l,o.internalPageName);return d!==c&&(t.url=d,e.path=d,console.info(`${te.cyan("Rewrites data page to correct internal page name")}: ${te.yellow(c)} ${te.blue("→")} ${te.green(d)}`)),u.info(`${te.blue("Proxies request:")} ${te.green(t.method)} ${t.url} -> ${te.green(e.method)} ${e.protocol}//${e.host}${e.path}`),t.socket.setMaxListeners(0),t.socket.once("close",()=>{setTimeout(()=>{e.destroyed||e.destroy()},200)}),e},proxyRes:(e,n,s)=>{if(e.headers["content-type"]?.includes("text/event-stream")||e.headers["transfer-encoding"]?.includes("chunked")&&"no"===e.headers["x-accel-buffering"]){u.info(`${te.blue("Start streaming for request:")} ${te.green(n.method)} ${n.url}`);const t=async(e,t,n)=>{n.setHeader(ae,1),n.setHeaders(new Map(Object.entries(e.headers))),e.pipe(n)};return t(e,n,s)}const r=t(async(e,t,n,s)=>{s.setHeader(ae,1);if(await(await p).fileTypeFromBuffer(e))return e;{let t=e.toString("utf8");try{const e=new URL(n.url??"",`http://${c}`);if(e.searchParams&&e.searchParams.has("proxyRedirect")){t+=`<script>(${function(){const e="pp-dev::redirectCount",t="pp-dev::lastRedirect";let n=+(localStorage.getItem(e)??0);localStorage.getItem(t);Number.isNaN(n)&&(n=0);let s=window.location.href;const r=function(){const i=new URLSearchParams(window.location.search);if(!i.has("proxyRedirect"))return console.debug("No proxyRedirect param. Cleaning up."),void localStorage.removeItem(e);s!==window.location.href?(s=window.location.href,setTimeout(r,n<3?3e3:5e3)):window.location.href=i.get("proxyRedirect"),localStorage.setItem(e,""+ ++n),localStorage.setItem(t,(new Date).toISOString())};setTimeout(r,3e3)}.toString()})()<\/script>`}e.pathname.startsWith("/login")&&(s.setHeader("Cache-Control","no-cache, no-store, must-revalidate"),s.setHeader("Pragma","no-cache"),s.setHeader("Expires","0"));const r=t.slice(0,100);(r.includes("<html")||r.includes("<body")||r.includes("<head")||r.includes("html>"))&&(t+=`<script>const host = "${c}";\n(${re.toString()})()<\/script>`)}catch{}const r=n.headers.host??"";return((e,t,n)=>{const s=new RegExp(`${e.replace(/\\*\//gi,"\\\\/")}`,"gi"),r=new RegExp(`${e}`,"gi"),i=n.replace(s,t);return i===n?i.replace(r,t):i})("/auth/saml/login","/login",ne(c,r,t))}});return r(e,n,s)},error(e,t,n){const s=`Proxy error: "${e.message}" when trying to "${t.method} ${t.url}"\n\n${e.stack}`;u.error(s),n.writable&&n.writeHead(500,{"Content-Type":"text/plain"}),n.end(s)}}})}class le{axios;constructor(e){this.axios=e}async checkAuth(e){return this.axios.get("/data/page/index/auth/info",{headers:Object.assign({},e,{accept:"text/html"}),maxRedirects:0}).then(()=>!0).catch(()=>!1)}}class ce extends le{formdataModulePromise=import("formdata-node");constructor(e){super(e)}getDownloadUrl(e){return`/admin/page/downloadassets/id/${e}`}getDownloadTemplateUrl(e){return`/admin/pagetemplate/downloadassets/id/${e}`}getUploadUrl(e){return`/admin/page/uploadassets/id/${e}`}getUploadTemplateUrl(e){return`/admin/pagetemplate/uploadassets/id/${e}`}async downloadPageAssets(e,t){return this.axios.get(this.getDownloadUrl(e),{withCredentials:!0,headers:Object.assign({},t,{accept:"*/*"}),responseType:"arraybuffer"}).then(e=>e.data)}async uploadPageAssets(e,t,n){const s=new(await this.formdataModulePromise).FormData,{File:r}=await this.formdataModulePromise,i=new r([t],"file.zip",{type:"application/zip"});s.append("file",i);const a=this.getUploadUrl(e);return this.axios.post(a,s,{withCredentials:!0,headers:Object.assign({},n,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:a})})}).then(e=>e.data)}async downloadTemplateAssets(e,t){return this.axios.get(this.getDownloadTemplateUrl(e),{withCredentials:!0,headers:Object.assign({},t,{accept:"*/*"}),responseType:"arraybuffer"}).then(e=>e.data)}async uploadTemplateAssets(e,t,n){const s=new(await this.formdataModulePromise).FormData,{File:r}=await this.formdataModulePromise,i=new r([t],"file.zip",{type:"application/zip"});s.append("file",i,"file.zip");const a=this.getUploadTemplateUrl(e);return this.axios.post(a,s,{withCredentials:!0,headers:Object.assign({},n,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:a})})}).then(e=>e.data)}}class de extends ce{getDownloadUrl(e){return`/api/page/id/${e}/asset/download`}getDownloadTemplateUrl(e){return`/api/page_template/id/${e}/asset/download`}getUploadUrl(e){return`/api/page/id/${e}/asset/upload`}getUploadTemplateUrl(e){return`/api/page_template/id/${e}/asset/upload`}}const pe="Something went wrong when fetching page data",ue="Something went wrong when fetching page template data",he=" The instance may be down or in maintenance mode. Please try again later.";function me(){return new Error(`${ue}.${he}`)}function fe(e){return e instanceof Error&&(e.message.includes(pe)||e.message.includes(ue))}class ge extends le{async getAll(e){return(await this.axios.get("/api/page",{withCredentials:!0,headers:Object.assign({},e,{Accept:"application/json","Content-Type":"application/json","Cache-Control":"no-cache",Pragma:"no-cache",Expires:"0"})})).data.pages}async get(e,t){const n=(await this.axios.get(`/api/page/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data;if("object"!=typeof n||null===n)throw new Error(`${pe}.${he}`);return n.page}async getPageContent(e,t){return(await this.axios.get(`/p/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"text/html","content-type":"application/json"})})).data}async create(e,t){return(await this.axios.post("/api/page",e,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.page}}class ye extends le{async getAll(e,t){const n=(await this.axios.get("/api/page_template",{withCredentials:!0,headers:Object.assign({},t,{Accept:"application/json","Content-Type":"application/json","Cache-Control":"no-cache",Pragma:"no-cache",Expires:"0"}),params:{internal_name:e}})).data;if("object"!=typeof n||null===n||!Array.isArray(n.page_templates))throw me();return n.page_templates}async get(e,t){const n=(await this.axios.get(`/api/page_template/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data;if("object"!=typeof n||null===n||"object"!=typeof n.page_template||null===n.page_template)throw me();return n.page_template}}function ve(e){const t=e.response?.status||0,n=e.response?.data?.message||e.message||"Unknown error";switch(t){case 412:const e=n.toLowerCase();return e.includes("session expired")||e.includes("session has expired")?{status:t,message:n,code:"SESSION_EXPIRED",userFriendlyMessage:"Your session has expired",suggestions:["Refresh your token in the portal","Re-authenticate with the portal","Check if your token has been revoked","Ensure your token has the correct permissions"]}:{status:t,message:n,code:"AUTH_FAILED",userFriendlyMessage:"Authentication failed",suggestions:["Verify your token is correct","Check token permissions","Ensure the token hasn't expired","Try generating a new token"]};case 401:return{status:t,message:n,code:"UNAUTHORIZED",userFriendlyMessage:"Unauthorized access",suggestions:["Check if your token is valid","Verify you have the required permissions","Ensure the token hasn't been revoked","Try logging in again"]};case 403:return{status:t,message:n,code:"FORBIDDEN",userFriendlyMessage:"Access forbidden",suggestions:["Check your user permissions","Verify the portal page ID is correct","Ensure your token has the right scope","Contact your administrator"]};default:return{status:t,message:n,code:"UNKNOWN_ERROR",userFriendlyMessage:"An unexpected error occurred",suggestions:["Check your network connection","Verify the portal URL is correct","Try again in a few moments","Check the portal status"]}}}const be="[DEV PAGE. DO NOT DELETE]",we=new Map;class xe{#e;#t;#n=null;#s;#r;#i;#a;#o;#l;#c;internalPageName;appId;templateLess;assetsApi;pageApi;pageTemplateApi;logger;constructor(e,t){const{headers:n={},appId:s,templateLess:r=!0,disableSSLValidation:i=!1,v7Features:o=!1,personalAccessToken:d}=t||{};this.#e=n,this.#r=[],this.#s="",this.#i=o,this.#a=d,this.#o=!1,this.#l=Promise.resolve(!1);const p=`${e}:${i}`;if(we.has(p))this.#t=we.get(p);else{i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0");const t=new c.Agent({keepAlive:!1,...i?{rejectUnauthorized:!1}:{}});this.#t=a.create({baseURL:e,headers:n,timeout:3e4,maxRedirects:5,httpAgent:new l.Agent({keepAlive:!1}),httpsAgent:t}),i&&(a.defaults.httpsAgent=t),we.set(p,this.#t)}this.appId=s,this.templateLess=r,this.assetsApi=new(o?de:ce)(this.#t),this.pageApi=new ge(this.#t),this.pageTemplateApi=new ye(this.#t),this.logger=ee()}async isTemplateLoaded(){return this.#l}get isV710OrHigher(){return this.#o}get v7Features(){return this.#i}#d(e){const t=Object.assign({},e,{host:void 0,referer:void 0});return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),this.#e=t,!t.authorization&&this.#a&&(t.authorization=`Bearer ${this.#a}`),t}#p(e){return e.replace(/[.*+?^${}()|[\]\\\/]/g,"\\$&")}get personalAccessToken(){return this.#a}set personalAccessToken(e){this.#a=e}updateHeaders(e){this.#d(e)}get localTemplateHTML(){return'<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8" />\n <title>%%PAGE TITLE%%</title>\n <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\n <meta name="theme-color" content="rgba(255, 255, 255, 1)" />\n <link rel="shortcut icon" type="image/x-icon" sizes="any" href="/img/favicon/favicon.ico" />\n <link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png" />\n <link rel="icon" type="image/png" sizes="32x32" href="/img/favicon/favicon-32x32.png" />\n <link rel="icon" type="image/png" sizes="48x48" href="/img/favicon/favicon-48x48.png" />\n <meta name="msapplication-config" content="/auth/browserconfig.xml" />\n <link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon.png" />\n <link rel="manifest" href="/auth/site.webmanifest" />\n <link rel="manifest" href="/auth/manifest.json" />\n <link rel="stylesheet" type="text/css" href="/auth/theme-vars.css" />\n <link rel="icon" type="image/svg+xml" href="/favicon.ico" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <script src="/js/libs/underscore-latest.min.js" charset="utf-8"><\/script>\n <script src="/js/jquery/jquery-latest.min.js" charset="utf-8"><\/script>\n <script src="/js/application/rating_component.js" charset="utf-8"><\/script>\n </head>\n <body>\n <div id="mi-react-root"></div>\n <script src="/auth/info.js"><\/script>\n <script src="/js/main.js" defer><\/script>\n <link rel="stylesheet" href="/css/main.css" />\n </body>\n </html>'}async getPageTemplate(e){if(await this.#l||this.#n||(this.#l=new Promise(e=>{this.#c=e})),this.#n)return Promise.resolve(this.#n);if(void 0===this.templateLess&&(this.templateLess=!1),this.#i){const t=await this.pageApi.get(this.appId,this.#d(e)).then(e=>(this.logger.info(te.green("Page fetched")),e)).catch(async t=>{if(this.#c(!1),fe(t))throw t;throw await this.pageApi.checkAuth(this.#d(e))?(this.logger.error(te.red(`Error fetching page data: ${t.message}\n${t.stack}`)),new Error("The current user does not have access to this page. Check your configuration to ensure app.id is correct.")):t});return void 0!==t.template_id&&(this.#o=!0),this.internalPageName=t.internal_name,this.#n=this.localTemplateHTML,this.#n=this.#n.replace(/%%PAGE TITLE%%/g,t.name||"Local template"),this.logger.info(te.green("Local page template fetched")),this.#c(!0),this.#n}let t=(await this.pageApi.getAll(this.#d(e)).then(e=>(this.logger.info(te.green("Page list fetched")),e)).catch(async t=>{throw this.#c(!1),await this.pageApi.checkAuth(this.#d(e))?(this.logger.error(te.red(`Error fetching page list: ${t.message}\n${t.stack}`)),new Error("Current user does not have access to page list")):t})).find(e=>e.name===be);return t||(this.logger.warn(te.yellow("Creating dev page template...")),t=await this.pageApi.create({enabled:"Y",name:be,internal_name:"dev-page-template",visible_in_homepage:"Y"},this.#d(e)).then(e=>(this.logger.info(te.green("Dev page created")),e)).catch(e=>{throw this.logger.error(te.red(`Error creating dev page: ${e.message}`)),this.#c(!1),new Error(`Error when creating dev page.\n That can be caused by missing permissions or page with name "${be}" already exists`)})),await this.pageApi.getPageContent(t.internal_name,this.#d(e)).then(e=>(this.#n=e,e)).then(e=>(this.#c(!0),this.logger.info(te.green("Page template fetched")),e)).catch(e=>{throw this.#c(!1),this.logger.error(te.red(`Error fetching page template: ${e.message}`)),new Error("Error fetching page template")})}async getPageVariables(e,t){return void 0===this.appId&&(this.appId=e,this.templateLess=!1),this.#n=await this.getPageTemplate(t),await this.pageApi.get(e,this.#d(t)).then(e=>{const{tags:t="[]",name:n,template:s}=e;if(s&&t){const e=JSON.parse(t);return this.#r=e,this.#s=n,e}return this.#r=[],this.#s=n,[]}).catch(t=>{if(this.logger.error(te.red(`Error fetching page variables: ${t.message}`)),404===t.response?.status)throw new Error(`Portal Page with id "${e}" not found on instance ${this.#t.getUri()}`);if(401===t.response?.status)throw this.logger.warn(`Unauthorized error: ${t}`),new Error(`Current user does not have access to page with id "${e}" on instance ${this.#t.getUri()}`);throw t})}async getPageInfo(e,t){void 0===this.appId&&(this.appId=e);const n=this.#d(t),s=this.appId;try{return this.#i?await this.#u(s,n):await this.#h(s,n)}catch(e){this.#m(e,s)}}async#u(e,t){const n=await this.pageApi.get(e,t);return this.logger.info(te.green("Page fetched")),void 0!==n.template_id&&(this.#o=!0),this.internalPageName=n.internal_name,n}async#h(e,t){return await this.pageApi.get(e,t)}#m(e,t){if(fe(e))throw e;if(this.#i&&e.message?.includes("access"))throw new Error("The current user does not have access to this page. Check your configuration to ensure app.id is correct.");if(404===e.response?.status)throw new Error(`Portal Page with id "${t}" not found on instance ${this.#t.getUri()}`);throw 401===e.response?.status&&this.logger.error(te.red(`Current user does not have access to page with id "${t}" on instance ${this.#t.getUri()}`)),e}buildPage(e,t=!1){let n="string"==typeof e?e:e.toString("utf-8");for(const e of this.#r){const t=this.#p(e.name),s=new RegExp(`\\[${t}\\]`,"g");n=n.replace(s,()=>e.value)}const s=new d(t?n:this.#n),r="%%PLACEHOLDER%%";if(!t){const e=s.window.document.createElement("div");e.innerHTML=r;const t=s.window.document.querySelector(".main-side");if(t){const n=t.querySelectorAll("script");n.length?t.insertBefore(e,n.item(n.length-1)):t.append(e)}else{const t=s.window.document.createElement("div");t.append(e),s.window.document.body.append(t)}const n=s.window.document.querySelector("head"),i=n.querySelector("title");if(i)i.text=this.#s;else{const e=s.window.document.createElement("title");e.textContent=this.#s,n.appendChild(e)}}return s.serialize().replace(new RegExp(`<div>\\s*${r}\\s*<\\/div>`,"i"),n)}async getAssets(){if(this.appId){if(this.templateLess)return await this.assetsApi.downloadPageAssets(this.appId,this.#e);{const e=await this.pageApi.get(this.appId,this.#e);if(this.#o){const t=await this.pageTemplateApi.get(e.template_id,this.#e);return await this.assetsApi.downloadTemplateAssets(t.id,this.#e)}if(e.template)return await this.assetsApi.downloadTemplateAssets(e.template,this.#e)}}}async updateAssets(e){if(this.appId){if(this.templateLess)return await this.assetsApi.uploadPageAssets(this.appId,e,this.#e);{const t=await this.pageApi.get(this.appId,this.#e);if(this.#o){const n=await this.pageTemplateApi.get(t.template_id,this.#e);return await this.assetsApi.uploadTemplateAssets(n.id,e,this.#e)}if(t.template)return await this.assetsApi.uploadTemplateAssets(t.template,e,this.#e)}}}async validateCredentials(e){try{const t=e||this.#e;return await this.get("/api/user",t,!0),{isValid:!0}}catch(e){const t=ve(e);return{isValid:!1,error:t.userFriendlyMessage,code:t.code}}}async get(e,t,n=!1){const s=n?t:Object.assign({},this.#d(this.#e),t);try{return await this.#t.get(e,{headers:s})}catch(e){if("UNKNOWN_ERROR"!==ve(e).code){const t=ve(e);throw this.logger.error(te.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,n){const s=ve(t),r=`[${n}] `;e.error(te.red(`${r}${s.userFriendlyMessage}`)),e.error(te.red(`Status: ${s.status} (${s.code})`)),e.error(te.red(`Details: ${s.message}`)),s.suggestions.length>0&&(e.info(te.yellow("Suggestions:")),s.suggestions.forEach((t,n)=>{e.info(te.yellow(` ${n+1}. ${t}`))}))}(this.logger,e,"API Request"),e.response||(e.response={status:t.status,data:{message:t.message}}),e.tokenErrorInfo=t,e}throw e}}}const ke="BUILD-MANIFEST.json";function Ee(e,t,n=new Set){const s=v(e,{withFileTypes:!0}),r=[];for(const i of s){const s=u.join(e,i.name),a=u.relative(t,s).replace(/\\/g,"/");i.isDirectory()?r.push(...Ee(s,t,n)):i.isFile()&&!n.has(a)&&r.push(s)}return r}function Te(e){const t=m(e);return x("sha256").update(t).digest("hex")}function $e(e){return e.replace(/^([a-z][a-z\d+.-]*:\/\/)(?:[^/?#@]+(?::[^/?#@]*)?@)/i,"$1")}function Se(e){const t=e.trim().replace(/^git\+/,"").replace(/\.git$/i,""),n=t.match(/^([^@]+)@([^:]+):(.+)$/);if(n){const[,,e,t]=n;return $e(`https://${e}/${t.replace(/^\/+/,"")}`)}const s=t.match(/^ssh:\/\/(?:[^@]+@)?([^/:]+)(?::\d+)?\/(.+)$/i);if(s){const[,e,t]=s;return $e(`https://${e}/${t.replace(/^\/+/,"")}`)}const r=t.match(/^git:\/\/([^/]+)\/(.+)$/i);if(r){const[,e,t]=r;return $e(`https://${e}/${t.replace(/^\/+/,"")}`)}return $e(t)}function Be(e){if(!1===e.enabled)return;const{outDir:t,versionFileTemplate:s,packageVersion:r}=e,i=u.resolve(process.cwd(),t);if(!g(i,{throwIfNoEntry:!1})?.isDirectory())return;const a=(new Date).toISOString(),o=s??"VERSION-v{packageversion}-{currentDate}.json",l=function(e,t,n){return e.replace(/\{packageversion\}/g,t).replace(/\{currentDate\}/g,n)}(o,r,a.replace(/:/g,"-")),c=Ee(i,i,new Set([l,ke])),d={};for(const e of c){d[u.relative(i,e).replace(/\\/g,"/")]=Te(e)}const p=function(e){const t=Object.keys(e).sort().map(t=>e[t]).join("");return x("sha256").update(t).digest("hex")}(d),h=function(e){const t=Object.keys(e).sort().map(t=>`${t}:${e[t]}`).join("\n");return x("sha256").update(t,"utf-8").digest("hex")}(d),f=function(){const e=n(import.meta.url);let t=u.dirname(e);for(;;){const e=u.join(t,"package.json"),n=g(e,{throwIfNoEntry:!1});if(n?.isFile())try{const t=JSON.parse(m(e,"utf-8"));if("string"==typeof t.version)return t.version}catch{}const s=u.dirname(t);if(s===t)return"unknown";t=s}}(),v=function(e){if("string"==typeof e&&e.trim())return e.trim();const t=["GITHUB_HEAD_REF","GITHUB_REF_NAME","CI_COMMIT_REF_NAME","BITBUCKET_BRANCH","BUILD_SOURCEBRANCHNAME","BRANCH_NAME","TRAVIS_BRANCH","CIRCLE_BRANCH","BUILDKITE_BRANCH","VERCEL_GIT_COMMIT_REF"];for(const e of t){const t=process.env[e];if("string"==typeof t&&t.trim())return t.trim()}try{const e=$("git rev-parse --abbrev-ref HEAD",{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();if(e&&"HEAD"!==e)return e}catch{}}(e.packageBranchName),b={schemaVersion:1,version:`v${r}`,date:a,checksum:p,files:d,repositoryUrl:e.packageRepositoryUrl?Se(e.packageRepositoryUrl):void 0,branchName:v,helperVersion:f},w=u.join(i,l),k=u.join(i,ke),E={schemaVersion:1,manifestType:"pp-dev-build-manifest",generatedAt:a,versionFile:l,versionFileTemplate:o,versionFileSchemaVersion:1,buildFingerprint:h,compat:{versionFileRequired:!0}};y(w,JSON.stringify(b,null,2),"utf-8"),y(k,JSON.stringify(E,null,2),"utf-8")}const Ae="pageName",Ie="date",Re=p.dirname("undefined"!=typeof __filename&&__filename||n(import.meta.url)),Ce=p.resolve(Re,"..",".."),Pe=p.resolve(Ce,"..",".."),Fe=p.resolve(Pe,".pp-dev-meta"),Le=p.resolve(Fe,"sync-service.meta.json"),je="BUILD-MANIFEST.json",He="__template_variables.json";class Ne{backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;versionFileTemplate;nextBuild;logger;constructor(e,t){this.pageName=e;const{backupFolder:n=p.resolve(E.cwd(),"backups"),distZipFolder:s=p.resolve(E.cwd(),"dist-zip"),distZipFilename:r=`${this.pageName}.zip`,backupNameTemplate:i=`{${Ae}}-{${Ie}}.zip`,versionFileTemplate:a="VERSION-v{packageversion}-{currentDate}.json",dateFormat:o=e=>e.toISOString().replace(/:/g,"-").replace(/\..*$/,""),nextBuild:l}=t||{};this.backupFolder=n,this.backupNameTemplate=i,this.dateFormat=o,this.distZipFolder=s,this.distZipFilename=r,this.versionFileTemplate=a,this.nextBuild=l,this.syncMeta(),this.logger=ee()}async checkMeta(){try{await b.stat(Fe)}catch{await b.mkdir(Fe)}try{await b.stat(this.backupFolder)}catch{await b.mkdir(this.backupFolder)}}async readMetaFile(){return await this.checkMeta(),await b.readFile(Le,{encoding:"utf-8"}).catch(()=>"{}")}async writeMetaFile(e){return await this.checkMeta(),await b.writeFile(Le,JSON.stringify(e,null,2),{encoding:"utf-8"})}async syncMeta(){this.currentMeta?await this.writeMetaFile(this.currentMeta):this.currentMeta=JSON.parse(await this.readMetaFile())}async getLatestSavedBackup(){const{lastBackupName:e}=this.currentMeta;if(!e)return null;const t=p.resolve(this.backupFolder,e);try{return await b.stat(t),t}catch{return null}}backupName(e,t=new Date){return this.backupNameTemplate.replace(`{${Ae}}`,e).replace(`{${Ie}}`,this.dateFormat(t))}getBackupMeta(){return this.currentMeta}pathToPosix(e){return e.replace(/\\/g,"/")}async normalizeExtractedRootDir(e){let t=e;for(;;){const e=await b.readdir(t,{withFileTypes:!0});if(1!==e.length||!e[0]?.isDirectory())return t;t=p.join(t,e[0].name)}}async listFilesRecursive(e){const t=await b.readdir(e,{withFileTypes:!0}),n=[];for(const s of t){const t=p.join(e,s.name);s.isDirectory()?n.push(...await this.listFilesRecursive(t)):s.isFile()&&n.push(t)}return n}buildManifestChecksum(e){const t=Object.keys(e).sort().map(t=>e[t]).join("");return w.createHash("sha256").update(t).digest("hex")}buildBackupFingerprint(e){const t=Object.keys(e).sort().map(t=>`${t}:${e[t]}`).join("\n");return w.createHash("sha256").update(t,"utf-8").digest("hex")}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}versionFileTemplateMatcher(){const e=/\{[^}]+\}/g,t=[];let n=0,s=null;for(;s=e.exec(this.versionFileTemplate),s;){const[e]=s,r=this.versionFileTemplate.slice(n,s.index);t.push(this.escapeRegExp(r)),t.push("[^/]+"),n=s.index+e.length}const r=this.versionFileTemplate.slice(n);return t.push(this.escapeRegExp(r)),new RegExp(`^${t.join("")}$`,"i")}isTemplateVariablesBasename(e){return e===He}async pickTemplateVariablesFromBackupZip(e,t){const n=e.find(e=>p.basename(e)===He);if(!n)return null;const s=p.join(t,n),r=await b.readFile(s);return{relativePath:n,content:r,actualHash:w.createHash("sha256").update(r).digest("hex"),manifestHash:null}}async resolveBackupAnalysisFromZip(e){const t=await b.mkdtemp(p.join(S.tmpdir(),"pp-dev-backup-")),n=p.join(t,"backup.zip"),s=p.join(t,"extracted");try{await b.mkdir(s,{recursive:!0}),await b.writeFile(n,e),await A(n,{dir:s});const t=await this.normalizeExtractedRootDir(s),r=(await this.listFilesRecursive(t)).map(e=>this.pathToPosix(p.relative(t,e))),i=r.filter(e=>p.basename(e)===je);if(i.length>1)throw new Error(`Expected at most one ${je} in backup ZIP, found ${i.length}`);const a=1===i.length?i[0]:null;let o=null;if(a){const e=p.join(t,a);if(o=JSON.parse(await b.readFile(e,"utf-8")),!(o&&"pp-dev-build-manifest"===o.manifestType&&"string"==typeof o.versionFile&&o.versionFile.trim()&&"string"==typeof o.versionFileTemplate&&o.versionFileTemplate.trim()&&"string"==typeof o.buildFingerprint&&o.buildFingerprint.trim()))throw new Error("Build manifest is missing required fields")}let l=null;if(o){const e=this.pathToPosix(o.versionFile.trim()),t=r.filter(t=>t===e),n=r.filter(t=>p.basename(t)===p.basename(e)),s=t.length>0?t:n;if(s.length>1)throw new Error(`Build manifest version file "${o.versionFile}" must resolve to exactly one file in backup ZIP, found ${s.length}`);if(1===s.length&&(l=s[0]),!0===o.compat?.versionFileRequired&&null===l)throw new Error(`Build manifest requires version file "${o.versionFile}", but it is missing in backup ZIP`)}else{const e=this.versionFileTemplateMatcher(),t=r.filter(t=>e.test(p.basename(t)));if(t.length>1)throw new Error(`Expected exactly one version file matching template "${this.versionFileTemplate}" in backup ZIP, found ${t.length}`);1===t.length&&(l=t[0])}const c={};let d=null,u=null;const h={};let m=[];if(l){const e=p.join(t,l),n=JSON.parse(await b.readFile(e,"utf-8"));if(!n?.files||"object"!=typeof n.files)throw new Error("VERSION manifest files map is missing or invalid");if("string"!=typeof n.checksum||!n.checksum)throw new Error("VERSION manifest checksum is missing or invalid");u=n.checksum;for(const[e,t]of Object.entries(n.files)){if("string"!=typeof t||!t.trim())throw new Error(`VERSION manifest contains invalid hash for file: ${e}`);c[this.pathToPosix(e)]=t}if(this.buildManifestChecksum(c)!==n.checksum)throw new Error("VERSION manifest checksum does not match its files map");for(const[e,n]of Object.entries(c)){const s=p.join(t,e),r=await b.readFile(s).catch(()=>null);if(!r)throw new Error(`VERSION manifest references missing file: ${e}`);const i=w.createHash("sha256").update(r).digest("hex");h[e]=i,i!==n&&m.push({relativePath:e,expected:n,actual:i}),this.isTemplateVariablesBasename(p.basename(e))&&(d={relativePath:e,content:r,actualHash:i,manifestHash:n})}m.length>0&&this.logger.warn(te.yellow(`[DistService] VERSION manifest hash mismatch for ${m.length} file(s) (confirm in UI): ${m.map(e=>e.relativePath).join(", ")}`))}const f=new Set(m.map(e=>e.relativePath)),g={},y=[];for(const e of r){if(e===a)continue;if(l&&e===l)continue;if(l&&Object.prototype.hasOwnProperty.call(g,e))continue;const n=p.join(t,e),s=await b.readFile(n),r=w.createHash("sha256").update(s).digest("hex");l&&Object.prototype.hasOwnProperty.call(c,e)?g[e]=f.has(e)?h[e]:c[e]:l?(g[e]="__NOT_IN_VERSION_FILE__",y.push(e)):g[e]=r}d||(d=await this.pickTemplateVariablesFromBackupZip(r,t));const v=this.buildBackupFingerprint(g);let x=null;return o&&l&&v!==o.buildFingerprint&&(x={expected:o.buildFingerprint,actual:v},this.logger.warn(te.yellow(`[DistService] Build manifest fingerprint mismatch (confirm in UI): expected ${o.buildFingerprint}, got ${v}`))),{backupFingerprint:v,unknownFiles:y,templateVariables:d,mainHash:u,allFilesInMeta:Boolean(l&&0===y.length),buildManifestMismatch:x,versionManifestHashMismatches:m}}finally{await b.rm(t,{recursive:!0,force:!0})}}async analyzeBackup(e){if("PK"!==e.toString("utf-8").slice(0,4))throw new Error("Backup file is not a ZIP file");return await this.resolveBackupAnalysisFromZip(e)}async getPublicTemplateVariablesHash(){const e=p.resolve(E.cwd(),"public",He),t=await b.readFile(e).catch(()=>null);return t?w.createHash("sha256").update(t).digest("hex"):null}async saveTemplateVariablesFile(e){const t=p.resolve(E.cwd(),"public",He);return await b.mkdir(p.dirname(t),{recursive:!0}),await b.writeFile(t,e),t}async saveBackup(e,t){const n=t??await this.analyzeBackup(e),s=n.backupFingerprint;if(await this.getLatestSavedBackup()){const{lastBackupHash:e,lastMainHash:t}=this.currentMeta;if(e===s)return void this.logger.info(te.yellow(`[DistService] Backup skipped: same backup fingerprint as last saved (${s.slice(0,12)}...)`));if(n.allFilesInMeta&&n.mainHash&&t===n.mainHash)return void this.logger.info(te.yellow("[DistService] Backup skipped: same VERSION manifest checksum (main hash) and all files listed in VERSION"))}const r=new Date,i=this.backupName(this.pageName,r);return this.currentMeta.lastBackupName=i,this.currentMeta.lastBackupHash=s,this.currentMeta.lastBackupDate=r.toISOString(),n.mainHash?this.currentMeta.lastMainHash=n.mainHash:delete this.currentMeta.lastMainHash,await this.syncMeta(),await b.writeFile(p.resolve(this.backupFolder,i),e).finally(()=>{this.logger.info(`Backup saved to ${i}`)})}async buildNewAssets(){if(this.nextBuild)return await this.buildNextAssets();const e=new Promise((e,t)=>{let n="";this.logger.info(te.cyan("[DistService] Build started"));const s=T.spawn("node",[p.resolve(Ce,"./bin/pp-dev.js"),"build"],{cwd:E.cwd(),env:Object.assign({},E.env,{NODE_ENV:"production"}),stdio:"inherit"});s.on("message",e=>{n+=e}),s.on("close",s=>{0===s?e(n):t(new Error(`build command exited with code ${s}`))}),s.on("error",e=>{t(e)})});try{await e.finally(()=>{this.logger.info(te.cyan("[DistService] Build finished"))});const t=p.resolve(E.cwd(),this.distZipFolder,this.distZipFilename);if(!await b.stat(t))throw new Error(`File ${t} not found`);return await b.readFile(t)}catch(e){throw this.logger.error(e instanceof Error?e.stack??e.message:String(e)),e}}async saveBackupAndBuild(e){return await this.saveBackup(e),await this.buildNewAssets()}async buildNextAssets(){const{projectRoot:e,distDir:t}=this.nextBuild;this.logger.info(te.cyan("[DistService] Next.js build started")),await this.runNextBuild(e),this.logger.info(te.cyan("[DistService] Next.js build finished"));const n=p.resolve(e,t);if(!await this.isDirectory(n))throw new Error(`Next.js build output directory not found: ${n}`);return Be({outDir:n,packageVersion:this.nextBuild.packageVersion,versionFileTemplate:this.versionFileTemplate,packageRepositoryUrl:this.nextBuild.packageRepositoryUrl,packageBranchName:this.nextBuild.packageBranchName}),await this.zipDirectory(n)}runNextBuild(e){return new Promise((t,n)=>{let s;try{const t=B(p.join(e,"package.json")).resolve("next/package.json");s=p.resolve(p.dirname(t),"dist/bin/next")}catch{return void n(new Error(`Unable to resolve the "next" binary from ${e}. Is Next.js installed?`))}const r=T.spawn(E.execPath,[s,"build"],{cwd:e,env:Object.assign({},E.env,{NODE_ENV:"production"}),stdio:"inherit"});r.on("close",e=>{0===e?t():n(new Error(`next build exited with code ${e}`))}),r.on("error",n)})}async zipDirectory(e){const t=new I,n=async s=>{const r=await b.readdir(s,{withFileTypes:!0});for(const i of r){const r=p.join(s,i.name);if(i.isDirectory())await n(r);else if(i.isFile()){const n=p.relative(e,r).replace(/\\/g,"/");t.file(n,await b.readFile(r))}}};return await n(e),await t.generateAsync({type:"nodebuffer",compression:"DEFLATE"})}async isDirectory(e){try{return(await b.stat(e)).isDirectory()}catch{return!1}}}class qe{server;opts;eventMap;logger;syncActionResolvers=new Map;constructor(e,t){this.server=e,this.opts=t||{},this.eventMap=new Map,this.eventMap.set("info-data:request",this.onInfoDataRequest.bind(this)),this.eventMap.set("template:sync",this.onTemplateSync.bind(this)),this.eventMap.set("template:sync:action-response",this.onTemplateSyncActionResponse.bind(this)),this.logger=ee(),this.init()}init(){const{ws:e}=this.server;for(const[t,n]of this.eventMap)e.on(t,n);e.on("close",()=>{this.clearAllPendingSyncActions(!1)}),e.on("error",()=>{this.clearAllPendingSyncActions(!1)})}resolveSyncAction(e,t){const n=this.syncActionResolvers.get(e);n&&(clearTimeout(n.timeoutId),this.syncActionResolvers.delete(e),n.resolve(t))}clearAllPendingSyncActions(e){for(const t of[...this.syncActionResolvers.keys()])this.resolveSyncAction(t,e)}onInfoDataRequest(e,t){t.send("info-data:response",{})}onTemplateSyncActionResponse(e){e&&"string"==typeof e.requestId&&"boolean"==typeof e.approved&&this.resolveSyncAction(e.requestId,e.approved)}async requestSyncAction(e,t){const n=k(),s=this.opts.syncActionTimeoutMs??12e4;return await new Promise(r=>{const i=setTimeout(()=>{this.resolveSyncAction(n,!1)},s);this.syncActionResolvers.set(n,{resolve:r,timeoutId:i}),t.send("template:sync:action-required",{...e,requestId:n})})}async onTemplateSync(e,t){if(!this.opts.distService||!this.opts.miAPI)return t.send("template:sync:response",{error:"Dist service or MiAPI is not defined"}),void this.logger.error(te.red("Dist service or MiAPI is not defined"));{const{distService:e,miAPI:n}=this.opts;try{if(this.server.config.clientInjectionPlugin?.v7Features){if(!n?.isV710OrHigher)return void t.send("template:sync:response",{error:"This feature is available only for MI v7.1.0 or higher",config:{canSync:!1}});t.send("client:config:update",{config:{canSync:!0}})}const s=await(n?.getAssets().catch(async e=>{if(o(e)){if("SESSION_EXPIRED"===ve(e).code){this.logger.info(te.yellow("Session expired - attempting to validate credentials"));try{const e=await(n?.validateCredentials());e&&!e.isValid?(this.logger.error(te.red(`Authentication error: ${e.error}`)),t.send("template:sync:response",{error:e.error,code:e.code,refresh:!0})):(this.logger.info(te.yellow("Session expired")),t.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(te.yellow("Session expired")),t.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0})}return e}if(e.cause instanceof Error&&("ECONNRESET"===e.cause.code||"ENOTFOUND"===e.cause.code))return this.logger.info(te.yellow("Server in maintenance mode, VPN connection is needed or no internet connection")),t.send("template:sync:response",{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e;const s=e.response?.status;if(502===s||503===s||504===s)return this.logger.info(te.yellow(`Server in maintenance mode or unreachable (HTTP ${s}); VPN may be required`)),t.send("template:sync:response",{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e}if(fe(e))return this.logger.info(te.yellow("Server in maintenance mode or non-JSON page / page-template API response (unavailable HTML body)")),t.send("template:sync:response",{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e;throw e}));if(s instanceof Error)return;let r;if(s){const n=await(e?.analyzeBackup(s).catch(e=>"Backup file is not a ZIP file"===e.message?(this.logger.error(te.red("Backup file is not a ZIP file")),e):e));if(n instanceof Error)r=n;else if(n){await(e?.saveBackup(s,n));const i=0===n.unknownFiles.length&&1===n.versionManifestHashMismatches.length&&p.basename(n.versionManifestHashMismatches[0].relativePath)===He,a=n.versionManifestHashMismatches,o=a.filter(e=>p.basename(e.relativePath)===He),l=a.filter(e=>p.basename(e.relativePath)!==He),c=!i&&o.length>0&&l.length>0,d=i?[]:l.map(e=>e.relativePath),u=async()=>{if(!n.templateVariables||!e)return;const{templateVariables:s}=n;if(await e.getPublicTemplateVariablesHash()!==s.actualHash){await this.requestSyncAction({title:"Template variables (server backup)",content:"The server backup includes __template_variables.json. It differs from your local public/__template_variables.json (or that file is missing). Replace your project copy with the server backup?",confirmText:"Replace from server",cancelText:"Keep local"},t)&&await e.saveTemplateVariablesFile(s.content)}};if(n.unknownFiles.length>0){if(!await this.requestSyncAction({title:"Unknown files found in backup",content:`Backup contains files not listed in VERSION: ${n.unknownFiles.join(", ")}. Continue sync or cancel?`,confirmText:"Continue sync",cancelText:"Cancel sync"},t))return t.send("template:sync:response",{cancelled:!0,message:"Sync cancelled by user. Backup was saved."}),void this.logger.info(te.yellow("Sync cancelled by user"))}if(c&&await u(),!i&&d.length>0){const e=40,n=d,s=n.slice(0,e),r=n.length-s.length,i=s.map(e=>`• ${e}`).join("\n"),a=r>0?`\n... and ${r} more file${1===r?"":"s"}`:"";if(!await this.requestSyncAction({title:"VERSION manifest out of date",content:`These files no longer match the hashes recorded in the VERSION manifest:\n\n${i}${a}\n\nCancel sync, or override and continue using the files on disk?`,confirmText:"Override and continue",cancelText:"Cancel sync"},t))return t.send("template:sync:response",{cancelled:!0,message:"Sync cancelled by user. Backup was saved."}),void this.logger.info(te.yellow("Sync cancelled by user"))}if(!i&&n.buildManifestMismatch&&0===n.versionManifestHashMismatches.length){const{expected:e,actual:s}=n.buildManifestMismatch;if(!await this.requestSyncAction({title:"Build manifest fingerprint mismatch",content:`The recomputed backup fingerprint does not match BUILD-MANIFEST.json.\nManifest: ${e.slice(0,12)}...\nComputed: ${s.slice(0,12)}...\nContinue sync anyway?`,confirmText:"Continue sync",cancelText:"Cancel sync"},t))return t.send("template:sync:response",{cancelled:!0,message:"Sync cancelled by user. Backup was saved."}),void this.logger.info(te.yellow("Sync cancelled by user"))}c||await u(),r=await(e?.buildNewAssets())}}else r=await(e?.buildNewAssets());if(!(r&&r instanceof Buffer))return r instanceof Error?(t.send("template:sync:response",{error:r.message}),void this.logger.error(te.red(r.message))):(t.send("template:sync:response",{error:"Failed to build new assets"}),void this.logger.error(te.red("Failed to build new assets")));{const s=await(n?.updateAssets(r));if("OK"===s?.status){const n=e?.getBackupMeta(),{lastBackupName:s,lastBackupHash:r,lastBackupDate:i}=n||{lastBackupName:"",lastBackupHash:"",lastBackupDate:(new Date).toISOString()};t.send("template:sync:response",{syncedAt:new Date(i),currentHash:r,backupFilename:s}),this.logger.info(te.green("Template synced"))}else t.send("template:sync:response",{error:"Failed to update assets"}),this.logger.error(te.red("Failed to update assets"))}}catch(e){const n=e instanceof Error?e.message:"Template sync failed";return this.logger.error(te.red(`Template sync failed: ${n}`)),void t.send("template:sync:response",{error:n,code:"SYNC_FAILED"})}}}}const Oe=/\.(?:[a-z0-9]+)$/i,De=6e5,Me=104857600,ze=1e3;class Ue extends R.Cache{totalSize=0;maxSize;maxItems;constructor(e,t){super(),this.maxSize=e,this.maxItems=t}put(e,t,n){const s=this.get(e);s&&(this.totalSize-=s.size);const r=super.put(e,t,n);return this.totalSize+=t.size,this.cleanup(),r}cleanup(){const e=this.keys();if(e.length>this.maxItems){const t=e.length-this.maxItems,n=e.sort((e,t)=>{const n=this.get(e),s=this.get(t);return(n?.timestamp||0)-(s?.timestamp||0)});for(let e=0;e<t;e++){const t=n[e],s=this.get(t);s&&(this.totalSize-=s.size,this.del(t))}}for(;this.totalSize>this.maxSize;){const e=this.keys();if(0===e.length)break;const t=e.sort((e,t)=>{const n=this.get(e),s=this.get(t);return(n?.timestamp||0)-(s?.timestamp||0)})[0],n=this.get(t);if(!n)break;this.totalSize-=n.size,this.del(t)}}getTotalSize(){return this.totalSize}getItemCount(){return this.keys().length}}const _e=new Ue(Me,ze);function Ve(e){if(0===e.length)return Buffer.alloc(0);if(1===e.length)return e[0];const t=e.reduce((e,t)=>Buffer.byteLength(t)+e,0);return Buffer.concat(e,t)}function Ze(e){const{devServer:t,ttl:n=De,maxSize:s=Me,maxItems:r=ze}=e,i=ee();return s===Me&&r===ze||(_e.maxSize=s,_e.maxItems=r),t.cache=_e,(e,t,s)=>{const r=e.originalUrl||e.url||"",a=function(e){const t=e.split("?")[0];return Oe.test(t)?t.includes("/auth/info.js")?"":e:""}(r);if(!a)return s();const o=_e.get(a);if(o)return i.info(`${te.blue("Proxies request:")} ${te.green(e.method)} ${r} -> ${te.blue("Cache")} ${a}`),function(e,t){try{for(const[n,s]of Object.entries(t))null!=s&&e.setHeader(n,s)}catch(e){ee().warn(`Failed to set some response headers: ${e instanceof Error?e.message:String(e)}`)}}(t,o.headers),t.setHeader("X-PP-Cache","hit"),t.write(o.content),void t.end();const l=t.end,c=t.write,d=[];t.write=function(e,n,s){if(!t.hasHeader(ae))return c.call(this,e,n,s);if("string"==typeof e){const t=n||"utf8";d.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?d.push(e):null!=e&&d.push(Buffer.from(String(e),"utf8"));return s?.(),!0},t.end=function(e,s,r){if(!t.hasHeader(ae))return l.call(this,e,s,r);if(null!=e)if("string"==typeof e){const t=s||"utf8";d.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?d.push(e):d.push(Buffer.from(String(e),"utf8"));let o;try{o=Ve(d);const e=Buffer.byteLength(o);if(e>0&&e<10485760){const s={headers:t.getHeaders(),content:o,timestamp:Date.now(),size:e};_e.put(a,s,n),i.info(`${te.blue("[Cached]")} ${a} (${(e/1024).toFixed(1)}KB)`)}}catch(e){i.error(`Failed to cache response for ${a}: ${e}`),o=Ve(d)}const c=s||"utf8";return l.call(this,o,c,r)},s()}}function We(e,t){return async(n,s,r)=>{if(await e(n.url??"",n,s)){ee().info(`Rewrite response for ${n.url}`);const e=s.end,r=[];s.write=function(e){return r.push(e),!0},s.end=function(i,a,o){"string"==typeof i&&r.push(Buffer.from(i));const l=s.getHeader("content-encoding"),c=function(e,t){switch(t){case"gzip":return F(e);case"br":return P(e);case"deflate":return C(e);default:return e}}(Buffer.from(Buffer.concat(r)),l),d="function"!=typeof a&&a?a:"utf-8",p="function"==typeof a?a:o;return e.call(this,function(e,t){switch(t){case"gzip":return H(e);case"br":return j(e);case"deflate":return L(e);default:return e}}(t(c,n,s),l),d,p),this}}r()}}function Je(e,t){const n=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,r=ee();return(i,a,o)=>{const l=new s(i.url??"","http://localhost"),{pathname:c,search:d}=l,p=["/",n];if(t&&(p.push(`/pt/${t}`),p.push(`/pl/${t}`)),p.includes(c)){const t=`${e}${d}`;return r.info(te.yellow(`Redirecting to: ${t}`)),se(a,t,302)}o()}}class Ke{state={isAuthenticated:!1,isRedirected:!1,lastChecked:0};listeners=new Set;getState(){return{...this.state}}isAuthenticated(){return this.state.isAuthenticated}isRedirected(){return this.state.isRedirected}setAuthenticated(e){this.state.isAuthenticated=e,this.state.lastChecked=Date.now(),this.notifyListeners()}setRedirected(e){this.state.isRedirected=e,this.notifyListeners()}updateState(e){void 0!==e.isAuthenticated&&(this.state.isAuthenticated=e.isAuthenticated),void 0!==e.isRedirected&&(this.state.isRedirected=e.isRedirected),this.state.lastChecked=Date.now(),this.notifyListeners()}reset(){this.state={isAuthenticated:!1,isRedirected:!1,lastChecked:0},this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){this.listeners.forEach(e=>{try{e(this.getState())}catch(e){console.error("Error in auth state listener:",e)}})}}const Ge=new Ke,Ye=new Map;function Xe(e){const t=Ye.get(e);return t?Date.now()-t.timestamp>18e4?(Ye.delete(e),null):t.data:null}function Qe(e,t){Ye.set(e,{timestamp:Date.now(),data:t})}const et="/home?proxyRedirect=";function tt(e,t,n){const{templateLess:s=!1,miHudLess:r=!1,appId:i,base:a,appBase:o,v7Features:l}=n,c=ee();if(s&&r&&void 0===i)throw new Error("Custom App ID is required when both templateLess and miHudLess are true");return async(n,d,p)=>{try{const u=!(s&&r),h=(n.url??"").split("?")[0],m=e.test(h),f=!m&&!h.startsWith("/home")&&function(e,t){if(!t||"/"===t)return!0;const n=t.endsWith("/")?t:`${t}/`;return e===n||e===n.slice(0,-1)||e.startsWith(n)}(h,o)&&function(e){const t=e.headers["sec-fetch-dest"];if("string"==typeof t)return"document"===t;const n=e.headers.accept;return"string"==typeof n&&n.includes("text/html")}(n),g=Ge.getState();if(!g.isAuthenticated&&!g.isRedirected&&n.url?.startsWith("/home")&&!n.url?.startsWith(et)){c.info(te.blue("Trying to authenticate and redirect to base"));try{return u?await st(t,{templateLess:s,miHudLess:r,appId:i,redirectUrl:l&&a?`${a}`:`${et}${encodeURIComponent("/")}`},n,d,()=>{},c):await nt(t,{templateLess:s,miHudLess:r,appId:i,redirectUrl:l&&a?`${a}`:`${et}${encodeURIComponent("/")}`},n,d,()=>{},c),Ge.setRedirected(!0),c.info(te.blue("Successfully authenticated. Redirecting to base")),se(d,a??"/",302)}catch(e){return p()}}if(!m&&!f)return p();if(!u){return await nt(t,{templateLess:s,miHudLess:r,appId:i,redirectUrl:l&&a?`${a}`:`${et}${encodeURIComponent("/")}`},n,d,p,c)}return await st(t,{templateLess:s,miHudLess:r,appId:i,redirectUrl:l&&a?`${a}`:`${et}${encodeURIComponent("/")}`},n,d,p,c)}catch(e){return c.error(te.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),Ge.reset(),p(e)}}}async function nt(e,t,n,s,r,i){const{appId:a,redirectOnAuthFailure:o,redirectUrl:l}=t;if(void 0===a){const e=new Error("Custom App ID is required for page info only mode");return i.error(te.red(e.message)),r(e)}const c=n.headers??{};i.info(te.green("Start loading page info"));try{const t=`pageInfo:${a}`;return Xe(t)?(i.info(te.green("Page info loaded from cache")),r()):(await e.getPageInfo(a,c),i.info(te.blue("Clearing proxy cache after successful login")),_e.clear(),Qe(t,{success:!0}),Ge.updateState({isAuthenticated:!0}),i.info(te.green("Page info loaded successfully")),r())}catch(e){return Ge.reset(),rt(e,o??!0,l||`${et}${encodeURIComponent("/")}`,s,r,i,"Page info")}}async function st(e,t,n,s,r,i){const{templateLess:a,appId:o,redirectOnAuthFailure:l,redirectUrl:c}=t,d=n.headers??{};i.info(te.green("Start loading page data"));try{const t=`pageData:${a}:${o}`;if(Xe(t))return i.info(te.green("Page data loaded from cache")),r();const n=a||void 0===o?e.getPageTemplate(d):e.getPageVariables(o,d);return await n,i.info(te.blue("Clearing proxy cache after successful login")),_e.clear(),Qe(t,{success:!0}),i.info(te.green("Page data loaded successfully")),r()}catch(e){return Ge.reset(),rt(e,l??!0,c||`${et}${encodeURIComponent("/")}`,s,r,i,"Page data")}}function rt(e,t,n,s,r,i,a){if(function(e){return null!==e&&"object"==typeof e&&"response"in e&&void 0!==e.response}(e)&&(i.info(te.red(`${a} loading failed. Not authorized`)),t)){const e=`${n}`;return i.info(te.yellow(`Redirecting to: ${e}`)),se(s,e,302)}const o=e instanceof Error?e.message:String(e);return i.info(te.red(`${a} loading failed. Error: ${o}`)),r(e)}function it(){const e=N();return e.use(N.json()),e.use(N.urlencoded({extended:!0})),e}const at=it();class ot{entries=new Map;insertOrder=[];totalSize=0;maxMemory;constructor(e=1073741824){this.maxMemory=e}allocateId(){return q()}add(e){let t=e,n=(e.requestBody?.byteLength??0)+(e.responseBody?.byteLength??0);n>this.maxMemory&&(t={...e,requestBody:null,responseBody:null,requestBodyTruncated:e.requestBodyTruncated||null!==e.requestBody,responseBodyTruncated:e.responseBodyTruncated||null!==e.responseBody},n=0);const s=n+512;for(;this.totalSize+s>this.maxMemory&&this.insertOrder.length>0;){const e=this.insertOrder.shift(),t=this.entries.get(e);t&&(this.totalSize-=(t.requestBody?.byteLength??0)+(t.responseBody?.byteLength??0)+512,this.entries.delete(e))}this.entries.set(t.id,t),this.insertOrder.push(t.id),this.totalSize+=s}get(e){return this.entries.get(e)}list(e){let t=this.insertOrder.slice().map(e=>{const t=this.entries.get(e);return{id:t.id,timestamp:t.timestamp,method:t.method,url:t.url,statusCode:t.statusCode,duration:t.duration,source:t.source,requestSize:t.requestBody?.byteLength??0,responseSize:t.responseBody?.byteLength??0,requestBodyTruncated:t.requestBodyTruncated,responseBodyTruncated:t.responseBodyTruncated}});if(e?.method&&(t=t.filter(t=>t.method===e.method.toUpperCase())),e?.search){const n=e.search.toLowerCase();t=t.filter(e=>e.url.toLowerCase().includes(n))}const n=Number.isFinite(e?.limit)?e.limit:t.length;if(void 0===e?.offset)return t.slice(Math.max(0,t.length-n));const s=Number.isFinite(e.offset)?e.offset:0;return t.slice(s,s+n)}clear(){this.entries.clear(),this.insertOrder=[],this.totalSize=0}get size(){return this.entries.size}get memoryUsage(){return this.totalSize}}const lt=["/@pp-dev/","/@api/","/_next/","/__nextjs_","/@vite","/@metricinsights","/@"],ct=new Set(["/favicon.ico","/installHook.js.map"]);function dt(e,t=10485760){return(n,s,r)=>{const i=n.url||"/",a=i.split("?")[0];if(lt.some(e=>i.startsWith(e))||ct.has(a))return void r();const o=e.allocateId(),l=Date.now(),c=[];let d=0,p=!1;const u=n.emit.bind(n);n.emit=(e,...n)=>{if("data"===e&&!p){const e=n[0],s=Buffer.isBuffer(e)?e:Buffer.from(String(e));d+=s.byteLength,d<=t?c.push(s):(p=!0,c.length=0)}return u(e,...n)};const h=[];let m=0,f=!1;const g=s.write.bind(s),y=s.end.bind(s);function v(e,n){if(!f&&null!=e)try{const s=Buffer.isBuffer(e)?e:"string"==typeof e?Buffer.from(e,n):ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer?Buffer.from(e):Buffer.from(String(e));m+=s.byteLength,m<=t?h.push(s):(f=!0,h.length=0)}catch{}}function b(e){return"string"==typeof e[0]?e[0]:void 0}function w(){const e=s.getHeaders();return e["x-pp-proxy"]?"hit"===e["x-pp-cache"]?"proxy-cache":"proxy":"local"}let x=!1;s.write=function(e,...t){return v(e,b(t)),g(e,...t)},s.end=function(t,...r){return"function"!=typeof t&&v(t,b(r)),function(){if(x)return;x=!0;const t=!p&&c.length>0?Buffer.concat(c):null,r=!f&&h.length>0?Buffer.concat(h):null;e.add({id:o,timestamp:l,method:n.method||"GET",url:i,statusCode:s.statusCode??null,duration:Date.now()-l,source:w(),requestHeaders:n.headers,requestBody:t,requestBodyTruncated:p,responseHeaders:s.getHeaders(),responseBody:r,responseBodyTruncated:f})}(),y(t,...r)},r()}}const pt="/@pp-dev/inspector";let ut,ht=!1;function mt(e,t,n=10485760){ut={store:t,captureLimit:n},ht||(ht=!0,e.get("/@api/requests",(e,t)=>{const{store:n}=ut,{limit:s,offset:r,method:i,search:a}=e.query,o=void 0!==s?parseInt(s,10):void 0,l=n.list({limit:Number.isFinite(o)?o:500,offset:void 0!==r&&Number.isFinite(parseInt(r,10))?parseInt(r,10):void 0,method:i,search:a});t.json({requests:l,total:n.size,memoryUsage:n.memoryUsage,maxMemory:n.maxMemory})}),e.get("/@api/requests/stats",(e,t)=>{const{store:n}=ut;t.json({total:n.size,memoryUsage:n.memoryUsage,maxMemory:n.maxMemory,memoryUsageFormatted:gt(n.memoryUsage),maxMemoryFormatted:gt(n.maxMemory)})}),e.get("/@api/requests/:id",(e,t)=>{const n=ut.store.get(e.params.id);if(!n)return void t.status(404).json({error:"Not found",id:e.params.id});const s=ft(n.requestHeaders["content-type"]),r=ft(n.responseHeaders["content-type"]);t.json({id:n.id,timestamp:n.timestamp,method:n.method,url:n.url,statusCode:n.statusCode,duration:n.duration,source:n.source,requestHeaders:n.requestHeaders,requestBody:n.requestBody?n.requestBody.toString("base64"):null,requestBodySize:n.requestBody?.byteLength??0,requestBodyTruncated:n.requestBodyTruncated,requestContentType:s,responseHeaders:n.responseHeaders,responseBody:n.responseBody?n.responseBody.toString("base64"):null,responseBodySize:n.responseBody?.byteLength??0,responseBodyTruncated:n.responseBodyTruncated,responseContentType:r})}),e.delete("/@api/requests",(e,t)=>{ut.store.clear(),t.json({ok:!0})}),e.get(pt,(e,t)=>{t.setHeader("Content-Type","text/html; charset=utf-8"),t.setHeader("Cache-Control","no-cache"),t.end(function(e){return`<!DOCTYPE html>\n<html lang="en">\n<head>\n<meta charset="utf-8">\n<meta name="viewport" content="width=device-width,initial-scale=1">\n<title>Request Inspector — pp-dev</title>\n<style>\n*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}\n:root{\n --bg:#1a1a1e;--bg2:#222228;--bg3:#2a2a32;--bg4:#32323c;\n --border:#3a3a46;--border2:#4a4a58;\n --text:#e0e0f0;--text2:#a0a0b8;--text3:#606078;\n --accent:#6e8efb;--accent2:#a78bfa;\n --green:#4ade80;--red:#f87171;--yellow:#fbbf24;--blue:#60a5fa;--orange:#fb923c;--purple:#c084fc;\n --font-mono:'Cascadia Code','Fira Code','JetBrains Mono',Consolas,monospace;\n --font-ui:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;\n}\nhtml,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:13px;line-height:1.5}\n\n/* ── Layout ── */\n.app{display:flex;flex-direction:column;height:100vh}\n.toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}\n.toolbar-title{font-weight:600;font-size:14px;color:var(--text);margin-right:4px}\n.toolbar-badge{font-size:11px;padding:2px 7px;border-radius:10px;background:var(--bg4);color:var(--text2)}\n.toolbar-spacer{flex:1}\n.mem-bar-wrap{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text2)}\n.mem-bar{width:80px;height:6px;background:var(--bg4);border-radius:3px;overflow:hidden}\n.mem-bar-fill{height:100%;background:var(--accent);transition:width .4s}\n\n.split{display:flex;flex:1;overflow:hidden}\n.pane-list{width:380px;min-width:200px;max-width:60%;border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}\n.pane-detail{flex:1;display:flex;flex-direction:column;overflow:hidden}\n\n/* ── Filter bar ── */\n.filter-bar{display:flex;flex-wrap:wrap;gap:6px;padding:8px 10px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0}\n.filter-input{flex:1 1 120px;min-width:0;background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:4px 8px;border-radius:4px;font-size:12px;outline:none}\n.filter-input:focus{border-color:var(--accent)}\n.filter-selects{display:flex;gap:6px;flex-shrink:0}\n.filter-select{background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:4px 6px;border-radius:4px;font-size:12px;outline:none;cursor:pointer;max-width:90px}\n.filter-select:focus{border-color:var(--accent)}\n\n/* ── Request list ── */\n.req-list{flex:1;overflow-y:auto;overflow-x:hidden}\n.req-list::-webkit-scrollbar{width:6px}\n.req-list::-webkit-scrollbar-track{background:var(--bg)}\n.req-list::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:3px}\n.req-item{display:flex;align-items:center;gap:8px;padding:7px 10px 7px 9px;border-bottom:1px solid var(--border);border-left:3px solid transparent;cursor:pointer;user-select:none;transition:background .1s,border-left-color .1s}\n.req-item:hover{background:var(--bg3)}\n.req-item.selected{background:var(--bg4);border-left-color:var(--accent) !important}\n.req-item.src-proxy{border-left-color:#6366f1}\n.req-item.src-proxy-cache{border-left-color:#d97706}\n.req-item.src-local{border-left-color:transparent}\n\n.method-badge{font-size:10px;font-weight:700;padding:2px 5px;border-radius:3px;min-width:38px;text-align:center;letter-spacing:.4px;flex-shrink:0}\n.m-GET{background:#1a3a2a;color:var(--green)}\n.m-POST{background:#1a2a3a;color:var(--blue)}\n.m-PUT{background:#3a2a1a;color:var(--orange)}\n.m-PATCH{background:#2a2a1a;color:var(--yellow)}\n.m-DELETE{background:#3a1a1a;color:var(--red)}\n.m-HEAD,.m-OPTIONS{background:#2a1a3a;color:var(--purple)}\n.m-other{background:var(--bg4);color:var(--text2)}\n\n.req-url{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--text)}\n.req-meta{display:flex;flex-direction:column;align-items:flex-end;gap:1px;flex-shrink:0;font-size:10px;color:var(--text3)}\n.req-status-row{display:flex;align-items:center;gap:4px}\n.source-letter{font-size:9px;font-weight:700;width:15px;height:15px;display:flex;align-items:center;justify-content:center;border-radius:2px;flex-shrink:0}\n.src-letter-proxy{background:#1e1e3a;color:#6366f1}\n.src-letter-proxy-cache{background:#2a2010;color:#d97706}\n.src-letter-local{background:var(--bg4);color:var(--text3)}\n.status-badge{font-size:10px;font-weight:600;padding:1px 4px;border-radius:2px}\n.s-2xx{color:var(--green)}\n.s-3xx{color:var(--blue)}\n.s-4xx{color:var(--yellow)}\n.s-5xx{color:var(--red)}\n.s-pending{color:var(--text3)}\n\n.source-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:500;padding:2px 7px;border-radius:10px}\n.src-local{background:#1e2a1e;color:#86efac}\n.src-proxy{background:#1e1e3a;color:#a5b4fc}\n.src-proxy-cache{background:#2a2010;color:#fcd34d}\n\n.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text3);gap:8px;padding:40px}\n.empty-icon{font-size:40px;opacity:.5}\n\n/* ── Detail pane ── */\n.detail-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text3);gap:8px}\n.detail-scroll{flex:1;overflow-y:auto;overflow-x:hidden;padding:0}\n.detail-scroll::-webkit-scrollbar{width:6px}\n.detail-scroll::-webkit-scrollbar-track{background:var(--bg)}\n.detail-scroll::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:3px}\n\n.detail-section{border-bottom:1px solid var(--border)}\n.detail-section-hdr{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg2);cursor:pointer;user-select:none;position:sticky;top:0;z-index:1}\n.detail-section-hdr:hover{background:var(--bg3)}\n.detail-section-hdr .toggle{font-size:10px;color:var(--text3)}\n.section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text2)}\n.section-badge{font-size:10px;padding:1px 5px;border-radius:8px;background:var(--bg4);color:var(--text3)}\n.section-actions{display:flex;gap:4px;margin-left:auto;align-items:center}\n.section-btn{font-size:10px;padding:1px 7px;border-radius:3px;border:1px solid var(--border);background:transparent;color:var(--text3);cursor:pointer;line-height:1.6;transition:all .1s;font-family:var(--font-ui)}\n.section-btn:hover{background:var(--bg4);color:var(--text);border-color:var(--border2)}\n.detail-section-body{padding:8px 12px;font-family:var(--font-mono);font-size:12px}\n.detail-section-body.collapsed{display:none}\n\n.kv-table{width:100%;border-collapse:collapse}\n.kv-table tr:hover td{background:var(--bg3)}\n.kv-table td{padding:2px 0;vertical-align:top}\n.kv-table td:first-child{color:var(--text2);white-space:nowrap;padding-right:12px;min-width:140px;max-width:220px;overflow:hidden;text-overflow:ellipsis}\n.kv-table td:last-child{color:var(--text);word-break:break-all}\n\n.body-content{white-space:pre-wrap;word-break:break-all;color:var(--text);line-height:1.6;max-height:400px;overflow:auto}\n.body-content.json{color:#c9d1d9}\n.body-json-key{color:#79b8ff}\n.body-json-str{color:#9ecbff}\n.body-json-num{color:#f8c555}\n.body-json-bool{color:#f97583}\n.body-json-null{color:#f97583;font-style:italic}\n.body-binary{color:var(--text3);font-style:italic;padding:8px 0}\n.body-image{max-width:100%;max-height:300px;object-fit:contain;margin-top:4px;border:1px solid var(--border);border-radius:4px}\n.truncated-note{font-size:11px;color:var(--yellow);margin-top:4px;font-family:var(--font-ui)}\n\n.detail-info-bar{display:flex;gap:16px;padding:10px 12px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}\n.info-item{display:flex;flex-direction:column;gap:2px}\n.info-label{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px}\n.info-value{font-size:13px;font-weight:600;color:var(--text)}\n.info-url{display:flex;align-items:center;gap:8px;font-size:11px;font-family:var(--font-mono);color:var(--text2);padding:6px 12px;border-bottom:1px solid var(--border);background:var(--bg)}\n.info-url-text{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}\n\n/* ── Buttons ── */\n.btn{padding:4px 10px;border-radius:4px;border:1px solid var(--border);background:var(--bg3);color:var(--text);font-size:12px;cursor:pointer;transition:background .1s}\n.btn:hover{background:var(--bg4);border-color:var(--border2)}\n.btn-danger:hover{background:#3a1a1a;border-color:#6a2a2a;color:var(--red)}\n.btn-sm{padding:2px 7px;font-size:11px}\n\n/* ── Live indicator ── */\n.live-dot{width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 2s infinite}\n@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}\n\n/* ── Scrollbar ── */\n::-webkit-scrollbar{width:6px;height:6px}\n::-webkit-scrollbar-track{background:var(--bg)}\n::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:3px}\n</style>\n</head>\n<body>\n<div class="app">\n <div class="toolbar">\n <span class="toolbar-title">🔍 Request Inspector</span>\n <span class="live-dot" title="Live"></span>\n <span class="toolbar-badge" id="req-count">0 requests</span>\n <div class="mem-bar-wrap">\n <div class="mem-bar"><div class="mem-bar-fill" id="mem-fill" style="width:0%"></div></div>\n <span id="mem-text">0 B / 1 GB</span>\n </div>\n <div class="toolbar-spacer"></div>\n <button class="btn btn-sm btn-danger" onclick="clearAll()">Clear</button>\n </div>\n <div class="split">\n <div class="pane-list">\n <div class="filter-bar">\n <input class="filter-input" id="search-input" placeholder="Filter by URL…" oninput="applyFilter()" />\n <div class="filter-selects">\n <select class="filter-select" id="method-select" onchange="applyFilter()">\n <option value="">All</option>\n <option>GET</option><option>POST</option><option>PUT</option>\n <option>PATCH</option><option>DELETE</option><option>HEAD</option>\n </select>\n <select class="filter-select" id="status-select" onchange="applyFilter()">\n <option value="">All</option>\n <option value="2">2xx</option><option value="3">3xx</option>\n <option value="4">4xx</option><option value="5">5xx</option>\n </select>\n <select class="filter-select" id="source-select" onchange="applyFilter()">\n <option value="">All</option>\n <option value="local">Local</option>\n <option value="proxy">Proxy</option>\n <option value="proxy-cache">Cached</option>\n </select>\n </div>\n </div>\n <div class="req-list" id="req-list">\n <div class="empty-state">\n <div class="empty-icon">📡</div>\n <div>No requests captured yet</div>\n <div style="font-size:11px">Requests to the dev server will appear here</div>\n </div>\n </div>\n </div>\n <div class="pane-detail">\n <div class="detail-empty" id="detail-empty">\n <div style="font-size:32px;opacity:.3">←</div>\n <div>Select a request to inspect</div>\n </div>\n <div id="detail-panel" style="display:none;flex:1;flex-direction:column;overflow:hidden">\n <div class="detail-info-bar" id="detail-info"></div>\n <div class="info-url" id="detail-url"></div>\n <div class="detail-scroll" id="detail-scroll"></div>\n </div>\n </div>\n </div>\n</div>\n<script>\n(function(){\n'use strict';\n\nconst CAPTURE_LIMIT = ${e};\n\nlet allRequests = [];\nlet filteredRequests = [];\nlet selectedId = null;\nlet currentEntry = null;\n\nconst listEl = document.getElementById('req-list');\nconst detailEmpty = document.getElementById('detail-empty');\nconst detailPanel = document.getElementById('detail-panel');\nconst detailInfo = document.getElementById('detail-info');\nconst detailUrl = document.getElementById('detail-url');\nconst detailScroll = document.getElementById('detail-scroll');\n\n// ── Fetch request list ────────────────────────────────────────────────────────\nasync function fetchList() {\n try {\n const r = await fetch('/@api/requests');\n const data = await r.json();\n\n allRequests = data.requests || [];\n updateStats(data);\n applyFilter();\n\n if (selectedId && !allRequests.find(r => r.id === selectedId)) {\n selectedId = null;\n showDetailEmpty();\n }\n } catch(e) {}\n}\n\nfunction updateStats(data) {\n const pct = data.maxMemory > 0 ? Math.min(100, (data.memoryUsage / data.maxMemory) * 100) : 0;\n\n document.getElementById('req-count').textContent = data.total + ' request' + (data.total !== 1 ? 's' : '');\n document.getElementById('mem-fill').style.width = pct + '%';\n document.getElementById('mem-text').textContent = formatBytes(data.memoryUsage) + ' / ' + formatBytes(data.maxMemory);\n}\n\n// ── Filter ────────────────────────────────────────────────────────────────────\nfunction applyFilter() {\n const search = document.getElementById('search-input').value.toLowerCase();\n const method = document.getElementById('method-select').value;\n const status = document.getElementById('status-select').value;\n const source = document.getElementById('source-select').value;\n\n filteredRequests = allRequests.filter(r => {\n if (method && r.method !== method) {\n return false;\n }\n\n if (status && !String(r.statusCode || '').startsWith(status)) {\n return false;\n }\n\n if (source && r.source !== source) {\n return false;\n }\n\n if (search && !r.url.toLowerCase().includes(search)) {\n return false;\n }\n\n return true;\n });\n\n renderList();\n}\n\n// ── Render list ───────────────────────────────────────────────────────────────\nfunction isAtBottom() {\n return listEl.scrollTop + listEl.clientHeight >= listEl.scrollHeight - 16;\n}\n\nfunction renderList() {\n const atBottom = isAtBottom();\n\n if (!filteredRequests.length) {\n listEl.innerHTML = '<div class="empty-state"><div class="empty-icon">🔍</div><div>No matching requests</div></div>';\n\n return;\n }\n\n const html = filteredRequests.map(r => {\n const sel = r.id === selectedId ? ' selected' : '';\n const mClass = methodClass(r.method);\n const sClass = statusClass(r.statusCode);\n const dur = r.duration != null ? formatDur(r.duration) : '…';\n const size = formatBytes((r.responseSize || 0));\n const srcCls = 'src-' + (r.source || 'local');\n const sLetter = sourceLetter(r.source);\n const sLetterCls = 'src-letter-' + (r.source || 'local').replace(/-/g, '-');\n\n return \`<div class="req-item \${srcCls}\${sel}" data-id="\${esc(r.id)}" onclick="selectRequest('\${esc(r.id)}')">\n <span class="method-badge \${mClass}">\${esc(r.method)}</span>\n <span class="req-url" title="\${esc(r.url)}">\${esc(r.url)}</span>\n <span class="req-meta">\n <span class="req-status-row">\n <span class="source-letter \${sLetterCls}">\${sLetter}</span>\n <span class="status-badge \${sClass}">\${r.statusCode || '…'}</span>\n </span>\n <span>\${dur}</span>\n <span>\${size}</span>\n </span>\n </div>\`;\n }).join('');\n\n listEl.innerHTML = html;\n\n if (atBottom) {\n listEl.scrollTop = listEl.scrollHeight;\n }\n}\n\n// ── Select request ────────────────────────────────────────────────────────────\nasync function selectRequest(id) {\n selectedId = id;\n\n renderList();\n\n detailEmpty.style.display = 'none';\n detailPanel.style.display = 'flex';\n detailPanel.style.flexDirection = 'column';\n detailPanel.style.overflow = 'hidden';\n detailScroll.innerHTML = '<div style="padding:20px;color:var(--text3)">Loading…</div>';\n\n try {\n const r = await fetch('/@api/requests/' + encodeURIComponent(id));\n\n if (!r.ok) {\n showDetailEmpty();\n\n return;\n }\n\n const entry = await r.json();\n\n renderDetail(entry);\n } catch(e) {\n showDetailEmpty();\n }\n}\nwindow.selectRequest = selectRequest;\n\nfunction showDetailEmpty() {\n detailPanel.style.display = 'none';\n detailEmpty.style.display = 'flex';\n}\n\nfunction renderDetail(e) {\n currentEntry = e;\n\n const sClass = statusClass(e.statusCode);\n const src = sourceInfo(e.source);\n\n detailInfo.innerHTML = \`\n <div class="info-item"><div class="info-label">Method</div><div class="info-value"><span class="method-badge \${methodClass(e.method)}">\${esc(e.method)}</span></div></div>\n <div class="info-item"><div class="info-label">Status</div><div class="info-value"><span class="status-badge \${sClass}">\${e.statusCode || '—'}</span></div></div>\n <div class="info-item"><div class="info-label">Source</div><div class="info-value"><span class="source-chip \${src.cls}">\${src.title}</span></div></div>\n <div class="info-item"><div class="info-label">Duration</div><div class="info-value">\${e.duration != null ? formatDur(e.duration) : '—'}</div></div>\n <div class="info-item"><div class="info-label">Request</div><div class="info-value">\${formatBytes(e.requestBodySize||0)}</div></div>\n <div class="info-item"><div class="info-label">Response</div><div class="info-value">\${formatBytes(e.responseBodySize||0)}</div></div>\n <div class="info-item"><div class="info-label">Time</div><div class="info-value" style="font-size:11px">\${new Date(e.timestamp).toLocaleTimeString()}</div></div>\n \`;\n\n detailUrl.innerHTML = \`<span class="info-url-text" title="\${esc(e.url)}">\${esc(e.url)}</span><button class="section-btn" onclick="copyUrl(this)">Copy link</button>\`;\n\n const sections = [\n makeHeadersSection('Request Headers', e.requestHeaders, 'request'),\n makeBodySection('Request Body', e.requestBody, e.requestContentType, e.requestBodyTruncated, e.requestBodySize, 'request'),\n makeHeadersSection('Response Headers', e.responseHeaders, 'response'),\n makeBodySection('Response Body', e.responseBody, e.responseContentType, e.responseBodyTruncated, e.responseBodySize, 'response'),\n ];\n\n detailScroll.innerHTML = sections.join('');\n}\n\nfunction makeHeadersSection(title, headers, type) {\n const entries = Object.entries(headers || {}).filter(([,v]) => v != null);\n const rows = entries.map(([k,v]) => \`<tr><td>\${esc(k)}</td><td>\${esc(Array.isArray(v) ? v.join(', ') : String(v))}</td></tr>\`).join('');\n const actionsHtml = entries.length ? \`<div class="section-actions"><button class="section-btn" onclick="event.stopPropagation();copyHeaders('\${type}',this)">Copy</button></div>\` : '';\n\n return \`<div class="detail-section">\n <div class="detail-section-hdr" onclick="toggleSection(this)">\n <span class="toggle">▾</span>\n <span class="section-title">\${title}</span>\n <span class="section-badge">\${entries.length}</span>\n \${actionsHtml}\n </div>\n <div class="detail-section-body">\n <table class="kv-table">\${rows}</table>\n </div>\n </div>\`;\n}\n\nfunction makeBodySection(title, b64, contentType, truncated, size, type) {\n let bodyHtml = '';\n const ct = (contentType || '').toLowerCase().split(';')[0].trim();\n const isText = ct.includes('json') || ct.startsWith('text/') || ct.includes('/javascript') || ct === 'application/xml' || ct === 'application/x-www-form-urlencoded';\n\n if (!b64 && !truncated) {\n bodyHtml = '<div class="body-binary">No body</div>';\n } else if (truncated) {\n bodyHtml = \`<div class="body-binary">Body too large to capture (\${formatBytes(size)})</div>\`;\n } else if (b64) {\n if (ct.includes('json') || ct.includes('/javascript') || ct === 'text/plain') {\n const text = decodeTextBody(b64);\n\n if (ct.includes('json')) {\n try {\n bodyHtml = \`<pre class="body-content json">\${syntaxHighlightJson(text)}</pre>\`;\n } catch {\n bodyHtml = \`<pre class="body-content">\${esc(text)}</pre>\`;\n }\n } else {\n bodyHtml = \`<pre class="body-content">\${esc(text)}</pre>\`;\n }\n } else if (ct.startsWith('text/')) {\n bodyHtml = \`<pre class="body-content">\${esc(decodeTextBody(b64))}</pre>\`;\n } else if (ct.startsWith('image/') && size < 1024*1024) {\n bodyHtml = \`<img class="body-image" src="data:\${esc(ct)};base64,\${b64}" alt="image"/>\`;\n } else if (ct === 'application/x-www-form-urlencoded') {\n const params = new URLSearchParams(decodeTextBody(b64));\n const rows = [...params.entries()].map(([k,v]) => \`<tr><td>\${esc(k)}</td><td>\${esc(v)}</td></tr>\`).join('');\n\n bodyHtml = \`<table class="kv-table">\${rows}</table>\`;\n } else {\n bodyHtml = \`<div class="body-binary">Binary data — \${formatBytes(size)} (\${esc(ct || 'unknown type')})</div>\`;\n }\n }\n\n const copyBtn = b64 && isText ? \`<button class="section-btn" onclick="event.stopPropagation();copyBody('\${type}',this)">Copy</button>\` : '';\n const saveBtn = b64 ? \`<button class="section-btn" onclick="event.stopPropagation();saveBody('\${type}')">Save</button>\` : '';\n const actionsHtml = (copyBtn || saveBtn) ? \`<div class="section-actions">\${copyBtn}\${saveBtn}</div>\` : '';\n const note = truncated ? \`<div class="truncated-note">⚠ Body was larger than the capture limit (\${formatBytes(CAPTURE_LIMIT)})</div>\` : '';\n\n return \`<div class="detail-section">\n <div class="detail-section-hdr" onclick="toggleSection(this)">\n <span class="toggle">▾</span>\n <span class="section-title">\${title}</span>\n \${size ? \`<span class="section-badge">\${formatBytes(size)}</span>\` : ''}\n \${actionsHtml}\n </div>\n <div class="detail-section-body">\${bodyHtml}\${note}</div>\n </div>\`;\n}\n\nwindow.toggleSection = function(hdr) {\n const body = hdr.nextElementSibling;\n const toggle = hdr.querySelector('.toggle');\n\n if (body.classList.toggle('collapsed')) {\n toggle.textContent = '▸';\n } else {\n toggle.textContent = '▾';\n }\n};\n\nasync function clearAll() {\n await fetch('/@api/requests', { method: 'DELETE' });\n\n allRequests = [];\n filteredRequests = [];\n selectedId = null;\n\n showDetailEmpty();\n renderList();\n updateStats({ total: 0, memoryUsage: 0, maxMemory: 1024*1024*1024 });\n}\nwindow.clearAll = clearAll;\n\n// ── JSON syntax highlighting ──────────────────────────────────────────────────\nfunction syntaxHighlightJson(str) {\n try {\n const parsed = JSON.parse(str);\n\n str = JSON.stringify(parsed, null, 2);\n } catch { /* use as-is */ }\n\n return str.replace(/("(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\"])*"\\s*:?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)/g, function(m) {\n if (/^"/.test(m)) {\n if (/:$/.test(m)) {\n return '<span class="body-json-key">' + esc(m) + '</span>';\n }\n\n return '<span class="body-json-str">' + esc(m) + '</span>';\n }\n\n if (/true|false/.test(m)) {\n return '<span class="body-json-bool">' + m + '</span>';\n }\n\n if (/null/.test(m)) {\n return '<span class="body-json-null">' + m + '</span>';\n }\n\n return '<span class="body-json-num">' + m + '</span>';\n });\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\nfunction esc(s) {\n return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;');\n}\n\nfunction decodeTextBody(b64) {\n const bytes = Uint8Array.from(atob(b64), function(c) { return c.charCodeAt(0); });\n\n return new TextDecoder('utf-8').decode(bytes);\n}\n\nfunction sourceInfo(source) {\n if (source === 'proxy') {\n return { cls: 'src-proxy', title: 'Backend (live)' };\n }\n\n if (source === 'proxy-cache') {\n return { cls: 'src-proxy-cache', title: 'Backend (cached)' };\n }\n\n return { cls: 'src-local', title: 'Local (dev server)' };\n}\n\nfunction sourceLetter(source) {\n if (source === 'proxy') {\n return 'P';\n }\n\n if (source === 'proxy-cache') {\n return 'C';\n }\n\n return 'L';\n}\n\n// ── Copy / Save ───────────────────────────────────────────────────────────────\nfunction clipboard(text, btn) {\n navigator.clipboard.writeText(text).then(() => {\n if (!btn) {\n return;\n }\n\n const orig = btn.textContent;\n\n btn.textContent = '✓';\n btn.style.color = 'var(--green)';\n setTimeout(() => {\n btn.textContent = orig;\n btn.style.color = '';\n }, 1500);\n }).catch(() => {});\n}\n\nfunction copyUrl(btn) {\n clipboard(currentEntry ? currentEntry.url : '', btn);\n}\nwindow.copyUrl = copyUrl;\n\nfunction copyHeaders(type, btn) {\n const h = type === 'request' ? (currentEntry && currentEntry.requestHeaders) : (currentEntry && currentEntry.responseHeaders);\n\n if (!h) {\n return;\n }\n\n const text = Object.entries(h).filter(([,v]) => v != null).map(([k,v]) => k + ': ' + (Array.isArray(v) ? v.join(', ') : v)).join('\\n');\n\n clipboard(text, btn);\n}\nwindow.copyHeaders = copyHeaders;\n\nfunction copyBody(type, btn) {\n const b64 = type === 'request' ? (currentEntry && currentEntry.requestBody) : (currentEntry && currentEntry.responseBody);\n\n if (!b64) {\n return;\n }\n\n try {\n clipboard(decodeTextBody(b64), btn);\n } catch(e) {}\n}\nwindow.copyBody = copyBody;\n\nfunction saveBody(type) {\n const b64 = type === 'request' ? (currentEntry && currentEntry.requestBody) : (currentEntry && currentEntry.responseBody);\n const ct = type === 'request' ? (currentEntry && currentEntry.requestContentType) : (currentEntry && currentEntry.responseContentType);\n\n if (!b64) {\n return;\n }\n\n downloadB64(b64, type + '-body.' + fileExt(ct));\n}\nwindow.saveBody = saveBody;\n\nfunction downloadB64(b64, filename) {\n try {\n const bytes = Uint8Array.from(atob(b64), function(c) { return c.charCodeAt(0); });\n const blob = new Blob([bytes]);\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n setTimeout(function() { URL.revokeObjectURL(url); }, 1000);\n } catch(e) {}\n}\n\nfunction fileExt(ct) {\n ct = ((ct || '').split(';')[0]).trim().toLowerCase();\n\n var map = {\n 'application/json': 'json', 'text/html': 'html', 'text/css': 'css',\n 'text/javascript': 'js', 'application/javascript': 'js', 'text/plain': 'txt',\n 'text/xml': 'xml', 'application/xml': 'xml', 'image/png': 'png',\n 'image/jpeg': 'jpg', 'image/gif': 'gif', 'image/svg+xml': 'svg',\n 'image/webp': 'webp', 'application/pdf': 'pdf', 'application/zip': 'zip',\n 'application/x-www-form-urlencoded': 'txt', 'application/octet-stream': 'bin',\n };\n\n return map[ct] || 'bin';\n}\n\nfunction formatBytes(b) {\n b = b || 0;\n\n if (b < 1024) {\n return b + ' B';\n }\n\n if (b < 1024*1024) {\n return (b/1024).toFixed(1) + ' KB';\n }\n\n if (b < 1024*1024*1024) {\n return (b/(1024*1024)).toFixed(1) + ' MB';\n }\n\n return (b/(1024*1024*1024)).toFixed(2) + ' GB';\n}\n\nfunction formatDur(ms) {\n if (ms < 1000) {\n return ms + 'ms';\n }\n\n return (ms/1000).toFixed(2) + 's';\n}\n\nfunction methodClass(m) {\n const map = { GET:'m-GET', POST:'m-POST', PUT:'m-PUT', PATCH:'m-PATCH', DELETE:'m-DELETE', HEAD:'m-HEAD', OPTIONS:'m-OPTIONS' };\n\n return map[m] || 'm-other';\n}\n\nfunction statusClass(s) {\n if (!s) {\n return 's-pending';\n }\n\n const c = Math.floor(s / 100);\n\n return ['','','s-2xx','s-3xx','s-4xx','s-5xx'][c] || '';\n}\n\n// ── Polling ───────────────────────────────────────────────────────────────────\nfetchList();\nsetInterval(fetchList, 2000);\n\n})();\n<\/script>\n</body>\n</html>`}(ut.captureLimit))}))}function ft(e){return Array.isArray(e)?e[0]??"":String(e??"")}function gt(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<1073741824?`${(e/1048576).toFixed(1)} MB`:`${(e/1073741824).toFixed(2)} GB`}const yt=["top-left","top-right","bottom-left","bottom-right"];function vt(e,t){const n=e.mi?.mode??"standalone",s=e.app?.type??"template",r=e.mi?.apiVersion??7,i=e.mi?.url??process.env.MI_BACKEND_URL;if(!t)throw new Error("[pp-dev] app.name is required (or set package.json#name)");if(e.mi?.include&&"standalone"!==n)throw console.warn('[pp-dev] mi.include is only valid when mi.mode is "standalone"'),new Error('[pp-dev] mi.include requires mi.mode to be "standalone"');if(!i){if("embedding"===n||"template"===s)throw new Error('[pp-dev] mi.url is required when mi.mode is "embedding" or app.type is "template"');"standalone"===n&&"page"===s&&console.warn("[pp-dev] mi.url is not set — dev server will run without a backend proxy")}if("template"===s&&!e.app?.id)throw new Error('[pp-dev] app.id is required when app.type is "template"');if("page"===s&&i&&("standalone"===n||r>=7)&&!e.app?.id)throw new Error('[pp-dev] app.id is required when backend page data is loaded for app.type "page"');if(void 0!==e.devPanel?.position&&!yt.includes(e.devPanel.position))throw new Error(`[pp-dev] devPanel.position must be one of: ${yt.join(", ")}`)}function bt(e,t){const{mi:n={},app:s={},proxy:r={},build:i={},sync:a={},inspector:o={},devPanel:l={}}=e,c=n.mode??"standalone",d=s.type??"template",p=n.apiVersion??7,u="standalone"===c;let h=!1;"top-bar"===n.include?h=!0:"shared-components"===n.include&&(h={addSharedComponentsScripts:!0,addRootElement:!1});const m="page"===d,f=s.name??t,g="VERSION-v{packageversion}-{currentDate}.json";let y;const v=i.zip;let b;y=!1!==v&&(!0===v||void 0===v?{outFileName:`${f}.zip`,outDir:"dist-zip"}:{outFileName:v.fileName??`${f}.zip`,outDir:v.outDir??"dist-zip",...v.inDir?{inDir:v.inDir}:{}});const w=i.versionFile;let x;b=!1!==w&&(!0===w||void 0===w?{versionFileTemplate:g,enabled:!0}:{versionFileTemplate:w.fileNameTemplate??g,enabled:w.enabled??!0});const k=i.imageOptimisations;return x=!1!==k&&(!0===k||void 0===k?{}:k),{templateName:f,backendBaseURL:n.url??process.env.MI_BACKEND_URL,appId:s.id,templateLess:m,miHudLess:u,integrateMiTopBar:h,enableProxyCache:r.cache??!0,proxyCacheTTL:r.cacheTtl??6e5,disableSSLValidation:r.tls?.allowSelfSigned??!1,imageOptimizer:x,outDir:i.outDir??"dist",distZip:y,versionPlugin:b,syncBackupsDir:a.backupsDir??"backups",v7Features:p>=7,personalAccessToken:n.token??process.env.MI_ACCESS_TOKEN,inspectorEnabled:o.enabled??!0,inspectorMaxMemory:o.maxMemory??1073741824,inspectorCaptureLimit:o.captureLimit??10485760,devPanelPosition:l.position??"bottom-right",devPanelHidden:l.hidden??!1,devPanelAutoHide:l.autoHide??!1}}function wt(e){const{templateName:t,templateLess:n,backendBaseURL:s,miHudLess:r,appId:i,enableProxyCache:a,proxyCacheTTL:o,disableSSLValidation:l,distZip:c,versionPlugin:d,syncBackupsDir:p,v7Features:u,personalAccessToken:h,inspectorEnabled:m,inspectorMaxMemory:f,inspectorCaptureLimit:g,devPanelPosition:y,devPanelHidden:v,devPanelAutoHide:b}=e||{};let w=!0;return process.cwd(),{name:"vite-pp-dev",apply:"serve",config:e=>(e.clientInjectionPlugin={backendBaseURL:s,appId:i,templateLess:n,v7Features:u,devPanelPosition:y,devPanelHidden:v,devPanelAutoHide:b},u&&(e.base=`/pl/${t}`),e),transformIndexHtml:async(e,t)=>{const n={html:e,tags:[]};return w&&(w=!1,n.tags.push({tag:"script",injectTo:"body",children:`${Math.random()}`})),n},configureServer:y=>{let v=y.config.base;v.endsWith("/")||(v+="/");const b=v.substring(0,v.lastIndexOf("/"));if(y.middlewares.use(Je(v,t)),!1!==m){const e=new ot(f);y.middlewares.use(dt(e,g));const t=it();mt(t,e,g),y.middlewares.use((e,n,s)=>{e.url?.startsWith("/@api/")||e.url?.startsWith(pt)?t(e,n,s):s()})}if(s){const m=new URL(s).host,f={headers:{host:m,referer:s,origin:s.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},appId:i,templateLess:n,disableSSLValidation:l,v7Features:u,personalAccessToken:h??process.env.MI_ACCESS_TOKEN},g=new xe(s,f);if(a){let e=+o;(!e||Number.isNaN(e)||e<0)&&(e=6e5),y.middlewares.use(Ze({devServer:y,ttl:e}))}const w=new RegExp(`^((${v})|/)$`);y.middlewares.use(tt(w,g,Object.assign({},e,{appId:i,appBase:v}))),y.middlewares.use(oe({baseURL:s,proxyIgnore:["/@vite","/@metricinsights","/@",b],disableSSLValidation:l,miAPI:g,templateName:t}));const x=(e,t,n,s,r)=>{const i={error:n};s&&(i.details=s),r&&(i.code=r),e.status(t).json(i).end()},k=(e,t,n)=>{y.config.logger.error(`${n} token validation error:`,t);const s=ve(t);if(t.tokenErrorInfo){const n=t.tokenErrorInfo;x(e,n.status||500,n.userFriendlyMessage,n.message,n.code)}else{let t,r,i;switch(s.code){case"SESSION_EXPIRED":t=412,r="personal"===n?"Personal access token expired":"Session expired",i="personal"===n?"PAT_EXPIRED":"SESSION_EXPIRED";break;case"UNAUTHORIZED":t=401,r="Unauthorized",i="UNAUTHORIZED";break;case"FORBIDDEN":t=403,r="Access forbidden",i="FORBIDDEN";break;default:t=500,r="Internal server error",i=s.code}const a="personal"===n&&"PAT_EXPIRED"===i?"Your personal access token has expired. Please generate a new token from the portal.":"regular"===n&&"SESSION_EXPIRED"===i?"Your portal session has expired. Please refresh your token or re-authenticate.":s.userFriendlyMessage;x(e,t,r,a,i)}return null},E=it();E.post("/@api/login",async(e,t,n)=>{const{token:s,tokenType:r}=e.body;if(s)if(y.config.logger.info(`Attempting to validate ${r} token...`),"personal"===r){if(!await g.get("/data/page/index/auth/info",{"Content-Type":"application/json",Accept:"application/json",Authorization:`Bearer ${s}`},!0).then(async e=>"number"==typeof e.data?.user?.user_id?(g.personalAccessToken=s,y.config.logger.info(`Personal access token validated successfully for user ${e.data.user.user_id}`),e):(x(t,400,"Token expired or invalid"),null)).catch(e=>k(t,e,"personal")))return;se(t,"/",302)}else if("regular"===r){if(!await g.get("/api/user",{"Content-Type":"application/json",Accept:"application/json",Token:s},!0).then(e=>e.data?.users?.length?(g.personalAccessToken=void 0,y.config.logger.info(`Regular token validated successfully for ${e.data.users.length} user(s)`),t.setHeader("set-cookie",e.headers["set-cookie"]??""),e):(x(t,400,"Token expired or invalid"),null)).catch(e=>k(t,e,"regular")))return;se(t,"/",302)}else x(t,400,"Invalid tokenType",'tokenType must be "personal" or "regular".',"INVALID_TOKEN_TYPE");else x(t,400,"Token is required")}),y.middlewares.use(E);const T=!1!==c?new Ne(t,Object.assign({backupDir:p},"object"==typeof c?{distZipFolder:c.outDir,distZipFilename:c.outFileName}:void 0,"object"==typeof d?{versionFileTemplate:d.versionFileTemplate}:void 0)):void 0;return new qe(y,{distService:T,miAPI:g}),()=>{y.middlewares.use(We(e=>e.split("?")[0].endsWith("index.html"),(e,t)=>Buffer.from(ne(m,t.headers.host??"",g.buildPage(e,r)))))}}}}}export{Ke as A,qe as C,Ne as D,pt as I,xe as M,W as P,ot as R,V,te as a,Y as b,ee as c,J as d,G as e,K as f,dt as g,Je as h,at as i,Ze as j,tt as k,oe as l,We as m,bt as n,Z as o,z as p,M as q,mt as r,Ge as s,wt as t,ne as u,vt as v,Be as w};
2
- //# sourceMappingURL=plugin-B2ocw-wb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-B2ocw-wb.js","sources":["../../../src/constants.ts","../../../src/lib/logger.ts","../../../src/lib/helpers/color.helper.ts","../../../src/lib/helpers/url.helper.ts","../../../src/lib/helpers/login.helper.ts","../../../src/lib/proxy-pass.middleware.ts","../../../src/api/base.ts","../../../src/api/assets.ts","../../../src/api/assets-v7.ts","../../../src/api/unavailable-json-api.ts","../../../src/api/page.ts","../../../src/api/page-template.ts","../../../src/lib/helpers/token.helper.ts","../../../src/lib/pp.middleware.ts","../../../src/lib/version-manifest.ts","../../../src/lib/dist.service.ts","../../../src/lib/client.service.ts","../../../src/lib/proxy-cache.middleware.ts","../../../src/lib/rewrite-response.middleware.ts","../../../src/lib/helpers/content-encoding.helper.ts","../../../src/lib/pp-redirect.middleware.ts","../../../src/lib/auth.provider.ts","../../../src/lib/load-pp-data.middleware.ts","../../../src/lib/internal.middleware.ts","../../../src/lib/request-store.ts","../../../src/lib/request-capture.middleware.ts","../../../src/lib/request-inspector.ts","../../../src/plugin.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["afterBundlePath","resolve","__filename","fileURLToPath","url","beforeBundlePath","PP_DEV_PACKAGE_DIR","existsSync","PP_DEV_CLIENT_ENTRY","version","name","JSON","parse","readFileSync","toString","VERSION","PACKAGE_NAME","PP_DEV_HMR_WS_PATH","PATH_PAGE_PREFIX","PATH_TEMPLATE_PREFIX","PATH_TEMPLATE_LOCAL_PREFIX","PP_DEV_CONFIG_NAMES","storage","Map","DEFAULT_LOGGER_KEY","createLogger","level","has","get","logger","cL","set","colors","createColors","urlReplacer","originalHost","destinationHost","content","urlReplaceRegExp","RegExp","replace","substring","args","startsWith","redirect","res","statusCode","setHeader","end","tokenLoginFunction","TOKEN_TYPE_CONFIG","personal","placeholder","caption","host","endpoint","regular","updateTokenUI","type","tokenInput","tokenCaption","info","innerHTML","showError","message","errorElement","textContent","classList","add","hideError","remove","setupEventHandlers","formWrapper","submitButton","addEventListener","async","e","preventDefault","value","trim","focus","tokenTypeSwitcher","document","getElementById","activeOption","querySelector","tokenType","dataset","token","response","fetch","method","headers","body","stringify","URL","window","location","origin","pathname","json","error","parseError","href","networkError","handleFormSubmission","key","click","initializeLoginForm","loginForm","contentWrapper","firstChild","rowTemplate","lastChild","cloneNode","orRow","innerText","setAttribute","helperForm","formContent","createElement","styleElement","head","appendChild","tokenTypeOptions","querySelectorAll","handleTokenTypeChange","target","forEach","opt","option","currentTarget","setupTokenTypeSwitcher","console","formSelector","observer","MutationObserver","mutations","mutation","disconnect","observe","childList","subtree","existingForm","hostOriginRegExp","PROXY_HEADER","initProxy","opts","rewritePath","baseURL","disableSSLValidation","miAPI","templateName","Error","fileType","import","createProxyMiddleware","selfHandleResponse","pathFilter","req","proxyIgnore","some","test","Array","isArray","rP","changeOrigin","autoRewrite","cookieDomainRewrite","warn","secure","on","proxyReq","referer","getHeader","personalAccessToken","originalUrl","rewritten","requestUrl","v7Features","internalPageName","u","m","match","segmentDecoded","decodeURIComponent","search","hash","rewriteDataPagePathForV7Proxy","path","cyan","yellow","blue","green","protocol","socket","setMaxListeners","once","setTimeout","destroyed","destroy","proxyRes","serverRes","includes","streamInterceptor","setHeaders","Object","entries","pipe","rewriteInterceptor","responseInterceptor","responseBuffer","fileTypeFromBuffer","reqUrl","searchParams","storageKey","lastRedirectKey","redirectCount","localStorage","getItem","Number","isNaN","func","params","URLSearchParams","debug","removeItem","setItem","Date","toISOString","slice","reqHost","urlPath","destinationPath","unescapedUrlReplaceRegExp","replacedContent","urlPathReplacer","err","errorMessage","stack","writable","writeHead","BaseAPI","axios","constructor","this","checkAuth","assign","accept","maxRedirects","then","catch","AssetsAPI","formdataModulePromise","super","getDownloadUrl","appId","getDownloadTemplateUrl","templateId","getUploadUrl","getUploadTemplateUrl","downloadPageAssets","withCredentials","responseType","data","uploadPageAssets","file","formData","FormData","File","assetFile","append","post","Referer","getUri","downloadTemplateAssets","uploadTemplateAssets","AssetsV7API","PAGE_DATA_FETCH_FRAGMENT","PAGE_TEMPLATE_FETCH_FRAGMENT","MAINTENANCE_SUFFIX","unavailablePageTemplateDataError","isUnavailableJsonApiError","PageAPI","getAll","Accept","Pragma","Expires","pages","id","page","getPageContent","create","PageTemplateAPI","internal_name","page_templates","page_template","getTokenErrorInfo","status","lowerMessage","toLowerCase","code","userFriendlyMessage","suggestions","TEMPLATE_PAGE_NAME","axiosInstanceCache","MiAPI","pageTemplate","pageTitle","pageVars","isV710OrHigher","templateLoaded","templateLoadedResolve","templateLess","assetsApi","pageApi","pageTemplateApi","Promise","cacheKey","process","env","NODE_TLS_REJECT_UNAUTHORIZED","httpsAgent","https","Agent","keepAlive","rejectUnauthorized","timeout","httpAgent","http","defaults","isTemplateLoaded","clearHeaders","obj","undefined","keys","authorization","escapeRegExp","updateHeaders","localTemplateHTML","getPageTemplate","red","template_id","find","p","enabled","visible_in_homepage","getPageVariables","pageId","tags","template","parsed","reason","getPageInfo","pageIdToFetch","fetchV7Page","fetchLegacyPage","handlePageFetchError","buildPage","miHudLess","result","v","escapedName","pageVarRegex","dom","JSDOM","placeholderText","container","scripts","length","insertBefore","item","title","text","titleEl","serialize","getAssets","pageInfo","templateInfo","updateAssets","assets","validateCredentials","testHeaders","isValid","errorInfo","cleanup","normalizedHeaders","context","contextPrefix","suggestion","index","logTokenError","tokenErrorInfo","BUILD_MANIFEST_FILE_NAME","walkDir","dir","baseDir","excludeFiles","Set","readdirSync","withFileTypes","files","entry","fullPath","join","relativePath","relative","isDirectory","push","isFile","sha256OfContent","filePath","createHash","update","digest","stripUrlUserInfo","normalizeRepositoryUrl","normalizedUrl","scpLikeMatch","repositoryPath","sshProtocolMatch","gitProtocolMatch","writeBuildVersionManifest","config","outDir","versionFileTemplate","packageVersion","outDirResolved","cwd","statSync","throwIfNoEntry","manifestDate","resolvedVersionFileTemplate","versionFileName","currentDate","resolveVersionFileName","allPaths","checksum","hashesConcatenated","sort","map","computeChecksum","buildFingerprint","normalizedEntries","computeBuildFingerprint","helperVersion","modulePath","currentDir","dirname","packageJsonPath","packageStat","packageJson","parentDir","resolveHelperVersion","branchName","configBranchName","ciBranchEnvVars","variableName","currentBranchName","execSync","encoding","stdio","resolveBranchName","packageBranchName","manifest","schemaVersion","date","repositoryUrl","packageRepositoryUrl","manifestPath","buildManifestPath","buildManifest","manifestType","generatedAt","versionFile","versionFileSchemaVersion","compat","versionFileRequired","writeFileSync","TEMPLATE_PART_PAGE_NAME","TEMPLATE_PART_DATE","DIRNAME","pluginPath","node_modules_path","metaDirPath","metaFilePath","TEMPLATE_VARIABLES_FILE_NAME","DistService","backupFolder","backupNameTemplate","dateFormat","pageName","currentMeta","distZipFolder","distZipFilename","nextBuild","syncOptions","syncMeta","checkMeta","fs","stat","mkdir","readMetaFile","readFile","writeMetaFile","meta","writeFile","getLatestSavedBackup","lastBackupName","backupPath","backupName","getBackupMeta","pathToPosix","normalizeExtractedRootDir","extractedDir","readdir","listFilesRecursive","rootDir","buildManifestChecksum","crypto","buildBackupFingerprint","versionFileTemplateMatcher","placeholderPattern","segments","lastIndex","exec","staticPart","trailingStaticPart","isTemplateVariablesBasename","fileBasename","pickTemplateVariablesFromBackupZip","relativePaths","contentRootDir","basename","absolutePath","fileData","actualHash","manifestHash","resolveBackupAnalysisFromZip","backupFile","tempDir","mkdtemp","os","tmpdir","zipPath","recursive","extractZip","buildManifestCandidates","filter","buildManifestAbsolutePath","versionManifestPath","requestedVersionFile","exactMatchCandidates","basenameMatchCandidates","resolvedCandidates","versionFileMatcher","versionManifestCandidates","normalizedManifestFiles","templateVariables","manifestChecksum","manifestFileActualHashes","versionManifestHashMismatches","versionManifestAbsolutePath","expectedHash","expected","actual","mismatchedManifestPaths","fingerprintFiles","unknownFiles","prototype","hasOwnProperty","call","backupFingerprint","buildManifestMismatch","mainHash","allFilesInMeta","Boolean","rm","force","analyzeBackup","getPublicTemplateVariablesHash","templateVariablesPath","saveTemplateVariablesFile","saveBackup","precomputedAnalysis","resolvedAnalysis","resolvedBackupFileHash","lastBackupHash","lastMainHash","backupDate","filename","lastBackupDate","finally","buildNewAssets","buildNextAssets","buildCommand","reject","proc","child_process","spawn","NODE_ENV","msg","String","saveBackupAndBuild","projectRoot","distDir","runNextBuild","zipDirectory","nextBin","nextPkgPath","createRequire","execPath","zip","JSZip","addDir","current","full","generateAsync","compression","ClientService","server","eventMap","syncActionResolvers","onInfoDataRequest","bind","onTemplateSync","onTemplateSyncActionResponse","init","ws","event","handler","clearAllPendingSyncActions","resolveSyncAction","requestId","approved","clearTimeout","timeoutId","delete","_data","client","send","payload","requestSyncAction","randomUUID","timeoutMs","syncActionTimeoutMs","distService","clientInjectionPlugin","canSync","currentAssets","isAxiosError","validation","refresh","validationError","cause","httpStatus","newAssets","backupAnalysis","onlyTemplateVariablesMismatch","mm","templateVarMismatches","otherManifestMismatches","mixedTemplateAndOthers","pathsForVersionModal","promptReplaceTemplateVariables","confirmText","cancelText","cancelled","maxPaths","paths","listed","remainder","fileList","suffix","Buffer","updateResult","backupMeta","backupFilename","currentHash","syncedAt","syncError","FILE_EXTENSION_REGEX","DEFAULT_TTL","DEFAULT_MAX_SIZE","DEFAULT_MAX_ITEMS","EnhancedCache","memoryCache","Cache","totalSize","maxSize","maxItems","put","ttl","oldItem","size","itemsToRemove","sortedKeys","a","b","itemA","itemB","timestamp","i","del","liveKeys","oldestKey","getTotalSize","getItemCount","cache","createResponseBuffer","chunks","alloc","totalLength","reduce","sum","chunk","byteLength","concat","initProxyCache","devServer","next","cleanUrl","split","generateCacheKey","cacheItem","header","setResponseHeaders","write","originalEnd","originalWrite","callback","hasHeader","safeEncoding","from","isBuffer","finalBuffer","responseSize","getHeaders","now","toFixed","finalEncoding","initRewriteResponse","predicate","rewrite","buffers","cb","contentEncoding","unzipSync","brotliDecompressSync","inflateSync","decodeContent","bufferEncoding","endCallback","gzipSync","brotliCompressSync","deflateSync","encodeContent","initPPRedirect","base","baseWithoutTrailingSlash","endsWith","parsedUrl","findPaths","redirectUrl","AuthProvider","state","isAuthenticated","isRedirected","lastChecked","listeners","getState","setAuthenticated","authenticated","notifyListeners","setRedirected","redirected","updateState","updates","reset","subscribe","listener","authProvider","apiResponseCache","getCachedResponse","cached","setCachedResponse","DEFAULT_REDIRECT_URL","initLoadPPData","applyUrlRegExp","mi","appBase","isNeedTemplateLoad","requestPath","isApplyRequest","isAppNavigation","normalizedBase","isUnderBase","dest","isHtmlDocumentRequest","authState","handleTemplateLoad","encodeURIComponent","handlePageInfoOnly","options","redirectOnAuthFailure","clear","success","handleLoadError","loadPageData","operationType","isAuthError","fullRedirectUrl","createInternalServer","app","express","use","urlencoded","extended","internalServer","RequestStore","insertOrder","maxMemory","allocateId","storedEntry","bodyBytes","requestBody","responseBody","requestBodyTruncated","responseBodyTruncated","oldest","shift","old","list","duration","source","requestSize","toUpperCase","q","limit","isFinite","offset","Math","max","memoryUsage","SKIP_PREFIXES","SKIP_EXACT","createRequestCaptureMiddleware","store","captureLimit","startTime","reqChunks","reqSize","reqTruncated","origReqEmit","emit","buf","resChunks","resSize","resTruncated","origWrite","origEnd","captureChunk","ArrayBuffer","isView","buffer","byteOffset","getWriteEncoding","detectSource","finalized","requestHeaders","responseHeaders","finalize","INSPECTOR_PATH","routesInstalled","registerInspectorRoutes","activeStore","query","parsedLimit","parseInt","items","requests","total","_req","memoryUsageFormatted","formatBytes","maxMemoryFormatted","requestContentType","normalizeHeaderValue","responseContentType","requestBodySize","responseBodySize","ok","getInspectorHtml","bytes","DEV_PANEL_POSITIONS","validatePPDevConfig","miMode","mode","appType","apiVersion","miUrl","MI_BACKEND_URL","include","devPanel","position","normalizePPDevConfig","proxy","build","sync","inspector","integrateMiTopBar","addSharedComponentsScripts","addRootElement","resolvedName","defaultVersionFileTemplate","distZip","zipCfg","versionPlugin","outFileName","fileName","inDir","vfCfg","imageOptimizer","fileNameTemplate","imgCfg","imageOptimisations","backendBaseURL","enableProxyCache","proxyCacheTTL","cacheTtl","tls","allowSelfSigned","syncBackupsDir","backupsDir","MI_ACCESS_TOKEN","inspectorEnabled","inspectorMaxMemory","inspectorCaptureLimit","devPanelPosition","devPanelHidden","hidden","devPanelAutoHide","autoHide","vitePPDev","isFirstRequest","apply","transformIndexHtml","_html","_ctx","html","tag","injectTo","children","random","configureServer","lastIndexOf","middlewares","reqStore","baseUrlHost","miConfig","isIndexRegExp","proxyPassMiddleware","sendErrorResponse","details","handleTokenValidationError","enhancedErrorInfo","errorCode","Authorization","user","user_id","Token","users","backupDir"],"mappings":"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"}