@metricinsights/pp-dev 1.0.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -0
- package/README.md +72 -11
- package/dist/CHANGELOG.md +34 -0
- package/dist/README.md +72 -11
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/index-ctxv-2Kt.js +2 -0
- package/dist/cjs/index-ctxv-2Kt.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/package.json +7 -5
- package/dist/cjs/plugin-cgWPoZgR.js +2 -0
- package/dist/cjs/plugin-cgWPoZgR.js.map +1 -0
- package/dist/cjs/plugin.js +1 -1
- package/dist/cjs/{version-plugin-DsC5NLoX.js → version-plugin-Bhywa-Hu.js} +2 -2
- package/dist/cjs/{version-plugin-DsC5NLoX.js.map → version-plugin-Bhywa-Hu.js.map} +1 -1
- package/dist/esm/cli.js +1 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/index-N58WZBr_.js +2 -0
- package/dist/esm/index-N58WZBr_.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/package.json +7 -5
- package/dist/esm/plugin-ClbE2EOy.js +2 -0
- package/dist/esm/plugin-ClbE2EOy.js.map +1 -0
- package/dist/esm/plugin.js +1 -1
- package/dist/esm/{version-plugin-BGWVTSsN.js → version-plugin-Lyuzh4c2.js} +2 -2
- package/dist/esm/{version-plugin-BGWVTSsN.js.map → version-plugin-Lyuzh4c2.js.map} +1 -1
- package/dist/types/index.d.ts +10 -2
- package/package.json +7 -5
- package/scripts/patch-npm-bundled-vulnerabilities.mjs +1 -0
- package/dist/cjs/index-DeUfAH6g.js +0 -2
- package/dist/cjs/index-DeUfAH6g.js.map +0 -1
- package/dist/cjs/plugin-Cm9vRLCu.js +0 -2
- package/dist/cjs/plugin-Cm9vRLCu.js.map +0 -1
- package/dist/esm/index-DOjGFYJ7.js +0 -2
- package/dist/esm/index-DOjGFYJ7.js.map +0 -1
- package/dist/esm/plugin-B2ocw-wb.js +0 -2
- package/dist/esm/plugin-B2ocw-wb.js.map +0 -1
|
@@ -21,6 +21,7 @@ function replaceDir(src, dest) {
|
|
|
21
21
|
if (existsSync(npmRoot)) {
|
|
22
22
|
replaceDir(join(root, 'node_modules', 'brace-expansion'), join(npmRoot, 'node_modules', 'brace-expansion'));
|
|
23
23
|
replaceDir(join(root, 'node_modules', 'ip-address'), join(npmRoot, 'node_modules', 'ip-address'));
|
|
24
|
+
replaceDir(join(root, 'node_modules', 'tar'), join(npmRoot, 'node_modules', 'tar'));
|
|
24
25
|
replaceDir(
|
|
25
26
|
join(root, 'node_modules', 'picomatch'),
|
|
26
27
|
join(npmRoot, 'node_modules', 'tinyglobby', 'node_modules', 'picomatch'),
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("child_process"),t=require("./plugin-Cm9vRLCu.js"),n=require("fs"),r=require("path"),i=require("url");require("./helpers.js");const s=require("vite"),o=require("ejs");var a="undefined"!=typeof document?document.currentScript:null;const c=e=>e&&"object"==typeof e&&"default"in e?e.default:e;function l(e){if(e&&"object"==typeof e&&"default"in e)return e;const t=Object.create(null);if(e)for(const n in e)t[n]=e[n];return t.default=e,Object.freeze(t)}const p=l(n),u=l(r),f=c(r),d=c(o),m=u.dirname(t.PP_DEV_CLIENT_ENTRY),P=u.join(m,"index.html");let g=null;function h(e){return{css:u.posix.join(e,t.PACKAGE_NAME,"client/client.css"),js:u.posix.join(e,t.PACKAGE_NAME,"client/client.js")}}function y(e){return function(){if(g)return g;const e=p.readFileSync(P,{encoding:"utf8"});return g=d.compile(e,{openDelimiter:"{",closeDelimiter:"}",async:!1,rmWhitespace:!0,compileDebug:!1}),g}()({PACKAGE_NAME:t.PACKAGE_NAME,VERSION:t.VERSION,backendBaseURL:e.backendBaseURL,templateLess:e.templateLess,appId:e.appId,canSync:e.canSync??!0,devPanelPosition:e.devPanelPosition??"bottom-right",devPanelHidden:e.devPanelHidden??!1,devPanelAutoHide:e.devPanelAutoHide??!1})}const E={".js":"text/javascript; charset=utf-8",".css":"text/css; charset=utf-8",".map":"application/json; charset=utf-8"};let _;try{_="undefined"!=typeof __filename&&__filename?u.resolve(u.dirname(__filename),".."):void 0!=={url:"undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-DeUfAH6g.js",document.baseURI).href}&&("undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-DeUfAH6g.js",document.baseURI).href,1)&&("undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-DeUfAH6g.js",document.baseURI).href)?u.resolve(i.fileURLToPath(new URL(".","undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-DeUfAH6g.js",document.baseURI).href)),".."):process.cwd()}catch{_=process.cwd()}const v=s.normalizePath(u.join(t.PP_DEV_PACKAGE_DIR,"dist/client")),j=new RegExp(`^\\/?${t.PACKAGE_NAME}\\/client\\/(.*)$`);let R=null,T=null;function A(e){return{name:"pp-dev:client",apply:"serve",config:e=>(e.optimizeDeps?.exclude?.push(`${t.PACKAGE_NAME}/client`),e),resolveId(e){const t=e.match(j);if(t){const e=s.normalizePath(u.join(v,t[1]));return e.startsWith(`${v}/`)?{id:e}:null}},transformIndexHtml:async(e,n)=>{const r=n.server?.config.base||"",i=function(){if(T)return T;const e=u.resolve(_,"client","index.html");return R||(R=p.readFileSync(e,{encoding:"utf8"})),T=d.compile(R,{openDelimiter:"{",closeDelimiter:"}",async:!0,cache:!0,filename:e,rmWhitespace:!0,compileDebug:!1}),T}(),s=h(r),o={html:e,tags:[{tag:"link",injectTo:"head",attrs:{rel:"stylesheet",href:s.css}}]},{backendBaseURL:a,templateLess:c,appId:l,canSync:f=!0,devPanelPosition:m="bottom-right",devPanelHidden:P=!1,devPanelAutoHide:g=!1}=n.server?.config.clientInjectionPlugin||{},y={PACKAGE_NAME:t.PACKAGE_NAME,VERSION:t.VERSION,backendBaseURL:a,templateLess:c,appId:l,canSync:f,devPanelPosition:m,devPanelHidden:P,devPanelAutoHide:g};return o.tags.push({tag:"div",injectTo:"body-prepend",children:await i(y)}),o.tags.push({tag:"script",injectTo:"body-prepend",attrs:{src:s.js,type:"module"}}),o},configureServer(e){const n=s.normalizePath(u.resolve(e.config.root,u.dirname(t.PP_DEV_CLIENT_ENTRY)));e.config.server?.fs?.allow&&e.config.server.fs.allow.push(n)}}}const I=(e,t)=>` * ${t}`;function b(e){return`/*!\n${"***** DO NOT EDIT THIS CODE! *****\n***** ------- *****".replace(/^(.*)$/gm,I)}\n */`}async function w(){try{const[e,t]=await Promise.all([import("next"),import("next/constants.js")]);return{next:e.default,constants:t}}catch(e){throw new Error(`Next.js is required but not available. Please install Next.js as a dependency:\nnpm install next@^15\n\nThis package requires Next.js >=15 <17 as a peer dependency.\n\nError: ${e}`)}}const $=new Map,C=3e4;let L=null;function x(){const e=Date.now();if(L&&e-L.timestamp<6e4)return L.data;const t=process.cwd();try{const r=JSON.parse(n.readFileSync(f.resolve(t,"package.json"),{encoding:"utf-8",flag:"r"}));return L={data:r,timestamp:e},r}catch{const t={};return L={data:t,timestamp:e},t}}let S=null;async function D(e){const t=process.cwd(),r=`ts:${e}`,s=$.get(r);if(s&&Date.now()-s.timestamp<C)return s.data;let o=!1;if(/\.m[jt]s$/.test(e))o=!0;else if(/\.c[jt]s$/.test(e))o=!1;else{const e=x();o=!!e&&"module"===e.type}const a=await async function(){return S||(S=await import("esbuild")),S}(),c=await a.build({absWorkingDir:t,entryPoints:[e],outfile:"out.js",write:!1,target:"node24",platform:"node",bundle:!0,packages:"external",format:o?"esm":"cjs",mainFields:["main"],sourcemap:"inline",metafile:!0}),{text:l}=c.outputFiles[0],p=`${`pp-config.timestamp-${Date.now()}-${Math.random().toString(16).slice(2)}`}.js`,u=i.pathToFileURL(f.resolve(t,p)).toString();n.writeFileSync(p,l);let d={};try{const t=(await import(u)).default;d=t?.default||t,$.set(r,{data:d,timestamp:Date.now(),filePath:e})}finally{n.existsSync(p)&&n.unlink(p,()=>{})}return d}async function N(e){const t=`js:${e}`,n=$.get(t);if(n&&Date.now()-n.timestamp<C)return n.data;const r=(await import(i.pathToFileURL(e).toString())).default;return $.set(t,{data:r,timestamp:Date.now(),filePath:e}),r}async function U(e){const t=`json:${e}`,r=$.get(t);if(r&&Date.now()-r.timestamp<C)return r.data;const i=JSON.parse(n.readFileSync(e,{encoding:"utf-8"}));return $.set(t,{data:i,timestamp:Date.now(),filePath:e}),i}let O=null;function F(){return x()}async function H(){const e=function(){const e=Date.now();if(O&&e-O.timestamp<1e4)return O.files;const t=/\.config\.(([cm]?ts)|([cm]?js)|(json))$/,r=process.cwd(),i=n.readdirSync(r,{withFileTypes:!0}).filter(e=>e.isFile()&&t.test(e.name)).map(e=>e.name);return O={files:i,timestamp:e},i}();let r={},i=!1;const s=await async function(e,t){for(const n of t)if(e.includes(n)){if(/\.[cm]?ts$/i.test(n))return await D(n);if(/\.[cm]?js$/i.test(n))return await N(f.resolve(".",n));if(n.endsWith(".json"))return await U(f.resolve(".",n))}return null}(e,t.PP_DEV_CONFIG_NAMES);s&&(r=s,i=!0);const o=x()["pp-dev"];return i||!o||"object"!=typeof o||Array.isArray(o)||(r=o),r}const G=Object.freeze({__proto__:null,clearConfigCache:function(){$.clear(),L=null,O=null},getConfig:H,getPkg:F}),M=new Set(["mi","app","proxy","build","sync","inspector","devPanel"]);function k(t){if("string"==typeof t)return t;if(t&&"object"==typeof t&&"url"in t&&"string"==typeof t.url)return t.url;const n=["CI_REPOSITORY_URL","GIT_URL","BUILD_REPOSITORY_URI","CI_PROJECT_URL","BITBUCKET_GIT_HTTP_ORIGIN","BUILDKITE_REPO"];for(const e of n){const t=process.env[e];if("string"==typeof t&&t.trim())return t}const r=process.env.GITHUB_REPOSITORY;if("string"==typeof r&&r.trim()){return`${(process.env.GITHUB_SERVER_URL||"https://github.com").replace(/\/+$/,"")}/${r.replace(/^\/+/,"")}`}const i=process.env.CI_PROJECT_PATH;if("string"==typeof i&&i.trim()){return`${(process.env.CI_SERVER_URL||"https://gitlab.com").replace(/\/+$/,"")}/${i.replace(/^\/+/,"")}`}const s=process.env.BITBUCKET_REPO_FULL_NAME;if("string"==typeof s&&s.trim())return`https://bitbucket.org/${s.replace(/^\/+/,"")}`;const o=process.env.TRAVIS_REPO_SLUG;if("string"==typeof o&&o.trim())return`https://github.com/${o.replace(/^\/+/,"")}`;try{const t=e.execSync("git config --get remote.origin.url",{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();if(t)return t}catch{}}function V(e){return e?.ppDev||{}}exports.config=G,exports.createDevPanelAssetMiddleware=function(e){const n=u.posix.join(e,t.PACKAGE_NAME,"client")+"/",r=new Set(["client.js","client.css","client.js.map","client.css.map"]);return(e,t,i)=>{const s=(e.url??"").split("?")[0];if(!s.startsWith(n))return void i();const o=s.slice(n.length);if(!r.has(o))return void i();const a=u.join(m,o);p.readFile(a,(e,n)=>{e?i():(t.statusCode=200,t.setHeader("Content-Type",E[u.extname(o)]??"application/octet-stream"),t.setHeader("Cache-Control","no-cache"),t.end(n))})}},exports.getNextVersion=async function(){try{return(await import("next/package.json")).version}catch{return null}},exports.getPPDevConfigFromNextConfig=V,exports.getViteConfig=async function(){const e=F(),n=e.name,r=await H();t.validatePPDevConfig(r,n);const i=t.normalizePPDevConfig(r,n),{default:s}=await Promise.resolve().then(()=>require("./plugin.js")),o=[s(i),A()],{outDir:a,distZip:c,versionPlugin:l,imageOptimizer:p,templateLess:u,integrateMiTopBar:f}=i;if(f&&o.push(function(e){return{name:"mi-topbar-plugin",transformIndexHtml(){const t=[];return(!0===e||"object"==typeof e&&!0===e.addRootElement)&&t.push({tag:"div",injectTo:"body-prepend",attrs:{id:"mi-react-root"}}),(!0===e||"object"==typeof e&&!0===e.addSharedComponentsScripts)&&t.push({tag:"script",injectTo:"head-prepend",attrs:{src:"/auth/info.js"}},{tag:"script",injectTo:"head-prepend",attrs:{src:"/js/main.js",defer:"defer"}},{tag:"link",injectTo:"head-prepend",attrs:{href:"/css/main.css",rel:"stylesheet"}}),t}}}(f)),p){const{ViteImageOptimizer:e}=await import("vite-plugin-image-optimizer");o.push(e("object"==typeof p?p:void 0))}if(l){const{versionPlugin:t}=await Promise.resolve().then(()=>require("./version-plugin-DsC5NLoX.js"));o.push(t({outDir:a,packageVersion:e.version??"0.0.0",packageRepositoryUrl:k(e.repository),..."object"==typeof l?l:{}}))}if(c){const{default:e}=await import("vite-plugin-zip-pack");o.push({...e("object"==typeof c?c:{outFileName:`${n}.zip`}),enforce:"post"})}return{base:u?`${t.PATH_PAGE_PREFIX}/${n}`:`${t.PATH_TEMPLATE_PREFIX}/${n}`,server:{port:3e3},build:{minify:!1,assetsInlineLimit:4096,rollupOptions:{output:{banner:b}},outDir:a},css:{modules:{localsConvention:"dashes"}},ppDevConfig:i,plugins:o}},exports.injectDevPanel=function(e,t,n){if(!/<\/?(html|body|head)\b/i.test(e))return e;const{css:r,js:i}=h(t),s=`<link rel="stylesheet" href="${r}">`,o=`${y(n)}${`<script type="module" src="${i}"><\/script>`}`;let a=e,c=!1;if(/<\/head>/i.test(a)&&(a=a.replace(/<\/head>/i,`${s}</head>`),c=!0),/<body[^>]*>/i.test(a)){const e=c?"":s;a=a.replace(/(<body[^>]*>)/i,`$1${e}${o}`)}else a=`${c?"":s}${a}${o}`;return a},exports.isNextAvailable=async function(){try{return await import("next"),!0}catch{return!1}},exports.safeNextImport=w,exports.withPPDev=function(e,n){return async(r,i={})=>{try{const{constants:s}=await w(),{PHASE_DEVELOPMENT_SERVER:o}=s,a=await H(),c=F().name,l="function"==typeof e?await e(r,i):e,p=function(...e){const t={},n=t;for(const t of e)if(t)for(const[e,r]of Object.entries(t))void 0!==r&&(M.has(e)&&r&&"object"==typeof r&&!Array.isArray(r)?n[e]={...n[e]??{},...r}:n[e]=r);return t}(a,V(l),n);t.validatePPDevConfig(p,c);const u=t.normalizePPDevConfig(p,c),{templateLess:f,v7Features:d}=u,m=r===o,P=function(e,n,r,i){return r?i?n?`${t.PATH_PAGE_PREFIX}/${e}`:`${t.PATH_TEMPLATE_LOCAL_PREFIX}/${e}`:n?`${t.PATH_PAGE_PREFIX}/${e}`:`${t.PATH_TEMPLATE_PREFIX}/${e}`:`${t.PATH_PAGE_PREFIX}/${e}`}(u.templateName,f,m,d),g={basePath:P,trailingSlash:!!m||void 0};if(!f){const e=m&&d?t.PATH_TEMPLATE_LOCAL_PREFIX:t.PATH_TEMPLATE_PREFIX;g.assetPrefix=`${e}/${u.templateName}`}const h=Object.assign({},g,l);return Object.defineProperty(h,"ppDev",{value:p,enumerable:!1,configurable:!0}),h}catch(e){throw t.createLogger().error("Error in withPPDev:",{error:e instanceof Error?e:new Error(String(e))}),e}}};
|
|
2
|
-
//# sourceMappingURL=index-DeUfAH6g.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DeUfAH6g.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","CONTENT_TYPES","DIRNAME","__filename","resolve","url","document","require","pathToFileURL","href","_documentCurrentScript","tagName","toUpperCase","src","URL","baseURI","fileURLToPath","process","cwd","normalizePath","PP_DEV_PACKAGE_DIR","PACKAGE_REGEXP","RegExp","cachedTemplateContent","cachedTemplate","clientInjectionPlugin","opts","name","apply","config","optimizeDeps","exclude","push","resolveId","source","match","resolvedId","startsWith","id","transformIndexHtml","html","ctx","server","templatePath","cache","filename","assetPaths","result","tags","tag","injectTo","attrs","rel","templateData","children","type","configureServer","clientDir","root","allow","replacer","substring","$1","header","_chunk","replace","safeNextImport","next","constants","Promise","all","import","default","error","Error","configCache","Map","CACHE_TTL","packageJsonCache","getPackageJson","now","Date","timestamp","JSON","parse","flag","empty","esbuildModule","loadTsConfig","filePath","cacheKey","cached","get","isESM","test","pkg","esbuild","getEsbuild","build","absWorkingDir","entryPoints","outfile","write","target","platform","bundle","packages","format","mainFields","sourcemap","metafile","text","code","outputFiles","fileNameTmp","Math","random","toString","slice","fileUrl","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","Set","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","getPPDevConfigFromNextConfig","nextConfig","ppDev","assetPrefix","allowed","req","res","pathname","split","fileName","length","has","readFile","err","content","statusCode","setHeader","extname","end","version","templateName","ppDevConfig","validatePPDevConfig","normalizedPPDevConfig","normalizePPDevConfig","vitePPDev","then","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","linkTag","bodyPrepend","linkInjected","head","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
|
-
"use strict";const e=require("http-proxy-middleware"),t=require("url"),n=require("vite"),s=require("picocolors"),r=require("axios"),i=require("node:http"),a=require("node:https"),o=require("jsdom"),c=require("path"),l=require("fs"),d=require("crypto"),p=require("process"),u=require("child_process"),h=require("os"),f=require("module"),m=require("extract-zip"),g=require("jszip"),y=require("memory-cache"),v=require("zlib"),b=require("express"),x=require("node:crypto");var w="undefined"!=typeof document?document.currentScript:null;const k=e=>e&&"object"==typeof e&&"default"in e?e.default:e;function E(e){if(e&&"object"==typeof e&&"default"in e)return e;const t=Object.create(null);if(e)for(const n in e)t[n]=e[n];return t.default=e,Object.freeze(t)}const T=k(r),S=k(i),$=k(a),B=k(c),A=E(c),I=E(d),P=E(p),R=E(u),C=E(h),L=k(m),F=k(g),j=E(y),H=k(b),q=c.resolve("undefined"!=typeof __filename&&__filename||t.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:w&&"SCRIPT"===w.tagName.toUpperCase()&&w.src||new URL("plugin-Cm9vRLCu.js",document.baseURI).href),"../../.."),N=c.resolve("undefined"!=typeof __filename&&__filename||t.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:w&&"SCRIPT"===w.tagName.toUpperCase()&&w.src||new URL("plugin-Cm9vRLCu.js",document.baseURI).href),"../.."),D=l.existsSync(c.resolve(q,"package.json"))?q:N,O=c.resolve(D,"dist/client/client.js"),{version:M,name:U}=JSON.parse(l.readFileSync(c.resolve(D,"package.json")).toString()),_=M,z=U;let V=new Map;const Z="default",W=(e="info",t=Z)=>{if(V&&"function"==typeof V.has||(V=new Map),V.has(t))return V.get(t);if(t===Z){const s=n.createLogger(e);return V.set(t,s),s}const s=n.createLogger(e);return V.set(t,s),s},J=s.createColors(),G=(e,t,n)=>{const s=new RegExp(`(!!)?(https?(:(\\\\)?/(\\\\)?/)${e})`,"gi");return n.replace(s,(e,...n)=>e.startsWith("!!")?n[1]:`http${n[2]}${t}`)},K=(e,t,n)=>{e.setHeader("location",t),e.statusCode=n,e.end()};const X=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"),c=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(),c,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"),c=document.createElement("style");c.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(c),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 l=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"),f=o.querySelector(".helper-login-wrapper");l&&d&&p&&u&&h&&f?(!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))})})}(l,d,p),r(f,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 c=document.querySelector(a);c&&(o.disconnect(),i(c))},Y=/^(https?:\/\/)([^/]+)(\/.*)?$/i,Q="X-PP-Proxy";function ee(n){const{rewritePath:s=/^\/(?!p[tl]).*/i,baseURL:r="",disableSSLValidation:i=!1,miAPI:a,templateName:o}=n;if(!r)throw new Error("Base url is required");const c=r.replace(Y,"$2"),l=r.replace(Y,"$1$2"),d=import("file-type"),p=W();return e.createProxyMiddleware({selfHandleResponse:!0,pathFilter:(e,t)=>!(n.proxyIgnore||[]).some(t=>"string"==typeof t?e.startsWith(t):"function"!=typeof t.test||t.test(e))&&("string"==typeof s?e.startsWith(s):Array.isArray(s)?s.some(t=>e.startsWith(t)):"function"==typeof s.test&&s.test(e)),target:r,changeOrigin:!0,autoRewrite:!0,cookieDomainRewrite:{[c]:"localhost"},logger:{info:()=>{},warn:()=>{},error:()=>{}},secure:!i,headers:{host:c,origin:l},on:{proxyReq(e,n,s){const i=n.headers.host,c=e.getHeader("referer");i&&c&&"string"==typeof c&&e.setHeader("referer",c.replace(new RegExp(`https?://${i}`),r)),a.personalAccessToken&&e.setHeader("Authorization",`Bearer ${a.personalAccessToken}`);const l=n.url??"/",d=function(e,n,s,r){if(!n||!s||!r||s===r)return e;try{const n=new t.URL(e,"http://localhost"),i=n.pathname.match(/^\/data\/page\/([^/]+)(\/.*)?$/);if(!i)return e;let a;try{a=decodeURIComponent(i[1])}catch{a=i[1]}if(a!==s)return e;return`/data/page/${r}${i[2]??""}`+n.search+n.hash}catch{return e}}(l,a.v7Features,o,a.internalPageName);return d!==l&&(n.url=d,e.path=d,console.info(`${J.cyan("Rewrites data page to correct internal page name")}: ${J.yellow(l)} ${J.blue("→")} ${J.green(d)}`)),p.info(`${J.blue("Proxies request:")} ${J.green(n.method)} ${n.url} -> ${J.green(e.method)} ${e.protocol}//${e.host}${e.path}`),n.socket.setMaxListeners(0),n.socket.once("close",()=>{setTimeout(()=>{e.destroyed||e.destroy()},200)}),e},proxyRes:(t,n,s)=>{if(t.headers["content-type"]?.includes("text/event-stream")||t.headers["transfer-encoding"]?.includes("chunked")&&"no"===t.headers["x-accel-buffering"]){p.info(`${J.blue("Start streaming for request:")} ${J.green(n.method)} ${n.url}`);const e=async(e,t,n)=>{n.setHeader(Q,1),n.setHeaders(new Map(Object.entries(e.headers))),e.pipe(n)};return e(t,n,s)}const r=e.responseInterceptor(async(e,t,n,s)=>{s.setHeader(Q,1);if(await(await d).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")){const e=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)};t+=`<script>(${e.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(${X.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",G(c,r,t))}});return r(t,n,s)},error(e,t,n){const s=`Proxy error: "${e.message}" when trying to "${t.method} ${t.url}"\n\n${e.stack}`;p.error(s),n.writable&&n.writeHead(500,{"Content-Type":"text/plain"}),n.end(s)}}})}class te{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 ne extends te{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 se extends ne{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 re="Something went wrong when fetching page data",ie="Something went wrong when fetching page template data",ae=" The instance may be down or in maintenance mode. Please try again later.";function oe(){return new Error(`${ie}.${ae}`)}function ce(e){return e instanceof Error&&(e.message.includes(re)||e.message.includes(ie))}class le extends te{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(`${re}.${ae}`);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 de extends te{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 oe();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 oe();return n.page_template}}function pe(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 ue="[DEV PAGE. DO NOT DELETE]",he=new Map;class fe{#e;#t;#n=null;#s;#r;#i;#a;#o;#c;#l;internalPageName;appId;templateLess;assetsApi;pageApi;pageTemplateApi;logger;constructor(e,t){const{headers:n={},appId:s,templateLess:r=!0,disableSSLValidation:i=!1,v7Features:a=!1,personalAccessToken:o}=t||{};this.#e=n,this.#r=[],this.#s="",this.#i=a,this.#a=o,this.#o=!1,this.#c=Promise.resolve(!1);const c=`${e}:${i}`;if(he.has(c))this.#t=he.get(c);else{i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0");const t=new $.Agent({keepAlive:!1,...i?{rejectUnauthorized:!1}:{}});this.#t=T.create({baseURL:e,headers:n,timeout:3e4,maxRedirects:5,httpAgent:new S.Agent({keepAlive:!1}),httpsAgent:t}),i&&(T.defaults.httpsAgent=t),he.set(c,this.#t)}this.appId=s,this.templateLess=r,this.assetsApi=new(a?se:ne)(this.#t),this.pageApi=new le(this.#t),this.pageTemplateApi=new de(this.#t),this.logger=W()}async isTemplateLoaded(){return this.#c}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.#c||this.#n||(this.#c=new Promise(e=>{this.#l=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(J.green("Page fetched")),e)).catch(async t=>{if(this.#l(!1),ce(t))throw t;throw await this.pageApi.checkAuth(this.#d(e))?(this.logger.error(J.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(J.green("Local page template fetched")),this.#l(!0),this.#n}let t=(await this.pageApi.getAll(this.#d(e)).then(e=>(this.logger.info(J.green("Page list fetched")),e)).catch(async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#d(e))?(this.logger.error(J.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===ue);return t||(this.logger.warn(J.yellow("Creating dev page template...")),t=await this.pageApi.create({enabled:"Y",name:ue,internal_name:"dev-page-template",visible_in_homepage:"Y"},this.#d(e)).then(e=>(this.logger.info(J.green("Dev page created")),e)).catch(e=>{throw this.logger.error(J.red(`Error creating dev page: ${e.message}`)),this.#l(!1),new Error(`Error when creating dev page.\n That can be caused by missing permissions or page with name "${ue}" already exists`)})),await this.pageApi.getPageContent(t.internal_name,this.#d(e)).then(e=>(this.#n=e,e)).then(e=>(this.#l(!0),this.logger.info(J.green("Page template fetched")),e)).catch(e=>{throw this.#l(!1),this.logger.error(J.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(J.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.#f(e,s)}}async#u(e,t){const n=await this.pageApi.get(e,t);return this.logger.info(J.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)}#f(e,t){if(ce(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(J.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 o.JSDOM(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=pe(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"!==pe(e).code){const t=pe(e);throw this.logger.error(J.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,n){const s=pe(t),r=`[${n}] `;e.error(J.red(`${r}${s.userFriendlyMessage}`)),e.error(J.red(`Status: ${s.status} (${s.code})`)),e.error(J.red(`Details: ${s.message}`)),s.suggestions.length>0&&(e.info(J.yellow("Suggestions:")),s.suggestions.forEach((t,n)=>{e.info(J.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 me="BUILD-MANIFEST.json";function ge(e,t,n=new Set){const s=l.readdirSync(e,{withFileTypes:!0}),r=[];for(const i of s){const s=B.join(e,i.name),a=B.relative(t,s).replace(/\\/g,"/");i.isDirectory()?r.push(...ge(s,t,n)):i.isFile()&&!n.has(a)&&r.push(s)}return r}function ye(e){const t=l.readFileSync(e);return d.createHash("sha256").update(t).digest("hex")}function ve(e){return e.replace(/^([a-z][a-z\d+.-]*:\/\/)(?:[^/?#@]+(?::[^/?#@]*)?@)/i,"$1")}function be(e){const t=e.trim().replace(/^git\+/,"").replace(/\.git$/i,""),n=t.match(/^([^@]+)@([^:]+):(.+)$/);if(n){const[,,e,t]=n;return ve(`https://${e}/${t.replace(/^\/+/,"")}`)}const s=t.match(/^ssh:\/\/(?:[^@]+@)?([^/:]+)(?::\d+)?\/(.+)$/i);if(s){const[,e,t]=s;return ve(`https://${e}/${t.replace(/^\/+/,"")}`)}const r=t.match(/^git:\/\/([^/]+)\/(.+)$/i);if(r){const[,e,t]=r;return ve(`https://${e}/${t.replace(/^\/+/,"")}`)}return ve(t)}function xe(e){if(!1===e.enabled)return;const{outDir:n,versionFileTemplate:s,packageVersion:r}=e,i=B.resolve(process.cwd(),n);if(!l.statSync(i,{throwIfNoEntry:!1})?.isDirectory())return;const a=(new Date).toISOString(),o=s??"VERSION-v{packageversion}-{currentDate}.json",c=function(e,t,n){return e.replace(/\{packageversion\}/g,t).replace(/\{currentDate\}/g,n)}(o,r,a.replace(/:/g,"-")),p=ge(i,i,new Set([c,me])),h={};for(const e of p){h[B.relative(i,e).replace(/\\/g,"/")]=ye(e)}const f=function(e){const t=Object.keys(e).sort().map(t=>e[t]).join("");return d.createHash("sha256").update(t).digest("hex")}(h),m=function(e){const t=Object.keys(e).sort().map(t=>`${t}:${e[t]}`).join("\n");return d.createHash("sha256").update(t,"utf-8").digest("hex")}(h),g=function(){const e=t.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:w&&"SCRIPT"===w.tagName.toUpperCase()&&w.src||new URL("plugin-Cm9vRLCu.js",document.baseURI).href);let n=B.dirname(e);for(;;){const e=B.join(n,"package.json"),t=l.statSync(e,{throwIfNoEntry:!1});if(t?.isFile())try{const t=JSON.parse(l.readFileSync(e,"utf-8"));if("string"==typeof t.version)return t.version}catch{}const s=B.dirname(n);if(s===n)return"unknown";n=s}}(),y=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=u.execSync("git rev-parse --abbrev-ref HEAD",{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();if(e&&"HEAD"!==e)return e}catch{}}(e.packageBranchName),v={schemaVersion:1,version:`v${r}`,date:a,checksum:f,files:h,repositoryUrl:e.packageRepositoryUrl?be(e.packageRepositoryUrl):void 0,branchName:y,helperVersion:g},b=B.join(i,c),x=B.join(i,me),k={schemaVersion:1,manifestType:"pp-dev-build-manifest",generatedAt:a,versionFile:c,versionFileTemplate:o,versionFileSchemaVersion:1,buildFingerprint:m,compat:{versionFileRequired:!0}};l.writeFileSync(b,JSON.stringify(v,null,2),"utf-8"),l.writeFileSync(x,JSON.stringify(k,null,2),"utf-8")}const we="pageName",ke="date",Ee=A.dirname("undefined"!=typeof __filename&&__filename||t.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:w&&"SCRIPT"===w.tagName.toUpperCase()&&w.src||new URL("plugin-Cm9vRLCu.js",document.baseURI).href)),Te=A.resolve(Ee,"..",".."),Se=A.resolve(Te,"..",".."),$e=A.resolve(Se,".pp-dev-meta"),Be=A.resolve($e,"sync-service.meta.json"),Ae="BUILD-MANIFEST.json",Ie="__template_variables.json";class Pe{backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;versionFileTemplate;nextBuild;logger;constructor(e,t){this.pageName=e;const{backupFolder:n=A.resolve(P.cwd(),"backups"),distZipFolder:s=A.resolve(P.cwd(),"dist-zip"),distZipFilename:r=`${this.pageName}.zip`,backupNameTemplate:i=`{${we}}-{${ke}}.zip`,versionFileTemplate:a="VERSION-v{packageversion}-{currentDate}.json",dateFormat:o=e=>e.toISOString().replace(/:/g,"-").replace(/\..*$/,""),nextBuild:c}=t||{};this.backupFolder=n,this.backupNameTemplate=i,this.dateFormat=o,this.distZipFolder=s,this.distZipFilename=r,this.versionFileTemplate=a,this.nextBuild=c,this.syncMeta(),this.logger=W()}async checkMeta(){try{await l.promises.stat($e)}catch{await l.promises.mkdir($e)}try{await l.promises.stat(this.backupFolder)}catch{await l.promises.mkdir(this.backupFolder)}}async readMetaFile(){return await this.checkMeta(),await l.promises.readFile(Be,{encoding:"utf-8"}).catch(()=>"{}")}async writeMetaFile(e){return await this.checkMeta(),await l.promises.writeFile(Be,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=A.resolve(this.backupFolder,e);try{return await l.promises.stat(t),t}catch{return null}}backupName(e,t=new Date){return this.backupNameTemplate.replace(`{${we}}`,e).replace(`{${ke}}`,this.dateFormat(t))}getBackupMeta(){return this.currentMeta}pathToPosix(e){return e.replace(/\\/g,"/")}async normalizeExtractedRootDir(e){let t=e;for(;;){const e=await l.promises.readdir(t,{withFileTypes:!0});if(1!==e.length||!e[0]?.isDirectory())return t;t=A.join(t,e[0].name)}}async listFilesRecursive(e){const t=await l.promises.readdir(e,{withFileTypes:!0}),n=[];for(const s of t){const t=A.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 I.createHash("sha256").update(t).digest("hex")}buildBackupFingerprint(e){const t=Object.keys(e).sort().map(t=>`${t}:${e[t]}`).join("\n");return I.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===Ie}async pickTemplateVariablesFromBackupZip(e,t){const n=e.find(e=>A.basename(e)===Ie);if(!n)return null;const s=A.join(t,n),r=await l.promises.readFile(s);return{relativePath:n,content:r,actualHash:I.createHash("sha256").update(r).digest("hex"),manifestHash:null}}async resolveBackupAnalysisFromZip(e){const t=await l.promises.mkdtemp(A.join(C.tmpdir(),"pp-dev-backup-")),n=A.join(t,"backup.zip"),s=A.join(t,"extracted");try{await l.promises.mkdir(s,{recursive:!0}),await l.promises.writeFile(n,e),await L(n,{dir:s});const t=await this.normalizeExtractedRootDir(s),r=(await this.listFilesRecursive(t)).map(e=>this.pathToPosix(A.relative(t,e))),i=r.filter(e=>A.basename(e)===Ae);if(i.length>1)throw new Error(`Expected at most one ${Ae} in backup ZIP, found ${i.length}`);const a=1===i.length?i[0]:null;let o=null;if(a){const e=A.join(t,a);if(o=JSON.parse(await l.promises.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 c=null;if(o){const e=this.pathToPosix(o.versionFile.trim()),t=r.filter(t=>t===e),n=r.filter(t=>A.basename(t)===A.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&&(c=s[0]),!0===o.compat?.versionFileRequired&&null===c)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(A.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&&(c=t[0])}const d={};let p=null,u=null;const h={};let f=[];if(c){const e=A.join(t,c),n=JSON.parse(await l.promises.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}`);d[this.pathToPosix(e)]=t}if(this.buildManifestChecksum(d)!==n.checksum)throw new Error("VERSION manifest checksum does not match its files map");for(const[e,n]of Object.entries(d)){const s=A.join(t,e),r=await l.promises.readFile(s).catch(()=>null);if(!r)throw new Error(`VERSION manifest references missing file: ${e}`);const i=I.createHash("sha256").update(r).digest("hex");h[e]=i,i!==n&&f.push({relativePath:e,expected:n,actual:i}),this.isTemplateVariablesBasename(A.basename(e))&&(p={relativePath:e,content:r,actualHash:i,manifestHash:n})}f.length>0&&this.logger.warn(J.yellow(`[DistService] VERSION manifest hash mismatch for ${f.length} file(s) (confirm in UI): ${f.map(e=>e.relativePath).join(", ")}`))}const m=new Set(f.map(e=>e.relativePath)),g={},y=[];for(const e of r){if(e===a)continue;if(c&&e===c)continue;if(c&&Object.prototype.hasOwnProperty.call(g,e))continue;const n=A.join(t,e),s=await l.promises.readFile(n),r=I.createHash("sha256").update(s).digest("hex");c&&Object.prototype.hasOwnProperty.call(d,e)?g[e]=m.has(e)?h[e]:d[e]:c?(g[e]="__NOT_IN_VERSION_FILE__",y.push(e)):g[e]=r}p||(p=await this.pickTemplateVariablesFromBackupZip(r,t));const v=this.buildBackupFingerprint(g);let b=null;return o&&c&&v!==o.buildFingerprint&&(b={expected:o.buildFingerprint,actual:v},this.logger.warn(J.yellow(`[DistService] Build manifest fingerprint mismatch (confirm in UI): expected ${o.buildFingerprint}, got ${v}`))),{backupFingerprint:v,unknownFiles:y,templateVariables:p,mainHash:u,allFilesInMeta:Boolean(c&&0===y.length),buildManifestMismatch:b,versionManifestHashMismatches:f}}finally{await l.promises.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=A.resolve(P.cwd(),"public",Ie),t=await l.promises.readFile(e).catch(()=>null);return t?I.createHash("sha256").update(t).digest("hex"):null}async saveTemplateVariablesFile(e){const t=A.resolve(P.cwd(),"public",Ie);return await l.promises.mkdir(A.dirname(t),{recursive:!0}),await l.promises.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(J.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(J.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 l.promises.writeFile(A.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(J.cyan("[DistService] Build started"));const s=R.spawn("node",[A.resolve(Te,"./bin/pp-dev.js"),"build"],{cwd:P.cwd(),env:Object.assign({},P.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(J.cyan("[DistService] Build finished"))});const t=A.resolve(P.cwd(),this.distZipFolder,this.distZipFilename);if(!await l.promises.stat(t))throw new Error(`File ${t} not found`);return await l.promises.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(J.cyan("[DistService] Next.js build started")),await this.runNextBuild(e),this.logger.info(J.cyan("[DistService] Next.js build finished"));const n=A.resolve(e,t);if(!await this.isDirectory(n))throw new Error(`Next.js build output directory not found: ${n}`);return xe({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=f.createRequire(A.join(e,"package.json")).resolve("next/package.json");s=A.resolve(A.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=R.spawn(P.execPath,[s,"build"],{cwd:e,env:Object.assign({},P.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 F,n=async s=>{const r=await l.promises.readdir(s,{withFileTypes:!0});for(const i of r){const r=A.join(s,i.name);if(i.isDirectory())await n(r);else if(i.isFile()){const n=A.relative(e,r).replace(/\\/g,"/");t.file(n,await l.promises.readFile(r))}}};return await n(e),await t.generateAsync({type:"nodebuffer",compression:"DEFLATE"})}async isDirectory(e){try{return(await l.promises.stat(e)).isDirectory()}catch{return!1}}}class Re{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=W(),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=d.randomUUID(),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(J.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(r.isAxiosError(e)){if("SESSION_EXPIRED"===pe(e).code){this.logger.info(J.yellow("Session expired - attempting to validate credentials"));try{const e=await(n?.validateCredentials());e&&!e.isValid?(this.logger.error(J.red(`Authentication error: ${e.error}`)),t.send("template:sync:response",{error:e.error,code:e.code,refresh:!0})):(this.logger.info(J.yellow("Session expired")),t.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(J.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(J.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(J.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(ce(e))return this.logger.info(J.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 i;if(s){const n=await(e?.analyzeBackup(s).catch(e=>"Backup file is not a ZIP file"===e.message?(this.logger.error(J.red("Backup file is not a ZIP file")),e):e));if(n instanceof Error)i=n;else if(n){await(e?.saveBackup(s,n));const r=0===n.unknownFiles.length&&1===n.versionManifestHashMismatches.length&&A.basename(n.versionManifestHashMismatches[0].relativePath)===Ie,a=n.versionManifestHashMismatches,o=a.filter(e=>A.basename(e.relativePath)===Ie),c=a.filter(e=>A.basename(e.relativePath)!==Ie),l=!r&&o.length>0&&c.length>0,d=r?[]:c.map(e=>e.relativePath),p=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(J.yellow("Sync cancelled by user"))}if(l&&await p(),!r&&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(J.yellow("Sync cancelled by user"))}if(!r&&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(J.yellow("Sync cancelled by user"))}l||await p(),i=await(e?.buildNewAssets())}}else i=await(e?.buildNewAssets());if(!(i&&i instanceof Buffer))return i instanceof Error?(t.send("template:sync:response",{error:i.message}),void this.logger.error(J.red(i.message))):(t.send("template:sync:response",{error:"Failed to build new assets"}),void this.logger.error(J.red("Failed to build new assets")));{const s=await(n?.updateAssets(i));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(J.green("Template synced"))}else t.send("template:sync:response",{error:"Failed to update assets"}),this.logger.error(J.red("Failed to update assets"))}}catch(e){const n=e instanceof Error?e.message:"Template sync failed";return this.logger.error(J.red(`Template sync failed: ${n}`)),void t.send("template:sync:response",{error:n,code:"SYNC_FAILED"})}}}}const Ce=/\.(?:[a-z0-9]+)$/i,Le=6e5,Fe=104857600,je=1e3;class He extends j.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 qe=new He(Fe,je);function Ne(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 De(e){const{devServer:t,ttl:n=Le,maxSize:s=Fe,maxItems:r=je}=e,i=W();return s===Fe&&r===je||(qe.maxSize=s,qe.maxItems=r),t.cache=qe,(e,t,s)=>{const r=e.originalUrl||e.url||"",a=function(e){const t=e.split("?")[0];return Ce.test(t)?t.includes("/auth/info.js")?"":e:""}(r);if(!a)return s();const o=qe.get(a);if(o)return i.info(`${J.blue("Proxies request:")} ${J.green(e.method)} ${r} -> ${J.blue("Cache")} ${a}`),function(e,t){try{for(const[n,s]of Object.entries(t))null!=s&&e.setHeader(n,s)}catch(e){W().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 c=t.end,l=t.write,d=[];t.write=function(e,n,s){if(!t.hasHeader(Q))return l.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(Q))return c.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=Ne(d);const e=Buffer.byteLength(o);if(e>0&&e<10485760){const s={headers:t.getHeaders(),content:o,timestamp:Date.now(),size:e};qe.put(a,s,n),i.info(`${J.blue("[Cached]")} ${a} (${(e/1024).toFixed(1)}KB)`)}}catch(e){i.error(`Failed to cache response for ${a}: ${e}`),o=Ne(d)}const l=s||"utf8";return c.call(this,o,l,r)},s()}}function Oe(e,t){return async(n,s,r)=>{if(await e(n.url??"",n,s)){W().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 c=s.getHeader("content-encoding"),l=function(e,t){switch(t){case"gzip":return v.unzipSync(e);case"br":return v.brotliDecompressSync(e);case"deflate":return v.inflateSync(e);default:return e}}(Buffer.from(Buffer.concat(r)),c),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 v.gzipSync(e);case"br":return v.brotliCompressSync(e);case"deflate":return v.deflateSync(e);default:return e}}(t(l,n,s),c),d,p),this}}r()}}function Me(e,n){const s=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,r=W();return(i,a,o)=>{const c=new t.URL(i.url??"","http://localhost"),{pathname:l,search:d}=c,p=["/",s];if(n&&(p.push(`/pt/${n}`),p.push(`/pl/${n}`)),p.includes(l)){const t=`${e}${d}`;return r.info(J.yellow(`Redirecting to: ${t}`)),K(a,t,302)}o()}}class Ue{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 _e=new Ue,ze=new Map;function Ve(e){const t=ze.get(e);return t?Date.now()-t.timestamp>18e4?(ze.delete(e),null):t.data:null}function Ze(e,t){ze.set(e,{timestamp:Date.now(),data:t})}const We="/home?proxyRedirect=";function Je(e,t,n){const{templateLess:s=!1,miHudLess:r=!1,appId:i,base:a,appBase:o,v7Features:c}=n,l=W();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=function(e){return e.split("?")[0]}(n.url??""),f=e.test(h),m=!f&&!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=_e.getState();if(!g.isAuthenticated&&!g.isRedirected&&n.url?.startsWith("/home")&&!n.url?.startsWith(We)){l.info(J.blue("Trying to authenticate and redirect to base"));try{return u?await Ke(t,{templateLess:s,miHudLess:r,appId:i,redirectUrl:c&&a?`${a}`:`${We}${encodeURIComponent("/")}`},n,d,()=>{},l):await Ge(t,{templateLess:s,miHudLess:r,appId:i,redirectUrl:c&&a?`${a}`:`${We}${encodeURIComponent("/")}`},n,d,()=>{},l),_e.setRedirected(!0),l.info(J.blue("Successfully authenticated. Redirecting to base")),K(d,a??"/",302)}catch(e){return p()}}if(!f&&!m)return p();if(!u){return await Ge(t,{templateLess:s,miHudLess:r,appId:i,redirectUrl:c&&a?`${a}`:`${We}${encodeURIComponent("/")}`},n,d,p,l)}return await Ke(t,{templateLess:s,miHudLess:r,appId:i,redirectUrl:c&&a?`${a}`:`${We}${encodeURIComponent("/")}`},n,d,p,l)}catch(e){return l.error(J.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),_e.reset(),p(e)}}}async function Ge(e,t,n,s,r,i){const{appId:a,redirectOnAuthFailure:o,redirectUrl:c}=t;if(void 0===a){const e=new Error("Custom App ID is required for page info only mode");return i.error(J.red(e.message)),r(e)}const l=n.headers??{};i.info(J.green("Start loading page info"));try{const t=`pageInfo:${a}`;return Ve(t)?(i.info(J.green("Page info loaded from cache")),r()):(await e.getPageInfo(a,l),i.info(J.blue("Clearing proxy cache after successful login")),qe.clear(),Ze(t,{success:!0}),_e.updateState({isAuthenticated:!0}),i.info(J.green("Page info loaded successfully")),r())}catch(e){return _e.reset(),Xe(e,o??!0,c||`${We}${encodeURIComponent("/")}`,s,r,i,"Page info")}}async function Ke(e,t,n,s,r,i){const{templateLess:a,appId:o,redirectOnAuthFailure:c,redirectUrl:l}=t,d=n.headers??{};i.info(J.green("Start loading page data"));try{const t=`pageData:${a}:${o}`;if(Ve(t))return i.info(J.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(J.blue("Clearing proxy cache after successful login")),qe.clear(),Ze(t,{success:!0}),i.info(J.green("Page data loaded successfully")),r()}catch(e){return _e.reset(),Xe(e,c??!0,l||`${We}${encodeURIComponent("/")}`,s,r,i,"Page data")}}function Xe(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(J.red(`${a} loading failed. Not authorized`)),t)){const e=`${n}`;return i.info(J.yellow(`Redirecting to: ${e}`)),K(s,e,302)}const o=e instanceof Error?e.message:String(e);return i.info(J.red(`${a} loading failed. Error: ${o}`)),r(e)}function Ye(){const e=H();return e.use(H.json()),e.use(H.urlencoded({extended:!0})),e}const Qe=Ye();class et{entries=new Map;insertOrder=[];totalSize=0;maxMemory;constructor(e=1073741824){this.maxMemory=e}allocateId(){return x.randomUUID()}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 tt=["/@pp-dev/","/@api/","/_next/","/__nextjs_","/@vite","/@metricinsights","/@"],nt=new Set(["/favicon.ico","/installHook.js.map"]);function st(e,t=10485760){return(n,s,r)=>{const i=n.url||"/",a=i.split("?")[0];if(tt.some(e=>i.startsWith(e))||nt.has(a))return void r();const o=e.allocateId(),c=Date.now(),l=[];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?l.push(s):(p=!0,l.length=0)}return u(e,...n)};const h=[];let f=0,m=!1;const g=s.write.bind(s),y=s.end.bind(s);function v(e,n){if(!m&&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));f+=s.byteLength,f<=t?h.push(s):(m=!0,h.length=0)}catch{}}function b(e){return"string"==typeof e[0]?e[0]:void 0}function x(){const e=s.getHeaders();return e["x-pp-proxy"]?"hit"===e["x-pp-cache"]?"proxy-cache":"proxy":"local"}let w=!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(w)return;w=!0;const t=!p&&l.length>0?Buffer.concat(l):null,r=!m&&h.length>0?Buffer.concat(h):null;e.add({id:o,timestamp:c,method:n.method||"GET",url:i,statusCode:s.statusCode??null,duration:Date.now()-c,source:x(),requestHeaders:n.headers,requestBody:t,requestBodyTruncated:p,responseHeaders:s.getHeaders(),responseBody:r,responseBodyTruncated:m})}(),y(t,...r)},r()}}const rt="/@pp-dev/inspector";let it,at=!1;function ot(e,t,n=10485760){it={store:t,captureLimit:n},at||(at=!0,e.get("/@api/requests",(e,t)=>{const{store:n}=it,{limit:s,offset:r,method:i,search:a}=e.query,o=void 0!==s?parseInt(s,10):void 0,c=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:c,total:n.size,memoryUsage:n.memoryUsage,maxMemory:n.maxMemory})}),e.get("/@api/requests/stats",(e,t)=>{const{store:n}=it;t.json({total:n.size,memoryUsage:n.memoryUsage,maxMemory:n.maxMemory,memoryUsageFormatted:lt(n.memoryUsage),maxMemoryFormatted:lt(n.maxMemory)})}),e.get("/@api/requests/:id",(e,t)=>{const n=it.store.get(e.params.id);if(!n)return void t.status(404).json({error:"Not found",id:e.params.id});const s=ct(n.requestHeaders["content-type"]),r=ct(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)=>{it.store.clear(),t.json({ok:!0})}),e.get(rt,(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,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');\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>`}(it.captureLimit))}))}function ct(e){return Array.isArray(e)?e[0]??"":String(e??"")}function lt(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 dt=["top-left","top-right","bottom-left","bottom-right"];exports.AuthProvider=Ue,exports.ClientService=Re,exports.DistService=Pe,exports.INSPECTOR_PATH=rt,exports.MiAPI=fe,exports.PACKAGE_NAME=z,exports.PATH_PAGE_PREFIX="/p",exports.PATH_TEMPLATE_LOCAL_PREFIX="/pl",exports.PATH_TEMPLATE_PREFIX="/pt",exports.PP_DEV_CLIENT_ENTRY=O,exports.PP_DEV_CONFIG_NAMES=[".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"],exports.PP_DEV_HMR_WS_PATH="/@pp-dev-hmr",exports.PP_DEV_PACKAGE_DIR=D,exports.RequestStore=et,exports.VERSION=_,exports.authProvider=_e,exports.colors=J,exports.createLogger=W,exports.createRequestCaptureMiddleware=st,exports.initLoadPPData=Je,exports.initPPRedirect=Me,exports.initProxy=ee,exports.initProxyCache=De,exports.initRewriteResponse=Oe,exports.internalServer=Qe,exports.normalizePPDevConfig=function(e,t){const{mi:n={},app:s={},proxy:r={},build:i={},sync:a={},inspector:o={},devPanel:c={}}=e,l=n.mode??"standalone",d=s.type??"template",p=n.apiVersion??7,u="standalone"===l;let h=!1;"top-bar"===n.include?h=!0:"shared-components"===n.include&&(h={addSharedComponentsScripts:!0,addRootElement:!1});const f="page"===d,m=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:`${m}.zip`,outDir:"dist-zip"}:{outFileName:v.fileName??`${m}.zip`,outDir:v.outDir??"dist-zip",...v.inDir?{inDir:v.inDir}:{}});const x=i.versionFile;let w;b=!1!==x&&(!0===x||void 0===x?{versionFileTemplate:g,enabled:!0}:{versionFileTemplate:x.fileNameTemplate??g,enabled:x.enabled??!0});const k=i.imageOptimisations;return w=!1!==k&&(!0===k||void 0===k?{}:k),{templateName:m,backendBaseURL:n.url??process.env.MI_BACKEND_URL,appId:s.id,templateLess:f,miHudLess:u,integrateMiTopBar:h,enableProxyCache:r.cache??!0,proxyCacheTTL:r.cacheTtl??6e5,disableSSLValidation:r.tls?.allowSelfSigned??!1,imageOptimizer:w,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:c.position??"bottom-right",devPanelHidden:c.hidden??!1,devPanelAutoHide:c.autoHide??!1}},exports.registerInspectorRoutes=ot,exports.urlReplacer=G,exports.validatePPDevConfig=function(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&&!dt.includes(e.devPanel.position))throw new Error(`[pp-dev] devPanel.position must be one of: ${dt.join(", ")}`)},exports.vitePPDev=function(e){const{templateName:t,templateLess:n,backendBaseURL:s,miHudLess:r,appId:i,enableProxyCache:a,proxyCacheTTL:o,disableSSLValidation:c,distZip:l,versionPlugin:d,syncBackupsDir:p,v7Features:u,personalAccessToken:h,inspectorEnabled:f,inspectorMaxMemory:m,inspectorCaptureLimit:g,devPanelPosition:y,devPanelHidden:v,devPanelAutoHide:b}=e||{};let x=!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 x&&(x=!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(Me(v,t)),!1!==f){const e=new et(m);y.middlewares.use(st(e,g));const t=Ye();ot(t,e,g),y.middlewares.use((e,n,s)=>{e.url?.startsWith("/@api/")||e.url?.startsWith(rt)?t(e,n,s):s()})}if(s){const f=new URL(s).host,m={headers:{host:f,referer:s,origin:s.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},appId:i,templateLess:n,disableSSLValidation:c,v7Features:u,personalAccessToken:h??process.env.MI_ACCESS_TOKEN},g=new fe(s,m);if(a){let e=+o;(!e||Number.isNaN(e)||e<0)&&(e=6e5),y.middlewares.use(De({devServer:y,ttl:e}))}const x=new RegExp(`^((${v})|/)$`);y.middlewares.use(Je(x,g,Object.assign({},e,{appId:i,appBase:v}))),y.middlewares.use(ee({baseURL:s,proxyIgnore:["/@vite","/@metricinsights","/@",b],disableSSLValidation:c,miAPI:g,templateName:t}));const w=(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=pe(t);if(t.tokenErrorInfo){const n=t.tokenErrorInfo;w(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;w(e,t,r,a,i)}return null},E=Ye();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):(w(t,400,"Token expired or invalid"),null)).catch(e=>k(t,e,"personal")))return;K(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):(w(t,400,"Token expired or invalid"),null)).catch(e=>k(t,e,"regular")))return;K(t,"/",302)}else w(t,400,"Invalid tokenType",'tokenType must be "personal" or "regular".',"INVALID_TOKEN_TYPE");else w(t,400,"Token is required")}),y.middlewares.use(E);const T=!1!==l?new Pe(t,Object.assign({backupDir:p},"object"==typeof l?{distZipFolder:l.outDir,distZipFilename:l.outFileName}:void 0,"object"==typeof d?{versionFileTemplate:d.versionFileTemplate}:void 0)):void 0;return new Re(y,{distService:T,miAPI:g}),()=>{y.middlewares.use(Oe(e=>e.split("?")[0].endsWith("index.html"),(e,t)=>Buffer.from(G(f,t.headers.host??"",g.buildPage(e,r)))))}}}}},exports.writeBuildVersionManifest=xe;
|
|
2
|
-
//# sourceMappingURL=plugin-Cm9vRLCu.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-Cm9vRLCu.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","document","require","pathToFileURL","href","_documentCurrentScript","tagName","toUpperCase","src","URL","baseURI","beforeBundlePath","PP_DEV_PACKAGE_DIR","existsSync","PP_DEV_CLIENT_ENTRY","version","name","JSON","parse","readFileSync","toString","VERSION","PACKAGE_NAME","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","url","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","getElementById","activeOption","querySelector","tokenType","dataset","token","response","fetch","method","headers","body","stringify","window","location","origin","pathname","json","error","parseError","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","redirectToFunction","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","cutUrlParams","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","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","proxy","build","sync","inspector","devPanel","miMode","mode","appType","apiVersion","integrateMiTopBar","include","addSharedComponentsScripts","addRootElement","resolvedName","defaultVersionFileTemplate","distZip","zipCfg","versionPlugin","outFileName","fileName","inDir","vfCfg","imageOptimizer","fileNameTemplate","imgCfg","imageOptimisations","backendBaseURL","MI_BACKEND_URL","enableProxyCache","proxyCacheTTL","cacheTtl","tls","allowSelfSigned","syncBackupsDir","backupsDir","MI_ACCESS_TOKEN","inspectorEnabled","inspectorMaxMemory","inspectorCaptureLimit","devPanelPosition","position","devPanelHidden","hidden","devPanelAutoHide","autoHide","miUrl","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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"}
|