@metricinsights/pp-dev 0.11.0-beta.4 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/CHANGELOG.md +8 -0
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/{index-DGgPiX1I.js → index-PGyyLU5v.js} +2 -2
- package/dist/cjs/{index-DGgPiX1I.js.map → index-PGyyLU5v.js.map} +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/plugin-MI3iLFaG.js +2 -0
- package/dist/cjs/plugin-MI3iLFaG.js.map +1 -0
- package/dist/cjs/plugin.js +1 -1
- package/dist/esm/cli.js +1 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/{index-DMOFygHY.js → index-BaGUuU8M.js} +2 -2
- package/dist/esm/{index-DMOFygHY.js.map → index-BaGUuU8M.js.map} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/plugin-B8BKv3mo.js +2 -0
- package/dist/esm/plugin-B8BKv3mo.js.map +1 -0
- package/dist/esm/plugin.js +1 -1
- package/dist/types/index.d.ts +62 -3
- package/package.json +1 -1
- package/dist/cjs/plugin-CqSS_2nh.js +0 -2
- package/dist/cjs/plugin-CqSS_2nh.js.map +0 -1
- package/dist/esm/plugin-qc60R-dL.js +0 -2
- package/dist/esm/plugin-qc60R-dL.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("http-proxy-middleware"),t=require("vite"),r=require("picocolors"),s=require("axios"),a=require("jsdom"),n=require("https"),i=require("memory-cache"),o=require("path"),c=require("fs"),l=require("url"),p=require("crypto"),d=require("process"),h=require("child_process"),u=require("console"),g=require("zlib"),f=require("express");var m="undefined"!=typeof document?document.currentScript:null;function w(e){const t=Object.create(null);if(e)for(const r in e)if("default"!==r){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}return t.default=e,Object.freeze(t)}const y=w(i),v=w(o),b=w(p),k=w(d),x=w(h),P=w(u),T=(e,t,r)=>{const s=new RegExp(`(!!)?(https?(:(\\\\)?/(\\\\)?/)${e})`,"gi");return r.replace(s,((e,...r)=>e.startsWith("!!")?r[1]:`http${r[2]}${t}`))},A=(e,t,r)=>{e.setHeader("location",t),e.statusCode=r,e.end()};const $=new Map,E="default",I=(e="info",r=E)=>{if($.has(r))return $.get(r);if(r===E){const s=t.createLogger(e);return $.set(r,s),s}const s=t.createLogger(e);return $.set(r,s),s},S=r.createColors(),L=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,r,s){const a=e[t];a&&(r.placeholder=a.placeholder,s.innerHTML=a.caption)}function r(e,t){t.textContent=e,t.classList.add("show")}function s(e){e.classList.remove("show")}function a(e,t,a,n){a.addEventListener("click",(async a=>{if(a.preventDefault(),s(n),!t.value.trim())return r(`${t.placeholder} is required`,n),void t.focus();const i=document.getElementById("token-type-switcher"),o=i?.querySelector(".token-type-option.active"),c=o?.dataset.value||"personal";await async function(e,t,s,a){try{s.classList.add("loading");const n=await fetch("/@api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e,tokenType:t}),redirect:"follow"}),i=n.url&&new URL(n.url,window.location.origin);if(!i||i.pathname.startsWith("/login")||i.pathname.startsWith("/@api/"))try{const e=await n.json();r(`Login failed: ${e?.error||"Unknown error occurred"}`,a)}catch(e){r("Login failed: Unable to parse response",a)}else window.location.href=n.url}catch(e){r("Login failed: Network error. Please check your connection.",a)}finally{s.classList.remove("loading")}}(t.value.trim(),c,e,n)})),t.addEventListener("keydown",(e=>{"Enter"===e.key&&(e.preventDefault(),a.click())})),t.addEventListener("input",(()=>{s(n)}))}function n(e){const r=e.firstChild;if(!r)return;const s=r.lastChild?.cloneNode(!0);if(!s)return;s.innerHTML="";const n=s.cloneNode(!0);n.innerText="OR",n.setAttribute("role","separator"),n.setAttribute("aria-label","Alternative login method");const i=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>`,i.appendChild(o),r.appendChild(n),r.appendChild(i);const l=document.getElementById("token-type-switcher"),p=document.getElementById("helper-token"),d=document.getElementById("token-caption"),h=document.getElementById("helper-token-submit"),u=document.getElementById("error-message"),g=o.querySelector(".helper-login-wrapper");l&&p&&d&&h&&u&&g?(!function(e,r,s){const a=e.querySelectorAll(".token-type-option"),n=e=>{const n=e.dataset.value;a.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(n,r,s)};a.forEach((e=>{e.addEventListener("click",(e=>{const t=e.currentTarget;n(t)})),e.addEventListener("keydown",(t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),n(e))}))}))}(l,p,d),a(g,p,h,u),t("personal",p,d)):console.error("Failed to find required form elements")}const i=new MutationObserver((e=>{for(const t of e)if("childList"===t.type){const e=document.querySelector("#mi-react-root form");if(e){i.disconnect(),n(e);break}}}));i.observe(document.body,{childList:!0,subtree:!0});const o=document.querySelector("#mi-react-root form");o&&(i.disconnect(),n(o))},O=/^(https?:\/\/)([^/]+)(\/.*)?$/i,R="X-PP-Proxy";function F(t){const{rewritePath:r=/^\/(?!pt).*/i,baseURL:s="",disableSSLValidation:a=!1,miAPI:n}=t;if(!s)throw new Error("Base url is required");const i=s.replace(O,"$2"),o=s.replace(O,"$1$2"),c=import("file-type"),l=I();return e.createProxyMiddleware({selfHandleResponse:!0,pathFilter:(e,s)=>!(t.proxyIgnore||[]).some((t=>"string"==typeof t?e.startsWith(t):"function"!=typeof t.test||t.test(e)))&&("string"==typeof r?e.startsWith(r):Array.isArray(r)?r.some((t=>e.startsWith(t))):"function"==typeof r.test&&r.test(e)),target:s,changeOrigin:!0,autoRewrite:!0,cookieDomainRewrite:{[i]:"localhost"},logger:{info:()=>{},log:()=>{},error:()=>{},warn:()=>{}},secure:!a,headers:{host:i,origin:o},on:{proxyReq(e,t,r){const a=t.headers.host,i=e.getHeader("referer");return l.info(`${S.blue("Proxies request:")} ${S.green(t.method)} ${t.url} -> ${S.green(e.method)} ${e.protocol}//${e.host}${e.path}`),a&&i&&"string"==typeof i&&e.setHeader("referer",i.replace(new RegExp(`https?://${a}`),s)),n.personalAccessToken&&e.setHeader("Authorization",`Bearer ${n.personalAccessToken}`),t.socket.on("close",(()=>{setTimeout((()=>{e.destroyed||e.destroy()}),200)})),e},proxyRes:(t,r,s)=>{if(t.headers["content-type"]?.includes("text/event-stream")||t.headers["transfer-encoding"]?.includes("chunked")&&"no"===t.headers["x-accel-buffering"]){l.info(`${S.blue("Start streaming for request:")} ${S.green(r.method)} ${r.url}`);const e=async(e,t,r)=>{r.setHeader(R,1),r.setHeaders(new Map(Object.entries(e.headers))),e.pipe(r)};return e(t,r,s)}const a=e.responseInterceptor((async(e,t,r,s)=>{s.setHeader(R,1);if(await(await c).fileTypeFromBuffer(e))return e;{let t=e.toString("utf8");try{const e=new URL(r.url??"",`http://${i}`);if(e.searchParams&&e.searchParams.has("proxyRedirect")){const e=function(){const e="pp-dev::redirectCount";let t=+(localStorage.getItem(e)??0);Number.isNaN(t)&&(t=0);let r=window.location.href;const s=function(){const a=new URLSearchParams(window.location.search);a.has("proxyRedirect")?r!==window.location.href?(r=window.location.href,setTimeout(s,t<3?3e3:5e3)):(localStorage.setItem(e,""+ ++t),window.location.href=a.get("proxyRedirect")):localStorage.removeItem(e)};setTimeout(s,3e3)};t+=`<script>(${e.toString()})()<\/script>`}e.pathname.startsWith("/login")&&(t+=`<script>const host = "${i}";\n(${L.toString()})()<\/script>`)}catch{}const s=r.headers.host??"";return((e,t,r)=>{const s=new RegExp(`${e.replace(/\\*\//gi,"\\\\/")}`,"gi"),a=new RegExp(`${e}`,"gi"),n=r.replace(s,t);return n===r?n.replace(a,t):n})("/auth/saml/login","/login",T(i,s,t))}}));return a(t,r,s)},error(e,t,r){const s=`Proxy error: "${e.message}" when trying to "${t.method} ${t.url}"\n\n${e.stack}`;l.error(s),r.writable&&r.writeHead(500,{"Content-Type":"text/plain"}),r.end(s)}}})}class D{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 C extends D{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,r){const s=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});s.append("file",n);const i=this.getUploadUrl(e);return this.axios.post(i,s,{withCredentials:!0,headers:Object.assign({},r,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).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,r){const s=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});s.append("file",n,"file.zip");const i=this.getUploadTemplateUrl(e);return this.axios.post(i,s,{withCredentials:!0,headers:Object.assign({},r,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).then((e=>e.data))}}class N extends C{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`}}class M extends D{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){return(await this.axios.get(`/api/page/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.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 j extends D{async getAll(e,t){return(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.page_templates}async get(e,t){return(await this.axios.get(`/api/page_template/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.page_template}}function B(e){const t=e.response?.status||0,r=e.response?.data?.message||e.message||"Unknown error";switch(t){case 412:return r.toLowerCase().includes("session expired")?{status:t,message:r,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:r,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:r,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:r,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:r,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 U="[DEV PAGE. DO NOT DELETE]",H=new Map;class z{#e;#t;#r=null;#s;#a;#n;#i;#o;#c;#l;portalPageId;templateLess;assetsApi;pageApi;pageTemplateApi;logger;constructor(e,t){const{headers:r={},portalPageId:a,templateLess:i=!0,disableSSLValidation:o=!1,v7Features:c=!1,personalAccessToken:l}=t||{};this.#e=r,this.#a=[],this.#s="",this.#n=c,this.#i=l,this.#o=!1,this.#c=Promise.resolve(!1);const p=`${e}:${o}`;H.has(p)?this.#t=H.get(p):(o&&(s.defaults.httpsAgent=new n.Agent({rejectUnauthorized:!1})),this.#t=s.create({baseURL:e,headers:r,timeout:3e4,maxRedirects:5,httpAgent:new n.Agent({keepAlive:!0,maxSockets:10}),httpsAgent:new n.Agent({keepAlive:!0,maxSockets:10})}),H.set(p,this.#t)),this.portalPageId=a,this.templateLess=i,this.assetsApi=new(c?N:C)(this.#t),this.pageApi=new M(this.#t),this.pageTemplateApi=new j(this.#t),this.logger=I()}async isTemplateLoaded(){return this.#c}get isV710OrHigher(){return this.#o}#p(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.#i&&(t.authorization=`Bearer ${this.#i}`),t}get personalAccessToken(){return this.#i}set personalAccessToken(e){this.#i=e}updateHeaders(e){this.#p(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.#r||(this.#c=new Promise((e=>{this.#l=e}))),this.#r)return Promise.resolve(this.#r);if(void 0===this.templateLess&&(this.templateLess=!1),this.#n){const t=await this.pageApi.get(this.portalPageId,this.#p(e)).then((e=>(this.logger.info(S.green("Page fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(S.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 the portalPageId is correct.")):t}));return void 0!==t.template_id&&(this.#o=!0),this.#r=this.localTemplateHTML,this.#r=this.#r.replace(/%%PAGE TITLE%%/g,t.name||"Local template"),this.logger.info(S.green("Local page template fetched")),this.#l(!0),this.#r}let t=(await this.pageApi.getAll(this.#p(e)).then((e=>(this.logger.info(S.green("Page list fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(S.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===U));return t||(this.logger.warn(S.yellow("Creating dev page template...")),t=await this.pageApi.create({enabled:"Y",name:U,internal_name:"dev-page-template",visible_in_homepage:"Y"},this.#p(e)).then((e=>(this.logger.info(S.green("Dev page created")),e))).catch((e=>{throw this.logger.error(S.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 "${U}" already exists`)}))),await this.pageApi.getPageContent(t.internal_name,this.#p(e)).then((e=>(this.#r=e,e))).then((e=>(this.#l(!0),this.logger.info(S.green("Page template fetched")),e))).catch((e=>{throw this.#l(!1),this.logger.error(S.red(`Error fetching page template: ${e.message}`)),new Error("Error fetching page template")}))}async getPageVariables(e,t){return this.#r=await this.getPageTemplate(t),this.portalPageId||(this.portalPageId=e,this.templateLess=!1),await this.pageApi.get(e,this.#p(t)).then((e=>{const{tags:t="[]",name:r,template:s}=e;if(s&&t){const e=JSON.parse(t);return this.#a=e,this.#s=r,e}return this.#a=[],this.#s=r,[]})).catch((t=>{if(this.logger.error(S.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 new Error(`Current user does not have access to page with id "${e}" on instance ${this.#t.getUri()}`);throw t}))}async getPageInfo(e,t){this.portalPageId||(this.portalPageId=e);const r=this.#p(t),s=this.portalPageId;try{return this.#n?await this.#d(s,r):await this.#h(s,r)}catch(e){this.#u(e,s)}}async#d(e,t){const r=await this.pageApi.get(e,t);return this.logger.info(S.green("Page fetched")),void 0!==r.template_id&&(this.#o=!0),r}async#h(e,t){return await this.pageApi.get(e,t)}#u(e,t){if(this.#n&&e.message?.includes("access"))throw new Error("The current user does not have access to this page. Check your configuration to ensure the portalPageId is correct.");if(404===e.response?.status)throw new Error(`Portal Page with id "${t}" not found on instance ${this.#t.getUri()}`);if(401===e.response?.status)throw new Error(`Current user does not have access to page with id "${t}" on instance ${this.#t.getUri()}`);throw e}buildPage(e,t=!1){let r="string"==typeof e?e:e.toString("utf-8");for(const e of this.#a)r=r.replace(new RegExp(`\\[${e.name}\\]`,"g"),e.value);const s=new a.JSDOM(t?r:this.#r),n="%%PLACEHOLDER%%";if(!t){const e=s.window.document.createElement("div");e.innerHTML=n;const t=s.window.document.querySelector(".main-side");if(t){const r=t.querySelectorAll("script");r.length?t.insertBefore(e,r.item(r.length-1)):t.append(e)}else{const t=s.window.document.createElement("div");t.append(e),s.window.document.body.append(t)}const r=s.window.document.querySelector("head"),a=r.querySelector("title");a?a.text=this.#s:r.innerHTML+=`<title>${this.#s}</title>`}return s.serialize().replace(new RegExp(`<div>\\s*${n}\\s*<\\/div>`,"i"),r)}async getAssets(){if(this.portalPageId){if(this.templateLess)return await this.assetsApi.downloadPageAssets(this.portalPageId,this.#e);{const e=await this.pageApi.get(this.portalPageId,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.portalPageId){if(this.templateLess)return await this.assetsApi.uploadPageAssets(this.portalPageId,e,this.#e);{const t=await this.pageApi.get(this.portalPageId,this.#e);if(this.#o){const r=await this.pageTemplateApi.get(t.template_id,this.#e);return await this.assetsApi.uploadTemplateAssets(r.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=B(e);return{isValid:!1,error:t.userFriendlyMessage,code:t.code}}}async get(e,t,r=!1){const s=r?t:Object.assign({},this.#p(this.#e),t);try{return await this.#t.get(e,{headers:s})}catch(e){if("UNKNOWN_ERROR"!==B(e).code){const t=B(e);throw this.logger.error(S.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,r){const s=B(t),a=`[${r}] `;e.error(S.red(`${a}${s.userFriendlyMessage}`)),e.error(S.red(`Status: ${s.status} (${s.code})`)),e.error(S.red(`Details: ${s.message}`)),s.suggestions.length>0&&(e.info(S.yellow("Suggestions:")),s.suggestions.forEach(((t,r)=>{e.info(S.yellow(` ${r+1}. ${t}`))})))}(this.logger,e,"API Request"),e.response||(e.response={status:t.status,data:{message:t.message}}),e.tokenErrorInfo=t,e}throw e}}}class V{server;opts;eventMap;logger;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.logger=I(),this.init()}init(){const{ws:e}=this.server;for(const[t,r]of this.eventMap)e.on(t,r)}onInfoDataRequest(){this.server.ws.send({type:"custom",event:"info-data:response",data:{}})}async onTemplateSync(){if(!this.opts.distService||!this.opts.miAPI)return this.server.ws.send("template:sync:response",{error:"Dist service or MiAPI is not defined"}),void this.logger.error(S.red("Dist service or MiAPI is not defined"));{const{distService:e,miAPI:t}=this.opts;if(this.server.config.clientInjectionPlugin?.v7Features){if(!t?.isV710OrHigher)return void this.server.ws.send("template:sync:response",{error:"This feature is available only for MI v7.1.0 or higher",config:{canSync:!1}});this.server.ws.send("client:config:update",{config:{canSync:!0}})}const r=await(t?.getAssets().catch((async e=>{if(s.isAxiosError(e)){if("SESSION_EXPIRED"===B(e).code){this.logger.info(S.yellow("Session expired - attempting to validate credentials"));try{const e=await(t?.validateCredentials());e&&!e.isValid?(this.logger.error(S.red(`Authentication error: ${e.error}`)),this.server.ws.send("template:sync:response",{error:e.error,code:e.code,refresh:!0})):(this.logger.info(S.yellow("Session expired")),this.server.ws.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(S.yellow("Session expired")),this.server.ws.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(S.yellow("Server in maintenance mode, VPN connection is needed or no internet connection")),this.server.ws.send("template:sync:response",{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e}throw e})));if(r instanceof Error)return;const a=r?await(e?.saveBackupAndBuild(r).catch((e=>{if("Backup file is not a ZIP file"===e.message)return this.logger.error(S.red("Backup file is not a ZIP file")),e}))):await(e?.buildNewAssets());if(!(a&&a instanceof Buffer))return a instanceof Error?(this.server.ws.send("template:sync:response",{error:a.message}),void this.logger.error(S.red(a.message))):(this.server.ws.send("template:sync:response",{error:"Failed to build new assets"}),void this.logger.error(S.red("Failed to build new assets")));{const r=await(t?.updateAssets(a));if("OK"===r?.status){const t=e?.getBackupMeta(),{lastBackupName:r,lastBackupHash:s,lastBackupDate:a}=t||{lastBackupName:"",lastBackupHash:"",lastBackupDate:(new Date).toISOString()};this.server.ws.send("template:sync:response",{syncedAt:new Date(a),currentHash:s,backupFilename:r}),this.logger.info(S.green("Template synced"))}else this.server.ws.send("template:sync:response",{error:"Failed to update assets"}),this.logger.error(S.red("Failed to update assets"))}}}}const _=/\.(?:[a-z0-9]+)$/i,q=6e5,Z=104857600,W=1e3;class X extends y.Cache{totalSize=0;maxSize;maxItems;constructor(e,t){super(),this.maxSize=e,this.maxItems=t}put(e,t,r){const s=this.get(e);s&&(this.totalSize-=s.size);const a=super.put(e,t,r);return this.totalSize+=t.size,this.cleanup(),a}cleanup(){const e=this.keys();if(e.length>this.maxItems){const t=e.length-this.maxItems,r=e.sort(((e,t)=>{const r=this.get(e),s=this.get(t);return(r?.timestamp||0)-(s?.timestamp||0)}));for(let e=0;e<t;e++){const t=r[e],s=this.get(t);s&&(this.totalSize-=s.size,this.del(t))}}for(;this.totalSize>this.maxSize&&e.length>0;){const t=e.sort(((e,t)=>{const r=this.get(e),s=this.get(t);return(r?.timestamp||0)-(s?.timestamp||0)}))[0];if(t){const e=this.get(t);e&&(this.totalSize-=e.size,this.del(t))}}}getTotalSize(){return this.totalSize}getItemCount(){return this.keys().length}}const Y=new X(Z,W);function K(e){if(0===e.length)return Buffer.alloc(0);if(1===e.length)return e[0];const t=e.reduce(((e,t)=>e+t.length),0),r=Buffer.allocUnsafe(t);let s=0;for(const t of e)t.copy(r,s),s+=t.length;return r}function J(e){const{devServer:t,ttl:r=q,maxSize:s=Z,maxItems:a=W}=e,n=I();return s===Z&&a===W||(Y.maxSize=s,Y.maxItems=a),t.cache=Y,(e,t,s)=>{const a=e.originalUrl||e.url||"",i=function(e){const t=e.split("?")[0];return _.test(t)?t:""}(a);if(!i)return s();const o=Y.get(i);if(o)return n.info(`${S.blue("Proxies request:")} ${S.green(e.method)} ${a} -> ${S.blue("Cache")} ${i}`),function(e,t){try{for(const[r,s]of Object.entries(t))null!=s&&e.setHeader(r,s)}catch(e){console.warn("Failed to set some response headers:",e)}}(t,o.headers),t.write(o.content),void t.end();const c=t.end,l=t.write,p=[];t.write=function(e,r,s){if(!t.hasHeader(R))return l.call(this,e,r,s);if("string"==typeof e){const t=r||"utf8";p.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?p.push(e):null!=e&&p.push(Buffer.from(String(e),"utf8"));return!0},t.end=function(e,s,a){if(!t.hasHeader(R))return c.call(this,e,s,a);if(null!=e)if("string"==typeof e){const t=s||"utf8";p.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?p.push(e):p.push(Buffer.from(String(e),"utf8"));let o;try{o=K(p);const e=o.length;if(e>0&&e<10485760){const s={headers:t.getHeaders(),content:o,timestamp:Date.now(),size:e};Y.put(i,s,r),n.info(`${S.blue("[Cached]")} ${i} (${(e/1024).toFixed(1)}KB)`)}}catch(e){n.error(`Failed to cache response for ${i}: ${e}`),o=K(p)}const l=s||"utf8";return c.call(this,o,l,a)},s()}}const G="pageName",Q="date",ee=v.dirname("undefined"!=typeof __filename&&__filename||l.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:m&&"SCRIPT"===m.tagName.toUpperCase()&&m.src||new URL("plugin-CqSS_2nh.js",document.baseURI).href)),te=v.resolve(ee,"..",".."),re=v.resolve(te,"..",".."),se=v.resolve(re,".pp-dev-meta"),ae=v.resolve(se,"sync-service.meta.json");class ne{backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;logger;constructor(e,t){this.pageName=e;const{backupFolder:r=v.resolve(k.cwd(),"backups"),distZipFolder:s=v.resolve(k.cwd(),"dist-zip"),distZipFilename:a=`${this.pageName}.zip`,backupNameTemplate:n=`{${G}}-{${Q}}.zip`,dateFormat:i=e=>e.toISOString().replace(/:/g,"-").replace(/\..*$/,"")}=t||{};this.backupFolder=r,this.backupNameTemplate=n,this.dateFormat=i,this.distZipFolder=s,this.distZipFilename=a,this.syncMeta(),this.logger=I()}async checkMeta(){try{await c.promises.stat(se)}catch{await c.promises.mkdir(se)}try{await c.promises.stat(this.backupFolder)}catch{await c.promises.mkdir(this.backupFolder)}}async readMetaFile(){return await this.checkMeta(),await c.promises.readFile(ae,{encoding:"utf-8"}).catch((()=>"{}"))}async writeMetaFile(e){return await this.checkMeta(),await c.promises.writeFile(ae,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=v.resolve(this.backupFolder,e);try{return await c.promises.stat(t),t}catch{return null}}backupName(e,t=new Date){return this.backupNameTemplate.replace(`{${G}}`,e).replace(`{${Q}}`,this.dateFormat(t))}getBackupMeta(){return this.currentMeta}async saveBackup(e){if("PK"!==e.toString("utf-8").slice(0,4))throw new Error("Backup file is not a ZIP file");const t=b.createHash("md5").update(e).digest("hex");if(await this.getLatestSavedBackup()){const{lastBackupHash:e}=this.currentMeta;if(e===t)return}const r=new Date,s=this.backupName(this.pageName,r);return this.currentMeta.lastBackupName=s,this.currentMeta.lastBackupHash=t,this.currentMeta.lastBackupDate=r.toISOString(),await this.syncMeta(),await c.promises.writeFile(v.resolve(this.backupFolder,s),e).finally((()=>{this.logger.info(`Backup saved to ${s}`)}))}async buildNewAssets(){const e=new Promise(((e,t)=>{let r="";this.logger.info(S.cyan("[DistService] Build started"));const s=x.spawn("node",[v.resolve(te,"./bin/pp-dev.js"),"build"],{cwd:k.cwd(),env:Object.assign({},k.env,{NODE_ENV:"production"}),stdio:"inherit"});s.on("message",(e=>{r+=e})),s.on("close",(s=>{0===s?e(r):t(new Error(`build command exited with code ${s}`))})),s.on("error",(e=>{t(e)}))}));try{await e.finally((()=>{this.logger.info(S.cyan("[DistService] Build finished"))}));const t=v.resolve(k.cwd(),this.distZipFolder,this.distZipFilename);if(!await c.promises.stat(t))throw new Error(`File ${t} not found`);return await c.promises.readFile(t)}catch(e){throw P.log(e),e}}async saveBackupAndBuild(e){return await this.saveBackup(e),await this.buildNewAssets()}}function ie(e,t){return async(r,s,a)=>{if(await e(r.url??"",r,s)){I().info(`Rewrite response for ${r.url}`);const e=s.end,a=[];s.write=function(e){return a.push(e),!0},s.end=function(n,i,o){"string"==typeof n&&a.push(Buffer.from(n));const c=s.getHeader("content-encoding"),l=function(e,t){switch(t){case"gzip":return g.unzipSync(e);case"br":return g.brotliDecompressSync(e);case"deflate":return g.deflateSync(e);default:return e}}(Buffer.from(Buffer.concat(a)),c),p="function"!=typeof i&&i?i:"utf-8",d="function"==typeof i?i:o;return e.call(this,function(e,t){switch(t){case"gzip":return g.gzipSync(e);case"br":return g.brotliCompressSync(e);case"deflate":return g.inflateSync(e);default:return e}}(t(l,r,s),c),p,d),this}}a()}}function oe(e,t){const r=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,s=I();return(a,n,i)=>{const o=new l.URL(a.url??"","http://localhost"),{pathname:c,search:p}=o,d=["/",r];if(t&&(d.push(`/pt/${t}`),d.push(`/pl/${t}`)),d.includes(c)){const t=`${e}${p}`;return s.info(S.yellow(`Redirecting to: ${t}`)),A(n,t,302)}i()}}const ce=new Map;function le(e){const t=ce.get(e);return t?Date.now()-t.timestamp>18e4?(ce.delete(e),null):t.data:null}function pe(e,t){ce.set(e,{timestamp:Date.now(),data:t})}const de="/home?proxyRedirect=";function he(e,t,r){const{templateLess:s=!1,miHudLess:a=!1,portalPageId:n}=r,i=I();if(s&&a&&void 0===n)throw new Error("Portal page ID is required when both templateLess and miHudLess are true");return async(r,o,c)=>{try{const l=!(s&&a),p=e.test(function(e){return e.split("?")[0]}(r.url??""));return p?l?await async function(e,t,r,s,a,n){const{templateLess:i,portalPageId:o,redirectOnAuthFailure:c,redirectUrl:l}=t,p=r.headers??{};n.info(S.green("Start loading page data"));try{const t=`pageData:${i}:${o}`;if(le(t))return n.info(S.green("Page data loaded from cache")),a();const r=i||void 0===o?e.getPageTemplate(p):e.getPageVariables(o,p);return await r,pe(t,{success:!0}),n.info(S.green("Page data loaded successfully")),a()}catch(e){return ue(e,c??!0,l??de,s,a,n,"Page data")}}(t,{templateLess:s,miHudLess:a,portalPageId:n},r,o,c,i):await async function(e,t,r,s,a,n){const{portalPageId:i,redirectOnAuthFailure:o,redirectUrl:c}=t;if(void 0===i){const e=new Error("Portal page ID is required for page info only mode");return n.error(S.red(e.message)),a(e)}const l=r.headers??{};n.info(S.green("Start loading page info"));try{const t=`pageInfo:${i}`;return le(t)?(n.info(S.green("Page info loaded from cache")),a()):(await e.getPageInfo(i,l),pe(t,{success:!0}),n.info(S.green("Page info loaded successfully")),a())}catch(e){return ue(e,o??!0,c??de,s,a,n,"Page info")}}(t,{templateLess:s,miHudLess:a,portalPageId:n},r,o,c,i):c()}catch(e){return i.error(S.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),c(e)}}}function ue(e,t,r,s,a,n,i){if(function(e){return null!==e&&"object"==typeof e&&"response"in e&&void 0!==e.response}(e)&&(n.info(S.red(`${i} loading failed. Not authorized`)),t)){const e=`${r}${encodeURIComponent("/")}`;return n.info(S.yellow(`Redirecting to: ${e}`)),A(s,e,302)}const o=e instanceof Error?e.message:String(e);return n.info(S.red(`${i} loading failed. Error: ${o}`)),a(e)}const ge=f();function fe(e,t,r){return t(e)?{isValid:!0}:{isValid:!1,error:r}}ge.use(f.json()),ge.use(f.urlencoded({extended:!0})),exports.MiAPI=z,exports.colors=S,exports.createLogger=I,exports.initLoadPPData=he,exports.initPPRedirect=oe,exports.initProxy=F,exports.initProxyCache=J,exports.initRewriteResponse=ie,exports.internalServer=ge,exports.normalizeVitePPDevConfig=function(e){const t=function(e){const t=[fe(e,(e=>"object"==typeof e&&null!==e),"VitePPDevOptions must be an object"),fe(e.templateName,(e=>"string"==typeof e&&e.length>0),"VitePPDevOptions.templateName must be a non-empty string"),fe(e.backendBaseURL,(e=>void 0===e||"string"==typeof e&&e.length>0),"VitePPDevOptions.backendBaseURL must be a non-empty string if provided"),fe(e.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.portalPageId must be a positive number if provided"),fe(e.appId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.appId must be a positive number if provided"),fe(e.proxyCacheTTL,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.proxyCacheTTL must be a positive number if provided"),fe(e.integrateMiTopBar,(t=>void 0===t||"boolean"==typeof t&&(!0!==t||!0===e.miHudLess)),"VitePPDevOptions.integrateMiTopBar can only be true when miHudLess is true")];return t.find((e=>!e.isValid))||{isValid:!0}}(e);if(!t.isValid)throw new Error(t.error);const r=e.appId??e.portalPageId,{enableProxyCache:s=!0,proxyCacheTTL:a=6e5,disableSSLValidation:n=!1,imageOptimizer:i=!0,miHudLess:o=!1,integrateMiTopBar:c=!1,templateLess:l=!1,outDir:p="dist",distZip:d=!0,syncBackupsDir:h="backups",v7Features:u=!1,personalAccessToken:g=process.env.MI_ACCESS_TOKEN}=e||{};let f=d;f=!0===f?{outFileName:`${e.templateName}.zip`,outDir:"dist-zip"}:"object"==typeof d&&{outFileName:"string"==typeof d.outFileName?d.outFileName.replace("[templateName]",e.templateName):`${e.templateName}.zip`,outDir:d.outDir??"dist-zip"};let m=i;return"boolean"==typeof i?!0===m&&(m={}):"object"!=typeof i&&(m=!1),{enableProxyCache:s,proxyCacheTTL:a,disableSSLValidation:n,imageOptimizer:m,templateLess:l,miHudLess:o,outDir:p,distZip:f,syncBackupsDir:h,v7Features:u,personalAccessToken:g,portalPageId:r,integrateMiTopBar:c,...e}},exports.urlReplacer=T,exports.vitePPDev=function(e){const{templateName:t,templateLess:r,backendBaseURL:s,miHudLess:a,portalPageId:n,enableProxyCache:i,proxyCacheTTL:o,disableSSLValidation:c,distZip:l,syncBackupsDir:p,v7Features:d,personalAccessToken:h}=e||{};let u=!0;return process.cwd(),{name:"vite-pp-dev",apply:"serve",config:e=>{const a=function(e){return[fe(e.base,(e=>"string"==typeof e&&e.length>0&&"/"!==e),'Server base path cannot be empty or "/"'),fe(e.port,(e=>void 0===e||"number"==typeof e&&e>0&&e<65536),"Server port must be a valid port number (1-65535)")].find((e=>!e.isValid))||{isValid:!0}}({base:e.base||"",...e.server});if(!a.isValid)throw new Error(a.error);return e.clientInjectionPlugin={backendBaseURL:s,portalPageId:n,templateLess:r,v7Features:d},d&&(e.base=`/pl/${t}`),e},transformIndexHtml:async(e,t)=>{const r={html:e,tags:[]};return u&&(u=!1,r.tags.push({tag:"script",injectTo:"body",children:`${Math.random()}`})),r},configureServer:u=>{let g=u.config.base;g.endsWith("/")||(g+="/");const f=g.substring(0,g.lastIndexOf("/"));if(u.middlewares.use(oe(g,t)),s){const w=new URL(s).host,y={headers:{host:w,referer:s,origin:s.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},portalPageId:n,appId:n,templateLess:r,disableSSLValidation:c,v7Features:d,personalAccessToken:h??process.env.MI_ACCESS_TOKEN},v=[fe((m=y).headers,(e=>"object"==typeof e&&"string"==typeof e.host&&"string"==typeof e.referer&&"string"==typeof e.origin),"MiAPI headers must be properly configured"),fe(m.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI portalPageId must be a positive number if provided"),fe(m.appId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI appId must be a positive number if provided"),fe(m.personalAccessToken,(e=>void 0===e||"string"==typeof e),"MiAPI personalAccessToken must be a string if provided")].find((e=>!e.isValid))||{isValid:!0};if(!v.isValid)throw new Error(v.error);const b=new z(s,y);if(i){let e=+o;(!e||Number.isNaN(e)||e<0)&&(e=6e5);const t={devServer:u,ttl:e},r=function(e){return[fe(e.ttl,(e=>"number"==typeof e&&e>0),"Proxy cache TTL must be a positive number")].find((e=>!e.isValid))||{isValid:!0}}(t);if(!r.isValid)throw new Error(r.error);u.middlewares.use(J(t))}u.middlewares.use(F({baseURL:s,proxyIgnore:["/@vite","/@metricinsights","/@",f],disableSSLValidation:c,miAPI:b}));const k=new RegExp(`^((${g})|/)$`);u.middlewares.use(he(k,b,e));const x=(e,t,r,s,a)=>{const n={error:r};s&&(n.details=s),a&&(n.code=a),e.status(t).json(n).end()},P=(e,t,r)=>{u.config.logger.error(`${r} token validation error:`,t);const s=B(t);if(t.tokenErrorInfo){const r=t.tokenErrorInfo;u.config.logger.info(`Using enhanced error info: ${r.code} - ${r.userFriendlyMessage}`);const s=r.status||500,a=r.code,n=r.userFriendlyMessage,i=r.message;x(e,s,n,i,a)}else{let t,a,n;switch(u.config.logger.info(`Using original error info: ${s.code} - ${s.userFriendlyMessage}`),s.code){case"SESSION_EXPIRED":t=412,a="personal"===r?"Personal access token expired":"Session expired",n="personal"===r?"PAT_EXPIRED":"SESSION_EXPIRED";break;case"UNAUTHORIZED":t=401,a="Unauthorized",n="UNAUTHORIZED";break;case"FORBIDDEN":t=403,a="Access forbidden",n="FORBIDDEN";break;default:t=500,a="Internal server error",n=s.code}const i="personal"===r&&"PAT_EXPIRED"===n?"Your personal access token has expired. Please generate a new token from the portal.":"regular"===r&&"SESSION_EXPIRED"===n?"Your portal session has expired. Please refresh your token or re-authenticate.":s.userFriendlyMessage;x(e,t,a,i,n)}return null};ge.post("/@api/login",(async(e,t,r)=>{const{token:s,tokenType:a}=e.body;if(s){if(u.config.logger.info(`Attempting to validate ${a} token...`),"personal"===a){if(!await b.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?(b.personalAccessToken=s,u.config.logger.info(`Personal access token validated successfully for user ${e.data.user.user_id}`),e):(x(t,400,"Token expired or invalid"),null))).catch((e=>P(t,e,"personal"))))return;A(t,"/",302)}else if("regular"===a){if(!await b.get("/api/user",{"Content-Type":"application/json",Accept:"application/json",Token:s},!0).then((e=>e.data?.users?.length?(b.personalAccessToken=void 0,u.config.logger.info(`Regular token validated successfully for ${e.data.users.length} user(s)`),t.setHeader("set-cookie",e.headers["set-cookie"]??""),e):(x(t,400,"Token expired or invalid"),null))).catch((e=>P(t,e,"regular"))))return;A(t,"/",302)}}else x(t,400,"Token is required")})),u.middlewares.use(ge);const $=!1!==l?new ne(t,Object.assign({backupDir:p},"object"==typeof l?{distZipFolder:l.outDir,distZipFilename:l.outFileName}:void 0)):void 0;return new V(u,{distService:$,miAPI:b}),()=>{u.middlewares.use(ie((e=>e.split("?")[0].endsWith("index.html")),((e,t)=>Buffer.from(T(w,t.headers.host??"",b.buildPage(e,a))))))}}var m}}};
|
|
2
|
-
//# sourceMappingURL=plugin-CqSS_2nh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-CqSS_2nh.js","sources":["../../../src/lib/helpers/url.helper.ts","../../../src/lib/logger.ts","../../../src/lib/helpers/color.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/page.ts","../../../src/api/page-template.ts","../../../src/lib/helpers/token.helper.ts","../../../src/lib/pp.middleware.ts","../../../src/lib/client.service.ts","../../../src/lib/proxy-cache.middleware.ts","../../../src/lib/dist.service.ts","../../../src/lib/rewrite-response.middleware.ts","../../../src/lib/helpers/content-encoding.helper.ts","../../../src/lib/pp-redirect.middleware.ts","../../../src/lib/load-pp-data.middleware.ts","../../../src/lib/internal.middleware.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],"names":["urlReplacer","originalHost","destinationHost","content","urlReplaceRegExp","RegExp","replace","substring","args","startsWith","redirect","res","url","statusCode","setHeader","end","storage","Map","DEFAULT_LOGGER_KEY","createLogger","level","name","has","get","logger","cL","set","colors","createColors","tokenLoginFunction","TOKEN_TYPE_CONFIG","personal","placeholder","caption","host","endpoint","regular","updateTokenUI","type","tokenInput","tokenCaption","info","innerHTML","showError","message","errorElement","textContent","classList","add","hideError","remove","setupEventHandlers","formWrapper","submitButton","addEventListener","async","e","preventDefault","value","trim","focus","tokenTypeSwitcher","document","getElementById","activeOption","querySelector","tokenType","dataset","token","response","fetch","method","headers","body","JSON","stringify","URL","window","location","origin","pathname","json","error","parseError","href","networkError","handleFormSubmission","key","click","initializeLoginForm","loginForm","contentWrapper","firstChild","rowTemplate","lastChild","cloneNode","orRow","innerText","setAttribute","helperForm","formContent","createElement","styleElement","head","appendChild","tokenTypeOptions","querySelectorAll","handleTokenTypeChange","target","forEach","opt","option","currentTarget","setupTokenTypeSwitcher","console","observer","MutationObserver","mutations","mutation","disconnect","observe","childList","subtree","existingForm","hostOriginRegExp","PROXY_HEADER","initProxy","opts","rewritePath","baseURL","disableSSLValidation","miAPI","Error","fileType","import","createProxyMiddleware","selfHandleResponse","pathFilter","req","proxyIgnore","some","test","Array","isArray","rP","changeOrigin","autoRewrite","cookieDomainRewrite","log","warn","secure","on","proxyReq","referer","getHeader","blue","green","protocol","path","personalAccessToken","socket","setTimeout","destroyed","destroy","proxyRes","serverRes","includes","streamInterceptor","setHeaders","Object","entries","pipe","rewriteInterceptor","responseInterceptor","responseBuffer","fileTypeFromBuffer","toString","reqUrl","searchParams","redirectToFunction","storageKey","redirectCount","localStorage","getItem","Number","isNaN","func","params","URLSearchParams","search","setItem","removeItem","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","portalPageId","getDownloadTemplateUrl","templateId","getUploadUrl","getUploadTemplateUrl","downloadPageAssets","withCredentials","responseType","data","uploadPageAssets","file","formData","FormData","File","assetFile","append","post","Referer","getUri","downloadTemplateAssets","uploadTemplateAssets","AssetsV7API","PageAPI","getAll","Accept","Pragma","Expires","pages","id","page","getPageContent","internalPageName","create","PageTemplateAPI","internal_name","page_templates","page_template","getTokenErrorInfo","status","toLowerCase","code","userFriendlyMessage","suggestions","TEMPLATE_PAGE_NAME","axiosInstanceCache","MiAPI","pageTemplate","pageTitle","pageVars","v7Features","isV710OrHigher","templateLoaded","templateLoadedResolve","templateLess","assetsApi","pageApi","pageTemplateApi","Promise","resolve","cacheKey","defaults","httpsAgent","Agent","rejectUnauthorized","timeout","httpAgent","keepAlive","maxSockets","isTemplateLoaded","clearHeaders","obj","undefined","keys","authorization","updateHeaders","localTemplateHTML","getPageTemplate","red","template_id","find","p","yellow","enabled","visible_in_homepage","getPageVariables","pageId","tags","template","parsed","parse","reason","getPageInfo","pageIdToFetch","fetchV7Page","fetchLegacyPage","handlePageFetchError","buildPage","miHudLess","result","v","dom","JSDOM","placeholderText","container","scripts","length","insertBefore","item","title","text","serialize","getAssets","pageInfo","templateInfo","updateAssets","assets","validateCredentials","testHeaders","isValid","errorInfo","cleanup","normalizedHeaders","context","contextPrefix","suggestion","index","logTokenError","tokenErrorInfo","ClientService","server","eventMap","onInfoDataRequest","bind","onTemplateSync","init","ws","event","handler","send","distService","config","clientInjectionPlugin","canSync","currentAssets","isAxiosError","validation","refresh","validationError","cause","newAssets","saveBackupAndBuild","buildNewAssets","Buffer","updateResult","backupMeta","getBackupMeta","lastBackupName","backupFilename","lastBackupHash","currentHash","lastBackupDate","backupDate","Date","toISOString","syncedAt","FILE_EXTENSION_REGEX","DEFAULT_TTL","DEFAULT_MAX_SIZE","DEFAULT_MAX_ITEMS","EnhancedCache","memoryCache","Cache","totalSize","maxSize","maxItems","put","ttl","oldItem","size","itemsToRemove","sortedKeys","sort","a","b","itemA","itemB","timestamp","i","del","oldestKey","getTotalSize","getItemCount","cache","createResponseBuffer","chunks","alloc","totalLength","reduce","sum","chunk","allocUnsafe","offset","copy","initProxyCache","devServer","next","originalUrl","cleanUrl","split","generateCacheKey","cacheItem","header","setResponseHeaders","write","originalEnd","originalWrite","encoding","callback","hasHeader","call","safeEncoding","push","from","isBuffer","String","finalBuffer","responseSize","getHeaders","now","toFixed","finalEncoding","TEMPLATE_PART_PAGE_NAME","TEMPLATE_PART_DATE","DIRNAME","dirname","__filename","fileURLToPath","require","pathToFileURL","_documentCurrentScript","tagName","toUpperCase","src","baseURI","pluginPath","node_modules_path","metaDirPath","metaFilePath","DistService","backupFolder","backupNameTemplate","dateFormat","pageName","currentMeta","distZipFolder","distZipFilename","syncOptions","process","cwd","date","syncMeta","checkMeta","fs","promises","stat","mkdir","readMetaFile","readFile","writeMetaFile","meta","writeFile","getLatestSavedBackup","backupPath","backupName","saveBackup","backupFile","slice","backupFileHash","crypto","createHash","update","digest","filename","finally","buildCommand","reject","cyan","proc","child_process","spawn","env","NODE_ENV","stdio","msg","initRewriteResponse","predicate","rewrite","buffers","cb","contentEncoding","unzipSync","brotliDecompressSync","deflateSync","decodeContent","concat","bufferEncoding","endCallback","gzipSync","brotliCompressSync","inflateSync","encodeContent","initPPRedirect","base","templateName","baseWithoutTrailingSlash","endsWith","parsedUrl","findPaths","redirectUrl","apiResponseCache","getCachedResponse","cached","delete","setCachedResponse","DEFAULT_REDIRECT_URL","initLoadPPData","applyUrlRegExp","mi","isNeedTemplateLoad","isApplyRequest","cutUrlParams","options","redirectOnAuthFailure","loadPageData","success","handleLoadError","handleTemplateLoad","handlePageInfoOnly","operationType","isAuthError","fullRedirectUrl","encodeURIComponent","internalServer","express","validateConfigValue","validator","use","urlencoded","extended","validationResult","validations","c","backendBaseURL","appId","proxyCacheTTL","integrateMiTopBar","integrate","validateConfig","enableProxyCache","imageOptimizer","outDir","distZip","syncBackupsDir","MI_ACCESS_TOKEN","distZipConfig","outFileName","imageOptimizerConfig","isFirstRequest","apply","port","validateServerConfig","transformIndexHtml","html","ctx","tag","injectTo","children","Math","random","configureServer","lastIndexOf","middlewares","baseUrlHost","miConfig","cacheConfig","validateProxyCacheConfig","proxyPassMiddleware","isIndexRegExp","sendErrorResponse","details","handleTokenValidationError","enhancedErrorInfo","errorCode","Authorization","user","user_id","Token","users","backupDir"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createProxyMiddleware as e,responseInterceptor as t}from"http-proxy-middleware";import{createLogger as r}from"vite";import{createColors as s}from"picocolors";import a,{isAxiosError as n}from"axios";import{JSDOM as i}from"jsdom";import{Agent as o}from"https";import*as c from"memory-cache";import*as l from"path";import{promises as p}from"fs";import{fileURLToPath as d,URL as h}from"url";import*as u from"crypto";import*as g from"process";import*as f from"child_process";import*as m from"console";import{deflateSync as w,brotliDecompressSync as y,unzipSync as v,inflateSync as b,brotliCompressSync as k,gzipSync as x}from"zlib";import P from"express";const T=(e,t,r)=>{const s=new RegExp(`(!!)?(https?(:(\\\\)?/(\\\\)?/)${e})`,"gi");return r.replace(s,((e,...r)=>e.startsWith("!!")?r[1]:`http${r[2]}${t}`))},$=(e,t,r)=>{e.setHeader("location",t),e.statusCode=r,e.end()};const A=new Map,E="default",I=(e="info",t=E)=>{if(A.has(t))return A.get(t);if(t===E){const s=r(e);return A.set(t,s),s}const s=r(e);return A.set(t,s),s},S=s(),L=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,r,s){const a=e[t];a&&(r.placeholder=a.placeholder,s.innerHTML=a.caption)}function r(e,t){t.textContent=e,t.classList.add("show")}function s(e){e.classList.remove("show")}function a(e,t,a,n){a.addEventListener("click",(async a=>{if(a.preventDefault(),s(n),!t.value.trim())return r(`${t.placeholder} is required`,n),void t.focus();const i=document.getElementById("token-type-switcher"),o=i?.querySelector(".token-type-option.active"),c=o?.dataset.value||"personal";await async function(e,t,s,a){try{s.classList.add("loading");const n=await fetch("/@api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e,tokenType:t}),redirect:"follow"}),i=n.url&&new URL(n.url,window.location.origin);if(!i||i.pathname.startsWith("/login")||i.pathname.startsWith("/@api/"))try{const e=await n.json();r(`Login failed: ${e?.error||"Unknown error occurred"}`,a)}catch(e){r("Login failed: Unable to parse response",a)}else window.location.href=n.url}catch(e){r("Login failed: Network error. Please check your connection.",a)}finally{s.classList.remove("loading")}}(t.value.trim(),c,e,n)})),t.addEventListener("keydown",(e=>{"Enter"===e.key&&(e.preventDefault(),a.click())})),t.addEventListener("input",(()=>{s(n)}))}function n(e){const r=e.firstChild;if(!r)return;const s=r.lastChild?.cloneNode(!0);if(!s)return;s.innerHTML="";const n=s.cloneNode(!0);n.innerText="OR",n.setAttribute("role","separator"),n.setAttribute("aria-label","Alternative login method");const i=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>`,i.appendChild(o),r.appendChild(n),r.appendChild(i);const l=document.getElementById("token-type-switcher"),p=document.getElementById("helper-token"),d=document.getElementById("token-caption"),h=document.getElementById("helper-token-submit"),u=document.getElementById("error-message"),g=o.querySelector(".helper-login-wrapper");l&&p&&d&&h&&u&&g?(!function(e,r,s){const a=e.querySelectorAll(".token-type-option"),n=e=>{const n=e.dataset.value;a.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(n,r,s)};a.forEach((e=>{e.addEventListener("click",(e=>{const t=e.currentTarget;n(t)})),e.addEventListener("keydown",(t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),n(e))}))}))}(l,p,d),a(g,p,h,u),t("personal",p,d)):console.error("Failed to find required form elements")}const i=new MutationObserver((e=>{for(const t of e)if("childList"===t.type){const e=document.querySelector("#mi-react-root form");if(e){i.disconnect(),n(e);break}}}));i.observe(document.body,{childList:!0,subtree:!0});const o=document.querySelector("#mi-react-root form");o&&(i.disconnect(),n(o))},F=/^(https?:\/\/)([^/]+)(\/.*)?$/i,O="X-PP-Proxy";function D(r){const{rewritePath:s=/^\/(?!pt).*/i,baseURL:a="",disableSSLValidation:n=!1,miAPI:i}=r;if(!a)throw new Error("Base url is required");const o=a.replace(F,"$2"),c=a.replace(F,"$1$2"),l=import("file-type"),p=I();return e({selfHandleResponse:!0,pathFilter:(e,t)=>!(r.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:a,changeOrigin:!0,autoRewrite:!0,cookieDomainRewrite:{[o]:"localhost"},logger:{info:()=>{},log:()=>{},error:()=>{},warn:()=>{}},secure:!n,headers:{host:o,origin:c},on:{proxyReq(e,t,r){const s=t.headers.host,n=e.getHeader("referer");return p.info(`${S.blue("Proxies request:")} ${S.green(t.method)} ${t.url} -> ${S.green(e.method)} ${e.protocol}//${e.host}${e.path}`),s&&n&&"string"==typeof n&&e.setHeader("referer",n.replace(new RegExp(`https?://${s}`),a)),i.personalAccessToken&&e.setHeader("Authorization",`Bearer ${i.personalAccessToken}`),t.socket.on("close",(()=>{setTimeout((()=>{e.destroyed||e.destroy()}),200)})),e},proxyRes:(e,r,s)=>{if(e.headers["content-type"]?.includes("text/event-stream")||e.headers["transfer-encoding"]?.includes("chunked")&&"no"===e.headers["x-accel-buffering"]){p.info(`${S.blue("Start streaming for request:")} ${S.green(r.method)} ${r.url}`);const t=async(e,t,r)=>{r.setHeader(O,1),r.setHeaders(new Map(Object.entries(e.headers))),e.pipe(r)};return t(e,r,s)}const a=t((async(e,t,r,s)=>{s.setHeader(O,1);if(await(await l).fileTypeFromBuffer(e))return e;{let t=e.toString("utf8");try{const e=new URL(r.url??"",`http://${o}`);if(e.searchParams&&e.searchParams.has("proxyRedirect")){t+=`<script>(${function(){const e="pp-dev::redirectCount";let t=+(localStorage.getItem(e)??0);Number.isNaN(t)&&(t=0);let r=window.location.href;const s=function(){const a=new URLSearchParams(window.location.search);a.has("proxyRedirect")?r!==window.location.href?(r=window.location.href,setTimeout(s,t<3?3e3:5e3)):(localStorage.setItem(e,""+ ++t),window.location.href=a.get("proxyRedirect")):localStorage.removeItem(e)};setTimeout(s,3e3)}.toString()})()<\/script>`}e.pathname.startsWith("/login")&&(t+=`<script>const host = "${o}";\n(${L.toString()})()<\/script>`)}catch{}const s=r.headers.host??"";return((e,t,r)=>{const s=new RegExp(`${e.replace(/\\*\//gi,"\\\\/")}`,"gi"),a=new RegExp(`${e}`,"gi"),n=r.replace(s,t);return n===r?n.replace(a,t):n})("/auth/saml/login","/login",T(o,s,t))}}));return a(e,r,s)},error(e,t,r){const s=`Proxy error: "${e.message}" when trying to "${t.method} ${t.url}"\n\n${e.stack}`;p.error(s),r.writable&&r.writeHead(500,{"Content-Type":"text/plain"}),r.end(s)}}})}class N{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 R extends N{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,r){const s=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});s.append("file",n);const i=this.getUploadUrl(e);return this.axios.post(i,s,{withCredentials:!0,headers:Object.assign({},r,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).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,r){const s=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});s.append("file",n,"file.zip");const i=this.getUploadTemplateUrl(e);return this.axios.post(i,s,{withCredentials:!0,headers:Object.assign({},r,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).then((e=>e.data))}}class C extends R{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`}}class M extends N{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){return(await this.axios.get(`/api/page/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.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 B extends N{async getAll(e,t){return(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.page_templates}async get(e,t){return(await this.axios.get(`/api/page_template/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.page_template}}function H(e){const t=e.response?.status||0,r=e.response?.data?.message||e.message||"Unknown error";switch(t){case 412:return r.toLowerCase().includes("session expired")?{status:t,message:r,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:r,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:r,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:r,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:r,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 j="[DEV PAGE. DO NOT DELETE]",U=new Map;class z{#e;#t;#r=null;#s;#a;#n;#i;#o;#c;#l;portalPageId;templateLess;assetsApi;pageApi;pageTemplateApi;logger;constructor(e,t){const{headers:r={},portalPageId:s,templateLess:n=!0,disableSSLValidation:i=!1,v7Features:c=!1,personalAccessToken:l}=t||{};this.#e=r,this.#a=[],this.#s="",this.#n=c,this.#i=l,this.#o=!1,this.#c=Promise.resolve(!1);const p=`${e}:${i}`;U.has(p)?this.#t=U.get(p):(i&&(a.defaults.httpsAgent=new o({rejectUnauthorized:!1})),this.#t=a.create({baseURL:e,headers:r,timeout:3e4,maxRedirects:5,httpAgent:new o({keepAlive:!0,maxSockets:10}),httpsAgent:new o({keepAlive:!0,maxSockets:10})}),U.set(p,this.#t)),this.portalPageId=s,this.templateLess=n,this.assetsApi=new(c?C:R)(this.#t),this.pageApi=new M(this.#t),this.pageTemplateApi=new B(this.#t),this.logger=I()}async isTemplateLoaded(){return this.#c}get isV710OrHigher(){return this.#o}#p(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.#i&&(t.authorization=`Bearer ${this.#i}`),t}get personalAccessToken(){return this.#i}set personalAccessToken(e){this.#i=e}updateHeaders(e){this.#p(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.#r||(this.#c=new Promise((e=>{this.#l=e}))),this.#r)return Promise.resolve(this.#r);if(void 0===this.templateLess&&(this.templateLess=!1),this.#n){const t=await this.pageApi.get(this.portalPageId,this.#p(e)).then((e=>(this.logger.info(S.green("Page fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(S.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 the portalPageId is correct.")):t}));return void 0!==t.template_id&&(this.#o=!0),this.#r=this.localTemplateHTML,this.#r=this.#r.replace(/%%PAGE TITLE%%/g,t.name||"Local template"),this.logger.info(S.green("Local page template fetched")),this.#l(!0),this.#r}let t=(await this.pageApi.getAll(this.#p(e)).then((e=>(this.logger.info(S.green("Page list fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(S.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===j));return t||(this.logger.warn(S.yellow("Creating dev page template...")),t=await this.pageApi.create({enabled:"Y",name:j,internal_name:"dev-page-template",visible_in_homepage:"Y"},this.#p(e)).then((e=>(this.logger.info(S.green("Dev page created")),e))).catch((e=>{throw this.logger.error(S.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 "${j}" already exists`)}))),await this.pageApi.getPageContent(t.internal_name,this.#p(e)).then((e=>(this.#r=e,e))).then((e=>(this.#l(!0),this.logger.info(S.green("Page template fetched")),e))).catch((e=>{throw this.#l(!1),this.logger.error(S.red(`Error fetching page template: ${e.message}`)),new Error("Error fetching page template")}))}async getPageVariables(e,t){return this.#r=await this.getPageTemplate(t),this.portalPageId||(this.portalPageId=e,this.templateLess=!1),await this.pageApi.get(e,this.#p(t)).then((e=>{const{tags:t="[]",name:r,template:s}=e;if(s&&t){const e=JSON.parse(t);return this.#a=e,this.#s=r,e}return this.#a=[],this.#s=r,[]})).catch((t=>{if(this.logger.error(S.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 new Error(`Current user does not have access to page with id "${e}" on instance ${this.#t.getUri()}`);throw t}))}async getPageInfo(e,t){this.portalPageId||(this.portalPageId=e);const r=this.#p(t),s=this.portalPageId;try{return this.#n?await this.#d(s,r):await this.#h(s,r)}catch(e){this.#u(e,s)}}async#d(e,t){const r=await this.pageApi.get(e,t);return this.logger.info(S.green("Page fetched")),void 0!==r.template_id&&(this.#o=!0),r}async#h(e,t){return await this.pageApi.get(e,t)}#u(e,t){if(this.#n&&e.message?.includes("access"))throw new Error("The current user does not have access to this page. Check your configuration to ensure the portalPageId is correct.");if(404===e.response?.status)throw new Error(`Portal Page with id "${t}" not found on instance ${this.#t.getUri()}`);if(401===e.response?.status)throw new Error(`Current user does not have access to page with id "${t}" on instance ${this.#t.getUri()}`);throw e}buildPage(e,t=!1){let r="string"==typeof e?e:e.toString("utf-8");for(const e of this.#a)r=r.replace(new RegExp(`\\[${e.name}\\]`,"g"),e.value);const s=new i(t?r:this.#r),a="%%PLACEHOLDER%%";if(!t){const e=s.window.document.createElement("div");e.innerHTML=a;const t=s.window.document.querySelector(".main-side");if(t){const r=t.querySelectorAll("script");r.length?t.insertBefore(e,r.item(r.length-1)):t.append(e)}else{const t=s.window.document.createElement("div");t.append(e),s.window.document.body.append(t)}const r=s.window.document.querySelector("head"),n=r.querySelector("title");n?n.text=this.#s:r.innerHTML+=`<title>${this.#s}</title>`}return s.serialize().replace(new RegExp(`<div>\\s*${a}\\s*<\\/div>`,"i"),r)}async getAssets(){if(this.portalPageId){if(this.templateLess)return await this.assetsApi.downloadPageAssets(this.portalPageId,this.#e);{const e=await this.pageApi.get(this.portalPageId,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.portalPageId){if(this.templateLess)return await this.assetsApi.uploadPageAssets(this.portalPageId,e,this.#e);{const t=await this.pageApi.get(this.portalPageId,this.#e);if(this.#o){const r=await this.pageTemplateApi.get(t.template_id,this.#e);return await this.assetsApi.uploadTemplateAssets(r.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=H(e);return{isValid:!1,error:t.userFriendlyMessage,code:t.code}}}async get(e,t,r=!1){const s=r?t:Object.assign({},this.#p(this.#e),t);try{return await this.#t.get(e,{headers:s})}catch(e){if("UNKNOWN_ERROR"!==H(e).code){const t=H(e);throw this.logger.error(S.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,r){const s=H(t),a=`[${r}] `;e.error(S.red(`${a}${s.userFriendlyMessage}`)),e.error(S.red(`Status: ${s.status} (${s.code})`)),e.error(S.red(`Details: ${s.message}`)),s.suggestions.length>0&&(e.info(S.yellow("Suggestions:")),s.suggestions.forEach(((t,r)=>{e.info(S.yellow(` ${r+1}. ${t}`))})))}(this.logger,e,"API Request"),e.response||(e.response={status:t.status,data:{message:t.message}}),e.tokenErrorInfo=t,e}throw e}}}class V{server;opts;eventMap;logger;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.logger=I(),this.init()}init(){const{ws:e}=this.server;for(const[t,r]of this.eventMap)e.on(t,r)}onInfoDataRequest(){this.server.ws.send({type:"custom",event:"info-data:response",data:{}})}async onTemplateSync(){if(!this.opts.distService||!this.opts.miAPI)return this.server.ws.send("template:sync:response",{error:"Dist service or MiAPI is not defined"}),void this.logger.error(S.red("Dist service or MiAPI is not defined"));{const{distService:e,miAPI:t}=this.opts;if(this.server.config.clientInjectionPlugin?.v7Features){if(!t?.isV710OrHigher)return void this.server.ws.send("template:sync:response",{error:"This feature is available only for MI v7.1.0 or higher",config:{canSync:!1}});this.server.ws.send("client:config:update",{config:{canSync:!0}})}const r=await(t?.getAssets().catch((async e=>{if(n(e)){if("SESSION_EXPIRED"===H(e).code){this.logger.info(S.yellow("Session expired - attempting to validate credentials"));try{const e=await(t?.validateCredentials());e&&!e.isValid?(this.logger.error(S.red(`Authentication error: ${e.error}`)),this.server.ws.send("template:sync:response",{error:e.error,code:e.code,refresh:!0})):(this.logger.info(S.yellow("Session expired")),this.server.ws.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(S.yellow("Session expired")),this.server.ws.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(S.yellow("Server in maintenance mode, VPN connection is needed or no internet connection")),this.server.ws.send("template:sync:response",{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e}throw e})));if(r instanceof Error)return;const s=r?await(e?.saveBackupAndBuild(r).catch((e=>{if("Backup file is not a ZIP file"===e.message)return this.logger.error(S.red("Backup file is not a ZIP file")),e}))):await(e?.buildNewAssets());if(!(s&&s instanceof Buffer))return s instanceof Error?(this.server.ws.send("template:sync:response",{error:s.message}),void this.logger.error(S.red(s.message))):(this.server.ws.send("template:sync:response",{error:"Failed to build new assets"}),void this.logger.error(S.red("Failed to build new assets")));{const r=await(t?.updateAssets(s));if("OK"===r?.status){const t=e?.getBackupMeta(),{lastBackupName:r,lastBackupHash:s,lastBackupDate:a}=t||{lastBackupName:"",lastBackupHash:"",lastBackupDate:(new Date).toISOString()};this.server.ws.send("template:sync:response",{syncedAt:new Date(a),currentHash:s,backupFilename:r}),this.logger.info(S.green("Template synced"))}else this.server.ws.send("template:sync:response",{error:"Failed to update assets"}),this.logger.error(S.red("Failed to update assets"))}}}}const _=/\.(?:[a-z0-9]+)$/i,q=6e5,Z=104857600,W=1e3;class X extends c.Cache{totalSize=0;maxSize;maxItems;constructor(e,t){super(),this.maxSize=e,this.maxItems=t}put(e,t,r){const s=this.get(e);s&&(this.totalSize-=s.size);const a=super.put(e,t,r);return this.totalSize+=t.size,this.cleanup(),a}cleanup(){const e=this.keys();if(e.length>this.maxItems){const t=e.length-this.maxItems,r=e.sort(((e,t)=>{const r=this.get(e),s=this.get(t);return(r?.timestamp||0)-(s?.timestamp||0)}));for(let e=0;e<t;e++){const t=r[e],s=this.get(t);s&&(this.totalSize-=s.size,this.del(t))}}for(;this.totalSize>this.maxSize&&e.length>0;){const t=e.sort(((e,t)=>{const r=this.get(e),s=this.get(t);return(r?.timestamp||0)-(s?.timestamp||0)}))[0];if(t){const e=this.get(t);e&&(this.totalSize-=e.size,this.del(t))}}}getTotalSize(){return this.totalSize}getItemCount(){return this.keys().length}}const Y=new X(Z,W);function K(e){if(0===e.length)return Buffer.alloc(0);if(1===e.length)return e[0];const t=e.reduce(((e,t)=>e+t.length),0),r=Buffer.allocUnsafe(t);let s=0;for(const t of e)t.copy(r,s),s+=t.length;return r}function J(e){const{devServer:t,ttl:r=q,maxSize:s=Z,maxItems:a=W}=e,n=I();return s===Z&&a===W||(Y.maxSize=s,Y.maxItems=a),t.cache=Y,(e,t,s)=>{const a=e.originalUrl||e.url||"",i=function(e){const t=e.split("?")[0];return _.test(t)?t:""}(a);if(!i)return s();const o=Y.get(i);if(o)return n.info(`${S.blue("Proxies request:")} ${S.green(e.method)} ${a} -> ${S.blue("Cache")} ${i}`),function(e,t){try{for(const[r,s]of Object.entries(t))null!=s&&e.setHeader(r,s)}catch(e){console.warn("Failed to set some response headers:",e)}}(t,o.headers),t.write(o.content),void t.end();const c=t.end,l=t.write,p=[];t.write=function(e,r,s){if(!t.hasHeader(O))return l.call(this,e,r,s);if("string"==typeof e){const t=r||"utf8";p.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?p.push(e):null!=e&&p.push(Buffer.from(String(e),"utf8"));return!0},t.end=function(e,s,a){if(!t.hasHeader(O))return c.call(this,e,s,a);if(null!=e)if("string"==typeof e){const t=s||"utf8";p.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?p.push(e):p.push(Buffer.from(String(e),"utf8"));let o;try{o=K(p);const e=o.length;if(e>0&&e<10485760){const s={headers:t.getHeaders(),content:o,timestamp:Date.now(),size:e};Y.put(i,s,r),n.info(`${S.blue("[Cached]")} ${i} (${(e/1024).toFixed(1)}KB)`)}}catch(e){n.error(`Failed to cache response for ${i}: ${e}`),o=K(p)}const l=s||"utf8";return c.call(this,o,l,a)},s()}}const G="pageName",Q="date",ee=l.dirname("undefined"!=typeof __filename&&__filename||d(import.meta.url)),te=l.resolve(ee,"..",".."),re=l.resolve(te,"..",".."),se=l.resolve(re,".pp-dev-meta"),ae=l.resolve(se,"sync-service.meta.json");class ne{backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;logger;constructor(e,t){this.pageName=e;const{backupFolder:r=l.resolve(g.cwd(),"backups"),distZipFolder:s=l.resolve(g.cwd(),"dist-zip"),distZipFilename:a=`${this.pageName}.zip`,backupNameTemplate:n=`{${G}}-{${Q}}.zip`,dateFormat:i=e=>e.toISOString().replace(/:/g,"-").replace(/\..*$/,"")}=t||{};this.backupFolder=r,this.backupNameTemplate=n,this.dateFormat=i,this.distZipFolder=s,this.distZipFilename=a,this.syncMeta(),this.logger=I()}async checkMeta(){try{await p.stat(se)}catch{await p.mkdir(se)}try{await p.stat(this.backupFolder)}catch{await p.mkdir(this.backupFolder)}}async readMetaFile(){return await this.checkMeta(),await p.readFile(ae,{encoding:"utf-8"}).catch((()=>"{}"))}async writeMetaFile(e){return await this.checkMeta(),await p.writeFile(ae,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=l.resolve(this.backupFolder,e);try{return await p.stat(t),t}catch{return null}}backupName(e,t=new Date){return this.backupNameTemplate.replace(`{${G}}`,e).replace(`{${Q}}`,this.dateFormat(t))}getBackupMeta(){return this.currentMeta}async saveBackup(e){if("PK"!==e.toString("utf-8").slice(0,4))throw new Error("Backup file is not a ZIP file");const t=u.createHash("md5").update(e).digest("hex");if(await this.getLatestSavedBackup()){const{lastBackupHash:e}=this.currentMeta;if(e===t)return}const r=new Date,s=this.backupName(this.pageName,r);return this.currentMeta.lastBackupName=s,this.currentMeta.lastBackupHash=t,this.currentMeta.lastBackupDate=r.toISOString(),await this.syncMeta(),await p.writeFile(l.resolve(this.backupFolder,s),e).finally((()=>{this.logger.info(`Backup saved to ${s}`)}))}async buildNewAssets(){const e=new Promise(((e,t)=>{let r="";this.logger.info(S.cyan("[DistService] Build started"));const s=f.spawn("node",[l.resolve(te,"./bin/pp-dev.js"),"build"],{cwd:g.cwd(),env:Object.assign({},g.env,{NODE_ENV:"production"}),stdio:"inherit"});s.on("message",(e=>{r+=e})),s.on("close",(s=>{0===s?e(r):t(new Error(`build command exited with code ${s}`))})),s.on("error",(e=>{t(e)}))}));try{await e.finally((()=>{this.logger.info(S.cyan("[DistService] Build finished"))}));const t=l.resolve(g.cwd(),this.distZipFolder,this.distZipFilename);if(!await p.stat(t))throw new Error(`File ${t} not found`);return await p.readFile(t)}catch(e){throw m.log(e),e}}async saveBackupAndBuild(e){return await this.saveBackup(e),await this.buildNewAssets()}}function ie(e,t){return async(r,s,a)=>{if(await e(r.url??"",r,s)){I().info(`Rewrite response for ${r.url}`);const e=s.end,a=[];s.write=function(e){return a.push(e),!0},s.end=function(n,i,o){"string"==typeof n&&a.push(Buffer.from(n));const c=s.getHeader("content-encoding"),l=function(e,t){switch(t){case"gzip":return v(e);case"br":return y(e);case"deflate":return w(e);default:return e}}(Buffer.from(Buffer.concat(a)),c),p="function"!=typeof i&&i?i:"utf-8",d="function"==typeof i?i:o;return e.call(this,function(e,t){switch(t){case"gzip":return x(e);case"br":return k(e);case"deflate":return b(e);default:return e}}(t(l,r,s),c),p,d),this}}a()}}function oe(e,t){const r=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,s=I();return(a,n,i)=>{const o=new h(a.url??"","http://localhost"),{pathname:c,search:l}=o,p=["/",r];if(t&&(p.push(`/pt/${t}`),p.push(`/pl/${t}`)),p.includes(c)){const t=`${e}${l}`;return s.info(S.yellow(`Redirecting to: ${t}`)),$(n,t,302)}i()}}const ce=new Map;function le(e){const t=ce.get(e);return t?Date.now()-t.timestamp>18e4?(ce.delete(e),null):t.data:null}function pe(e,t){ce.set(e,{timestamp:Date.now(),data:t})}const de="/home?proxyRedirect=";function he(e,t,r){const{templateLess:s=!1,miHudLess:a=!1,portalPageId:n}=r,i=I();if(s&&a&&void 0===n)throw new Error("Portal page ID is required when both templateLess and miHudLess are true");return async(r,o,c)=>{try{const l=!(s&&a);return e.test((r.url??"").split("?")[0])?l?await async function(e,t,r,s,a,n){const{templateLess:i,portalPageId:o,redirectOnAuthFailure:c,redirectUrl:l}=t,p=r.headers??{};n.info(S.green("Start loading page data"));try{const t=`pageData:${i}:${o}`;if(le(t))return n.info(S.green("Page data loaded from cache")),a();const r=i||void 0===o?e.getPageTemplate(p):e.getPageVariables(o,p);return await r,pe(t,{success:!0}),n.info(S.green("Page data loaded successfully")),a()}catch(e){return ue(e,c??!0,l??de,s,a,n,"Page data")}}(t,{templateLess:s,miHudLess:a,portalPageId:n},r,o,c,i):await async function(e,t,r,s,a,n){const{portalPageId:i,redirectOnAuthFailure:o,redirectUrl:c}=t;if(void 0===i){const e=new Error("Portal page ID is required for page info only mode");return n.error(S.red(e.message)),a(e)}const l=r.headers??{};n.info(S.green("Start loading page info"));try{const t=`pageInfo:${i}`;return le(t)?(n.info(S.green("Page info loaded from cache")),a()):(await e.getPageInfo(i,l),pe(t,{success:!0}),n.info(S.green("Page info loaded successfully")),a())}catch(e){return ue(e,o??!0,c??de,s,a,n,"Page info")}}(t,{templateLess:s,miHudLess:a,portalPageId:n},r,o,c,i):c()}catch(e){return i.error(S.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),c(e)}}}function ue(e,t,r,s,a,n,i){if(function(e){return null!==e&&"object"==typeof e&&"response"in e&&void 0!==e.response}(e)&&(n.info(S.red(`${i} loading failed. Not authorized`)),t)){const e=`${r}${encodeURIComponent("/")}`;return n.info(S.yellow(`Redirecting to: ${e}`)),$(s,e,302)}const o=e instanceof Error?e.message:String(e);return n.info(S.red(`${i} loading failed. Error: ${o}`)),a(e)}const ge=P();function fe(e,t,r){return t(e)?{isValid:!0}:{isValid:!1,error:r}}function me(e){const t=function(e){return[fe(e,(e=>"object"==typeof e&&null!==e),"VitePPDevOptions must be an object"),fe(e.templateName,(e=>"string"==typeof e&&e.length>0),"VitePPDevOptions.templateName must be a non-empty string"),fe(e.backendBaseURL,(e=>void 0===e||"string"==typeof e&&e.length>0),"VitePPDevOptions.backendBaseURL must be a non-empty string if provided"),fe(e.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.portalPageId must be a positive number if provided"),fe(e.appId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.appId must be a positive number if provided"),fe(e.proxyCacheTTL,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.proxyCacheTTL must be a positive number if provided"),fe(e.integrateMiTopBar,(t=>void 0===t||"boolean"==typeof t&&(!0!==t||!0===e.miHudLess)),"VitePPDevOptions.integrateMiTopBar can only be true when miHudLess is true")].find((e=>!e.isValid))||{isValid:!0}}(e);if(!t.isValid)throw new Error(t.error);const r=e.appId??e.portalPageId,{enableProxyCache:s=!0,proxyCacheTTL:a=6e5,disableSSLValidation:n=!1,imageOptimizer:i=!0,miHudLess:o=!1,integrateMiTopBar:c=!1,templateLess:l=!1,outDir:p="dist",distZip:d=!0,syncBackupsDir:h="backups",v7Features:u=!1,personalAccessToken:g=process.env.MI_ACCESS_TOKEN}=e||{};let f=d;f=!0===f?{outFileName:`${e.templateName}.zip`,outDir:"dist-zip"}:"object"==typeof d&&{outFileName:"string"==typeof d.outFileName?d.outFileName.replace("[templateName]",e.templateName):`${e.templateName}.zip`,outDir:d.outDir??"dist-zip"};let m=i;return"boolean"==typeof i?!0===m&&(m={}):"object"!=typeof i&&(m=!1),{enableProxyCache:s,proxyCacheTTL:a,disableSSLValidation:n,imageOptimizer:m,templateLess:l,miHudLess:o,outDir:p,distZip:f,syncBackupsDir:h,v7Features:u,personalAccessToken:g,portalPageId:r,integrateMiTopBar:c,...e}}function we(e){const{templateName:t,templateLess:r,backendBaseURL:s,miHudLess:a,portalPageId:n,enableProxyCache:i,proxyCacheTTL:o,disableSSLValidation:c,distZip:l,syncBackupsDir:p,v7Features:d,personalAccessToken:h}=e||{};let u=!0;return process.cwd(),{name:"vite-pp-dev",apply:"serve",config:e=>{const a=function(e){return[fe(e.base,(e=>"string"==typeof e&&e.length>0&&"/"!==e),'Server base path cannot be empty or "/"'),fe(e.port,(e=>void 0===e||"number"==typeof e&&e>0&&e<65536),"Server port must be a valid port number (1-65535)")].find((e=>!e.isValid))||{isValid:!0}}({base:e.base||"",...e.server});if(!a.isValid)throw new Error(a.error);return e.clientInjectionPlugin={backendBaseURL:s,portalPageId:n,templateLess:r,v7Features:d},d&&(e.base=`/pl/${t}`),e},transformIndexHtml:async(e,t)=>{const r={html:e,tags:[]};return u&&(u=!1,r.tags.push({tag:"script",injectTo:"body",children:`${Math.random()}`})),r},configureServer:u=>{let g=u.config.base;g.endsWith("/")||(g+="/");const f=g.substring(0,g.lastIndexOf("/"));if(u.middlewares.use(oe(g,t)),s){const w=new URL(s).host,y={headers:{host:w,referer:s,origin:s.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},portalPageId:n,appId:n,templateLess:r,disableSSLValidation:c,v7Features:d,personalAccessToken:h??process.env.MI_ACCESS_TOKEN},v=[fe((m=y).headers,(e=>"object"==typeof e&&"string"==typeof e.host&&"string"==typeof e.referer&&"string"==typeof e.origin),"MiAPI headers must be properly configured"),fe(m.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI portalPageId must be a positive number if provided"),fe(m.appId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI appId must be a positive number if provided"),fe(m.personalAccessToken,(e=>void 0===e||"string"==typeof e),"MiAPI personalAccessToken must be a string if provided")].find((e=>!e.isValid))||{isValid:!0};if(!v.isValid)throw new Error(v.error);const b=new z(s,y);if(i){let e=+o;(!e||Number.isNaN(e)||e<0)&&(e=6e5);const t={devServer:u,ttl:e},r=function(e){return[fe(e.ttl,(e=>"number"==typeof e&&e>0),"Proxy cache TTL must be a positive number")].find((e=>!e.isValid))||{isValid:!0}}(t);if(!r.isValid)throw new Error(r.error);u.middlewares.use(J(t))}u.middlewares.use(D({baseURL:s,proxyIgnore:["/@vite","/@metricinsights","/@",f],disableSSLValidation:c,miAPI:b}));const k=new RegExp(`^((${g})|/)$`);u.middlewares.use(he(k,b,e));const x=(e,t,r,s,a)=>{const n={error:r};s&&(n.details=s),a&&(n.code=a),e.status(t).json(n).end()},P=(e,t,r)=>{u.config.logger.error(`${r} token validation error:`,t);const s=H(t);if(t.tokenErrorInfo){const r=t.tokenErrorInfo;u.config.logger.info(`Using enhanced error info: ${r.code} - ${r.userFriendlyMessage}`);const s=r.status||500,a=r.code,n=r.userFriendlyMessage,i=r.message;x(e,s,n,i,a)}else{let t,a,n;switch(u.config.logger.info(`Using original error info: ${s.code} - ${s.userFriendlyMessage}`),s.code){case"SESSION_EXPIRED":t=412,a="personal"===r?"Personal access token expired":"Session expired",n="personal"===r?"PAT_EXPIRED":"SESSION_EXPIRED";break;case"UNAUTHORIZED":t=401,a="Unauthorized",n="UNAUTHORIZED";break;case"FORBIDDEN":t=403,a="Access forbidden",n="FORBIDDEN";break;default:t=500,a="Internal server error",n=s.code}const i="personal"===r&&"PAT_EXPIRED"===n?"Your personal access token has expired. Please generate a new token from the portal.":"regular"===r&&"SESSION_EXPIRED"===n?"Your portal session has expired. Please refresh your token or re-authenticate.":s.userFriendlyMessage;x(e,t,a,i,n)}return null};ge.post("/@api/login",(async(e,t,r)=>{const{token:s,tokenType:a}=e.body;if(s){if(u.config.logger.info(`Attempting to validate ${a} token...`),"personal"===a){if(!await b.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?(b.personalAccessToken=s,u.config.logger.info(`Personal access token validated successfully for user ${e.data.user.user_id}`),e):(x(t,400,"Token expired or invalid"),null))).catch((e=>P(t,e,"personal"))))return;$(t,"/",302)}else if("regular"===a){if(!await b.get("/api/user",{"Content-Type":"application/json",Accept:"application/json",Token:s},!0).then((e=>e.data?.users?.length?(b.personalAccessToken=void 0,u.config.logger.info(`Regular token validated successfully for ${e.data.users.length} user(s)`),t.setHeader("set-cookie",e.headers["set-cookie"]??""),e):(x(t,400,"Token expired or invalid"),null))).catch((e=>P(t,e,"regular"))))return;$(t,"/",302)}}else x(t,400,"Token is required")})),u.middlewares.use(ge);const A=!1!==l?new ne(t,Object.assign({backupDir:p},"object"==typeof l?{distZipFolder:l.outDir,distZipFilename:l.outFileName}:void 0)):void 0;return new V(u,{distService:A,miAPI:b}),()=>{u.middlewares.use(ie((e=>e.split("?")[0].endsWith("index.html")),((e,t)=>Buffer.from(T(w,t.headers.host??"",b.buildPage(e,a))))))}}var m}}}ge.use(P.json()),ge.use(P.urlencoded({extended:!0}));export{z as M,S as a,J as b,I as c,D as d,he as e,ge as f,ie as g,oe as i,me as n,T as u,we as v};
|
|
2
|
-
//# sourceMappingURL=plugin-qc60R-dL.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-qc60R-dL.js","sources":["../../../src/lib/helpers/url.helper.ts","../../../src/lib/logger.ts","../../../src/lib/helpers/color.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/page.ts","../../../src/api/page-template.ts","../../../src/lib/helpers/token.helper.ts","../../../src/lib/pp.middleware.ts","../../../src/lib/client.service.ts","../../../src/lib/proxy-cache.middleware.ts","../../../src/lib/dist.service.ts","../../../src/lib/rewrite-response.middleware.ts","../../../src/lib/helpers/content-encoding.helper.ts","../../../src/lib/pp-redirect.middleware.ts","../../../src/lib/load-pp-data.middleware.ts","../../../src/lib/internal.middleware.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],"names":["urlReplacer","originalHost","destinationHost","content","urlReplaceRegExp","RegExp","replace","substring","args","startsWith","redirect","res","url","statusCode","setHeader","end","storage","Map","DEFAULT_LOGGER_KEY","createLogger","level","name","has","get","logger","cL","set","colors","createColors","tokenLoginFunction","TOKEN_TYPE_CONFIG","personal","placeholder","caption","host","endpoint","regular","updateTokenUI","type","tokenInput","tokenCaption","info","innerHTML","showError","message","errorElement","textContent","classList","add","hideError","remove","setupEventHandlers","formWrapper","submitButton","addEventListener","async","e","preventDefault","value","trim","focus","tokenTypeSwitcher","document","getElementById","activeOption","querySelector","tokenType","dataset","token","response","fetch","method","headers","body","JSON","stringify","URL","window","location","origin","pathname","json","error","parseError","href","networkError","handleFormSubmission","key","click","initializeLoginForm","loginForm","contentWrapper","firstChild","rowTemplate","lastChild","cloneNode","orRow","innerText","setAttribute","helperForm","formContent","createElement","styleElement","head","appendChild","tokenTypeOptions","querySelectorAll","handleTokenTypeChange","target","forEach","opt","option","currentTarget","setupTokenTypeSwitcher","console","observer","MutationObserver","mutations","mutation","disconnect","observe","childList","subtree","existingForm","hostOriginRegExp","PROXY_HEADER","initProxy","opts","rewritePath","baseURL","disableSSLValidation","miAPI","Error","fileType","import","createProxyMiddleware","selfHandleResponse","pathFilter","req","proxyIgnore","some","test","Array","isArray","rP","changeOrigin","autoRewrite","cookieDomainRewrite","log","warn","secure","on","proxyReq","referer","getHeader","blue","green","protocol","path","personalAccessToken","socket","setTimeout","destroyed","destroy","proxyRes","serverRes","includes","streamInterceptor","setHeaders","Object","entries","pipe","rewriteInterceptor","responseInterceptor","responseBuffer","fileTypeFromBuffer","toString","reqUrl","searchParams","storageKey","redirectCount","localStorage","getItem","Number","isNaN","func","params","URLSearchParams","search","setItem","removeItem","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","portalPageId","getDownloadTemplateUrl","templateId","getUploadUrl","getUploadTemplateUrl","downloadPageAssets","withCredentials","responseType","data","uploadPageAssets","file","formData","FormData","File","assetFile","append","post","Referer","getUri","downloadTemplateAssets","uploadTemplateAssets","AssetsV7API","PageAPI","getAll","Accept","Pragma","Expires","pages","id","page","getPageContent","internalPageName","create","PageTemplateAPI","internal_name","page_templates","page_template","getTokenErrorInfo","status","toLowerCase","code","userFriendlyMessage","suggestions","TEMPLATE_PAGE_NAME","axiosInstanceCache","MiAPI","pageTemplate","pageTitle","pageVars","v7Features","isV710OrHigher","templateLoaded","templateLoadedResolve","templateLess","assetsApi","pageApi","pageTemplateApi","Promise","resolve","cacheKey","defaults","httpsAgent","Agent","rejectUnauthorized","timeout","httpAgent","keepAlive","maxSockets","isTemplateLoaded","clearHeaders","obj","undefined","keys","authorization","updateHeaders","localTemplateHTML","getPageTemplate","red","template_id","find","p","yellow","enabled","visible_in_homepage","getPageVariables","pageId","tags","template","parsed","parse","reason","getPageInfo","pageIdToFetch","fetchV7Page","fetchLegacyPage","handlePageFetchError","buildPage","miHudLess","result","v","dom","JSDOM","placeholderText","container","scripts","length","insertBefore","item","title","text","serialize","getAssets","pageInfo","templateInfo","updateAssets","assets","validateCredentials","testHeaders","isValid","errorInfo","cleanup","normalizedHeaders","context","contextPrefix","suggestion","index","logTokenError","tokenErrorInfo","ClientService","server","eventMap","onInfoDataRequest","bind","onTemplateSync","init","ws","event","handler","send","distService","config","clientInjectionPlugin","canSync","currentAssets","isAxiosError","validation","refresh","validationError","cause","newAssets","saveBackupAndBuild","buildNewAssets","Buffer","updateResult","backupMeta","getBackupMeta","lastBackupName","backupFilename","lastBackupHash","currentHash","lastBackupDate","backupDate","Date","toISOString","syncedAt","FILE_EXTENSION_REGEX","DEFAULT_TTL","DEFAULT_MAX_SIZE","DEFAULT_MAX_ITEMS","EnhancedCache","memoryCache","Cache","totalSize","maxSize","maxItems","put","ttl","oldItem","size","itemsToRemove","sortedKeys","sort","a","b","itemA","itemB","timestamp","i","del","oldestKey","getTotalSize","getItemCount","cache","createResponseBuffer","chunks","alloc","totalLength","reduce","sum","chunk","allocUnsafe","offset","copy","initProxyCache","devServer","next","originalUrl","cleanUrl","split","generateCacheKey","cacheItem","header","setResponseHeaders","write","originalEnd","originalWrite","encoding","callback","hasHeader","call","safeEncoding","push","from","isBuffer","String","finalBuffer","responseSize","getHeaders","now","toFixed","finalEncoding","TEMPLATE_PART_PAGE_NAME","TEMPLATE_PART_DATE","DIRNAME","dirname","__filename","fileURLToPath","pluginPath","node_modules_path","metaDirPath","metaFilePath","DistService","backupFolder","backupNameTemplate","dateFormat","pageName","currentMeta","distZipFolder","distZipFilename","syncOptions","process","cwd","date","syncMeta","checkMeta","fs","stat","mkdir","readMetaFile","readFile","writeMetaFile","meta","writeFile","getLatestSavedBackup","backupPath","backupName","saveBackup","backupFile","slice","backupFileHash","crypto","createHash","update","digest","filename","finally","buildCommand","reject","cyan","proc","child_process","spawn","env","NODE_ENV","stdio","msg","initRewriteResponse","predicate","rewrite","buffers","cb","contentEncoding","unzipSync","brotliDecompressSync","deflateSync","decodeContent","concat","bufferEncoding","endCallback","gzipSync","brotliCompressSync","inflateSync","encodeContent","initPPRedirect","base","templateName","baseWithoutTrailingSlash","endsWith","parsedUrl","findPaths","redirectUrl","apiResponseCache","getCachedResponse","cached","delete","setCachedResponse","DEFAULT_REDIRECT_URL","initLoadPPData","applyUrlRegExp","mi","isNeedTemplateLoad","options","redirectOnAuthFailure","loadPageData","success","handleLoadError","handleTemplateLoad","handlePageInfoOnly","operationType","isAuthError","fullRedirectUrl","encodeURIComponent","internalServer","express","validateConfigValue","validator","normalizeVitePPDevConfig","validationResult","c","backendBaseURL","appId","proxyCacheTTL","integrateMiTopBar","integrate","validateConfig","enableProxyCache","imageOptimizer","outDir","distZip","syncBackupsDir","MI_ACCESS_TOKEN","distZipConfig","outFileName","imageOptimizerConfig","vitePPDev","isFirstRequest","apply","port","validateServerConfig","transformIndexHtml","html","ctx","tag","injectTo","children","Math","random","configureServer","lastIndexOf","middlewares","use","baseUrlHost","miConfig","cacheConfig","validateProxyCacheConfig","proxyPassMiddleware","isIndexRegExp","sendErrorResponse","details","handleTokenValidationError","enhancedErrorInfo","errorCode","Authorization","user","user_id","Token","users","backupDir","urlencoded","extended"],"mappings":"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"}
|