@metricinsights/pp-dev 0.14.1 → 0.15.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/README.md +1 -1
- package/dist/CHANGELOG.md +28 -0
- package/dist/README.md +1 -1
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/index-4BMbdu0V.js +2 -0
- package/dist/cjs/index-4BMbdu0V.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/package.json +9 -7
- package/dist/cjs/plugin-nVTTdbnD.js +2 -0
- package/dist/cjs/plugin-nVTTdbnD.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-DsQqY4VF.js +2 -0
- package/dist/esm/index-DsQqY4VF.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/package.json +9 -7
- package/dist/esm/plugin-1jI0jEFU.js +2 -0
- package/dist/esm/plugin-1jI0jEFU.js.map +1 -0
- package/dist/esm/plugin.js +1 -1
- package/dist/types/index.d.ts +1 -1
- package/package.json +11 -8
- package/dist/cjs/index-DgQyb8fr.js +0 -2
- package/dist/cjs/index-DgQyb8fr.js.map +0 -1
- package/dist/cjs/plugin-DzerGtSN.js +0 -2
- package/dist/cjs/plugin-DzerGtSN.js.map +0 -1
- package/dist/esm/index-D0CWM9o5.js +0 -2
- package/dist/esm/index-D0CWM9o5.js.map +0 -1
- package/dist/esm/plugin-BhmS15QR.js +0 -2
- package/dist/esm/plugin-BhmS15QR.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metricinsights/pp-dev",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.15.1",
|
|
5
5
|
"description": "Portal Page dev build tool",
|
|
6
6
|
"bin": {
|
|
7
7
|
"pp-dev": "bin/pp-dev.js"
|
|
@@ -66,8 +66,10 @@
|
|
|
66
66
|
"node": ">=22.14"
|
|
67
67
|
},
|
|
68
68
|
"overrides": {
|
|
69
|
-
"chokidar": "^
|
|
70
|
-
"minimatch": "
|
|
69
|
+
"chokidar": "^5.0.0",
|
|
70
|
+
"minimatch": "10.2.4",
|
|
71
|
+
"npm": ">=11.11.0",
|
|
72
|
+
"serialize-javascript": ">=7.0.3"
|
|
71
73
|
},
|
|
72
74
|
"peerDependencies": {
|
|
73
75
|
"next": ">= 13 < 17"
|
|
@@ -79,23 +81,23 @@
|
|
|
79
81
|
}
|
|
80
82
|
},
|
|
81
83
|
"dependencies": {
|
|
82
|
-
"axios": "^1.13.
|
|
84
|
+
"axios": "^1.13.6",
|
|
83
85
|
"cac": "^6.7.14",
|
|
84
|
-
"chokidar": "^
|
|
86
|
+
"chokidar": "^5.0.0",
|
|
85
87
|
"deepmerge-ts": "^7.1.5",
|
|
86
88
|
"diff-match-patch": "^1.0.5",
|
|
87
89
|
"dir-compare": "^5.0.0",
|
|
88
90
|
"ejs": "^4.0.1",
|
|
89
91
|
"express": "^5.2.1",
|
|
90
92
|
"extract-zip": "^2.0.1",
|
|
91
|
-
"file-type": "^
|
|
93
|
+
"file-type": "^21.3.1",
|
|
92
94
|
"formdata-node": "^6.0.3",
|
|
93
95
|
"http-proxy-middleware": "^3.0.5",
|
|
94
96
|
"isbinaryfile": "^5.0.7",
|
|
95
97
|
"jsdom": "^25.0.1",
|
|
96
98
|
"memory-cache": "^0.2.0",
|
|
97
99
|
"picocolors": "^1.1.1",
|
|
98
|
-
"rollup": "^4.
|
|
100
|
+
"rollup": "^4.59.0",
|
|
99
101
|
"sass": "^1.97.3",
|
|
100
102
|
"sharp": "^0.34.5",
|
|
101
103
|
"source-map-support": "^0.5.21",
|
|
@@ -109,7 +111,6 @@
|
|
|
109
111
|
},
|
|
110
112
|
"devDependencies": {
|
|
111
113
|
"@playwright/test": "^1.58.2",
|
|
112
|
-
"next": "^15.5.12",
|
|
113
114
|
"@rollup/plugin-terser": "^0.4.4",
|
|
114
115
|
"@rollup/plugin-typescript": "^12.3.0",
|
|
115
116
|
"@rollup/plugin-url": "^8.0.2",
|
|
@@ -123,7 +124,9 @@
|
|
|
123
124
|
"@types/memory-cache": "^0.2.6",
|
|
124
125
|
"@types/node": "^22.19.11",
|
|
125
126
|
"@vitest/coverage-v8": "^3.2.4",
|
|
127
|
+
"connect": "^3.7.0",
|
|
126
128
|
"esbuild": "^0.27.3",
|
|
129
|
+
"next": "^15.5.12",
|
|
127
130
|
"prettier": "^3.8.1",
|
|
128
131
|
"rimraf": "^6.1.3",
|
|
129
132
|
"rollup-plugin-dts": "^6.3.0",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const e=require("./plugin-DzerGtSN.js"),t=require("fs"),n=require("path"),i=require("url"),s=require("vite"),a=require("ejs");var r="undefined"!=typeof document?document.currentScript:null;const o=e=>e&&"object"==typeof e&&"default"in e?e.default:e;function c(e){if(e&&"object"==typeof e&&"default"in e)return e;const t=Object.create(null);if(e)for(const n in e)t[n]=e[n];return t.default=e,Object.freeze(t)}const l=c(t),p=c(n),u=o(n),f=o(a),d=n.resolve("undefined"!=typeof __filename&&__filename||i.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:r&&"SCRIPT"===r.tagName.toUpperCase()&&r.src||new URL("index-DgQyb8fr.js",document.baseURI).href),"../../.."),m=n.resolve("undefined"!=typeof __filename&&__filename||i.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:r&&"SCRIPT"===r.tagName.toUpperCase()&&r.src||new URL("index-DgQyb8fr.js",document.baseURI).href),"../.."),h=t.existsSync(n.resolve(d,"package.json"))?d:m,g=n.resolve(h,"dist/client/client.js"),{version:j,name:y}=JSON.parse(t.readFileSync(n.resolve(h,"package.json")).toString()),v=j,w=y,x=[".pp-watch.config.js",".pp-watch.config.ts",".pp-watch.config.json"],_=[".pp-dev.config.js",".pp-dev.config.cjs",".pp-dev.config.mjs",".pp-dev.config.ts",".pp-dev.config.cts",".pp-dev.config.mts",".pp-dev.config.json","pp-dev.config.js","pp-dev.config.cjs","pp-dev.config.mjs","pp-dev.config.ts","pp-dev.config.cts","pp-dev.config.mts","pp-dev.config.json"];const S=new class{cache;_maxSize;constructor(e=10){this._maxSize=e,this.cache=new Map}get maxSize(){return this._maxSize}set maxSize(e){this._maxSize=e}get(e){if(this.cache.has(e)){const t=this.cache.get(e);return this.cache.delete(e),this.cache.set(e,t),t}}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this._maxSize){const e=this.cache.keys().next().value;void 0!==e&&this.cache.delete(e)}this.cache.set(e,t)}clear(){this.cache.clear()}has(e){return this.cache.has(e)}}(5),R=new Map;let b;try{b="undefined"!=typeof __filename&&__filename?p.resolve(p.dirname(__filename),".."):void 0!=={url:"undefined"==typeof document?require("url").pathToFileURL(__filename).href:r&&"SCRIPT"===r.tagName.toUpperCase()&&r.src||new URL("index-DgQyb8fr.js",document.baseURI).href}&&("undefined"==typeof document?require("url").pathToFileURL(__filename).href:r&&"SCRIPT"===r.tagName.toUpperCase()&&r.src||new URL("index-DgQyb8fr.js",document.baseURI).href,1)&&("undefined"==typeof document?require("url").pathToFileURL(__filename).href:r&&"SCRIPT"===r.tagName.toUpperCase()&&r.src||new URL("index-DgQyb8fr.js",document.baseURI).href)?p.resolve(i.fileURLToPath(new URL(".","undefined"==typeof document?require("url").pathToFileURL(__filename).href:r&&"SCRIPT"===r.tagName.toUpperCase()&&r.src||new URL("index-DgQyb8fr.js",document.baseURI).href)),".."):process.cwd()}catch{b=process.cwd()}const P=`/${w}/client`,$=`/${P}`,C=new RegExp(`^\\/?${w}\\/client\\/(.*)$`);const U={templateCompilations:0,cacheHits:0,totalRequests:0};function T(e){let t="",n=!1,i=null;return{name:"pp-dev:client",apply:"serve",config:e=>(e.optimizeDeps?.exclude?.push(`${w}/client`),e),resolveId(e){if(C.test(e))return{id:s.normalizePath(p.join(h,"dist/client",e.replace(C,"$1")))}},transformIndexHtml:async(e,s)=>{U.totalRequests++;const a=s.server?.config.base||"";a!==t&&(t=a,n=!0,i=null),i&&!n||(S.has(t)?(i=S.get(t),U.cacheHits++):(i=function(e,t=!0){const n=e;if(t&&S.has(n))return S.get(n);const i=p.resolve(b,"client","index.html");let s;R.has(i)?s=R.get(i):(s=l.readFileSync(i,{encoding:"utf8"}),R.set(i,s));const a=$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),r=f.compile(s.replace(new RegExp(a,"g"),p.posix.join(e,P)),{openDelimiter:"{",closeDelimiter:"}",async:!0,cache:!0,filename:i,rmWhitespace:!0,compileDebug:!1});return t&&S.set(n,r),r}(t,true),U.templateCompilations++),n=!1);const r=function(e){return{css:p.posix.join(e,w,"client/client.css"),js:p.posix.join(e,w,"client/client.js")}}(t),o={html:e,tags:[{tag:"link",injectTo:"head",attrs:{rel:"stylesheet",href:r.css}}]},{backendBaseURL:c,templateLess:u,portalPageId:d,canSync:m=!0}=s.server?.config.clientInjectionPlugin||{},h={PACKAGE_NAME:w,VERSION:v,backendBaseURL:c,templateLess:u,portalPageId:d,canSync:m};return o.tags.push({tag:"div",injectTo:"body-prepend",children:await i(h)}),o.tags.push({tag:"script",injectTo:"body-prepend",attrs:{src:r.js,type:"module"}}),o},configureServer(e){const t=s.normalizePath(p.resolve(e.config.root,p.dirname(g)));e.config.server?.fs?.allow&&e.config.server.fs.allow.push(t),e.middlewares.use("/@api/__pp-dev-metrics",((e,t)=>{t.setHeader("Content-Type","application/json"),t.end(JSON.stringify(U,null,2))}))},closeBundle(){S.clear(),R.clear()}}}const I=(e,t)=>` * ${t}`;function L(e){return`/*!\n${"***** DO NOT EDIT THIS CODE! *****\n***** ------- *****".replace(/^(.*)$/gm,I)}\n */`}async function N(){try{const[e,t]=await Promise.all([import("next"),import("next/constants.js")]);return{next:e.default,constants:t}}catch(e){throw new Error(`Next.js is required but not available. Please install Next.js as a dependency:\nnpm install next@^15\n\nThis package requires Next.js >=15 <17 as a peer dependency.\n\nError: ${e}`)}}const D=new Map,E=3e4;let F=null;function O(){const e=Date.now();if(F&&e-F.timestamp<6e4)return F.data;const n=process.cwd();try{const i=JSON.parse(t.readFileSync(u.resolve(n,"package.json"),{encoding:"utf-8",flag:"r"}));return F={data:i,timestamp:e},i}catch{const t={};return F={data:t,timestamp:e},t}}let z=null;async function k(e){const n=process.cwd(),s=`ts:${e}`,a=D.get(s);if(a&&Date.now()-a.timestamp<E)return a.data;let r=!1;if(/\.m[jt]s$/.test(e))r=!0;else if(/\.c[jt]s$/.test(e))r=!1;else{const e=O();r=!!e&&"module"===e.type}const o=await async function(){return z||(z=await import("esbuild")),z}(),c=await o.build({absWorkingDir:n,entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,format:r?"esm":"cjs",mainFields:["main"],sourcemap:"inline",metafile:!0}),{text:l}=c.outputFiles[0],p=`${`pp-config.timestamp-${Date.now()}-${Math.random().toString(16).slice(2)}`}.js`,f=i.pathToFileURL(u.resolve(n,p)).toString();t.writeFileSync(p,l);let d={};try{const t=(await import(f)).default;d=t?.default||t,D.set(s,{data:d,timestamp:Date.now(),filePath:e})}finally{t.existsSync(p)&&t.unlink(p,(()=>{}))}return d}async function q(e){const t=`js:${e}`,n=D.get(t);if(n&&Date.now()-n.timestamp<E)return n.data;const s=(await import(i.pathToFileURL(e).toString())).default;return D.set(t,{data:s,timestamp:Date.now(),filePath:e}),s}async function M(e){const n=`json:${e}`,i=D.get(n);if(i&&Date.now()-i.timestamp<E)return i.data;const s=JSON.parse(t.readFileSync(e,{encoding:"utf-8"}));return D.set(n,{data:s,timestamp:Date.now(),filePath:e}),s}let V=null;async function A(e,t){for(const n of t)if(e.includes(n)){if(/\.[cm]?ts$/i.test(n))return await k(n);if(/\.[cm]?js$/i.test(n))return await q(u.resolve(".",n));if(n.endsWith(".json"))return await M(u.resolve(".",n))}return null}function H(){return O()}async function B(){const e=function(){const e=Date.now();if(V&&e-V.timestamp<1e4)return V.files;const n=/\.config\.(([cm]?ts)|([cm]?js)|(json))$/,i=process.cwd(),s=t.readdirSync(i,{withFileTypes:!0}).filter((e=>e.isFile()&&n.test(e.name))).map((e=>e.name));return V={files:s,timestamp:e},s}();let n={},i=!1;const s=await A(e,_);if(s&&(n=s,i=!0),e.length&&!i){const t=await A(e,x);t&&(n={backendBaseURL:t.baseURL,portalPageId:t.portalPageId},i=!0)}const a=O();return i||"object"!=typeof a["pp-dev"]||(n=a["pp-dev"]),n}const J=Object.freeze({__proto__:null,clearConfigCache:function(){D.clear(),F=null,V=null},getConfig:B,getConfigCacheStats:function(){return{configEntries:D.size,packageJsonCached:!!F,dirContentCached:!!V}},getPkg:H}),W="/p",G="/pt";function K(e){return e?.ppDev||{}}function Z(e,t,n){return Object.assign({},e,t,n)}exports.PP_DEV_CONFIG_NAMES=_,exports.PP_WATCH_CONFIG_NAMES=x,exports.VERSION=v,exports.config=J,exports.getNextVersion=async function(){try{return(await import("next/package.json")).version}catch{return null}},exports.getPPDevConfigFromNextConfig=K,exports.getViteConfig=async function(){const t=H().name,n=await B(),i=e.normalizeVitePPDevConfig(Object.assign(n,{templateName:t})),{default:s}=await Promise.resolve().then((()=>require("./plugin.js"))),a=[s(i),T()],{outDir:r,distZip:o,imageOptimizer:c,templateLess:l,integrateMiTopBar:p}=i;if(p&&a.push(function(e){return{name:"mi-topbar-plugin",transformIndexHtml(){const t=[];return(!0===e||"object"==typeof e&&!0===e.addRootElement)&&t.push({tag:"div",injectTo:"body-prepend",attrs:{id:"mi-react-root"}}),(!0===e||"object"==typeof e&&!0===e.addSharedComponentsScripts)&&t.push({tag:"script",injectTo:"head-prepend",attrs:{src:"/auth/info.js"}},{tag:"script",injectTo:"head-prepend",attrs:{src:"/js/main.js",defer:"defer"}},{tag:"link",injectTo:"head-prepend",attrs:{href:"/css/main.css",rel:"stylesheet"}}),t}}}(p)),c){const{ViteImageOptimizer:e}=await import("vite-plugin-image-optimizer");a.push(e("object"==typeof c?c:void 0))}if(o){const{default:e}=await import("vite-plugin-zip-pack");a.push({...e("object"==typeof o?o:{outFileName:`${t}.zip`}),enforce:"post"})}return{base:l?`${W}/${t}`:`${G}/${t}`,server:{port:3e3},build:{minify:!1,assetsInlineLimit:4096,rollupOptions:{output:{banner:L}},outDir:r},css:{modules:{localsConvention:"dashes"},scss:{api:"modern"}},ppDevConfig:i,plugins:a}},exports.isNextAvailable=async function(){try{return await import("next"),!0}catch(e){return!1}},exports.safeNextImport=N,exports.withPPDev=function(e,t){return async(n,i={})=>{try{const{constants:s}=await N(),{PHASE_DEVELOPMENT_SERVER:a}=s,r=await B(),o=H().name,c="function"==typeof e?await e(n,i):e,l=K(c),p=Object.assign({},r,l,t??{}),u=n===a,f=function(e,t,n,i){return n?i?t?`${W}/${e}`:`/pl/${e}`:t?`${W}/${e}`:`${G}/${e}`:`/p/${e}`}(o,p.templateLess??!1,u,p.v7Features??!1),d={basePath:f,trailingSlash:!!u||void 0};return p.templateLess||(d.assetPrefix=`${G}/${o}`),Z(d,c)}catch(t){console.error("Error in withPPDev:",t),console.warn("Falling back to original Next.js configuration");try{return"function"==typeof e?await e(n,i):e}catch(e){return console.error("Error in fallback configuration:",e),{}}}}};
|
|
2
|
-
//# sourceMappingURL=index-DgQyb8fr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DgQyb8fr.js","sources":["../../../src/constants.ts","../../../src/plugins/client-injection-plugin.ts","../../../src/banner/header.ts","../../../src/lib/next-import.ts","../../../src/config.ts","../../../src/index.ts","../../../src/plugins/mi-topbar-plugin.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["afterBundlePath","resolve","__filename","fileURLToPath","document","require","pathToFileURL","href","_documentCurrentScript","tagName","toUpperCase","src","URL","baseURI","beforeBundlePath","PP_DEV_PACKAGE_DIR","existsSync","PP_DEV_CLIENT_ENTRY","version","name","JSON","parse","readFileSync","toString","VERSION","PACKAGE_NAME","PP_WATCH_CONFIG_NAMES","PP_DEV_CONFIG_NAMES","templateCache","cache","_maxSize","constructor","maxSize","this","Map","value","get","key","has","delete","set","size","firstKey","keys","next","undefined","clear","fileCache","DIRNAME","path","dirname","url","process","cwd","PACKAGE_IMPORT","CLIENT_PATH","PACKAGE_REGEXP","RegExp","performanceMetrics","templateCompilations","cacheHits","totalRequests","clientInjectionPlugin","opts","base","baseChanged","currentTemplate","apply","config","optimizeDeps","exclude","push","resolveId","source","test","id","normalizePath","join","replace","transformIndexHtml","async","html","ctx","serverBase","server","enableCache","cacheKey","templatePath","templateContent","fs","encoding","escapedClientPath","compiledTemplate","ejs","compile","posix","openDelimiter","closeDelimiter","filename","rmWhitespace","compileDebug","getTemplate","assetPaths","css","js","getAssetPaths","result","tags","tag","injectTo","attrs","rel","backendBaseURL","templateLess","portalPageId","canSync","templateData","children","type","configureServer","clientDir","root","allow","middlewares","use","req","res","setHeader","end","stringify","closeBundle","replacer","substring","$1","header","chunk","safeNextImport","constants","Promise","all","import","default","error","Error","configCache","CACHE_TTL","packageJsonCache","getPackageJson","now","Date","timestamp","data","flag","empty","esbuildModule","loadTsConfig","filePath","cached","isESM","pkg","esbuild","getEsbuild","build","absWorkingDir","entryPoints","outfile","write","target","platform","bundle","format","mainFields","sourcemap","metafile","text","code","outputFiles","fileNameTmp","Math","random","slice","fileUrl","writeFileSync","conf","unlink","loadJsConfig","loadJSONConfig","dirContentCache","loadConfig","dirFiles","configNames","configName","includes","endsWith","getPkg","getConfig","dirContent","files","endsWithRegExp","readdirSync","withFileTypes","filter","isFile","map","getDirectoryContent","configFound","newConfig","length","watchConfig","baseURL","configEntries","packageJsonCached","dirContentCached","pathPagePrefix","pathTemplatePrefix","getPPDevConfigFromNextConfig","nextConfig","ppDev","mergeConfigs","baseConfig","nextConfiguration","additionalConfig","Object","assign","templateName","ppDevConfig","normalizedPPDevConfig","normalizeVitePPDevConfig","vitePPDev","then","plugins","outDir","distZip","imageOptimizer","integrateMiTopBar","addRootElement","addSharedComponentsScripts","defer","miTopBarPlugin","ViteImageOptimizer","zipPack","outFileName","enforce","port","minify","assetsInlineLimit","rollupOptions","output","banner","modules","localsConvention","scss","api","nextjsConfig","phase","PHASE_DEVELOPMENT_SERVER","nextConfigPPDev","mergedConfig","isDevelopment","basePath","v7Features","createBasePath","trailingSlash","assetPrefix","console","warn","fallbackError"],"mappings":"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"}
|
|
@@ -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;const w=e=>e&&"object"==typeof e&&"default"in e?e.default:e;function y(e){if(e&&"object"==typeof e&&"default"in e)return e;const t=Object.create(null);if(e)for(const r in e)t[r]=e[r];return t.default=e,Object.freeze(t)}const v=w(s),b=y(i),k=y(o),x=y(p),P=y(d),T=y(h),A=y(u),S=w(f),$=(e,t,r)=>{const s=new RegExp(`(!!)?(https?(:(\\\\)?/(\\\\)?/)${e})`,"gi");return r.replace(s,((e,...r)=>e.startsWith("!!")?r[1]:`http${r[2]}${t}`))},I=(e,t,r)=>{e.setHeader("location",t),e.statusCode=r,e.end()};let E=new Map;const L="default",R=(e="info",r=L)=>{if(E&&"function"==typeof E.has||(E=new Map),E.has(r))return E.get(r);if(r===L){const s=t.createLogger(e);return E.set(r,s),s}const s=t.createLogger(e);return E.set(r,s),s},C=r.createColors(),D=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,F="X-PP-Proxy";function N(t){const{rewritePath:r=/^\/(?!p[tl]).*/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=R();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(`${C.blue("Proxies request:")} ${C.green(t.method)} ${t.url} -> ${C.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(`${C.blue("Start streaming for request:")} ${C.green(r.method)} ${r.url}`);const e=async(e,t,r)=>{r.setHeader(F,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(F,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",t="pp-dev::lastRedirect";let r=+(localStorage.getItem(e)??0);localStorage.getItem(t);Number.isNaN(r)&&(r=0);let s=window.location.href;const a=function(){const n=new URLSearchParams(window.location.search);if(!n.has("proxyRedirect"))return console.debug("No proxyRedirect param. Cleaning up."),void localStorage.removeItem(e);s!==window.location.href?(s=window.location.href,setTimeout(a,r<3?3e3:5e3)):window.location.href=n.get("proxyRedirect"),localStorage.setItem(e,""+ ++r),localStorage.setItem(t,(new Date).toISOString())};setTimeout(a,3e3)};t+=`<script>(${e.toString()})()<\/script>`}e.pathname.startsWith("/login")&&(t+=`<script>const host = "${i}";\n(${D.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",$(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 U{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 j extends U{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 M extends j{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 B extends U{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 H extends U{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 z(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 V="[DEV PAGE. DO NOT DELETE]",_=new Map;class q{#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:a=!0,disableSSLValidation:i=!1,v7Features:o=!1,personalAccessToken:c}=t||{};this.#e=r,this.#a=[],this.#s="",this.#n=o,this.#i=c,this.#o=!1,this.#c=Promise.resolve(!1);const l=`${e}:${i}`;_.has(l)?this.#t=_.get(l):(i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0",v.defaults.httpsAgent=new n.Agent({rejectUnauthorized:!1})),this.#t=v.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})}),_.set(l,this.#t)),this.portalPageId=s,this.templateLess=a,this.assetsApi=new(o?M:j)(this.#t),this.pageApi=new B(this.#t),this.pageTemplateApi=new H(this.#t),this.logger=R()}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(C.green("Page fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(C.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(C.green("Local page template fetched")),this.#l(!0),this.#r}let t=(await this.pageApi.getAll(this.#p(e)).then((e=>(this.logger.info(C.green("Page list fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(C.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===V));return t||(this.logger.warn(C.yellow("Creating dev page template...")),t=await this.pageApi.create({enabled:"Y",name:V,internal_name:"dev-page-template",visible_in_homepage:"Y"},this.#p(e)).then((e=>(this.logger.info(C.green("Dev page created")),e))).catch((e=>{throw this.logger.error(C.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 "${V}" 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(C.green("Page template fetched")),e))).catch((e=>{throw this.#l(!1),this.logger.error(C.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(C.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(C.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()}`);throw 401===e.response?.status&&this.logger.error(C.red(`Current user does not have access to page with id "${t}" on instance ${this.#t.getUri()}`)),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=z(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"!==z(e).code){const t=z(e);throw this.logger.error(C.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,r){const s=z(t),a=`[${r}] `;e.error(C.red(`${a}${s.userFriendlyMessage}`)),e.error(C.red(`Status: ${s.status} (${s.code})`)),e.error(C.red(`Details: ${s.message}`)),s.suggestions.length>0&&(e.info(C.yellow("Suggestions:")),s.suggestions.forEach(((t,r)=>{e.info(C.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 Z{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=R(),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(C.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"===z(e).code){this.logger.info(C.yellow("Session expired - attempting to validate credentials"));try{const e=await(t?.validateCredentials());e&&!e.isValid?(this.logger.error(C.red(`Authentication error: ${e.error}`)),this.server.ws.send("template:sync:response",{error:e.error,code:e.code,refresh:!0})):(this.logger.info(C.yellow("Session expired")),this.server.ws.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(C.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(C.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(C.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(C.red(a.message))):(this.server.ws.send("template:sync:response",{error:"Failed to build new assets"}),void this.logger.error(C.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(C.green("Template synced"))}else this.server.ws.send("template:sync:response",{error:"Failed to update assets"}),this.logger.error(C.red("Failed to update assets"))}}}}const W=/\.(?:[a-z0-9]+)$/i,X=6e5,Y=104857600,K=1e3;class J extends b.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 G=new J(Y,K);function Q(e){if(0===e.length)return Buffer.alloc(0);if(1===e.length)return e[0];const t=e.reduce(((e,t)=>Buffer.byteLength(t)+e),0);return Buffer.concat(e,t)}function ee(e){const{devServer:t,ttl:r=X,maxSize:s=Y,maxItems:a=K}=e,n=R();return s===Y&&a===K||(G.maxSize=s,G.maxItems=a),t.cache=G,(e,t,s)=>{const a=e.originalUrl||e.url||"",i=function(e){const t=e.split("?")[0];return W.test(t)?t.includes("/auth/info.js")?"":e:""}(a);if(!i)return s();const o=G.get(i);if(o)return n.info(`${C.blue("Proxies request:")} ${C.green(e.method)} ${a} -> ${C.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(F))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(F))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=Q(p);const e=Buffer.byteLength(o);if(e>0&&e<10485760){const s={headers:t.getHeaders(),content:o,timestamp:Date.now(),size:e};G.put(i,s,r),n.info(`${C.blue("[Cached]")} ${i} (${(e/1024).toFixed(1)}KB)`)}}catch(e){n.error(`Failed to cache response for ${i}: ${e}`),o=Q(p)}const l=s||"utf8";return c.call(this,o,l,a)},s()}}const te="pageName",re="date",se=k.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-DzerGtSN.js",document.baseURI).href)),ae=k.resolve(se,"..",".."),ne=k.resolve(ae,"..",".."),ie=k.resolve(ne,".pp-dev-meta"),oe=k.resolve(ie,"sync-service.meta.json");class ce{backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;logger;constructor(e,t){this.pageName=e;const{backupFolder:r=k.resolve(P.cwd(),"backups"),distZipFolder:s=k.resolve(P.cwd(),"dist-zip"),distZipFilename:a=`${this.pageName}.zip`,backupNameTemplate:n=`{${te}}-{${re}}.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=R()}async checkMeta(){try{await c.promises.stat(ie)}catch{await c.promises.mkdir(ie)}try{await c.promises.stat(this.backupFolder)}catch{await c.promises.mkdir(this.backupFolder)}}async readMetaFile(){return await this.checkMeta(),await c.promises.readFile(oe,{encoding:"utf-8"}).catch((()=>"{}"))}async writeMetaFile(e){return await this.checkMeta(),await c.promises.writeFile(oe,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=k.resolve(this.backupFolder,e);try{return await c.promises.stat(t),t}catch{return null}}backupName(e,t=new Date){return this.backupNameTemplate.replace(`{${te}}`,e).replace(`{${re}}`,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=x.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(k.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(C.cyan("[DistService] Build started"));const s=T.spawn("node",[k.resolve(ae,"./bin/pp-dev.js"),"build"],{cwd:P.cwd(),env:Object.assign({},P.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(C.cyan("[DistService] Build finished"))}));const t=k.resolve(P.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 A.log(e),e}}async saveBackupAndBuild(e){return await this.saveBackup(e),await this.buildNewAssets()}}function le(e,t){return async(r,s,a)=>{if(await e(r.url??"",r,s)){R().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 pe(e,t){const r=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,s=R();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(C.yellow(`Redirecting to: ${t}`)),I(n,t,302)}i()}}class de{state={isAuthenticated:!1,isRedirected:!1,lastChecked:0};listeners=new Set;getState(){return{...this.state}}isAuthenticated(){return this.state.isAuthenticated}isRedirected(){return this.state.isRedirected}setAuthenticated(e){this.state.isAuthenticated=e,this.state.lastChecked=Date.now(),this.notifyListeners()}setRedirected(e){this.state.isRedirected=e,this.notifyListeners()}updateState(e){void 0!==e.isAuthenticated&&(this.state.isAuthenticated=e.isAuthenticated),void 0!==e.isRedirected&&(this.state.isRedirected=e.isRedirected),this.state.lastChecked=Date.now(),this.notifyListeners()}reset(){this.state={isAuthenticated:!1,isRedirected:!1,lastChecked:0},this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){this.listeners.forEach((e=>{try{e(this.getState())}catch(e){console.error("Error in auth state listener:",e)}}))}getDebugInfo(){return{...this.getState(),listenerCount:this.listeners.size}}}const he=new de,ue=new Map;function ge(e){const t=ue.get(e);return t?Date.now()-t.timestamp>18e4?(ue.delete(e),null):t.data:null}function fe(e,t){ue.set(e,{timestamp:Date.now(),data:t})}const me="/home?proxyRedirect=";function we(e,t,r){const{templateLess:s=!1,miHudLess:a=!1,portalPageId:n,base:i,v7Features:o}=r,c=R();if(s&&a&&void 0===n)throw new Error("Portal page ID is required when both templateLess and miHudLess are true");let l=he.getState();return he.subscribe((e=>{l=e})),async(r,p,d)=>{try{const h=!(s&&a),u=e.test(function(e){return e.split("?")[0]}(r.url??""));if(!l.isAuthenticated&&!l.isRedirected&&r.url?.startsWith("/home")&&!r.url?.startsWith(me)){c.info(C.blue("Trying to authenticate and redirect to base"));try{return h?await ve(t,{templateLess:s,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${me}${encodeURIComponent("/")}`},r,p,(()=>{}),c):await ye(t,{templateLess:s,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${me}${encodeURIComponent("/")}`},r,p,(()=>{}),c),he.setRedirected(!0),c.info(C.blue("Successfully authenticated. Redirecting to base")),I(p,i??"/",302)}catch(e){return d()}}if(!u)return d();if(!h){return await ye(t,{templateLess:s,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${me}${encodeURIComponent("/")}`},r,p,d,c)}return await ve(t,{templateLess:s,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${me}${encodeURIComponent("/")}`},r,p,d,c)}catch(e){return c.error(C.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),he.reset(),d(e)}}}async function ye(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(C.red(e.message)),a(e)}const l=r.headers??{};n.info(C.green("Start loading page info"));try{const t=`pageInfo:${i}`;return ge(t)?(n.info(C.green("Page info loaded from cache")),a()):(await e.getPageInfo(i,l),n.info(C.blue("Clearing proxy cache after successful login")),G.clear(),fe(t,{success:!0}),he.updateState({isAuthenticated:!0}),n.info(C.green("Page info loaded successfully")),a())}catch(e){return he.reset(),be(e,o??!0,c||`${me}${encodeURIComponent("/")}`,s,a,n,"Page info")}}async function ve(e,t,r,s,a,n){const{templateLess:i,portalPageId:o,redirectOnAuthFailure:c,redirectUrl:l}=t,p=r.headers??{};n.info(C.green("Start loading page data"));try{const t=`pageData:${i}:${o}`;if(ge(t))return n.info(C.green("Page data loaded from cache")),a();const r=i||void 0===o?e.getPageTemplate(p):e.getPageVariables(o,p);return await r,n.info(C.blue("Clearing proxy cache after successful login")),G.clear(),fe(t,{success:!0}),n.info(C.green("Page data loaded successfully")),a()}catch(e){return he.reset(),be(e,c??!0,l||`${me}${encodeURIComponent("/")}`,s,a,n,"Page data")}}function be(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(C.red(`${i} loading failed. Not authorized`)),t)){const e=`${r}`;return n.info(C.yellow(`Redirecting to: ${e}`)),I(s,e,302)}const o=e instanceof Error?e.message:String(e);return n.info(C.red(`${i} loading failed. Error: ${o}`)),a(e)}const ke=S();function xe(e,t,r){return t(e)?{isValid:!0}:{isValid:!1,error:r}}ke.use(S.json()),ke.use(S.urlencoded({extended:!0})),exports.AuthProvider=de,exports.MiAPI=q,exports.authProvider=he,exports.colors=C,exports.createLogger=R,exports.initLoadPPData=we,exports.initPPRedirect=pe,exports.initProxy=N,exports.initProxyCache=ee,exports.initRewriteResponse=le,exports.internalServer=ke,exports.normalizeVitePPDevConfig=function(e){const t=function(e){const t=[xe(e,(e=>"object"==typeof e&&null!==e),"VitePPDevOptions must be an object"),xe(e.templateName,(e=>"string"==typeof e&&e.length>0),"VitePPDevOptions.templateName must be a non-empty string"),xe(e.backendBaseURL,(e=>void 0===e||"string"==typeof e&&e.length>0),"VitePPDevOptions.backendBaseURL must be a non-empty string if provided"),xe(e.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.portalPageId must be a positive number if provided"),xe(e.appId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.appId must be a positive number if provided"),xe(e.proxyCacheTTL,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.proxyCacheTTL must be a positive number if provided"),xe(e.integrateMiTopBar,(t=>{if(void 0===t)return!0;if(null===t)return!1;if("boolean"!=typeof t&&"object"!=typeof t)return!1;if(!0===t&&!0!==e.miHudLess)return!1;if("object"==typeof t&&null!==t){if(void 0!==t.addRootElement&&"boolean"!=typeof t.addRootElement)return!1;if(void 0!==t.addSharedComponentsScripts&&"boolean"!=typeof t.addSharedComponentsScripts)return!1;if(!0!==e.miHudLess&&(!0===t.addRootElement||!0===t.addSharedComponentsScripts))return!1}return!0}),"VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans")];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=$,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[xe(e.base,(e=>"string"==typeof e&&e.length>0&&"/"!==e),'Server base path cannot be empty or "/"'),xe(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(pe(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=[xe((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"),xe(m.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI portalPageId must be a positive number if provided"),xe(m.appId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI appId must be a positive number if provided"),xe(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 q(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[xe(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(ee(t))}const k=new RegExp(`^((${g})|/)$`);u.middlewares.use(we(k,b,Object.assign({},e))),u.middlewares.use(N({baseURL:s,proxyIgnore:["/@vite","/@metricinsights","/@",f],disableSSLValidation:c,miAPI:b}));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=z(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};ke.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;I(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;I(t,"/",302)}}else x(t,400,"Token is required")})),u.middlewares.use(ke);const T=!1!==l?new ce(t,Object.assign({backupDir:p},"object"==typeof l?{distZipFolder:l.outDir,distZipFilename:l.outFileName}:void 0)):void 0;return new Z(u,{distService:T,miAPI:b}),()=>{u.middlewares.use(le((e=>e.split("?")[0].endsWith("index.html")),((e,t)=>Buffer.from($(w,t.headers.host??"",b.buildPage(e,a))))))}}var m}}};
|
|
2
|
-
//# sourceMappingURL=plugin-DzerGtSN.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-DzerGtSN.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/auth.provider.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,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","lastRedirectKey","redirectCount","localStorage","getItem","Number","isNaN","func","params","URLSearchParams","search","debug","removeItem","setItem","Date","toISOString","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","process","env","NODE_TLS_REJECT_UNAUTHORIZED","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","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","byteLength","concat","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","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","NODE_ENV","stdio","msg","initRewriteResponse","predicate","rewrite","buffers","cb","contentEncoding","unzipSync","brotliDecompressSync","deflateSync","decodeContent","bufferEncoding","endCallback","gzipSync","brotliCompressSync","inflateSync","encodeContent","initPPRedirect","base","templateName","baseWithoutTrailingSlash","endsWith","parsedUrl","findPaths","redirectUrl","AuthProvider","state","isAuthenticated","isRedirected","lastChecked","listeners","Set","getState","setAuthenticated","authenticated","notifyListeners","setRedirected","redirected","updateState","updates","reset","subscribe","listener","delete","getDebugInfo","listenerCount","authProvider","apiResponseCache","getCachedResponse","cached","setCachedResponse","DEFAULT_REDIRECT_URL","initLoadPPData","applyUrlRegExp","mi","authState","isNeedTemplateLoad","isApplyRequest","cutUrlParams","handleTemplateLoad","encodeURIComponent","handlePageInfoOnly","options","redirectOnAuthFailure","clear","success","handleLoadError","loadPageData","operationType","isAuthError","fullRedirectUrl","internalServer","express","validateConfigValue","validator","use","urlencoded","extended","validationResult","validations","c","backendBaseURL","appId","proxyCacheTTL","integrateMiTopBar","integrate","addRootElement","addSharedComponentsScripts","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","isIndexRegExp","proxyPassMiddleware","sendErrorResponse","details","handleTokenValidationError","enhancedErrorInfo","errorCode","Authorization","user","user_id","Token","users","backupDir"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./plugin-BhmS15QR.js";import*as t from"fs";import{readFileSync as n,existsSync as s,readdirSync as i,writeFileSync as a,unlink as o}from"fs";import*as r from"path";import c,{resolve as p}from"path";import{fileURLToPath as l,pathToFileURL as m}from"url";import{normalizePath as u}from"vite";import f from"ejs";const d=p("undefined"!=typeof __filename&&__filename||l(import.meta.url),"../../.."),g=p("undefined"!=typeof __filename&&__filename||l(import.meta.url),"../.."),h=s(p(d,"package.json"))?d:g,j=p(h,"dist/client/client.js"),{version:w,name:v}=JSON.parse(n(p(h,"package.json")).toString()),y=w,$=v,b=[".pp-watch.config.js",".pp-watch.config.ts",".pp-watch.config.json"],x=[".pp-dev.config.js",".pp-dev.config.cjs",".pp-dev.config.mjs",".pp-dev.config.ts",".pp-dev.config.cts",".pp-dev.config.mts",".pp-dev.config.json","pp-dev.config.js","pp-dev.config.cjs","pp-dev.config.mjs","pp-dev.config.ts","pp-dev.config.cts","pp-dev.config.mts","pp-dev.config.json"];const _=new class{cache;_maxSize;constructor(e=10){this._maxSize=e,this.cache=new Map}get maxSize(){return this._maxSize}set maxSize(e){this._maxSize=e}get(e){if(this.cache.has(e)){const t=this.cache.get(e);return this.cache.delete(e),this.cache.set(e,t),t}}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this._maxSize){const e=this.cache.keys().next().value;void 0!==e&&this.cache.delete(e)}this.cache.set(e,t)}clear(){this.cache.clear()}has(e){return this.cache.has(e)}}(5),S=new Map;let D;try{D="undefined"!=typeof __filename&&__filename?r.resolve(r.dirname(__filename),".."):void 0!==import.meta&&import.meta&&import.meta.url?r.resolve(l(new URL(".",import.meta.url)),".."):process.cwd()}catch{D=process.cwd()}const P=`/${$}/client`,E=`/${P}`,k=new RegExp(`^\\/?${$}\\/client\\/(.*)$`);const z={templateCompilations:0,cacheHits:0,totalRequests:0};function C(e){let n="",s=!1,i=null;return{name:"pp-dev:client",apply:"serve",config:e=>(e.optimizeDeps?.exclude?.push(`${$}/client`),e),resolveId(e){if(k.test(e))return{id:u(r.join(h,"dist/client",e.replace(k,"$1")))}},transformIndexHtml:async(e,a)=>{z.totalRequests++;const o=a.server?.config.base||"";o!==n&&(n=o,s=!0,i=null),i&&!s||(_.has(n)?(i=_.get(n),z.cacheHits++):(i=function(e,n=!0){const s=e;if(n&&_.has(s))return _.get(s);const i=r.resolve(D,"client","index.html");let a;S.has(i)?a=S.get(i):(a=t.readFileSync(i,{encoding:"utf8"}),S.set(i,a));const o=E.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),c=f.compile(a.replace(new RegExp(o,"g"),r.posix.join(e,P)),{openDelimiter:"{",closeDelimiter:"}",async:!0,cache:!0,filename:i,rmWhitespace:!0,compileDebug:!1});return n&&_.set(s,c),c}(n,true),z.templateCompilations++),s=!1);const c=function(e){return{css:r.posix.join(e,$,"client/client.css"),js:r.posix.join(e,$,"client/client.js")}}(n),p={html:e,tags:[{tag:"link",injectTo:"head",attrs:{rel:"stylesheet",href:c.css}}]},{backendBaseURL:l,templateLess:m,portalPageId:u,canSync:d=!0}=a.server?.config.clientInjectionPlugin||{},g={PACKAGE_NAME:$,VERSION:y,backendBaseURL:l,templateLess:m,portalPageId:u,canSync:d};return p.tags.push({tag:"div",injectTo:"body-prepend",children:await i(g)}),p.tags.push({tag:"script",injectTo:"body-prepend",attrs:{src:c.js,type:"module"}}),p},configureServer(e){const t=u(r.resolve(e.config.root,r.dirname(j)));e.config.server?.fs?.allow&&e.config.server.fs.allow.push(t),e.middlewares.use("/@api/__pp-dev-metrics",((e,t)=>{t.setHeader("Content-Type","application/json"),t.end(JSON.stringify(z,null,2))}))},closeBundle(){_.clear(),S.clear()}}}const O=(e,t)=>` * ${t}`;function T(e){return`/*!\n${"***** DO NOT EDIT THIS CODE! *****\n***** ------- *****".replace(/^(.*)$/gm,O)}\n */`}async function N(){try{const[e,t]=await Promise.all([import("next"),import("next/constants.js")]);return{next:e.default,constants:t}}catch(e){throw new Error(`Next.js is required but not available. Please install Next.js as a dependency:\nnpm install next@^15\n\nThis package requires Next.js >=15 <17 as a peer dependency.\n\nError: ${e}`)}}async function I(){try{return await import("next"),!0}catch(e){return!1}}async function R(){try{return(await import("next/package.json")).version}catch{return null}}const L=new Map,F=3e4;let H=null;function M(){const e=Date.now();if(H&&e-H.timestamp<6e4)return H.data;const t=process.cwd();try{const s=JSON.parse(n(c.resolve(t,"package.json"),{encoding:"utf-8",flag:"r"}));return H={data:s,timestamp:e},s}catch{const t={};return H={data:t,timestamp:e},t}}let B=null;async function J(e){const t=process.cwd(),n=`ts:${e}`,i=L.get(n);if(i&&Date.now()-i.timestamp<F)return i.data;let r=!1;if(/\.m[jt]s$/.test(e))r=!0;else if(/\.c[jt]s$/.test(e))r=!1;else{const e=M();r=!!e&&"module"===e.type}const p=await async function(){return B||(B=await import("esbuild")),B}(),l=await p.build({absWorkingDir:t,entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,format:r?"esm":"cjs",mainFields:["main"],sourcemap:"inline",metafile:!0}),{text:u}=l.outputFiles[0],f=`${`pp-config.timestamp-${Date.now()}-${Math.random().toString(16).slice(2)}`}.js`,d=m(c.resolve(t,f)).toString();a(f,u);let g={};try{const t=(await import(d)).default;g=t?.default||t,L.set(n,{data:g,timestamp:Date.now(),filePath:e})}finally{s(f)&&o(f,(()=>{}))}return g}async function U(e){const t=`js:${e}`,n=L.get(t);if(n&&Date.now()-n.timestamp<F)return n.data;const s=(await import(m(e).toString())).default;return L.set(t,{data:s,timestamp:Date.now(),filePath:e}),s}async function V(e){const t=`json:${e}`,s=L.get(t);if(s&&Date.now()-s.timestamp<F)return s.data;const i=JSON.parse(n(e,{encoding:"utf-8"}));return L.set(t,{data:i,timestamp:Date.now(),filePath:e}),i}let q=null;async function A(e,t){for(const n of t)if(e.includes(n)){if(/\.[cm]?ts$/i.test(n))return await J(n);if(/\.[cm]?js$/i.test(n))return await U(c.resolve(".",n));if(n.endsWith(".json"))return await V(c.resolve(".",n))}return null}function W(){return M()}async function G(){const e=function(){const e=Date.now();if(q&&e-q.timestamp<1e4)return q.files;const t=/\.config\.(([cm]?ts)|([cm]?js)|(json))$/,n=process.cwd(),s=i(n,{withFileTypes:!0}).filter((e=>e.isFile()&&t.test(e.name))).map((e=>e.name));return q={files:s,timestamp:e},s}();let t={},n=!1;const s=await A(e,x);if(s&&(t=s,n=!0),e.length&&!n){const s=await A(e,b);s&&(t={backendBaseURL:s.baseURL,portalPageId:s.portalPageId},n=!0)}const a=M();return n||"object"!=typeof a["pp-dev"]||(t=a["pp-dev"]),t}const K=Object.freeze({__proto__:null,clearConfigCache:function(){L.clear(),H=null,q=null},getConfig:G,getConfigCacheStats:function(){return{configEntries:L.size,packageJsonCached:!!H,dirContentCached:!!q}},getPkg:W}),Z="/p",Q="/pt";async function X(){const t=W().name,n=await G(),s=e(Object.assign(n,{templateName:t})),{default:i}=await import("./plugin.js"),a=[i(s),C()],{outDir:o,distZip:r,imageOptimizer:c,templateLess:p,integrateMiTopBar:l}=s;if(l&&a.push(function(e){return{name:"mi-topbar-plugin",transformIndexHtml(){const t=[];return(!0===e||"object"==typeof e&&!0===e.addRootElement)&&t.push({tag:"div",injectTo:"body-prepend",attrs:{id:"mi-react-root"}}),(!0===e||"object"==typeof e&&!0===e.addSharedComponentsScripts)&&t.push({tag:"script",injectTo:"head-prepend",attrs:{src:"/auth/info.js"}},{tag:"script",injectTo:"head-prepend",attrs:{src:"/js/main.js",defer:"defer"}},{tag:"link",injectTo:"head-prepend",attrs:{href:"/css/main.css",rel:"stylesheet"}}),t}}}(l)),c){const{ViteImageOptimizer:e}=await import("vite-plugin-image-optimizer");a.push(e("object"==typeof c?c:void 0))}if(r){const{default:e}=await import("vite-plugin-zip-pack");a.push({...e("object"==typeof r?r:{outFileName:`${t}.zip`}),enforce:"post"})}return{base:p?`${Z}/${t}`:`${Q}/${t}`,server:{port:3e3},build:{minify:!1,assetsInlineLimit:4096,rollupOptions:{output:{banner:T}},outDir:o},css:{modules:{localsConvention:"dashes"},scss:{api:"modern"}},ppDevConfig:s,plugins:a}}function Y(e){return e?.ppDev||{}}function ee(e,t,n){return Object.assign({},e,t,n)}function te(e,t){return async(n,s={})=>{try{const{constants:i}=await N(),{PHASE_DEVELOPMENT_SERVER:a}=i,o=await G(),r=W().name,c="function"==typeof e?await e(n,s):e,p=Y(c),l=Object.assign({},o,p,t??{}),m=n===a,u=function(e,t,n,s){return n?s?t?`${Z}/${e}`:`/pl/${e}`:t?`${Z}/${e}`:`${Q}/${e}`:`/p/${e}`}(r,l.templateLess??!1,m,l.v7Features??!1),f={basePath:u,trailingSlash:!!m||void 0};return l.templateLess||(f.assetPrefix=`${Q}/${r}`),ee(f,c)}catch(t){console.error("Error in withPPDev:",t),console.warn("Falling back to original Next.js configuration");try{return"function"==typeof e?await e(n,s):e}catch(e){return console.error("Error in fallback configuration:",e),{}}}}}export{x as P,y as V,b as a,R as b,Y as c,K as d,X as g,I as i,N as s,te as w};
|
|
2
|
-
//# sourceMappingURL=index-D0CWM9o5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-D0CWM9o5.js","sources":["../../../src/constants.ts","../../../src/plugins/client-injection-plugin.ts","../../../src/banner/header.ts","../../../src/lib/next-import.ts","../../../src/config.ts","../../../src/index.ts","../../../src/plugins/mi-topbar-plugin.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["afterBundlePath","resolve","__filename","fileURLToPath","url","beforeBundlePath","PP_DEV_PACKAGE_DIR","existsSync","PP_DEV_CLIENT_ENTRY","version","name","JSON","parse","readFileSync","toString","VERSION","PACKAGE_NAME","PP_WATCH_CONFIG_NAMES","PP_DEV_CONFIG_NAMES","templateCache","cache","_maxSize","constructor","maxSize","this","Map","value","get","key","has","delete","set","size","firstKey","keys","next","undefined","clear","fileCache","DIRNAME","path","dirname","URL","process","cwd","PACKAGE_IMPORT","CLIENT_PATH","PACKAGE_REGEXP","RegExp","performanceMetrics","templateCompilations","cacheHits","totalRequests","clientInjectionPlugin","opts","base","baseChanged","currentTemplate","apply","config","optimizeDeps","exclude","push","resolveId","source","test","id","normalizePath","join","replace","transformIndexHtml","async","html","ctx","serverBase","server","enableCache","cacheKey","templatePath","templateContent","fs","encoding","escapedClientPath","compiledTemplate","ejs","compile","posix","openDelimiter","closeDelimiter","filename","rmWhitespace","compileDebug","getTemplate","assetPaths","css","js","getAssetPaths","result","tags","tag","injectTo","attrs","rel","href","backendBaseURL","templateLess","portalPageId","canSync","templateData","children","src","type","configureServer","clientDir","root","allow","middlewares","use","req","res","setHeader","end","stringify","closeBundle","replacer","substring","$1","header","chunk","safeNextImport","constants","Promise","all","import","default","error","Error","isNextAvailable","getNextVersion","configCache","CACHE_TTL","packageJsonCache","getPackageJson","now","Date","timestamp","data","flag","empty","esbuildModule","loadTsConfig","filePath","cached","isESM","pkg","esbuild","getEsbuild","build","absWorkingDir","entryPoints","outfile","write","target","platform","bundle","format","mainFields","sourcemap","metafile","text","code","outputFiles","fileNameTmp","Math","random","slice","fileUrl","pathToFileURL","writeFileSync","conf","unlink","loadJsConfig","loadJSONConfig","dirContentCache","loadConfig","dirFiles","configNames","configName","includes","endsWith","getPkg","getConfig","dirContent","files","endsWithRegExp","readdirSync","withFileTypes","filter","isFile","map","getDirectoryContent","configFound","newConfig","length","watchConfig","baseURL","configEntries","packageJsonCached","dirContentCached","pathPagePrefix","pathTemplatePrefix","getViteConfig","templateName","ppDevConfig","normalizedPPDevConfig","normalizeVitePPDevConfig","Object","assign","vitePPDev","plugins","outDir","distZip","imageOptimizer","integrateMiTopBar","addRootElement","addSharedComponentsScripts","defer","miTopBarPlugin","ViteImageOptimizer","zipPack","outFileName","enforce","port","minify","assetsInlineLimit","rollupOptions","output","banner","modules","localsConvention","scss","api","getPPDevConfigFromNextConfig","nextConfig","ppDev","mergeConfigs","baseConfig","nextConfiguration","additionalConfig","withPPDev","nextjsConfig","phase","PHASE_DEVELOPMENT_SERVER","nextConfigPPDev","mergedConfig","isDevelopment","basePath","v7Features","createBasePath","trailingSlash","assetPrefix","console","warn","fallbackError"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createProxyMiddleware as e,responseInterceptor as t}from"http-proxy-middleware";import{createLogger as s}from"vite";import{createColors as r}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,s)=>{const r=new RegExp(`(!!)?(https?(:(\\\\)?/(\\\\)?/)${e})`,"gi");return s.replace(r,((e,...s)=>e.startsWith("!!")?s[1]:`http${s[2]}${t}`))},$=(e,t,s)=>{e.setHeader("location",t),e.statusCode=s,e.end()};let A=new Map;const E="default",S=(e="info",t=E)=>{if(A&&"function"==typeof A.has||(A=new Map),A.has(t))return A.get(t);if(t===E){const r=s(e);return A.set(t,r),r}const r=s(e);return A.set(t,r),r},I=r(),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,s,r){const a=e[t];a&&(s.placeholder=a.placeholder,r.innerHTML=a.caption)}function s(e,t){t.textContent=e,t.classList.add("show")}function r(e){e.classList.remove("show")}function a(e,t,a,n){a.addEventListener("click",(async a=>{if(a.preventDefault(),r(n),!t.value.trim())return s(`${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,r,a){try{r.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();s(`Login failed: ${e?.error||"Unknown error occurred"}`,a)}catch(e){s("Login failed: Unable to parse response",a)}else window.location.href=n.url}catch(e){s("Login failed: Network error. Please check your connection.",a)}finally{r.classList.remove("loading")}}(t.value.trim(),c,e,n)})),t.addEventListener("keydown",(e=>{"Enter"===e.key&&(e.preventDefault(),a.click())})),t.addEventListener("input",(()=>{r(n)}))}function n(e){const s=e.firstChild;if(!s)return;const r=s.lastChild?.cloneNode(!0);if(!r)return;r.innerHTML="";const n=r.cloneNode(!0);n.innerText="OR",n.setAttribute("role","separator"),n.setAttribute("aria-label","Alternative login method");const i=r.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),s.appendChild(n),s.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,s,r){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,s,r)};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))},R=/^(https?:\/\/)([^/]+)(\/.*)?$/i,C="X-PP-Proxy";function F(s){const{rewritePath:r=/^\/(?!p[tl]).*/i,baseURL:a="",disableSSLValidation:n=!1,miAPI:i}=s;if(!a)throw new Error("Base url is required");const o=a.replace(R,"$2"),c=a.replace(R,"$1$2"),l=import("file-type"),p=S();return e({selfHandleResponse:!0,pathFilter:(e,t)=>!(s.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:a,changeOrigin:!0,autoRewrite:!0,cookieDomainRewrite:{[o]:"localhost"},logger:{info:()=>{},log:()=>{},error:()=>{},warn:()=>{}},secure:!n,headers:{host:o,origin:c},on:{proxyReq(e,t,s){const r=t.headers.host,n=e.getHeader("referer");return p.info(`${I.blue("Proxies request:")} ${I.green(t.method)} ${t.url} -> ${I.green(e.method)} ${e.protocol}//${e.host}${e.path}`),r&&n&&"string"==typeof n&&e.setHeader("referer",n.replace(new RegExp(`https?://${r}`),a)),i.personalAccessToken&&e.setHeader("Authorization",`Bearer ${i.personalAccessToken}`),t.socket.on("close",(()=>{setTimeout((()=>{e.destroyed||e.destroy()}),200)})),e},proxyRes:(e,s,r)=>{if(e.headers["content-type"]?.includes("text/event-stream")||e.headers["transfer-encoding"]?.includes("chunked")&&"no"===e.headers["x-accel-buffering"]){p.info(`${I.blue("Start streaming for request:")} ${I.green(s.method)} ${s.url}`);const t=async(e,t,s)=>{s.setHeader(C,1),s.setHeaders(new Map(Object.entries(e.headers))),e.pipe(s)};return t(e,s,r)}const a=t((async(e,t,s,r)=>{r.setHeader(C,1);if(await(await l).fileTypeFromBuffer(e))return e;{let t=e.toString("utf8");try{const e=new URL(s.url??"",`http://${o}`);if(e.searchParams&&e.searchParams.has("proxyRedirect")){t+=`<script>(${function(){const e="pp-dev::redirectCount",t="pp-dev::lastRedirect";let s=+(localStorage.getItem(e)??0);localStorage.getItem(t);Number.isNaN(s)&&(s=0);let r=window.location.href;const a=function(){const n=new URLSearchParams(window.location.search);if(!n.has("proxyRedirect"))return console.debug("No proxyRedirect param. Cleaning up."),void localStorage.removeItem(e);r!==window.location.href?(r=window.location.href,setTimeout(a,s<3?3e3:5e3)):window.location.href=n.get("proxyRedirect"),localStorage.setItem(e,""+ ++s),localStorage.setItem(t,(new Date).toISOString())};setTimeout(a,3e3)}.toString()})()<\/script>`}e.pathname.startsWith("/login")&&(t+=`<script>const host = "${o}";\n(${L.toString()})()<\/script>`)}catch{}const r=s.headers.host??"";return((e,t,s)=>{const r=new RegExp(`${e.replace(/\\*\//gi,"\\\\/")}`,"gi"),a=new RegExp(`${e}`,"gi"),n=s.replace(r,t);return n===s?n.replace(a,t):n})("/auth/saml/login","/login",T(o,r,t))}}));return a(e,s,r)},error(e,t,s){const r=`Proxy error: "${e.message}" when trying to "${t.method} ${t.url}"\n\n${e.stack}`;p.error(r),s.writable&&s.writeHead(500,{"Content-Type":"text/plain"}),s.end(r)}}})}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 O 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,s){const r=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});r.append("file",n);const i=this.getUploadUrl(e);return this.axios.post(i,r,{withCredentials:!0,headers:Object.assign({},s,{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,s){const r=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});r.append("file",n,"file.zip");const i=this.getUploadTemplateUrl(e);return this.axios.post(i,r,{withCredentials:!0,headers:Object.assign({},s,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).then((e=>e.data))}}class N extends O{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 U 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,s=e.response?.data?.message||e.message||"Unknown error";switch(t){case 412:return s.toLowerCase().includes("session expired")?{status:t,message:s,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:s,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:s,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:s,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:s,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]",H=new Map;class z{#e;#t;#s=null;#r;#a;#n;#i;#o;#c;#l;portalPageId;templateLess;assetsApi;pageApi;pageTemplateApi;logger;constructor(e,t){const{headers:s={},portalPageId:r,templateLess:n=!0,disableSSLValidation:i=!1,v7Features:c=!1,personalAccessToken:l}=t||{};this.#e=s,this.#a=[],this.#r="",this.#n=c,this.#i=l,this.#o=!1,this.#c=Promise.resolve(!1);const p=`${e}:${i}`;H.has(p)?this.#t=H.get(p):(i&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0",a.defaults.httpsAgent=new o({rejectUnauthorized:!1})),this.#t=a.create({baseURL:e,headers:s,timeout:3e4,maxRedirects:5,httpAgent:new o({keepAlive:!0,maxSockets:10}),httpsAgent:new o({keepAlive:!0,maxSockets:10})}),H.set(p,this.#t)),this.portalPageId=r,this.templateLess=n,this.assetsApi=new(c?N:O)(this.#t),this.pageApi=new M(this.#t),this.pageTemplateApi=new U(this.#t),this.logger=S()}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.#s||(this.#c=new Promise((e=>{this.#l=e}))),this.#s)return Promise.resolve(this.#s);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(I.green("Page fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(I.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.#s=this.localTemplateHTML,this.#s=this.#s.replace(/%%PAGE TITLE%%/g,t.name||"Local template"),this.logger.info(I.green("Local page template fetched")),this.#l(!0),this.#s}let t=(await this.pageApi.getAll(this.#p(e)).then((e=>(this.logger.info(I.green("Page list fetched")),e))).catch((async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(I.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(I.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(I.green("Dev page created")),e))).catch((e=>{throw this.logger.error(I.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.#s=e,e))).then((e=>(this.#l(!0),this.logger.info(I.green("Page template fetched")),e))).catch((e=>{throw this.#l(!1),this.logger.error(I.red(`Error fetching page template: ${e.message}`)),new Error("Error fetching page template")}))}async getPageVariables(e,t){return this.#s=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:s,template:r}=e;if(r&&t){const e=JSON.parse(t);return this.#a=e,this.#r=s,e}return this.#a=[],this.#r=s,[]})).catch((t=>{if(this.logger.error(I.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 s=this.#p(t),r=this.portalPageId;try{return this.#n?await this.#d(r,s):await this.#h(r,s)}catch(e){this.#u(e,r)}}async#d(e,t){const s=await this.pageApi.get(e,t);return this.logger.info(I.green("Page fetched")),void 0!==s.template_id&&(this.#o=!0),s}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()}`);throw 401===e.response?.status&&this.logger.error(I.red(`Current user does not have access to page with id "${t}" on instance ${this.#t.getUri()}`)),e}buildPage(e,t=!1){let s="string"==typeof e?e:e.toString("utf-8");for(const e of this.#a)s=s.replace(new RegExp(`\\[${e.name}\\]`,"g"),e.value);const r=new i(t?s:this.#s),a="%%PLACEHOLDER%%";if(!t){const e=r.window.document.createElement("div");e.innerHTML=a;const t=r.window.document.querySelector(".main-side");if(t){const s=t.querySelectorAll("script");s.length?t.insertBefore(e,s.item(s.length-1)):t.append(e)}else{const t=r.window.document.createElement("div");t.append(e),r.window.document.body.append(t)}const s=r.window.document.querySelector("head"),n=s.querySelector("title");n?n.text=this.#r:s.innerHTML+=`<title>${this.#r}</title>`}return r.serialize().replace(new RegExp(`<div>\\s*${a}\\s*<\\/div>`,"i"),s)}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 s=await this.pageTemplateApi.get(t.template_id,this.#e);return await this.assetsApi.uploadTemplateAssets(s.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,s=!1){const r=s?t:Object.assign({},this.#p(this.#e),t);try{return await this.#t.get(e,{headers:r})}catch(e){if("UNKNOWN_ERROR"!==B(e).code){const t=B(e);throw this.logger.error(I.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,s){const r=B(t),a=`[${s}] `;e.error(I.red(`${a}${r.userFriendlyMessage}`)),e.error(I.red(`Status: ${r.status} (${r.code})`)),e.error(I.red(`Details: ${r.message}`)),r.suggestions.length>0&&(e.info(I.yellow("Suggestions:")),r.suggestions.forEach(((t,s)=>{e.info(I.yellow(` ${s+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=S(),this.init()}init(){const{ws:e}=this.server;for(const[t,s]of this.eventMap)e.on(t,s)}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(I.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 s=await(t?.getAssets().catch((async e=>{if(n(e)){if("SESSION_EXPIRED"===B(e).code){this.logger.info(I.yellow("Session expired - attempting to validate credentials"));try{const e=await(t?.validateCredentials());e&&!e.isValid?(this.logger.error(I.red(`Authentication error: ${e.error}`)),this.server.ws.send("template:sync:response",{error:e.error,code:e.code,refresh:!0})):(this.logger.info(I.yellow("Session expired")),this.server.ws.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(I.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(I.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(s instanceof Error)return;const r=s?await(e?.saveBackupAndBuild(s).catch((e=>{if("Backup file is not a ZIP file"===e.message)return this.logger.error(I.red("Backup file is not a ZIP file")),e}))):await(e?.buildNewAssets());if(!(r&&r instanceof Buffer))return r instanceof Error?(this.server.ws.send("template:sync:response",{error:r.message}),void this.logger.error(I.red(r.message))):(this.server.ws.send("template:sync:response",{error:"Failed to build new assets"}),void this.logger.error(I.red("Failed to build new assets")));{const s=await(t?.updateAssets(r));if("OK"===s?.status){const t=e?.getBackupMeta(),{lastBackupName:s,lastBackupHash:r,lastBackupDate:a}=t||{lastBackupName:"",lastBackupHash:"",lastBackupDate:(new Date).toISOString()};this.server.ws.send("template:sync:response",{syncedAt:new Date(a),currentHash:r,backupFilename:s}),this.logger.info(I.green("Template synced"))}else this.server.ws.send("template:sync:response",{error:"Failed to update assets"}),this.logger.error(I.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,s){const r=this.get(e);r&&(this.totalSize-=r.size);const a=super.put(e,t,s);return this.totalSize+=t.size,this.cleanup(),a}cleanup(){const e=this.keys();if(e.length>this.maxItems){const t=e.length-this.maxItems,s=e.sort(((e,t)=>{const s=this.get(e),r=this.get(t);return(s?.timestamp||0)-(r?.timestamp||0)}));for(let e=0;e<t;e++){const t=s[e],r=this.get(t);r&&(this.totalSize-=r.size,this.del(t))}}for(;this.totalSize>this.maxSize&&e.length>0;){const t=e.sort(((e,t)=>{const s=this.get(e),r=this.get(t);return(s?.timestamp||0)-(r?.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)=>Buffer.byteLength(t)+e),0);return Buffer.concat(e,t)}function J(e){const{devServer:t,ttl:s=q,maxSize:r=Z,maxItems:a=W}=e,n=S();return r===Z&&a===W||(Y.maxSize=r,Y.maxItems=a),t.cache=Y,(e,t,r)=>{const a=e.originalUrl||e.url||"",i=function(e){const t=e.split("?")[0];return _.test(t)?t.includes("/auth/info.js")?"":e:""}(a);if(!i)return r();const o=Y.get(i);if(o)return n.info(`${I.blue("Proxies request:")} ${I.green(e.method)} ${a} -> ${I.blue("Cache")} ${i}`),function(e,t){try{for(const[s,r]of Object.entries(t))null!=r&&e.setHeader(s,r)}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,s,r){if(!t.hasHeader(C))return l.call(this,e,s,r);if("string"==typeof e){const t=s||"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,r,a){if(!t.hasHeader(C))return c.call(this,e,r,a);if(null!=e)if("string"==typeof e){const t=r||"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=Buffer.byteLength(o);if(e>0&&e<10485760){const r={headers:t.getHeaders(),content:o,timestamp:Date.now(),size:e};Y.put(i,r,s),n.info(`${I.blue("[Cached]")} ${i} (${(e/1024).toFixed(1)}KB)`)}}catch(e){n.error(`Failed to cache response for ${i}: ${e}`),o=K(p)}const l=r||"utf8";return c.call(this,o,l,a)},r()}}const G="pageName",Q="date",ee=l.dirname("undefined"!=typeof __filename&&__filename||d(import.meta.url)),te=l.resolve(ee,"..",".."),se=l.resolve(te,"..",".."),re=l.resolve(se,".pp-dev-meta"),ae=l.resolve(re,"sync-service.meta.json");class ne{backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;logger;constructor(e,t){this.pageName=e;const{backupFolder:s=l.resolve(g.cwd(),"backups"),distZipFolder:r=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=s,this.backupNameTemplate=n,this.dateFormat=i,this.distZipFolder=r,this.distZipFilename=a,this.syncMeta(),this.logger=S()}async checkMeta(){try{await p.stat(re)}catch{await p.mkdir(re)}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 s=new Date,r=this.backupName(this.pageName,s);return this.currentMeta.lastBackupName=r,this.currentMeta.lastBackupHash=t,this.currentMeta.lastBackupDate=s.toISOString(),await this.syncMeta(),await p.writeFile(l.resolve(this.backupFolder,r),e).finally((()=>{this.logger.info(`Backup saved to ${r}`)}))}async buildNewAssets(){const e=new Promise(((e,t)=>{let s="";this.logger.info(I.cyan("[DistService] Build started"));const r=f.spawn("node",[l.resolve(te,"./bin/pp-dev.js"),"build"],{cwd:g.cwd(),env:Object.assign({},g.env,{NODE_ENV:"production"}),stdio:"inherit"});r.on("message",(e=>{s+=e})),r.on("close",(r=>{0===r?e(s):t(new Error(`build command exited with code ${r}`))})),r.on("error",(e=>{t(e)}))}));try{await e.finally((()=>{this.logger.info(I.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(s,r,a)=>{if(await e(s.url??"",s,r)){S().info(`Rewrite response for ${s.url}`);const e=r.end,a=[];r.write=function(e){return a.push(e),!0},r.end=function(n,i,o){"string"==typeof n&&a.push(Buffer.from(n));const c=r.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,s,r),c),p,d),this}}a()}}function oe(e,t){const s=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,r=S();return(a,n,i)=>{const o=new h(a.url??"","http://localhost"),{pathname:c,search:l}=o,p=["/",s];if(t&&(p.push(`/pt/${t}`),p.push(`/pl/${t}`)),p.includes(c)){const t=`${e}${l}`;return r.info(I.yellow(`Redirecting to: ${t}`)),$(n,t,302)}i()}}class ce{state={isAuthenticated:!1,isRedirected:!1,lastChecked:0};listeners=new Set;getState(){return{...this.state}}isAuthenticated(){return this.state.isAuthenticated}isRedirected(){return this.state.isRedirected}setAuthenticated(e){this.state.isAuthenticated=e,this.state.lastChecked=Date.now(),this.notifyListeners()}setRedirected(e){this.state.isRedirected=e,this.notifyListeners()}updateState(e){void 0!==e.isAuthenticated&&(this.state.isAuthenticated=e.isAuthenticated),void 0!==e.isRedirected&&(this.state.isRedirected=e.isRedirected),this.state.lastChecked=Date.now(),this.notifyListeners()}reset(){this.state={isAuthenticated:!1,isRedirected:!1,lastChecked:0},this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){this.listeners.forEach((e=>{try{e(this.getState())}catch(e){console.error("Error in auth state listener:",e)}}))}getDebugInfo(){return{...this.getState(),listenerCount:this.listeners.size}}}const le=new ce,pe=new Map;function de(e){const t=pe.get(e);return t?Date.now()-t.timestamp>18e4?(pe.delete(e),null):t.data:null}function he(e,t){pe.set(e,{timestamp:Date.now(),data:t})}const ue="/home?proxyRedirect=";function ge(e,t,s){const{templateLess:r=!1,miHudLess:a=!1,portalPageId:n,base:i,v7Features:o}=s,c=S();if(r&&a&&void 0===n)throw new Error("Portal page ID is required when both templateLess and miHudLess are true");let l=le.getState();return le.subscribe((e=>{l=e})),async(s,p,d)=>{try{const h=!(r&&a),u=e.test((s.url??"").split("?")[0]);if(!l.isAuthenticated&&!l.isRedirected&&s.url?.startsWith("/home")&&!s.url?.startsWith(ue)){c.info(I.blue("Trying to authenticate and redirect to base"));try{return h?await me(t,{templateLess:r,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},s,p,(()=>{}),c):await fe(t,{templateLess:r,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},s,p,(()=>{}),c),le.setRedirected(!0),c.info(I.blue("Successfully authenticated. Redirecting to base")),$(p,i??"/",302)}catch(e){return d()}}if(!u)return d();if(!h){return await fe(t,{templateLess:r,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},s,p,d,c)}return await me(t,{templateLess:r,miHudLess:a,portalPageId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},s,p,d,c)}catch(e){return c.error(I.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),le.reset(),d(e)}}}async function fe(e,t,s,r,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(I.red(e.message)),a(e)}const l=s.headers??{};n.info(I.green("Start loading page info"));try{const t=`pageInfo:${i}`;return de(t)?(n.info(I.green("Page info loaded from cache")),a()):(await e.getPageInfo(i,l),n.info(I.blue("Clearing proxy cache after successful login")),Y.clear(),he(t,{success:!0}),le.updateState({isAuthenticated:!0}),n.info(I.green("Page info loaded successfully")),a())}catch(e){return le.reset(),we(e,o??!0,c||`${ue}${encodeURIComponent("/")}`,r,a,n,"Page info")}}async function me(e,t,s,r,a,n){const{templateLess:i,portalPageId:o,redirectOnAuthFailure:c,redirectUrl:l}=t,p=s.headers??{};n.info(I.green("Start loading page data"));try{const t=`pageData:${i}:${o}`;if(de(t))return n.info(I.green("Page data loaded from cache")),a();const s=i||void 0===o?e.getPageTemplate(p):e.getPageVariables(o,p);return await s,n.info(I.blue("Clearing proxy cache after successful login")),Y.clear(),he(t,{success:!0}),n.info(I.green("Page data loaded successfully")),a()}catch(e){return le.reset(),we(e,c??!0,l||`${ue}${encodeURIComponent("/")}`,r,a,n,"Page data")}}function we(e,t,s,r,a,n,i){if(function(e){return null!==e&&"object"==typeof e&&"response"in e&&void 0!==e.response}(e)&&(n.info(I.red(`${i} loading failed. Not authorized`)),t)){const e=`${s}`;return n.info(I.yellow(`Redirecting to: ${e}`)),$(r,e,302)}const o=e instanceof Error?e.message:String(e);return n.info(I.red(`${i} loading failed. Error: ${o}`)),a(e)}const ye=P();function ve(e,t,s){return t(e)?{isValid:!0}:{isValid:!1,error:s}}function be(e){const t=function(e){return[ve(e,(e=>"object"==typeof e&&null!==e),"VitePPDevOptions must be an object"),ve(e.templateName,(e=>"string"==typeof e&&e.length>0),"VitePPDevOptions.templateName must be a non-empty string"),ve(e.backendBaseURL,(e=>void 0===e||"string"==typeof e&&e.length>0),"VitePPDevOptions.backendBaseURL must be a non-empty string if provided"),ve(e.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.portalPageId must be a positive number if provided"),ve(e.appId,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.appId must be a positive number if provided"),ve(e.proxyCacheTTL,(e=>void 0===e||"number"==typeof e&&e>0),"VitePPDevOptions.proxyCacheTTL must be a positive number if provided"),ve(e.integrateMiTopBar,(t=>{if(void 0===t)return!0;if(null===t)return!1;if("boolean"!=typeof t&&"object"!=typeof t)return!1;if(!0===t&&!0!==e.miHudLess)return!1;if("object"==typeof t&&null!==t){if(void 0!==t.addRootElement&&"boolean"!=typeof t.addRootElement)return!1;if(void 0!==t.addSharedComponentsScripts&&"boolean"!=typeof t.addSharedComponentsScripts)return!1;if(!0!==e.miHudLess&&(!0===t.addRootElement||!0===t.addSharedComponentsScripts))return!1}return!0}),"VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans")].find((e=>!e.isValid))||{isValid:!0}}(e);if(!t.isValid)throw new Error(t.error);const s=e.appId??e.portalPageId,{enableProxyCache:r=!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:r,proxyCacheTTL:a,disableSSLValidation:n,imageOptimizer:m,templateLess:l,miHudLess:o,outDir:p,distZip:f,syncBackupsDir:h,v7Features:u,personalAccessToken:g,portalPageId:s,integrateMiTopBar:c,...e}}function ke(e){const{templateName:t,templateLess:s,backendBaseURL:r,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[ve(e.base,(e=>"string"==typeof e&&e.length>0&&"/"!==e),'Server base path cannot be empty or "/"'),ve(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:r,portalPageId:n,templateLess:s,v7Features:d},d&&(e.base=`/pl/${t}`),e},transformIndexHtml:async(e,t)=>{const s={html:e,tags:[]};return u&&(u=!1,s.tags.push({tag:"script",injectTo:"body",children:`${Math.random()}`})),s},configureServer:u=>{let g=u.config.base;g.endsWith("/")||(g+="/");const f=g.substring(0,g.lastIndexOf("/"));if(u.middlewares.use(oe(g,t)),r){const w=new URL(r).host,y={headers:{host:w,referer:r,origin:r.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},portalPageId:n,appId:n,templateLess:s,disableSSLValidation:c,v7Features:d,personalAccessToken:h??process.env.MI_ACCESS_TOKEN},v=[ve((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"),ve(m.portalPageId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI portalPageId must be a positive number if provided"),ve(m.appId,(e=>void 0===e||"number"==typeof e&&e>0),"MiAPI appId must be a positive number if provided"),ve(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(r,y);if(i){let e=+o;(!e||Number.isNaN(e)||e<0)&&(e=6e5);const t={devServer:u,ttl:e},s=function(e){return[ve(e.ttl,(e=>"number"==typeof e&&e>0),"Proxy cache TTL must be a positive number")].find((e=>!e.isValid))||{isValid:!0}}(t);if(!s.isValid)throw new Error(s.error);u.middlewares.use(J(t))}const k=new RegExp(`^((${g})|/)$`);u.middlewares.use(ge(k,b,Object.assign({},e))),u.middlewares.use(F({baseURL:r,proxyIgnore:["/@vite","/@metricinsights","/@",f],disableSSLValidation:c,miAPI:b}));const x=(e,t,s,r,a)=>{const n={error:s};r&&(n.details=r),a&&(n.code=a),e.status(t).json(n).end()},P=(e,t,s)=>{u.config.logger.error(`${s} token validation error:`,t);const r=B(t);if(t.tokenErrorInfo){const s=t.tokenErrorInfo;u.config.logger.info(`Using enhanced error info: ${s.code} - ${s.userFriendlyMessage}`);const r=s.status||500,a=s.code,n=s.userFriendlyMessage,i=s.message;x(e,r,n,i,a)}else{let t,a,n;switch(u.config.logger.info(`Using original error info: ${r.code} - ${r.userFriendlyMessage}`),r.code){case"SESSION_EXPIRED":t=412,a="personal"===s?"Personal access token expired":"Session expired",n="personal"===s?"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=r.code}const i="personal"===s&&"PAT_EXPIRED"===n?"Your personal access token has expired. Please generate a new token from the portal.":"regular"===s&&"SESSION_EXPIRED"===n?"Your portal session has expired. Please refresh your token or re-authenticate.":r.userFriendlyMessage;x(e,t,a,i,n)}return null};ye.post("/@api/login",(async(e,t,s)=>{const{token:r,tokenType:a}=e.body;if(r){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 ${r}`},!0).then((async e=>"number"==typeof e.data?.user?.user_id?(b.personalAccessToken=r,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:r},!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(ye);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}}}ye.use(P.json()),ye.use(P.urlencoded({extended:!0}));export{ce as A,z as M,I as a,J as b,S as c,F as d,ge as e,ye as f,ie as g,le as h,oe as i,be as n,T as u,ke as v};
|
|
2
|
-
//# sourceMappingURL=plugin-BhmS15QR.js.map
|