@metricinsights/pp-dev 1.5.0-beta.21 → 1.5.0-beta.23
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/dist/cjs/cli.js +1 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/plugin.js +1 -1
- package/dist/cjs/request-capture.middleware-Jk6Vxx40.js +2 -0
- package/dist/cjs/request-capture.middleware-Jk6Vxx40.js.map +1 -0
- package/dist/esm/cli.js +1 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/plugin.js +1 -1
- package/dist/esm/request-capture.middleware-B9t-px8Z.js +2 -0
- package/dist/esm/request-capture.middleware-B9t-px8Z.js.map +1 -0
- package/package.json +1 -1
- package/dist/cjs/request-capture.middleware-Chm27VXb.js +0 -2
- package/dist/cjs/request-capture.middleware-Chm27VXb.js.map +0 -1
- package/dist/esm/request-capture.middleware-BNCdPdkF.js +0 -2
- package/dist/esm/request-capture.middleware-BNCdPdkF.js.map +0 -1
package/dist/esm/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sources":["../../../src/shortcuts.ts","../../../src/lib/process-handlers.ts","../../../src/lib/cli-options.ts","../../../src/cli/config-watcher.ts","../../../src/cli/options.ts","../../../src/cli/vite-config.ts","../../../src/cli/profiler.ts","../../../src/lib/pp-ws-server.ts","../../../src/lib/next-process-listeners.ts","../../../src/lib/changelog-generator.ts","../../../src/cli/post-build-changelog.ts","../../../src/lib/icon-font-generator.ts","../../../src/cli.ts","../../../src/cli/commands/serve.ts","../../../src/cli/commands/next.ts","../../../src/cli/commands/build.ts","../../../src/cli/commands/next-build.ts","../../../src/cli/commands/changelog.ts","../../../src/cli/commands/generate-icon-font.ts","../../../src/cli/commands/optimize.ts","../../../src/cli/commands/preview.ts","../../../src/cli/commands/migrate.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":["isDefined","value","cleanupActiveShortcutBinding","boundOptions","WeakMap","bindShortcuts","server","opts","httpServer","process","stdin","isTTY","env","CI","set","logger","createLogger","print","info","colors","dim","green","bold","shortcuts","customShortcuts","filter","concat","BASE_SHORTCUTS","actionRunning","wasPaused","isPaused","stdinWithRawMode","hadRawModeEnabled","Boolean","isRaw","onInput","async","input","proc","platform","emit","kill","pid","interruptProcess","close","finally","exit","map","shortcut","key","description","join","find","action","setRawMode","on","setEncoding","resume","boundServer","cleanupBinding","removeListener","off","pause","get","restart","config","printUrls","openBrowser","clearScreen","cache","clear","describe","error","Error","stack","message","String","registerProcessHandlers","knownRejections","shutdown","shutdownTimeoutMs","processRef","shuttingDown","exitCode","shutdownAndExit","reason","code","Math","max","escalate","warn","yellow","timeout","setTimeout","red","clearTimeout","onSigint","onSigterm","onSighup","onUncaughtException","onUnhandledRejection","known","rejection","matches","NON_VITE_FLAGS","cleanOptions","options","ret","flag","sourcemap","watch","undefined","NEXT_IGNORED_FLAGS","createConfigWatcher","projectRoot","restartCallback","watchPatterns","PP_DEV_CONFIG_NAMES","file","path","watcher","ignored","filePath","base","basename","test","startsWith","persistent","ignoreInitial","followSymlinks","restartTimeout","blue","relative","cleanupConfigWatcher","isNextTurbopackNativeBindingsError","msg","filterDuplicateOptions","Object","entries","Array","isArray","length","loadCommandViteConfig","root","mode","command","envDir","resolve","cwd","loadPPDevEnv","configFromFile","loadConfigFromFile","configFile","logLevel","getViteConfig","buildOverrides","fileConfig","plugins","mergeConfig","profileSession","global","__pp_dev_profile_session","profileCount","stopProfiler","log","Promise","res","rej","post","err","profile","outPath","fs","writeFileSync","JSON","stringify","white","refuseUpgrade","socket","once","destroy","end","PPDevHotServer","wss","eventListeners","Map","lifecycleListeners","clients","ws","allowedHosts","constructor","this","WebSocketServer","noServer","onConnection","fireLifecycle","event","listener","getEventSet","add","getLifecycleSet","delete","send","arg1","arg2","keys","sendToSocket","data","readyState","WebSocket","OPEN","handleUpgrade","req","head","url","split","PP_DEV_HMR_WS_PATH","crossOriginReason","terminate","client","payload","raw","onMessage","parse","toString","type","listeners","arg","Set","NEXT_WORKER_SCHEDULER_REJECTION","fileNameWithHashRegEx","ChangelogGenerator","oldAssetsPath","newAssetsPath","destinationPath","changelogFilename","changelogTemplate","diffFileTemplateHandler","diffLineTemplateHandler","contextLines","isExists","isZipFile","unzipDestinationPath","os","tmpdir","crypto","createHash","update","digest","unzipFile","then","normalizeAssetFolderPath","isEmptyFolder","isFolder","mkdirpSync","templateIsValid","template","includes","assetPath","existsSync","endsWith","lstatSync","isDirectory","readdirSync","withFileTypes","dir","mkdirSync","recursive","rmSync","force","extractZipSafe","folderContent","pathToPosix","replace","diffTableTemplate","diffLinesHTML","getDiffTableHTML","diffLines","index","array","lineType","slice","some","line","prevLine","lineNumber","lineContent","flat","diffLineHTML","diffLineMessageTemplate","diffLineSkipTemplate","diffLineTemplate","diffLine","numClass","str","i","charCodeAt","diffFileTemplate","filename","htmlDiff","generateAssetFoldersDiff","dirDiff","dirCompare","compare","compareContent","skipSymlinks","compareSize","compareDate","compareNameHandler","name1","name2","localeCompare","diffSet","d","state","generateAssetFilesDiff","oldFileString","newFileString","dmp","DiffMatchPatch","linesChars","diff_linesToChars_","linesDiff","diff_main","chars1","chars2","diff_charsToLines_","lineArray","linesCount","lines","generateFilesDiff","difference","filepath1","relativePath","filepath2","assetFile1Path","path1","assetFile2Path","path2","filepath","filenameTitle","isBinaryFile","readFileSync","generateChangelog","all","templateArray","splice","changelogHTML","generatePostBuildChangelog","changelog","executionRoot","backupsDirPath","changelogDestinationPath","backups","zipBackups","isFile","name","latestBackup","reduce","latest","current","statSync","mtimeMs","changelogGenerator","IconFontGenerator","sourceDir","outputDir","fontName","generate","default","svgToFont","src","dist","css","typescript","startUnicode","svgicons2svgfont","fontHeight","cli","cac","option","alias","configWatcher","isRestarting","startServer","clearConfigCache","getConfig","n","h","createServer","optimizeDeps","customLogger","listen","ppDevStartTime","__pp_dev_start_time","startupDurationString","reset","ceil","performance","now","VERSION","serveConfig","inspector","enabled","localUrl","resolvedUrls","local","origin","URL","port","cyan","INSPECTOR_PATH","r","Session","connect","encodeURIComponent","e","registerServeCommand","ignoredFlags","host","listenHost","listenPort","resolvedHost","parsedPort","Number","parseInt","NaN","isInteger","resolveNextListenAddress","nextApp","hotServer","clientService","openSockets","nextAppListeners","events","listenersOf","before","previousApp","beforeCreate","afterCreate","snapshot","addedByApp","has","removed","oldListeners","newCode","createNextAppListenerTracker","closeNextApp","closeHttpServer","startNextServer","next","constants","safeNextImport","PHASE_DEVELOPMENT_SERVER","dispose","importConfig","loadConfig","ppDevConfig","ppDev","standaloneConfig","getPkg","packageName","validatePPDevConfig","_normalized","normalizePPDevConfig","templateName","backendBaseURL","templateLess","v7Features","disableSSLValidation","enableProxyCache","proxyCacheTTL","personalAccessToken","miHudLess","inspectorEnabled","inspectorMaxMemory","inspectorCaptureLimit","appId","toLowerCase","internalServer","createInternalServer","configBasePath","basePath","PATH_PAGE_PREFIX","PATH_TEMPLATE_LOCAL_PREFIX","PATH_TEMPLATE_PREFIX","bundlerChoice","envWebpack","PP_DEV_NEXT_WEBPACK","webpack","turbopack","parseNextBundlerCli","createAndPrepareNext","bundler","TURBOPACK","nextOptions","dev","customServer","hostname","conf","assetPrefix","prepare","handle","getRequestHandler","requestHost","headers","isHostAllowed","writeHead","hostNotAllowedMessage","originalUrl","originalPathname","parsedUrl","fullMiddlewareChain","essentialMiddlewareChain","middlewareIndex","runEssentialMiddleware","processNextJSRequest","middleware","runMiddleware","redirectUrl","Location","statusCode","forwardUpgrade","onUpgrade","every","mi","reqStore","RequestStore","registerInspectorRoutes","captureMiddleware","createRequestCaptureMiddleware","push","internalServerWrapper","VARIABLES_EDITOR_PATH","baseUrlHost","userHostGuard","createUserHostGuard","unshift","EventEmitter","defaultMaxListeners","miConfig","getMiAPIOptions","MiAPI","ppRedirectMiddleware","initPPRedirect","ppRedirectWrapper","devPanelAssetMiddleware","createDevPanelAssetMiddleware","ttl","resolveProxyCacheTtl","mockDevServer","middlewares","use","fn","console","proxyCacheMiddleware","initProxyCache","devServer","proxyCacheWrapper","isIndexRegExp","getIndexPageRegExp","loadPPDataMiddleware","initLoadPPData","assign","loadPPDataWrapper","mockProxyDevServer","proxyPassMiddlewareInstance","proxyPassMiddleware","baseURL","proxyIgnore","getProxyIgnore","miAPI","proxyPassWrapper","rewriteResponseMiddleware","initRewriteResponse","pathname","response","page","buildPage","withPanel","injectDevPanel","devPanelPosition","devPanelHidden","devPanelAutoHide","Buffer","from","urlReplacer","rewriteResponseWrapper","exportDistDir","distDir","previousNextBuildFlag","PP_DEV_NEXT_BUILD_ENV_VAR","prodConfig","PHASE_PRODUCTION_BUILD","normalizedDistDir","nextExportDir","nextPackageRepositoryUrl","nextPackageVersion","projectPkg","version","repository","distService","DistService","backupFolder","syncBackupsDir","maxBackups","syncMaxBackups","buildTimeoutMs","syncBuildTimeoutMs","nextBuild","packageVersion","packageRepositoryUrl","clientServiceServer","clientInjectionPlugin","startSyncAndUsers","persistUsers","miUrl","nextUpgradeHandler","getUpgradeHandler","registerNextCommand","buildOptions","cliOverrides","resolveBuildCliOverrides","buildConfig","build","outDir","changelogDestination","distZip","registerBuildCommand","nextConfig","normalized","applyDistZipOverride","createDefaultZipFileName","versionPlugin","applyVersionManifestOverride","removedDevTypes","removeStaleDevTypes","runNextBuildProcess","rawDistDir","exportDirName","writeBuildVersionManifest","versionFileTemplate","zipOutDir","zipSourceDir","inDir","zipFile","resolveOutputFilePath","outFileName","dirname","buffer","zipDirectoryToBuffer","registerNextBuildCommand","oldAssetPath","newAssetPath","oldPath","newPath","destination","fullOldPath","fullNewPath","fullDestination","registerChangelogCommand","source","destDir","fullSourceDir","fullDestDir","iconFontGenerator","registerGenerateIconFontCommand","optimizeConfig","resolveConfig","registerOptimizeCommand","preview","strictPort","https","open","registerPreviewCommand","configArg","isLegacyFlatConfig","isLegacyPPWatchConfig","isAlreadyMigrated","migrateLegacyFlatConfig","migratePPWatchConfig","generateConfigFileContent","discoverMigrateSource","loadPackageJsonMigrateConfig","format","doBackup","backup","migrateSource","sourceFile","isWatchConfig","isPackageJsonConfig","pkg","migratedConfig","rawConfig","esbuild","pathToFileURL","absWorkingDir","entryPoints","outfile","write","target","bundle","packages","mainFields","outputFiles","text","tmpFile","Date","mod","unlinkSync","outputContent","outputFile","output","dryRun","backupPath","copyFileSync","registerMigrateCommand","help"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sources":["../../../src/shortcuts.ts","../../../src/lib/process-handlers.ts","../../../src/lib/cli-options.ts","../../../src/cli/config-watcher.ts","../../../src/cli/options.ts","../../../src/cli/vite-config.ts","../../../src/cli/profiler.ts","../../../src/lib/pp-ws-server.ts","../../../src/lib/next-process-listeners.ts","../../../src/lib/changelog-generator.ts","../../../src/cli/post-build-changelog.ts","../../../src/lib/icon-font-generator.ts","../../../src/cli.ts","../../../src/cli/commands/serve.ts","../../../src/cli/commands/next.ts","../../../src/cli/commands/build.ts","../../../src/cli/commands/next-build.ts","../../../src/cli/commands/changelog.ts","../../../src/cli/commands/generate-icon-font.ts","../../../src/cli/commands/optimize.ts","../../../src/cli/commands/preview.ts","../../../src/cli/commands/migrate.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":["isDefined","value","cleanupActiveShortcutBinding","boundOptions","WeakMap","bindShortcuts","server","opts","httpServer","process","stdin","isTTY","env","CI","set","logger","createLogger","print","info","colors","dim","green","bold","shortcuts","customShortcuts","filter","concat","BASE_SHORTCUTS","actionRunning","wasPaused","isPaused","stdinWithRawMode","hadRawModeEnabled","Boolean","isRaw","onInput","async","input","proc","platform","emit","kill","pid","interruptProcess","close","finally","exit","map","shortcut","key","description","join","find","action","setRawMode","on","setEncoding","resume","boundServer","cleanupBinding","removeListener","off","pause","get","restart","config","printUrls","openBrowser","clearScreen","cache","clear","describe","error","Error","stack","message","String","registerProcessHandlers","knownRejections","shutdown","shutdownTimeoutMs","processRef","shuttingDown","exitCode","shutdownAndExit","reason","code","Math","max","escalate","warn","yellow","timeout","setTimeout","red","clearTimeout","onSigint","onSigterm","onSighup","onUncaughtException","onUnhandledRejection","known","rejection","matches","NON_VITE_FLAGS","cleanOptions","options","ret","flag","sourcemap","watch","undefined","NEXT_IGNORED_FLAGS","createConfigWatcher","projectRoot","restartCallback","watchPatterns","PP_DEV_CONFIG_NAMES","file","path","watcher","ignored","filePath","base","basename","test","startsWith","persistent","ignoreInitial","followSymlinks","restartTimeout","blue","relative","cleanupConfigWatcher","isNextTurbopackNativeBindingsError","msg","filterDuplicateOptions","Object","entries","Array","isArray","length","loadCommandViteConfig","root","mode","command","envDir","resolve","cwd","loadPPDevEnv","configFromFile","loadConfigFromFile","configFile","logLevel","getViteConfig","buildOverrides","fileConfig","plugins","mergeConfig","profileSession","global","__pp_dev_profile_session","profileCount","stopProfiler","log","Promise","res","rej","post","err","profile","outPath","fs","writeFileSync","JSON","stringify","white","refuseUpgrade","socket","once","destroy","end","PPDevHotServer","wss","eventListeners","Map","lifecycleListeners","clients","ws","allowedHosts","constructor","this","WebSocketServer","noServer","onConnection","fireLifecycle","event","listener","getEventSet","add","getLifecycleSet","delete","send","arg1","arg2","keys","sendToSocket","data","readyState","WebSocket","OPEN","handleUpgrade","req","head","url","split","PP_DEV_HMR_WS_PATH","crossOriginReason","terminate","client","payload","raw","onMessage","parse","toString","type","listeners","arg","Set","NEXT_WORKER_SCHEDULER_REJECTION","fileNameWithHashRegEx","ChangelogGenerator","oldAssetsPath","newAssetsPath","destinationPath","changelogFilename","changelogTemplate","diffFileTemplateHandler","diffLineTemplateHandler","contextLines","isExists","isZipFile","unzipDestinationPath","os","tmpdir","crypto","createHash","update","digest","unzipFile","then","normalizeAssetFolderPath","isEmptyFolder","isFolder","mkdirpSync","templateIsValid","template","includes","assetPath","existsSync","endsWith","lstatSync","isDirectory","readdirSync","withFileTypes","dir","mkdirSync","recursive","rmSync","force","extractZipSafe","folderContent","pathToPosix","replace","diffTableTemplate","diffLinesHTML","getDiffTableHTML","diffLines","index","array","lineType","slice","some","line","prevLine","lineNumber","lineContent","flat","diffLineHTML","diffLineMessageTemplate","diffLineSkipTemplate","diffLineTemplate","diffLine","numClass","str","i","charCodeAt","diffFileTemplate","filename","htmlDiff","generateAssetFoldersDiff","dirDiff","dirCompare","compare","compareContent","skipSymlinks","compareSize","compareDate","compareNameHandler","name1","name2","localeCompare","diffSet","d","state","generateAssetFilesDiff","oldFileString","newFileString","dmp","DiffMatchPatch","linesChars","diff_linesToChars_","linesDiff","diff_main","chars1","chars2","diff_charsToLines_","lineArray","linesCount","lines","generateFilesDiff","difference","filepath1","relativePath","filepath2","assetFile1Path","path1","assetFile2Path","path2","filepath","filenameTitle","isBinaryFile","readFileSync","generateChangelog","all","templateArray","splice","changelogHTML","generatePostBuildChangelog","changelog","executionRoot","backupsDirPath","changelogDestinationPath","backups","zipBackups","isFile","name","latestBackup","reduce","latest","current","statSync","mtimeMs","changelogGenerator","IconFontGenerator","sourceDir","outputDir","fontName","generate","default","svgToFont","src","dist","css","typescript","startUnicode","svgicons2svgfont","fontHeight","cli","cac","option","alias","configWatcher","isRestarting","startServer","clearConfigCache","getConfig","n","h","createServer","optimizeDeps","customLogger","listen","ppDevStartTime","__pp_dev_start_time","startupDurationString","reset","ceil","performance","now","VERSION","serveConfig","inspector","enabled","localUrl","resolvedUrls","local","origin","URL","port","cyan","INSPECTOR_PATH","r","Session","connect","encodeURIComponent","e","registerServeCommand","ignoredFlags","host","listenHost","listenPort","resolvedHost","parsedPort","Number","parseInt","NaN","isInteger","resolveNextListenAddress","nextApp","hotServer","clientService","openSockets","nextAppListeners","events","listenersOf","before","previousApp","beforeCreate","afterCreate","snapshot","addedByApp","has","removed","oldListeners","newCode","createNextAppListenerTracker","closeNextApp","closeHttpServer","startNextServer","next","constants","safeNextImport","PHASE_DEVELOPMENT_SERVER","dispose","importConfig","loadConfig","ppDevConfig","ppDev","standaloneConfig","getPkg","packageName","validatePPDevConfig","_normalized","normalizePPDevConfig","templateName","backendBaseURL","templateLess","v7Features","disableSSLValidation","enableProxyCache","proxyCacheTTL","personalAccessToken","miHudLess","inspectorEnabled","inspectorMaxMemory","inspectorCaptureLimit","appId","toLowerCase","internalServer","createInternalServer","configBasePath","basePath","PATH_PAGE_PREFIX","PATH_TEMPLATE_LOCAL_PREFIX","PATH_TEMPLATE_PREFIX","bundlerChoice","envWebpack","PP_DEV_NEXT_WEBPACK","webpack","turbopack","parseNextBundlerCli","createAndPrepareNext","bundler","TURBOPACK","nextOptions","dev","customServer","hostname","conf","assetPrefix","prepare","handle","getRequestHandler","requestHost","headers","isHostAllowed","writeHead","hostNotAllowedMessage","originalUrl","originalPathname","parsedUrl","fullMiddlewareChain","essentialMiddlewareChain","middlewareIndex","runEssentialMiddleware","processNextJSRequest","middleware","runMiddleware","redirectUrl","Location","statusCode","forwardUpgrade","onUpgrade","every","mi","reqStore","RequestStore","registerInspectorRoutes","captureMiddleware","createRequestCaptureMiddleware","push","internalServerWrapper","VARIABLES_EDITOR_PATH","baseUrlHost","userHostGuard","createUserHostGuard","unshift","EventEmitter","defaultMaxListeners","miConfig","getMiAPIOptions","MiAPI","ppRedirectMiddleware","initPPRedirect","ppRedirectWrapper","devPanelAssetMiddleware","createDevPanelAssetMiddleware","ttl","resolveProxyCacheTtl","mockDevServer","middlewares","use","fn","console","proxyCacheMiddleware","initProxyCache","devServer","proxyCacheWrapper","isIndexRegExp","getIndexPageRegExp","loadPPDataMiddleware","initLoadPPData","assign","loadPPDataWrapper","mockProxyDevServer","proxyPassMiddlewareInstance","proxyPassMiddleware","baseURL","proxyIgnore","getProxyIgnore","miAPI","proxyPassWrapper","rewriteResponseMiddleware","initRewriteResponse","pathname","response","getHeader","page","buildPage","withPanel","injectDevPanel","devPanelPosition","devPanelHidden","devPanelAutoHide","Buffer","from","urlReplacer","rewriteResponseWrapper","exportDistDir","distDir","previousNextBuildFlag","PP_DEV_NEXT_BUILD_ENV_VAR","prodConfig","PHASE_PRODUCTION_BUILD","normalizedDistDir","nextExportDir","nextPackageRepositoryUrl","nextPackageVersion","projectPkg","version","repository","distService","DistService","backupFolder","syncBackupsDir","maxBackups","syncMaxBackups","buildTimeoutMs","syncBuildTimeoutMs","nextBuild","packageVersion","packageRepositoryUrl","clientServiceServer","clientInjectionPlugin","startSyncAndUsers","persistUsers","miUrl","nextUpgradeHandler","getUpgradeHandler","registerNextCommand","buildOptions","cliOverrides","resolveBuildCliOverrides","buildConfig","build","outDir","changelogDestination","distZip","registerBuildCommand","nextConfig","normalized","applyDistZipOverride","createDefaultZipFileName","versionPlugin","applyVersionManifestOverride","removedDevTypes","removeStaleDevTypes","runNextBuildProcess","rawDistDir","exportDirName","writeBuildVersionManifest","versionFileTemplate","zipOutDir","zipSourceDir","inDir","zipFile","resolveOutputFilePath","outFileName","dirname","buffer","zipDirectoryToBuffer","registerNextBuildCommand","oldAssetPath","newAssetPath","oldPath","newPath","destination","fullOldPath","fullNewPath","fullDestination","registerChangelogCommand","source","destDir","fullSourceDir","fullDestDir","iconFontGenerator","registerGenerateIconFontCommand","optimizeConfig","resolveConfig","registerOptimizeCommand","preview","strictPort","https","open","registerPreviewCommand","configArg","isLegacyFlatConfig","isLegacyPPWatchConfig","isAlreadyMigrated","migrateLegacyFlatConfig","migratePPWatchConfig","generateConfigFileContent","discoverMigrateSource","loadPackageJsonMigrateConfig","format","doBackup","backup","migrateSource","sourceFile","isWatchConfig","isPackageJsonConfig","pkg","migratedConfig","rawConfig","esbuild","pathToFileURL","absWorkingDir","entryPoints","outfile","write","target","bundle","packages","mainFields","outputFiles","text","tmpFile","Date","mod","unlinkSync","outputContent","outputFile","output","dryRun","backupPath","copyFileSync","registerMigrateCommand","help"],"mappings":"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"}
|
package/dist/esm/package.json
CHANGED
package/dist/esm/plugin.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{b as e,i as s,a as o,R as t,c as r,r as a,I as i,g as l,M as p,e as d,d as c,f as u,h as m,j as g,k as f,p as h,q as k,t as b,v as y,w as I,x as P,D as T,s as w,U as E,V as S,l as x,u as j,y as A}from"./request-capture.middleware-
|
|
1
|
+
import{b as e,i as s,a as o,R as t,c as r,r as a,I as i,g as l,M as p,e as d,d as c,f as u,h as m,j as g,k as f,p as h,q as k,t as b,v as y,w as I,x as P,D as T,s as w,U as E,V as S,l as x,u as j,y as A}from"./request-capture.middleware-B9t-px8Z.js";import{a as D}from"./auth.provider-Cq0EuReh.js";export{n as normalizePPDevConfig,v as validatePPDevConfig}from"./auth.provider-Cq0EuReh.js";import"zlib";import"url";import"axios";import"node:http";import"node:https";import"./version-manifest-qxz5FXuG.js";import"crypto";import"child_process";import"fs/promises";import"path";import"util";import"node:module";import"http-proxy-middleware";import"node:string_decoder";import"fs";import"process";import"os";import"jszip";import"module";import"node:crypto";import"node:fs";import"node:os";import"node:path";import"express";import"picocolors";import"node:net";import"vite";function R(n){const{templateName:v,templateLess:R,backendBaseURL:L,miHudLess:U,appId:F,enableProxyCache:B,proxyCacheTTL:H,disableSSLValidation:N,outDir:_,distZip:O,versionPlugin:M,syncBackupsDir:$,syncMaxBackups:C,syncBuildTimeoutMs:W,v7Features:z,personalAccessToken:V,inspectorEnabled:X,inspectorMaxMemory:Z,inspectorCaptureLimit:q,devPanelPosition:Y,devPanelHidden:K,devPanelAutoHide:G,persistUsers:J,allowedHosts:Q}=n||{};let ee,se=!0;return{name:"vite-pp-dev",apply:"serve",closeBundle(){ee?.dispose(),ee=void 0},config:e=>(e.clientInjectionPlugin={backendBaseURL:L,appId:F,templateLess:R,v7Features:z,devPanelPosition:Y,devPanelHidden:K,devPanelAutoHide:G},z&&(e.base=`/pl/${v}`),e),transformIndexHtml:async(e,s)=>{const o={html:e,tags:[]};return se&&(se=!1,o.tags.push({tag:"script",injectTo:"body",children:`${Math.random()}`})),o},configureServer:Y=>{let K=Y.config.base;if(K.endsWith("/")||(K+="/"),L&&Y.middlewares.use(e()),Y.middlewares.use(s(K,v)),!1!==X){const e=new t(Z);Y.middlewares.use(o(e,q));const s=r({allowedHosts:Q});a(s,e,q),Y.middlewares.use((e,o,t)=>{e.url?.startsWith("/@api/")||e.url?.startsWith(i)?s(e,o,t):t()})}if(L){Y.config.logger.info(D.blue(`🌐 Backend URL: ${L}`)),Y.config.logger.info(D.blue(`🆔 Custom App ID: ${F}`));const e=new URL(L).host,s=l(L,{appId:F,templateLess:R,disableSSLValidation:N,v7Features:z,personalAccessToken:V}),o=new p(L,s);B&&Y.middlewares.use(d({devServer:Y,ttl:c(H)}));const t=u(K);Y.middlewares.use(m(t,o,Object.assign({},n,{appId:F,appBase:K}))),Y.middlewares.use(g({baseURL:L,proxyIgnore:f(K),disableSSLValidation:N,miAPI:o,templateName:v}));const a=(e,s,o,t,r)=>{const a={error:o};t&&(a.details=t),r&&(a.code=r),e.status(s).json(a).end()},i=(e,s,o)=>{Y.config.logger.error(`${o} token validation error:`,s);const t=A(s);if(s.tokenErrorInfo){const o=s.tokenErrorInfo;a(e,o.status||500,o.userFriendlyMessage,o.message,o.code)}else{let s,r,i;switch(t.code){case"SESSION_EXPIRED":s=412,r="personal"===o?"Personal access token expired":"Session expired",i="personal"===o?"PAT_EXPIRED":"SESSION_EXPIRED";break;case"UNAUTHORIZED":s=401,r="Unauthorized",i="UNAUTHORIZED";break;case"FORBIDDEN":s=403,r="Access forbidden",i="FORBIDDEN";break;default:s=500,r="Internal server error",i=t.code}const n="personal"===o&&"PAT_EXPIRED"===i?"Your personal access token has expired. Please generate a new token from the portal.":"regular"===o&&"SESSION_EXPIRED"===i?"Your portal session has expired. Please refresh your token or re-authenticate.":t.userFriendlyMessage;a(e,s,r,n,i)}return null},X=r({allowedHosts:Q});X.post("/@api/login",async(e,s,t)=>{const{token:r,tokenType:n}=e.body;if(h(e.headers.host))a(s,409,"Token login is only available on the main host","This tab belongs to a saved pp-dev user. Log in with a token on the main host (localhost).","USER_HOST");else if(r)if(Y.config.logger.info(`Attempting to validate ${n} token...`),"personal"===n){if(!await o.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?(o.personalAccessToken=r,Y.config.logger.info(`Personal access token validated successfully for user ${e.data.user.user_id}`),e):(a(s,400,"Token expired or invalid"),null)).catch(e=>i(s,e,"personal")))return;k("logged in with a personal access token"),b({persist:J,miAPI:o,projectRoot:Y.config.root||process.cwd(),miUrl:L}),y(s,"/",302)}else if("regular"===n){if(!await o.get("/api/user",{"Content-Type":"application/json",Accept:"application/json",Token:r},!0).then(t=>t.data?.users?.length?(o.personalAccessToken=void 0,Y.config.logger.info(`Regular token validated successfully for ${t.data.users.length} user(s)`),s.setHeader("set-cookie",I(t.headers["set-cookie"],P(e))??""),t):(a(s,400,"Token expired or invalid"),null)).catch(e=>i(s,e,"regular")))return;k("logged in with a token"),y(s,"/",302)}else a(s,400,"Invalid tokenType",'tokenType must be "personal" or "regular".',"INVALID_TOKEN_TYPE");else a(s,400,"Token is required")});const Z=new T(v,Object.assign({root:Y.config.root,backupFolder:$,maxBackups:C,buildTimeoutMs:W,buildInputFolder:"object"==typeof O?O.inDir??_:_},"object"==typeof O?{distZipFolder:O.outDir,distZipFilename:O.outFileName}:void 0,"object"==typeof M?{versionFileTemplate:M.versionFileTemplate}:void 0));return ee=w({server:Y,internalServer:X,distService:Z,miAPI:o,persistUsers:J,projectRoot:Y.config.root||process.cwd(),miUrl:L}),Y.middlewares.use((e,s,o)=>{e.url?.startsWith("/@api/login")||e.url?.startsWith("/@api/variables/")||e.url?.startsWith(E)||e.url?.startsWith(S)?X(e,s,o):o()}),()=>{Y.middlewares.use(x(e=>e.split("?")[0].endsWith("index.html"),(s,t)=>Buffer.from(j(e,t.headers.host??"",o.buildPage(s,U)))))}}}}}export{R as default,R as vitePPDev};
|
|
2
2
|
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{inflateSync as e,brotliDecompressSync as t,unzipSync as s,deflateSync as n,brotliCompressSync as r,gzipSync as a}from"zlib";import{l as i,c as o,a as c,f as l,e as d,q as u,g as p,j as h,o as m,s as g}from"./auth.provider-Cq0EuReh.js";import{URL as f,fileURLToPath as y}from"url";import w,{isAxiosError as v}from"axios";import b from"node:http";import k from"node:https";import{g as $,w as x}from"./version-manifest-qxz5FXuG.js";import{createProxyMiddleware as S,responseInterceptor as A}from"http-proxy-middleware";import{StringDecoder as E}from"node:string_decoder";import*as T from"path";import*as I from"fs";import{promises as N}from"fs";import*as j from"crypto";import{randomUUID as P}from"crypto";import*as L from"process";import*as F from"os";import R from"jszip";import*as B from"child_process";import{createRequire as C}from"module";import{createHash as O,randomUUID as M}from"node:crypto";import U from"node:fs";import H from"node:os";import D from"node:path";import _ from"express";const V="/@pp-dev-hmr",z=T.dirname(i),q={".js":"text/javascript; charset=utf-8",".css":"text/css; charset=utf-8",".map":"application/json; charset=utf-8"};function W(e,t){const s=t.clientDir??z,n=new Set([`${t.name}.js`,`${t.name}.css`,`${t.name}.js.map`,`${t.name}.css.map`]);e.get(t.path,(e,n)=>{I.readFile(T.join(s,`${t.name}.html`),"utf-8",(e,s)=>{if(e)return void n.status(500).type("text/plain").end(`${t.name} page not built (${e.message})`);const r=t.values?.()??{};n.setHeader("Content-Type","text/html; charset=utf-8"),n.setHeader("Cache-Control","no-cache"),n.end(s.replace(/\{\{(\w+)\}\}/g,(e,t)=>r[t]??e))})}),e.get(`${t.path}/:file`,(e,t,r)=>{const a=e.params.file;n.has(a)?I.readFile(T.join(s,a),(e,s)=>{e?r():(t.setHeader("Content-Type",q[T.extname(a)]??"application/octet-stream"),t.setHeader("Cache-Control","no-cache"),t.end(s))}):r()})}function J(n,r,a={}){switch(r){case"gzip":return s(n,a);case"br":return t(n,a);case"deflate":return e(n,a);default:return n}}const Z="/@pp-dev/inspector",K=new WeakMap;function G(e){const t=Array.isArray(e)?e[0]:e;return"string"==typeof t?t:void 0}function X(e,t,s=10485760,n=z){const r=K.get(e);if(r)return r.store=t,void(r.captureLimit=s);const a={store:t,captureLimit:s};K.set(e,a),e.get("/@api/requests",(e,t)=>{const{store:s}=a,n=G(e.query.limit),r=G(e.query.offset),i=G(e.query.method),o=G(e.query.search),c=void 0!==n?parseInt(n,10):void 0,l=s.list({limit:Number.isFinite(c)?c:500,offset:void 0!==r&&Number.isFinite(parseInt(r,10))?parseInt(r,10):void 0,method:i,search:o});t.json({requests:l,total:s.size,memoryUsage:s.memoryUsage,maxMemory:s.maxMemory})}),e.get("/@api/requests/stats",(e,t)=>{const{store:s}=a;t.json({total:s.size,memoryUsage:s.memoryUsage,maxMemory:s.maxMemory,memoryUsageFormatted:Q(s.memoryUsage),maxMemoryFormatted:Q(s.maxMemory)})}),e.get("/@api/requests/:id",(e,t)=>{const s=a.store.get(e.params.id);if(!s)return void t.status(404).json({error:"Not found",id:e.params.id});const n=Y(s.requestHeaders["content-type"]),r=Y(s.responseHeaders["content-type"]),i=s.responseBody?function(e,t,s){try{return J(e,t.trim().toLowerCase(),{maxOutputLength:s})}catch(t){return t instanceof RangeError?null:e}}(s.responseBody,Y(s.responseHeaders["content-encoding"]),a.captureLimit):null;t.json({id:s.id,timestamp:s.timestamp,method:s.method,url:s.url,statusCode:s.statusCode,duration:s.duration,source:s.source,user:s.user,requestHeaders:s.requestHeaders,requestBody:s.requestBody?s.requestBody.toString("base64"):null,requestBodySize:s.requestBody?.byteLength??0,requestBodyTruncated:s.requestBodyTruncated,requestContentType:n,responseHeaders:s.responseHeaders,responseBody:i?i.toString("base64"):null,responseBodySize:s.responseBody?.byteLength??0,responseBodyTruncated:s.responseBodyTruncated||null!==s.responseBody&&null===i,responseContentType:r})}),e.delete("/@api/requests",(e,t)=>{a.store.clear(),t.json({ok:!0})}),W(e,{path:Z,name:"request-inspector",clientDir:n,values:()=>({captureLimit:String(a.captureLimit)})})}function Y(e){return Array.isArray(e)?e[0]??"":String(e??"")}function Q(e){return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:e<1073741824?`${(e/1048576).toFixed(1)} MB`:`${(e/1073741824).toFixed(2)} GB`}function ee(e){return"string"==typeof e?e:void 0}function te(e,t){return"string"==typeof e?Buffer.from(e,t):e instanceof Uint8Array?Buffer.from(e):null}function se(e,t){return async(s,i,c)=>{if(await e(s.url??"",s,i)){const e=o(),l=i.end;if("HEAD"===s.method)return i.end=function(e,t,s){const n=[e,t,s].find(e=>"function"==typeof e);return i.headersSent||i.removeHeader("content-length"),l.call(this,n),this},void c();e.info(`Rewrite response for ${s.url}`);const d=[],u=i.writeHead;let p=null;i.flushHeaders=function(){},i.writeHead=function(e,...t){const s="string"==typeof t[0]?t[0]:void 0;return function(e,t){if(Array.isArray(t)){const s=new Map;for(let e=0;e+1<t.length;e+=2){const n=String(t[e]),r=s.get(n.toLowerCase())??{name:n,values:[]};r.values.push(String(t[e+1])),s.set(n.toLowerCase(),r)}for(const{name:t,values:n}of s.values())e.setHeader(t,1===n.length?n[0]:n);return}if(t&&"object"==typeof t)for(const[s,n]of Object.entries(t))void 0!==n&&e.setHeader(s,n)}(this,void 0===s?t[0]:t[1]),this.statusCode=e,p=void 0===s?[e]:[e,s],this},i.write=function(e,t,s){const n=te(e,ee(t));n&&d.push(n);const r="function"==typeof t?t:s;return"function"==typeof r&&process.nextTick(r),!0},i.end=function(o,c,h){"function"==typeof o&&(h=o,o=void 0);const m=te(o,ee(c));m&&d.push(m);const g="function"==typeof c?c:h,f=i.getHeader("content-encoding"),y=J(Buffer.concat(d),f),w=function(e,t){switch(t){case"gzip":return a(e);case"br":return r(e);case"deflate":return n(e);default:return e}}(t(y,s,i),f);return void 0!==i.getHeader("content-length")&&(i.headersSent?e.warn(`Rewrite response for ${s.url}: headers already sent, Content-Length left as is`):i.setHeader("content-length",w.length)),i.writeHead=u,p&&!i.headersSent&&u.apply(this,p),l.call(this,w,g),this}}c()}}const ne=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),re=new Map,ae=new Map;const ie=(e,t,s)=>{let n=re.get(e);if(!n){const t=/:\d+$/.test(e)?"":"(?::(?<port>\\d+))?";n=new RegExp(`(?<keep>!!)?(?<url>http(?<secure>s)?(?<slashes>:(?:\\\\)?/(?:\\\\)?/)${ne(e)}${t})`,"gi"),re.set(e,n)}return s.replace(n,(...e)=>{const{keep:s,url:n,secure:r,slashes:a,port:i}=e.at(-1);return s||i&&i!==(r?"443":"80")?n:`http${a}${t}`})},oe=(e,t,s)=>{const n=new RegExp(`${e.replace(/\\*\//gi,"\\\\/")}`,"gi"),r=new RegExp(`${e}`,"gi"),a=s.replace(n,t);return a===s?a.replace(r,t):a},ce=(e,t,s)=>{e.setHeader("location",t),e.statusCode=s,e.end()};function le(e){return e.split("?")[0]}function de(e,t){const s=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,n=o();return(r,a,i)=>{const o=new f(r.url??"","http://localhost"),{pathname:u,search:p}=o,h=["/",s];if(t&&(h.push(`${l}/${t}`),h.push(`${d}/${t}`)),h.includes(u)){const t=`${e}${p}`;return n.info(c.yellow(`Redirecting to: ${t}`)),ce(a,t,302)}i()}}class ue{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 pe extends ue{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.download(this.getDownloadUrl(e),t)}async uploadPageAssets(e,t,s){return this.upload(this.getUploadUrl(e),t,s)}async downloadTemplateAssets(e,t){return this.download(this.getDownloadTemplateUrl(e),t)}async uploadTemplateAssets(e,t,s){return this.upload(this.getUploadTemplateUrl(e),t,s)}async download(e,t){return this.axios.get(e,{withCredentials:!0,headers:Object.assign({},t,{accept:"*/*"}),responseType:"arraybuffer"}).then(e=>e.data)}async upload(e,t,s){const n=new FormData;return n.append("file",new File([new Uint8Array(t)],"file.zip",{type:"application/zip"}),"file.zip"),this.axios.post(e,n,{withCredentials:!0,headers:Object.assign({},s,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:e})})}).then(e=>e.data)}}class he extends pe{getDownloadUrl(e){return`/api/page/id/${e}/asset/download`}getDownloadTemplateUrl(e){return`/api/page_template/id/${e}/asset/download`}getUploadUrl(e){return`/api/page/id/${e}/asset/upload`}getUploadTemplateUrl(e){return`/api/page_template/id/${e}/asset/upload`}}const me="Something went wrong when fetching page data",ge="Something went wrong when fetching page template data",fe="Something went wrong when fetching page variables",ye=" The instance may be down or in maintenance mode. Please try again later.",we=[me,ge,fe];function ve(){return new Error(`${me}.${ye}`)}function be(){return new Error(`${ge}.${ye}`)}function ke(e){return e instanceof Error&&we.some(t=>e.message.includes(t))}class $e extends ue{async getAll(e){const t=(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;if("object"!=typeof t||null===t||!Array.isArray(t.pages))throw ve();return t.pages}async get(e,t){const s=(await this.axios.get(`/api/page/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data;if("object"!=typeof s||null===s||"object"!=typeof s.page||null===s.page)throw ve();return s.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){const s=(await this.axios.post("/api/page",e,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data;if("object"!=typeof s||null===s||"object"!=typeof s.page||null===s.page)throw ve();return s.page}}class xe extends ue{async getAll(e,t){const s=(await this.axios.get("/api/page_template",{withCredentials:!0,headers:Object.assign({},t,{Accept:"application/json","Content-Type":"application/json","Cache-Control":"no-cache",Pragma:"no-cache",Expires:"0"}),params:{internal_name:e}})).data;if("object"!=typeof s||null===s||!Array.isArray(s.page_templates))throw be();return s.page_templates}async get(e,t){const s=(await this.axios.get(`/api/page_template/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data;if("object"!=typeof s||null===s||"object"!=typeof s.page_template||null===s.page_template)throw be();return s.page_template}}class Se extends ue{async getById(e,t){const s=(await this.axios.get("/api/page_variable",{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"}),params:{page_id:e}})).data;if("object"!=typeof s||null===s)throw new Error(`${fe}.${ye}`);return function(e){let t=e;if("string"==typeof e)try{t=JSON.parse(e)}catch{throw new TypeError('Page variable response contains invalid JSON in "tags".')}if(!Array.isArray(t))throw new TypeError('Page variable response must contain a "tags" array.');const s=t.findIndex(e=>{return!("object"==typeof(t=e)&&null!==t&&"string"==typeof t.name&&"string"==typeof t.value);var t});if(-1!==s)throw new TypeError(`Page variable response contains a malformed entry at index ${s}.`);return t}(s.tags)}async updateById(e,t,s){await this.axios.put("/api/page_variable",{tags:JSON.stringify(t)},{withCredentials:!0,headers:Object.assign({},s,{accept:"application/json","content-type":"application/json"}),params:{page_id:e}})}}function Ae(e){if(e.socket?.encrypted)return!0;const t=e.headers?.["x-forwarded-proto"],s=Array.isArray(t)?t[0]:t;return"string"==typeof s&&"https"===s.split(",",1)[0].trim().toLowerCase()}function Ee(e,t){const[s,...n]=e.split(";"),r=n.map(e=>e.trim()).filter(e=>{if(!e)return!1;const s=e.split("=",1)[0].trim().toLowerCase();return"domain"!==s&&(t||"secure"!==s)}).map(e=>!t&&/^samesite\s*=\s*none$/i.test(e)?"SameSite=Lax":e);return[s.trim(),...r].join("; ")}const Te="metric_insights_session";function Ie(e,t){for(const s of e){const e=s.indexOf("=");if(-1!==e&&s.slice(0,e).trim()===t)return s.slice(e+1).trim()}}function Ne(e,t){return e?Ie(e.split(";"),t):void 0}function je(e,t){if(void 0===e||"number"==typeof e)return;return Ie((Array.isArray(e)?e:[e]).map(e=>e.split(";",1)[0]),t)}function Pe(e,t){return void 0===e?e:Array.isArray(e)?e.map(e=>Ee(e,t)):Ee(e,t)}const Le=function(e){const t={personal:{placeholder:"API Token",label:"API Token",path:"/api-token"},regular:{placeholder:"Legacy Token",label:"Legacy Token",path:"/api/get_token"}};function s(s,n,r){const a=t[s],i=document.createElement("a");i.href=`https://${e}${a.path}`,i.target="_blank",i.style.color="#007bff",i.style.textDecoration="none",i.textContent="here",n.placeholder=a.placeholder,r.replaceChildren(`You can get the ${a.label} `,i)}function n(e,t){t.textContent=e,t.classList.add("show")}function r(e){e.classList.remove("show")}function a(e,t,s,a){s.addEventListener("click",async s=>{if(s.preventDefault(),r(a),!t.value.trim())return n(`${t.placeholder} is required`,a),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,r){try{s.classList.add("loading");const a=await fetch("/@api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e,tokenType:t}),redirect:"follow"}),i=a.url&&new URL(a.url,window.location.origin);if(!i||i.pathname.startsWith("/login")||i.pathname.startsWith("/@api/"))try{const e=await a.json();n(`Login failed: ${e?.error||"Unknown error occurred"}`,r)}catch(e){n("Login failed: Unable to parse response",r)}else window.location.href=a.url}catch(e){n("Login failed: Network error. Please check your connection.",r)}finally{s.classList.remove("loading")}}(t.value.trim(),c,e,a)}),t.addEventListener("keydown",e=>{"Enter"===e.key&&(e.preventDefault(),s.click())}),t.addEventListener("input",()=>{r(a)})}function i(e){const t=e.firstChild;if(!t)return;const n=t.lastChild?.cloneNode(!0);if(!n)return;n.innerHTML="";const r=n.cloneNode(!0);r.innerText="OR",r.setAttribute("role","separator"),r.setAttribute("aria-label","Alternative login method");const i=n.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"></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),t.appendChild(r),t.appendChild(i);const l=document.getElementById("token-type-switcher"),d=document.getElementById("helper-token"),u=document.getElementById("token-caption"),p=document.getElementById("helper-token-submit"),h=document.getElementById("error-message"),m=o.querySelector(".helper-login-wrapper");l&&d&&u&&p&&h&&m?(!function(e,t,n){const r=e.querySelectorAll(".token-type-option"),a=e=>{const a=e.dataset.value;r.forEach(e=>{e.classList.remove("active"),e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1")}),e.classList.add("active"),e.setAttribute("aria-selected","true"),e.setAttribute("tabindex","0"),s(a,t,n)};r.forEach(e=>{e.addEventListener("click",e=>{const t=e.currentTarget;a(t)}),e.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),a(e))})})}(l,d,u),a(m,d,p,h),s("personal",d,u)):console.error("Failed to find required form elements")}const o='#mi-react-root form:not([id]):has(input[name="login"]):has(input[name="password"])',c=new MutationObserver(e=>{for(const t of e)if("childList"===t.type){const e=document.querySelector(o);if(e){c.disconnect(),i(e);break}}});c.observe(document.body,{childList:!0,subtree:!0});const l=document.querySelector(o);l&&(c.disconnect(),i(l))};function Fe(e){const{message:t,response:s}="object"==typeof e&&null!==e?e:{},n="number"==typeof s?.status?s.status:0,r=s?.data?.message;return"string"==typeof r&&r?{status:n,message:r}:"string"==typeof t&&t?{status:n,message:t}:{status:n,message:"string"==typeof e&&e?e:"Unknown error"}}function Re(e){const{status:t,message:s}=Fe(e);switch(t){case 412:{const e=s.toLowerCase();return e.includes("session expired")||e.includes("session has 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"]}}}function Be(e){const{status:t}=Fe(e);return 401===t||403===t||412===t}const Ce="[DEV PAGE. DO NOT DELETE]",Oe=new Map;class Me{#e;#t;#s=null;#n;#r;#a=!1;#i=null;#o=null;#c;#l;#d;#u;#p;internalPageName;appId;templateLess;assetsApi;pageApi;pageTemplateApi;pageVariableApi;logger;constructor(e,t){const{headers:s={},appId:n,templateLess:r=!0,disableSSLValidation:a=!1,v7Features:i=!1,personalAccessToken:c}=t||{};this.#e=s,this.#r=[],this.#n="",this.#c=i,this.#l=c,this.#d=!1,this.#u=Promise.resolve(!1);const l=`${e}:${a}`;if(Oe.has(l))this.#t=Oe.get(l);else{const t=new k.Agent({keepAlive:!1,...a?{rejectUnauthorized:!1}:{}});this.#t=w.create({baseURL:e,headers:s,timeout:3e4,maxRedirects:5,httpAgent:new b.Agent({keepAlive:!1}),httpsAgent:t}),Oe.set(l,this.#t)}this.appId=n,this.templateLess=r,this.assetsApi=new(i?he:pe)(this.#t),this.pageApi=new $e(this.#t),this.pageTemplateApi=new xe(this.#t),this.pageVariableApi=new Se(this.#t),this.logger=o()}async isTemplateLoaded(){return this.#u}get isV710OrHigher(){return this.#d}get v7Features(){return this.#c}#h(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.#l&&(t.authorization=`Bearer ${this.#l}`),t}#m(e){return e.replace(/[.*+?^${}()|[\]\\\/]/g,"\\$&")}get personalAccessToken(){return this.#l}set personalAccessToken(e){this.#l=e}updateHeaders(e){this.#h(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.#u||this.#s||(this.#u=new Promise(e=>{this.#p=e})),this.#s)return Promise.resolve(this.#s);if(void 0===this.templateLess&&(this.templateLess=!1),this.#c){const t=await this.pageApi.get(this.appId,this.#h(e)).then(e=>(this.logger.info(c.green("Page fetched")),e)).catch(async t=>{if(this.#p(!1),ke(t))throw t;throw await this.pageApi.checkAuth(this.#h(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 app.id is correct.")):t});return void 0!==t.template_id&&(this.#d=!0),this.internalPageName=t.internal_name,this.#s=this.localTemplateHTML,this.#s=this.#s.replace(/%%PAGE TITLE%%/g,t.name||"Local template"),this.logger.info(c.green("Local page template fetched")),this.#p(!0),this.#s}let t=(await this.pageApi.getAll(this.#h(e)).then(e=>(this.logger.info(c.green("Page list fetched")),e)).catch(async t=>{throw this.#p(!1),await this.pageApi.checkAuth(this.#h(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===Ce);return t||(this.logger.warn(c.yellow("Creating dev page template...")),t=await this.pageApi.create({enabled:"Y",name:Ce,internal_name:"dev-page-template",visible_in_homepage:"Y"},this.#h(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.#p(!1),new Error(`Error when creating dev page.\n That can be caused by missing permissions or page with name "${Ce}" already exists`)})),await this.pageApi.getPageContent(t.internal_name,this.#h(e)).then(e=>(this.#s=e,e)).then(e=>(this.#p(!0),this.logger.info(c.green("Page template fetched")),e)).catch(e=>{throw this.#p(!1),this.logger.error(c.red(`Error fetching page template: ${e.message}`)),new Error("Error fetching page template")})}async getPageVariables(e,t){return void 0===this.appId&&(this.appId=e,this.templateLess=!1),this.#s=await this.getPageTemplate(t),await this.pageApi.get(e,this.#h(t)).then(e=>{const{tags:t="[]",name:s,template:n}=e;if(n&&t){const e=JSON.parse(t);return this.#r=e,this.#a=!0,this.#n=s,e}return this.#r=[],this.#a=!0,this.#n=s,[]}).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 this.logger.warn(`Unauthorized error: ${t}`),new Error(`Current user does not have access to page with id "${e}" on instance ${this.#t.getUri()}`);throw t})}async getLivePageVariables(e=this.#e){if(void 0===this.appId)throw new Error("Cannot fetch live page variables before the page ID is known");const t=this.appId,s=Date.now();this.logger.info(c.cyan(`[page-variables] Fetching live variables for page ID ${t} (page_id lookup)`));const n=await this.pageVariableApi.getById(t,this.#h(e));return this.logger.info(c.green(`[page-variables] Fetched ${n.length} live variable(s) for page ID ${t} in ${Date.now()-s}ms`)),n}async applyPageVariables(e,t=this.#e){if(void 0===this.appId)throw new Error("Cannot apply page variables before the page ID is known");const s=this.appId,n=Date.now();this.logger.info(c.cyan(`[page-variables] Applying ${e.length} variable(s) to page ID ${s} (page_id lookup)`)),await this.pageVariableApi.updateById(s,e,this.#h(t)),this.logger.info(c.green(`[page-variables] Applied variables to page ID ${s} in ${Date.now()-n}ms`))}async listPages(e=this.#e){return this.pageApi.getAll(this.#h(e))}async getPageVariablesFor(e,t=this.#e){return this.pageVariableApi.getById(e,this.#h(t))}get localPageVariables(){return this.templateLess||!this.#a?null:this.#r.map(({name:e,value:t})=>({name:e,value:t}))}get isTemplateLess(){return!!this.templateLess}async reloadPageVariables(e=this.#e){return this.templateLess||void 0===this.appId?null:this.getPageVariables(this.appId,e)}async getPageInfo(e,t){void 0===this.appId&&(this.appId=e);const s=this.#h(t),n=this.appId;try{return this.#c?await this.#g(n,s):await this.#f(n,s)}catch(e){this.#y(e,n)}}async#g(e,t){const s=await this.pageApi.get(e,t);return this.logger.info(c.green("Page fetched")),void 0!==s.template_id&&(this.#d=!0),this.internalPageName=s.internal_name,s}async#f(e,t){return await this.pageApi.get(e,t)}#y(e,t){if(ke(e))throw e;if(this.#c&&e.message?.includes("access"))throw new Error("The current user does not have access to this page. Check your configuration to ensure app.id is correct.");if(404===e.response?.status)throw new Error(`Portal Page with id "${t}" not found on instance ${this.#t.getUri()}`);throw 401===e.response?.status&&this.logger.error(c.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{regExp:e,value:t}of this.#w())s=s.replace(e,()=>t);if(t){return new($())(s).serialize()}const{before:n,after:r}=this.#v();return n+s+r}#w(){return this.#i?.vars!==this.#r&&(this.#i={vars:this.#r,replacements:this.#r.map(({name:e,value:t})=>({regExp:new RegExp(`\\[${this.#m(e)}\\]`,"g"),value:t}))}),this.#i.replacements}#v(){const e=this.#s,t=this.#n;if(this.#o?.template===e&&this.#o.title===t)return this.#o;const s=new($())(e),{document:n}=s.window,r="%%PLACEHOLDER%%",a=n.createElement("div");a.innerHTML=r;const i=n.querySelector(".main-side");if(i){const e=i.querySelectorAll("script");e.length?i.insertBefore(a,e.item(e.length-1)):i.append(a)}else{const e=n.createElement("div");e.append(a),n.body.append(e)}const o=n.querySelector("head"),c=o.querySelector("title");if(c)c.text=t;else{const e=n.createElement("title");e.textContent=t,o.appendChild(e)}const l=s.serialize(),d=new RegExp(`<div>\\s*${r}\\s*<\\/div>`,"i").exec(l);return this.#o={template:e,title:t,before:l.slice(0,d.index),after:l.slice(d.index+d[0].length)},this.#o}async getAssets(){if(this.appId){if(this.templateLess)return await this.assetsApi.downloadPageAssets(this.appId,this.#e);{const e=await this.pageApi.get(this.appId,this.#e);if(this.#d){const t=await this.pageTemplateApi.get(e.template_id,this.#e);return await this.assetsApi.downloadTemplateAssets(t.id,this.#e)}if(e.template)return await this.assetsApi.downloadTemplateAssets(e.template,this.#e)}}}async updateAssets(e){if(this.appId){if(this.templateLess)return await this.assetsApi.uploadPageAssets(this.appId,e,this.#e);{const t=await this.pageApi.get(this.appId,this.#e);if(this.#d){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=Re(e);return{isValid:!1,error:t.userFriendlyMessage,code:t.code}}}async get(e,t,s=!1,n={}){const r=s?t:Object.assign({},this.#h(this.#e),t);try{return await this.#t.get(e,{headers:r})}catch(e){if("UNKNOWN_ERROR"!==Re(e).code){const t=Re(e);throw n.quiet||(this.logger.error(c.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,s){const n=Re(t),r=`[${s}] `;e.error(c.red(`${r}${n.userFriendlyMessage}`)),e.error(c.red(`Status: ${n.status} (${n.code})`)),e.error(c.red(`Details: ${n.message}`)),n.suggestions.length>0&&(e.info(c.yellow("Suggestions:")),n.suggestions.forEach((t,s)=>{e.info(c.yellow(` ${s+1}. ${t}`))}))}(this.logger,e,"API Request")),e.tokenErrorInfo=t,e}throw e}}}const Ue=String.raw`[a-z](?:[a-z0-9\-]*[a-z0-9])?`,He=new RegExp(`^(?:${Ue})$`),De=".localhost";function _e(e){return e?e.length>32?"The name must be at most 32 characters long":He.test(e)?void 0:'The name may contain only lowercase latin letters, digits and "-", must start with a letter and must not end with "-"':"The name is required"}function Ve(e){if(!e)return;const t=e.toLowerCase().replace(/:\d+$/,"");if(!t.endsWith(De))return;const s=t.slice(0,-10);return s&&!s.includes(".")?s:void 0}function ze(e,t){const s=/:(\d+)$/.exec(e.headers.host??"")?.[1];return`${Ae(e)?"https":"http"}://${t?`${t}.`:""}localhost${s?`:${s}`:""}`}const qe=new class{#b=new Map;#k=new Set;#$=new Set;#x=!1;#S=new Set;#A;#E=new Map;#T=new WeakMap;#I;useContext(e){void 0!==this.#I&&this.#I!==e&&this.clear(),this.#I=e}get context(){return this.#I}list(){return[...this.#b.values()]}get(e){return this.#b.get(e)}add(e){const t=_e(e.name);if(t)throw new Error(t);if(this.#b.has(e.name))throw new Error(`A user named "${e.name}" already exists`);if("token"===e.kind&&!e.token)throw new Error("A token user needs an API token");const s="session"===e.kind?{state:"pending",...e}:{...e};return this.#E.delete(s.name),this.#b.set(s.name,s),this.#N(),s}replace(e,t){if(!this.#b.has(e))throw new Error(`There is no user named "${e}"`);const s=_e(t.name);if(s)throw new Error(s);if(t.name!==e&&this.#b.has(t.name))throw new Error(`A user named "${t.name}" already exists`);const n=this.#A===e,r=[...this.#E].filter(([,t])=>t===e).map(([e])=>e);let a;this.#x=!0;try{this.remove(e),a=this.add(t)}catch(s){throw this.#x=!1,this.#N(),s}finally{this.#x=!1}for(const s of t.name===e?r:[...r,e])this.#E.set(s,a.name);return n&&(this.#A=a.name),this.#N(),a}#N(){this.#x||this.#$.forEach(e=>e())}renamedTo(e){return this.#E.get(e)}remove(e){const t=this.#b.get(e);if(!t)return!1;this.#A===e&&(this.#A=void 0);for(const[t,s]of this.#E)s===e&&this.#E.delete(t);return this.#b.delete(e),this.#k.forEach(e=>e(t)),this.#N(),!0}clear(){for(const e of[...this.#b.keys()])this.remove(e)}onRemove(e){return this.#k.add(e),()=>{this.#k.delete(e)}}onSessionChange(e){return this.#S.add(e),()=>{this.#S.delete(e)}}sessionChanged(e){this.#b.get(e.name)===e&&this.#S.forEach(t=>t(e))}onChange(e){return this.#$.add(e),()=>{this.#$.delete(e)}}get defaultUser(){return void 0===this.#A?void 0:this.#b.get(this.#A)}setDefaultUser(e){if(void 0===e)return void(this.#A=void 0);const t=this.#b.get(e);if(!t)throw new Error(`There is no user named "${e}"`);if("session"===t.kind&&("active"!==t.state||!t.session))throw new Error(`"${e}" has to log in on its own host before it can be the default user`);if("token"===t.kind&&"expired"===t.state)throw new Error(`MI turned down the API token of "${e}"`);this.#A=e}resolve(e){if(this.#T.has(e))return this.#T.get(e);const t=Ve(e.headers.host);let s;if(void 0===t){const t="localhost"===(e.headers.host??"").toLowerCase().replace(/:\d+$/,"")?this.defaultUser:void 0;s={key:t?.name??"",user:t}}else{const e=this.#b.get(t)??this.#b.get(this.#E.get(t)??"");s=e?{key:e.name,user:e}:void 0}return this.#T.set(e,s),s}};function We(e=qe){return(t,s,n)=>{const r=e.resolve(t),a=Ve(t.headers.host)??"";if(r?.user&&a&&r.key!==a&&function(e){if("GET"!==e.method&&"HEAD"!==e.method)return!1;const t=e.headers["sec-fetch-mode"];return"string"==typeof t?"navigate"===t:String(e.headers.accept??"").includes("text/html")}(t)){const e=t.originalUrl??t.url??"/";return s.statusCode=302,s.setHeader("Location",`${ze(t,r.key)}${e}`),s.setHeader("Cache-Control","no-store"),void s.end()}r?n():(s.statusCode=404,s.setHeader("Content-Type","text/plain; charset=utf-8"),s.setHeader("Cache-Control","no-store"),s.end(`pp-dev has no user named "${a}". Open users from the pp-dev dev panel on the main host.`))}}const Je=/(?:^|\/\/[^/]+)\/(?:login|auth\/saml\/login)(?:[/?#]|$)/i;function Ze(e){return(e??"").split(";").map(e=>e.trim()).filter(e=>e&&e.split("=",1)[0].trim()!==Te)}function Ke({statusCode:e=200,headers:t}){return 401===e||412===e||e>=300&&e<400&&Je.test(String(t.location??""))}class Ge{#b;#j;#P=o();#L=new WeakMap;#F=new WeakMap;#R=new WeakMap;#B=new WeakMap;constructor(e,t){this.#b=e,this.#j=t}isLeftBehindRequest(e,t,s){const n=Ve(t.headers.host)===e.name?Ne(t.headers.cookie,Te):s;return void 0!==n&&this.#C(e,n)}observe(e,t,s,n){if("session"!==e.kind||this.#b.get(e.name)!==e)return;const r=Ve(t.headers.host)===e.name,a=r?Ne(t.headers.cookie,Te):n,i=je(s.headers["set-cookie"],Te),o=this.#R.get(e);let c,l,d=r;return i&&i!==a?(c=i,l=a):r&&a!==e.session&&!Ke(s)?c=a:o&&Date.now()>=o.retryAt&&(c=o.session,d=o.ownHost),c&&c===o?.session&&void 0===l&&(l=o.replaced),"active"===e.state&&Ke(s)&&a===e.session&&this.#O(e,`MI turned away ${t.method} ${t.url}`),c&&c!==e.session&&c!==this.#L.get(e)&&c!==this.#F.get(e)&&!this.#C(e,c)?this.#M(e,c,l,d):void 0}async#M(e,t,s,n){let r;this.#L.set(e,t);try{r=await this.#j(t)}catch(r){return this.#L.get(e)===t&&(this.#L.delete(e),this.#R.set(e,{session:t,replaced:s,ownHost:n,retryAt:Date.now()+5e3})),void this.#P.warn(c.yellow(`Could not check the MI session of user ${e.name}: ${String(r)}`))}if(this.#L.get(e)===t&&this.#b.get(e.name)===e)if(this.#L.delete(e),this.#R.get(e)?.session===t&&this.#R.delete(e),r){if(this.#C(e,t)||void 0!==s&&this.#C(e,s))return;const a="active"===e.state;n&&(this.#U(e),void 0!==s&&s!==t&&this.#U(e,s)),this.#R.delete(e),Object.assign(e,{state:"active",session:t,miUser:r}),this.#F.delete(e),this.#b.sessionChanged(e),a||this.#P.info(`${c.blue("User")} ${c.yellow(e.name)} ${c.blue("logged in")} (MI user ${r.id}${r.username?`, ${r.username}`:""})`)}else this.#F.set(e,t),"active"===e.state&&s===e.session&&this.#O(e,"MI started a guest session")}#C(e,t){return"active"===e.state&&Boolean(this.#B.get(e)?.has(t))}#U(e,t=e.session){if(!t)return;const s=this.#B.get(e)??new Set;s.add(t),s.size>20&&s.delete(s.values().next().value),this.#B.set(e,s)}#O(e,t){this.#U(e),e.state="expired",e.session=void 0,this.#L.delete(e),this.#R.delete(e),this.#b.sessionChanged(e),this.#b.defaultUser===e&&this.#b.setDefaultUser(void 0),this.#P.warn(`${c.yellow(`The MI session of user ${e.name} ended`)} (${t}). Log in again on its host.`)}}async function Xe(e,t){try{const s=await e.get("/data/page/index/auth/info",{"Content-Type":"application/json",Accept:"application/json",...t},!0,{quiet:!0}),n=s.data?.user;return"number"==typeof n?.user_id?{miUser:{id:n.user_id,username:"string"==typeof n.username?n.username:""}}:{miUser:void 0}}catch(e){if(Be(e))return{miUser:void 0,refused:Re(e).userFriendlyMessage};throw e}}async function Ye(e,t){try{const s=await Xe(e,{Authorization:`Bearer ${t}`});return s.miUser?{ok:!0,miUser:s.miUser}:{ok:!1,rejected:!0,message:s.refused?`The API token was rejected: ${s.refused}`:"The API token is expired or invalid"}}catch(e){return{ok:!1,rejected:!1,message:`Could not check the API token with MI: ${Re(e).userFriendlyMessage}`}}}const Qe=/^(https?:\/\/)([^/]+)(\/.*)?$/i,et="X-PP-Proxy";const tt=/^\/login(?:\/|$)/i,st="/auth/saml/login";const nt=/^\/auth\/(?:index\/)?logout(?:[/?#]|$)/i;const rt=new WeakMap,at=new WeakMap;const it=[/^text\//,/^application\/(?:[\w.-]+\+)?(?:json|xml)$/,/^application\/(?:x-)?(?:java|ecma)script$/,/^[\w.-]+\/[\w.-]+\+(?:json|xml)$/];function ot(e){const t=e.split(";",1)[0].trim().toLowerCase();return it.some(e=>e.test(t))}const ct=/[\w.:/\\!-]/;function lt(e){const t=e["content-encoding"];if("string"==typeof t&&t.trim()&&"identity"!==t.trim())return!1;const s=e["content-type"];return"string"==typeof s&&ot(s)}function dt(e){return async(t,s,n)=>{const r=e&<(t.headers);n.statusCode=t.statusCode??n.statusCode,t.statusMessage&&(n.statusMessage=t.statusMessage),n.setHeader(et,1);for(const[e,s]of Object.entries(t.headers))void 0!==s&&(r&&"content-length"===e.toLowerCase()||n.setHeader(e,s));if(!r)return void t.pipe(n);const a=new E("utf8");let i="",o=!1;const c=s=>{if(!s)return;n.write(e(Buffer.from(s,"utf8"),"utf8"))||o||(o=!0,t.pause(),n.once("drain",()=>{o=!1,t.resume()}))};t.on("data",e=>{i+=a.write(e);const t=i.lastIndexOf("\n");if(-1!==t&&(c(i.slice(0,t+1)),i=i.slice(t+1)),i.length>=65536){const e=function(e){for(let t=e.length-1;t>=0;t-=1)if(!ct.test(e[t]))return t;return-1}(i)+1||i.length;c(i.slice(0,e)),i=i.slice(e)}}),t.on("end",()=>{c(i+a.end()),i="",n.end()}),t.on("error",()=>{n.end()})}}function ut(e){const{rewritePath:t=/^\/(?!p[tl]).*/i,baseURL:s="",disableSSLValidation:n=!1,miAPI:r,templateName:a,users:i=qe}=e;if(!s)throw new Error("Base url is required");const l=function(e){try{return new URL(e).host}catch{return e.replace(Qe,"$2")}}(s),d=s.replace(Qe,"$1$2"),u=import("file-type"),p=o(),h=e.sessionUsers??new Ge(i,function(e){return async t=>(await Xe(e,{Cookie:`${Te}=${t}`})).miUser}(r));return S({selfHandleResponse:!0,pathFilter:(s,n)=>!(e.proxyIgnore||[]).some(e=>"string"==typeof e?s.startsWith(e):"function"!=typeof e.test||e.test(s))&&("string"==typeof t?s.startsWith(t):Array.isArray(t)?t.some(e=>s.startsWith(e)):"function"==typeof t.test&&t.test(s)),target:s,changeOrigin:!0,logger:{info:()=>{},warn:()=>{},error:()=>{}},secure:!n,headers:{host:l,origin:d},on:{proxyReq(e,t,n){const o=t.headers.host,l=e.getHeader("referer");o&&l&&"string"==typeof l&&e.setHeader("referer",l.replace(function(e){let t=ae.get(e);return t||(t=new RegExp(`^https?://${ne(e)}(?=[/?#]|$)`,"i"),ae.set(e,t)),t}(o),s));const d=i.resolve(t);let u;d?.user?u=d.user.token:d&&(u=r.personalAccessToken),u?(e.setHeader("Authorization",`Bearer ${u}`),rt.set(t,u)):"session"===d?.user?.kind&&e.removeHeader("Authorization"),d?.user&&e.removeHeader("Token");const h="session"===d?.user?.kind?d.user:void 0;let m;if(h&&Ve(t.headers.host)!==h.name){m=h.session;const s=m?(g=t.headers.cookie,y=m,[...Ze(g),`${Te}=${y}`].join("; ")):function(e){const t=Ze(e);return t.length?t.join("; "):void 0}(t.headers.cookie);s?e.setHeader("cookie",s):e.removeHeader("cookie")}var g,y;at.set(t,{user:d?.user,sentSession:m}),e.removeHeader("if-none-match"),e.removeHeader("if-modified-since");const w=t.url??"/",v=function(e,t,s,n){if(!t||!s||!n||s===n)return e;try{const t=new f(e,"http://localhost"),r=t.pathname.match(/^\/data\/page\/([^/]+)(\/.*)?$/);if(!r)return e;let a;try{a=decodeURIComponent(r[1])}catch{a=r[1]}if(a!==s)return e;return`/data/page/${n}${r[2]??""}`+t.search+t.hash}catch{return e}}(w,r.v7Features,a,r.internalPageName);v!==w&&(t.url=v,e.path=v,console.info(`${c.cyan("Rewrites data page to correct internal page name")}: ${c.yellow(w)} ${c.blue("→")} ${c.green(v)}`)),p.info(`${c.blue("Proxies request:")} ${c.green(t.method)} ${t.url} -> ${c.green(e.method)} ${e.protocol}//${e.host}${e.path}${d?.user?` ${c.blue("as")} ${c.yellow(d.user.name)}`:""}`);const{socket:b}=t,k=()=>{setTimeout(()=>{e.destroyed||e.destroy()},200)};return b.once("close",k),e.once("close",()=>b.off("close",k)),e},proxyRes:(e,t,s)=>{e.headers["set-cookie"]&&(e.headers["set-cookie"]=Pe(e.headers["set-cookie"],Ae(t))),e.headers.location&&(e.headers.location=function(e,t,s){const n=s.headers.host;let r;try{r=new URL(e)}catch{return e}return n&&/^https?:$/.test(r.protocol)&&r.host===t.toLowerCase()?e.replace(/^https?:\/\/[^/?#]*/i,`${Ae(s)?"https":"http"}://${n}`):e}(e.headers.location,l,t));const n=function(e,t){if(!nt.test(e.url??""))return;const s=Ve(e.headers.host);return void 0===s?void 0:t.get(s)}(t,i),r=at.get(t);if(n){e.resume();const a={"cache-control":"no-store"};r?.user===n&&(i.remove(n.name),p.info(`${c.blue("Logged out user")} ${c.yellow(n.name)}, back to the main host`),e.headers["set-cookie"]&&(a["set-cookie"]=e.headers["set-cookie"]));const o=t.headers["sec-fetch-mode"];return o&&"navigate"!==o?s.writeHead(204,a):s.writeHead(302,{...a,location:`${ze(t)}/`}),void s.end()}const a=r?.user;let o=!0;if(a&&i.get(a.name)!==a)o=!1;else if(a){let s=!1;"session"===a.kind&&(s=h.isLeftBehindRequest(a,t,r?.sentSession),h.observe(a,t,e,r?.sentSession)),o=Ve(t.headers.host)===a.name&&!s}if(!o){const t=function(e){const t=(e??[]).filter(e=>void 0===je(e,Te));return t.length?t:void 0}(e.headers["set-cookie"]);t?e.headers["set-cookie"]=t:delete e.headers["set-cookie"]}e.headers["cache-control"]="no-store",delete e.headers.expires,delete e.headers.pragma;const d=(e,s)=>Buffer.from(oe(st,"/login",ie(l,t.headers.host??"",e.toString(s))),s);if(e.headers["content-type"]?.includes("text/event-stream")||e.headers["transfer-encoding"]?.includes("chunked")&&"no"===e.headers["x-accel-buffering"])return p.info(`${c.blue("Start streaming for request:")} ${c.green(t.method)} ${t.url}`),dt(d)(e,t,s);const m=function(e){const t=e["content-type"];if("string"==typeof t&&t.trim()&&!ot(t))return"pipe";const s=Number(e["content-length"]);return Number.isFinite(s)&&s>=10485760&<(e)&&!function(e){const t="string"==typeof e?e.split(";",1)[0].trim().toLowerCase():"";return"text/html"===t||"application/xhtml+xml"===t}(t)?"stream":"buffer"}(e.headers);if("stream"===m&&(e.headers["x-accel-buffering"]="no"),"buffer"!==m)return dt("stream"===m?d:void 0)(e,t,s);const g=A(async(e,t,s,n)=>{n.setHeader(et,1);if(await(await u).fileTypeFromBuffer(e))return e;{let t=e.toString("utf8");try{const e=new URL(s.url??"",`http://${l}`);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 n=window.location.href;const r=function(){const a=new URLSearchParams(window.location.search);if(!a.has("proxyRedirect"))return console.debug("No proxyRedirect param. Cleaning up."),void localStorage.removeItem(e);n!==window.location.href?(n=window.location.href,setTimeout(r,s<3?3e3:5e3)):window.location.href=a.get("proxyRedirect"),localStorage.setItem(e,""+ ++s),localStorage.setItem(t,(new Date).toISOString())};setTimeout(r,3e3)}.toString()})()<\/script>`}const n=t.slice(0,100);tt.test(e.pathname)&&(n.includes("<html")||n.includes("<body")||n.includes("<head")||n.includes("html>"))&&!Ve(s.headers.host)&&(t+=`<script>(${Le.toString()})(${r=l,JSON.stringify(r).replace(/</g,"\\u003c")})<\/script>`)}catch{}const n=s.headers.host??"";return oe(st,"/login",ie(l,n,t))}var r});return g(e,t,s)},error(e,t,s){!function(e,t,s,n){const r=`Proxy error: "${e.message}" when trying to "${t.method} ${t.url}"`;if(n(`${r}\n\n${e.stack??""}`),"function"!=typeof s.writeHead)return void s.destroy();const a=s;a.writableEnded||a.destroyed||(a.headersSent?a.destroy():(a.writeHead(502,{"Content-Type":"text/plain; charset=utf-8"}),a.end(r)))}(e,t,s,e=>p.error(e))}}})}const pt=/\.(?:[a-z0-9]+)$/i,ht=6e5,mt=104857600,gt=1e3,ft=10485760;const yt=new class{items=new Map;totalSize=0;maxSize;maxItems;constructor(e,t){this.maxSize=e,this.maxItems=t}get(e){const t=this.items.get(e);return t?t.expiresAt<=Date.now()?(this.del(e),null):t.value:null}put(e,t,s=ht){return this.del(e),this.items.set(e,{value:t,expiresAt:Date.now()+s}),this.totalSize+=t.size,this.cleanup(),t}del(e){const t=this.items.get(e);return!!t&&(this.totalSize-=t.value.size,this.items.delete(e))}clear(){this.items.clear(),this.totalSize=0}keys(){return this.purgeExpired(),[...this.items.keys()]}getTotalSize(){return this.totalSize}getItemCount(){return this.keys().length}purgeExpired(){const e=Date.now();for(const[t,s]of this.items)s.expiresAt<=e&&this.del(t)}cleanup(){for(this.purgeExpired();this.items.size>0&&(this.items.size>this.maxItems||this.totalSize>this.maxSize);)this.del(this.items.keys().next().value)}}(mt,gt),wt=new Set,vt=new Map;function bt(e){yt.clear(),vt.clear(),wt.forEach(e=>e()),o().info(c.blue(`Proxy cache cleared: ${e}`))}const kt=new WeakSet;function $t(e,t){return t?e.startsWith(`@${t}@`):!e.startsWith("@")}function xt(e,t){if(e){for(const t of yt.keys())$t(t,e)&&yt.del(t);vt.delete(e),o().info(c.blue(`Proxy cache cleared for ${e}: ${t}`))}else bt(t)}function St(e,t,s){const n=function(e){return rt.get(e)}(e);if(void 0!==n){const e=vt.get(s),t=void 0!==e&&n!==e;return vt.set(s,n),t?"personal access token changed":void 0}const r=je(t.getHeader("set-cookie"),Te);return void 0!==r&&r!==Ne(e.headers.cookie,Te)?"MI session changed":void 0}function At(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 Et(e){const{devServer:t,ttl:s=ht,maxSize:n=mt,maxItems:r=gt,users:a=qe}=e,i=o();return n===mt&&r===gt||(yt.maxSize=n,yt.maxItems=r),t.cache=yt,kt.has(a)||(kt.add(a),a.onRemove(e=>xt(e.name,"user removed")),a.onSessionChange(e=>xt(e.name,"MI session changed or ended"))),(e,t,n)=>{const r=a.resolve(e);if(!r)return n();t.once("finish",()=>{const s=t.hasHeader(et)?St(e,t,r.key):void 0;s&&xt(r.key,`${s} (${e.method} ${le(e.url??"")})`)});const l=r.user?.session,d=e.originalUrl||e.url||"",u="GET"===e.method?function(e,t,s){const n=e.split("?")[0];return pt.test(n)?n.includes("/auth/info.js")?"":t?`@${t}@${s}:${e}`:e:""}(d,r.key,e.headers.host??""):"";if(!u||!function(e,t){const{user:s}=t;return"session"!==s?.kind||!!s.session&&(Ve(e.headers.host)!==s.name||Ne(e.headers.cookie,Te)===s.session)}(e,r))return n();const p=yt.get(u);if(p)return i.info(`${c.blue("Proxies request:")} ${c.green(e.method)} ${d} -> ${c.blue("Cache")} ${u}`),function(e,t){try{for(const[s,n]of Object.entries(t))null!=n&&e.setHeader(s,n)}catch(e){o().warn(`Failed to set some response headers: ${e instanceof Error?e.message:String(e)}`)}}(t,p.headers),t.setHeader("X-PP-Cache","hit"),t.write(p.content),void t.end();const h=t.end,m=t.write,g=[];let f=0,y="undecided";const w=(e,t)=>null==e?null:"string"==typeof e?Buffer.from(e,t||"utf8"):e instanceof Uint8Array?Buffer.from(e):Buffer.from(String(e),"utf8"),v=()=>{y="pass";for(const e of g.splice(0))m.call(t,e)},b=()=>{"undecided"===y&&(t.hasHeader(et)?!function(e){if(200!==e.statusCode)return!1;if(/^text\/event-stream/i.test(String(e.getHeader("content-type")??"")))return!1;if("no"===String(e.getHeader("x-accel-buffering")??"").toLowerCase())return!1;const t=Number(e.getHeader("content-length"));return!(Number.isFinite(t)&&t>=ft)}(t)?v():y="buffer":y="pass")};t.write=function(e,t,s){if(b(),"pass"===y)return m.call(this,e,t,s);const n="function"==typeof t?t:s,r=w(e,"string"==typeof t?t:void 0);return r&&(g.push(r),f+=r.length),f>ft&&v(),n&&process.nextTick(n),!0},t.end=function(e,n,o){if(b(),"pass"===y)return h.call(this,e,n,o);"function"==typeof e?(o=e,e=void 0):"function"==typeof n&&(o=n,n=void 0);const d=w(e,"string"==typeof n?n:void 0);let p;d&&g.push(d);try{p=At(g);const e=Buffer.byteLength(p);if(200===t.statusCode&&e>0&&e<ft&&function(e,t,s){return!e.user||s.get(e.key)===e.user&&e.user.session===t}(r,l,a)){const{"set-cookie":n,...r}=t.getHeaders(),a={headers:r,content:p,timestamp:Date.now(),size:e};yt.put(u,a,s),i.info(`${c.blue("[Cached]")} ${u} (${(e/1024).toFixed(1)}KB)`)}}catch(e){i.error(`Failed to cache response for ${u}: ${e}`),p=At(g)}return h.call(this,p,o)},n()}}const Tt=new Map;function It(e){const t=Tt.get(e);return t?Date.now()-t.timestamp>18e4?(Tt.delete(e),null):t.data:null}function Nt(e,t){Tt.set(e,{timestamp:Date.now(),data:t})}var jt;jt=()=>Tt.clear(),wt.add(jt);let Pt=!1;function Lt(e){Pt||(Pt=!0,e.info(c.blue("Clearing proxy cache after successful login")),yt.clear())}function Ft(){Pt=!1,u.reset()}const Rt="/home?proxyRedirect=";function Bt(e){const t=e.headers??{},s=Boolean(Ve(e.headers?.host));if(!s&&!qe.resolve(e)?.user)return t;const{cookie:n,authorization:r,token:a,...i}=t;return s||void 0===n?i:{...i,cookie:n}}function Ct(e,t,s){const{templateLess:n=!1,miHudLess:r=!1,appId:a,base:i,appBase:l,v7Features:d}=s,p=o();if(n&&r&&void 0===a)throw new Error("Custom App ID is required when both templateLess and miHudLess are true");return async(s,o,h)=>{try{const m=!(n&&r),g=le(s.url??""),f=e.test(g),y=!f&&!g.startsWith("/home")&&function(e,t){if(!t||"/"===t)return!0;const s=t.endsWith("/")?t:`${t}/`;return e===s||e===s.slice(0,-1)||e.startsWith(s)}(g,l)&&function(e){const t=e.headers["sec-fetch-dest"];if("string"==typeof t)return"document"===t;const s=e.headers.accept;return"string"==typeof s&&s.includes("text/html")}(s),w=u.getState();if(!w.isAuthenticated&&!w.isRedirected&&s.url?.startsWith("/home")&&!s.url?.startsWith(Rt)){let e;p.info(c.blue("Trying to authenticate and redirect to base"));const l=t=>{e=t};try{if(m?await Mt(t,{templateLess:n,miHudLess:r,appId:a,redirectUrl:d&&i?`${i}`:`${Rt}${encodeURIComponent("/")}`},s,o,l,p):await Ot(t,{templateLess:n,miHudLess:r,appId:a,redirectUrl:d&&i?`${i}`:`${Rt}${encodeURIComponent("/")}`},s,o,l,p),o.headersSent||o.writableEnded)return;return e?h(e):(u.setRedirected(!0),p.info(c.blue("Successfully authenticated. Redirecting to base")),ce(o,i??"/",302))}catch(e){if(o.headersSent||o.writableEnded)return;return h()}}if(!f&&!y)return h();if(!m){return await Ot(t,{templateLess:n,miHudLess:r,appId:a,redirectUrl:d&&i?`${i}`:`${Rt}${encodeURIComponent("/")}`},s,o,h,p)}return await Mt(t,{templateLess:n,miHudLess:r,appId:a,redirectUrl:d&&i?`${i}`:`${Rt}${encodeURIComponent("/")}`},s,o,h,p)}catch(e){return p.error(c.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),Ft(),h(e)}}}async function Ot(e,t,s,n,r,a){const{appId:i,redirectOnAuthFailure:o,redirectUrl:l}=t;if(void 0===i){const e=new Error("Custom App ID is required for page info only mode");return a.error(c.red(e.message)),r(e)}const d=Bt(s);a.info(c.green("Start loading page info"));try{const t=`pageInfo:${i}`;return It(t)?(a.info(c.green("Page info loaded from cache")),r()):(await e.getPageInfo(i,d),Lt(a),Nt(t,{success:!0}),u.updateState({isAuthenticated:!0}),a.info(c.green("Page info loaded successfully")),r())}catch(e){return Ft(),Ut(e,o??!0,l||`${Rt}${encodeURIComponent("/")}`,n,r,a,"Page info")}}async function Mt(e,t,s,n,r,a){const{templateLess:i,appId:o,redirectOnAuthFailure:l,redirectUrl:d}=t,u=Bt(s);a.info(c.green("Start loading page data"));try{const t=`pageData:${i}:${o}`;if(It(t))return a.info(c.green("Page data loaded from cache")),r();const s=i||void 0===o?e.getPageTemplate(u):e.getPageVariables(o,u);return await s,Lt(a),Nt(t,{success:!0}),a.info(c.green("Page data loaded successfully")),r()}catch(e){return Ft(),Ut(e,l??!0,d||`${Rt}${encodeURIComponent("/")}`,n,r,a,"Page data")}}function Ut(e,t,s,n,r,a,i){if(function(e){return null!==e&&"object"==typeof e&&Be(e)}(e)&&(a.info(c.red(`${i} loading failed. Not authorized`)),t)){const e=`${s}`;return a.info(c.yellow(`Redirecting to: ${e}`)),ce(n,e,302)}const o=e instanceof Error?e.message:String(e);return a.info(c.red(`${i} loading failed. Error: ${o}`)),r(e)}async function Ht(e){const t=new R,s=async n=>{const r=await N.readdir(n,{withFileTypes:!0});for(const a of r){const r=T.join(n,a.name);if(a.isDirectory())await s(r);else if(a.isFile()){const s=T.relative(e,r).replace(/\\/g,"/");t.file(s,await N.readFile(r))}}};return await s(e),await t.generateAsync({type:"nodebuffer",compression:"DEFLATE"})}async function Dt(e,t){const s=await R.loadAsync(await N.readFile(e),{createFolders:!1}),n=T.resolve(t),r=Object.values(s.files).filter(e=>!e.name.startsWith("__MACOSX/"));for(const e of r){const t=e.unsafeOriginalName??e.name,s=T.resolve(n,t);if(s!==n&&!s.startsWith(n+T.sep))throw new Error(`Zip entry "${t}" resolves outside the extraction directory`);if("number"==typeof e.unixPermissions&&40960==(61440&e.unixPermissions))throw new Error(`Zip archive contains a symlink ("${t}"), which is not allowed`)}await N.mkdir(n,{recursive:!0});for(const e of r){const t=T.resolve(n,e.unsafeOriginalName??e.name);e.dir?await N.mkdir(t,{recursive:!0}):(await N.mkdir(T.dirname(t),{recursive:!0}),await N.writeFile(t,await e.async("nodebuffer")))}}function _t(e,t){const s=t?.distDir;if("export"!==t?.output||!s||".next"===s)return null;const n=T.resolve(e,s,"dev","types");return I.existsSync(n)?(I.rmSync(n,{recursive:!0,force:!0}),n):null}const Vt=6e5;function zt(e,t,s){if(e.pid)if("win32"!==process.platform)try{s?process.kill(-e.pid,t):e.kill(t)}catch{}else null===e.exitCode&&null===e.signalCode&&B.spawnSync("taskkill",["/PID",String(e.pid),"/T","/F"],{stdio:"ignore"})}function qt(e,t,s,{cwd:n,env:r,timeoutMs:a,signal:i,killGraceMs:o=5e3}){return new Promise((c,l)=>{if(i?.aborted)return void l(new Error(`${e} was stopped`));const d="win32"!==process.platform&&(void 0!==i||void 0!==a),u=B.spawn(t,s,{cwd:n,env:r,stdio:"inherit",detached:d});let p,h;const m=(e,t)=>{p?t||void 0===h||(clearTimeout(h),h=void 0,zt(u,"SIGKILL",d)):(p=e,t?(zt(u,"SIGTERM",d),h=setTimeout(()=>{h=void 0,zt(u,"SIGKILL",d)},o)):zt(u,"SIGKILL",d))},g=()=>m(`${e} was stopped`,!1),f=void 0===a?void 0:setTimeout(()=>m(`${e} timed out after ${Math.round(a/1e3)} s`,!0),a);i?.addEventListener("abort",g,{once:!0});const y=e=>{clearTimeout(f),clearTimeout(h),i?.removeEventListener("abort",g),d&&zt(u,"SIGKILL",d),e?l(e):c()};u.on("close",t=>{p?y(new Error(p)):0!==t?y(new Error(`${e} exited with code ${t}`)):y()}),u.on("error",e=>y(e))})}async function Wt(e,t={}){let s;try{const t=C(T.join(e,"package.json")).resolve("next/package.json");s=T.resolve(T.dirname(t),"dist/bin/next")}catch{throw new Error(`Unable to resolve the "next" binary from ${e}. Is Next.js installed?`)}await qt("next build",process.execPath,[s,"build"],{...t,cwd:e,env:Object.assign({},process.env,{NODE_ENV:"production",[p]:"1"})})}const Jt="pageName",Zt="date",Kt=T.dirname("undefined"!=typeof __filename&&__filename||y(import.meta.url)),Gt=T.resolve(Kt,"..",".."),Xt=Buffer.from([80,75,3,4]),Yt=20,Qt=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");const es="sync-service.meta.json",ts="BUILD-MANIFEST.json",ss="__template_variables.json";class ns{root;backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;versionFileTemplate;buildInputFolder;nextBuild;maxBackups;buildTimeoutMs;metaDir;builds=new AbortController;metaLoaded;logger;constructor(e,t){this.pageName=e;const{root:s=L.cwd(),backupFolder:n="backups",distZipFolder:r=T.resolve(s,"dist-zip"),distZipFilename:a=h(this.pageName),backupNameTemplate:i=`{${Jt}}-{${Zt}}.zip`,versionFileTemplate:c="VERSION-v{packageversion}-{currentDate}.json",buildInputFolder:l,dateFormat:d=e=>e.toISOString().replace(/:/g,"-").replace(/\..*$/,""),nextBuild:u,maxBackups:p=Yt,buildTimeoutMs:g=Vt,metaDir:f}=t||{};this.root=s,this.backupFolder=T.resolve(s,n),this.backupNameTemplate=i,this.dateFormat=d,this.distZipFolder=r,this.distZipFilename=m(a,"ZIP output file name"),this.versionFileTemplate=m(c,"VERSION file name template"),this.buildInputFolder=l,this.nextBuild=u,this.maxBackups="number"==typeof p&&Number.isInteger(p)&&p>0?p:1/0,this.buildTimeoutMs=g,this.metaDir=void 0===f?T.join(this.backupFolder,".pp-dev-meta"):T.resolve(s,f),this.logger=o(),this.metaLoaded=this.loadMeta()}stopBuilds(){this.builds.abort()}async checkMeta(){await N.mkdir(this.metaDir,{recursive:!0}),await N.mkdir(this.backupFolder,{recursive:!0})}async loadMeta(){try{const e=JSON.parse(await this.readMetaFile());this.currentMeta=e&&"object"==typeof e?e:{}}catch(e){this.logger.warn(c.yellow(`[DistService] Could not read the sync meta (${e instanceof Error?e.message:String(e)}); starting a new one`)),this.currentMeta={}}}async meta(){return await this.metaLoaded,this.currentMeta||(this.currentMeta={}),this.currentMeta}async readMetaFile(){return await this.checkMeta(),await N.readFile(T.join(this.metaDir,es),{encoding:"utf-8"}).catch(()=>"{}")}async writeMetaFile(e){return await this.checkMeta(),await N.writeFile(T.join(this.metaDir,es),JSON.stringify(e,null,2),{encoding:"utf-8"})}async syncMeta(){await this.writeMetaFile(await this.meta())}async getLatestSavedBackup(){const{lastBackupName:e}=await this.meta();if(!e)return null;const t=T.resolve(this.backupFolder,e);try{return await N.stat(t),t}catch{return null}}backupName(e,t=new Date){return this.backupNameTemplate.replace(`{${Jt}}`,e).replace(`{${Zt}}`,this.dateFormat(t))}getBackupMeta(){return this.currentMeta}async pruneBackups(e){if(Number.isFinite(this.maxBackups))try{const t=function(e,t,s){const n=s.split(/(\d+)/).map((e,t)=>t%2==1?"\\d+":Qt(e)).join(""),r=[{token:`{${Jt}}`,pattern:Qt(t)},{token:`{${Zt}}`,pattern:n}].map(t=>({...t,at:e.indexOf(t.token)})).filter(e=>-1!==e.at).sort((e,t)=>e.at-t.at);let a="^",i=0;for(const{token:t,pattern:s,at:n}of r)a+=Qt(e.slice(i,n))+s,i=n+t.length;return new RegExp(`${a}${Qt(e.slice(i))}$`)}(this.backupNameTemplate,this.pageName,this.dateFormat(new Date)),s=new Set([e]),n=await N.readdir(this.backupFolder,{withFileTypes:!0}),r=(await Promise.all(n.filter(e=>e.isFile()&&t.test(e.name)).map(async e=>({name:e.name,mtimeMs:(await N.stat(T.resolve(this.backupFolder,e.name))).mtimeMs})))).sort((e,t)=>t.mtimeMs-e.mtimeMs||t.name.localeCompare(e.name)),a=r.filter(e=>s.has(e.name)).length,i=r.filter(e=>!s.has(e.name)).slice(Math.max(0,this.maxBackups-a));for(const e of i)await N.unlink(T.resolve(this.backupFolder,e.name));i.length>0&&this.logger.info(c.gray(`[DistService] Deleted ${i.length} old backup(s), keeping the latest ${this.maxBackups}`))}catch(e){this.logger.warn(c.yellow(`[DistService] Could not delete old backups: ${e instanceof Error?e.message:String(e)}`))}}pathToPosix(e){return e.replace(/\\/g,"/")}normalizeBackupManifestPath(e){try{return m(e,"VERSION manifest file path")}catch{throw new Error(`VERSION manifest file path "${e}" resolves outside the backup root`)}}async normalizeExtractedRootDir(e){let t=e;for(;;){const e=await N.readdir(t,{withFileTypes:!0});if(1!==e.length||!e[0]?.isDirectory())return t;t=T.join(t,e[0].name)}}async listFilesRecursive(e){const t=await N.readdir(e,{withFileTypes:!0}),s=[];for(const n of t){const t=T.join(e,n.name);n.isDirectory()?s.push(...await this.listFilesRecursive(t)):n.isFile()&&s.push(t)}return s}buildManifestChecksum(e){const t=Object.keys(e).sort().map(t=>e[t]).join("");return j.createHash("sha256").update(t).digest("hex")}buildBackupFingerprint(e){const t=Object.keys(e).sort().map(t=>`${t}:${e[t]}`).join("\n");return j.createHash("sha256").update(t,"utf-8").digest("hex")}escapeRegExp(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}versionFileTemplateMatcher(){const e=/\{[^}]+\}/g,t=[];let s=0,n=null;for(;n=e.exec(this.versionFileTemplate),n;){const[e]=n,r=this.versionFileTemplate.slice(s,n.index);t.push(this.escapeRegExp(r)),t.push("[^/]+"),s=n.index+e.length}const r=this.versionFileTemplate.slice(s);return t.push(this.escapeRegExp(r)),new RegExp(`^${t.join("")}$`,"i")}isTemplateVariablesBasename(e){return e===ss}async pickTemplateVariablesFromBackupZip(e,t){const s=e.find(e=>T.basename(e)===ss);if(!s)return null;const n=T.join(t,s),r=await N.readFile(n);return{relativePath:s,content:r,actualHash:j.createHash("sha256").update(r).digest("hex"),manifestHash:null}}async resolveBackupAnalysisFromZip(e){const t=await N.mkdtemp(T.join(F.tmpdir(),"pp-dev-backup-")),s=T.join(t,"backup.zip"),n=T.join(t,"extracted");try{await N.mkdir(n,{recursive:!0}),await N.writeFile(s,e),await Dt(s,n);const t=await this.normalizeExtractedRootDir(n),r=(await this.listFilesRecursive(t)).map(e=>this.pathToPosix(T.relative(t,e))),a=r.filter(e=>T.basename(e)===ts);if(a.length>1)throw new Error(`Expected at most one ${ts} in backup ZIP, found ${a.length}`);const i=1===a.length?a[0]:null;let o=null;if(i){const e=T.join(t,i);if(o=JSON.parse(await N.readFile(e,"utf-8")),!(o&&"pp-dev-build-manifest"===o.manifestType&&"string"==typeof o.versionFile&&o.versionFile.trim()&&"string"==typeof o.versionFileTemplate&&o.versionFileTemplate.trim()&&"string"==typeof o.buildFingerprint&&o.buildFingerprint.trim()))throw new Error("Build manifest is missing required fields")}let l=null;if(o){const e=this.pathToPosix(o.versionFile.trim()),t=r.filter(t=>t===e),s=r.filter(t=>T.basename(t)===T.basename(e)),n=t.length>0?t:s;if(n.length>1)throw new Error(`Build manifest version file "${o.versionFile}" must resolve to exactly one file in backup ZIP, found ${n.length}`);if(1===n.length&&(l=n[0]),!0===o.compat?.versionFileRequired&&null===l)throw new Error(`Build manifest requires version file "${o.versionFile}", but it is missing in backup ZIP`)}else{const e=this.versionFileTemplateMatcher(),t=r.filter(t=>e.test(T.basename(t)));if(t.length>1)throw new Error(`Expected exactly one version file matching template "${this.versionFileTemplate}" in backup ZIP, found ${t.length}`);1===t.length&&(l=t[0])}const d={};let u=null,p=null;const h={};let m=[];if(l){const e=T.join(t,l),s=JSON.parse(await N.readFile(e,"utf-8"));if(!s?.files||"object"!=typeof s.files)throw new Error("VERSION manifest files map is missing or invalid");if("string"!=typeof s.checksum||!s.checksum)throw new Error("VERSION manifest checksum is missing or invalid");p=s.checksum;for(const[e,t]of Object.entries(s.files)){if("string"!=typeof t||!t.trim())throw new Error(`VERSION manifest contains invalid hash for file: ${e}`);const s=this.normalizeBackupManifestPath(e);if(Object.prototype.hasOwnProperty.call(d,s))throw new Error(`VERSION manifest contains duplicate normalized file path: ${s}`);d[s]=t}if(this.buildManifestChecksum(d)!==s.checksum)throw new Error("VERSION manifest checksum does not match its files map");for(const[e,s]of Object.entries(d)){const n=T.join(t,e),r=await N.readFile(n).catch(()=>null);if(!r)throw new Error(`VERSION manifest references missing file: ${e}`);const a=j.createHash("sha256").update(r).digest("hex");h[e]=a,a!==s&&m.push({relativePath:e,expected:s,actual:a}),this.isTemplateVariablesBasename(T.basename(e))&&(u={relativePath:e,content:r,actualHash:a,manifestHash:s})}m.length>0&&this.logger.warn(c.yellow(`[DistService] VERSION manifest hash mismatch for ${m.length} file(s) (confirm in UI): ${m.map(e=>e.relativePath).join(", ")}`))}const g=new Set(m.map(e=>e.relativePath)),f={},y=[];for(const e of r){if(e===i)continue;if(l&&e===l)continue;if(l&&Object.prototype.hasOwnProperty.call(f,e))continue;const s=T.join(t,e),n=await N.readFile(s),r=j.createHash("sha256").update(n).digest("hex");l&&Object.prototype.hasOwnProperty.call(d,e)?f[e]=g.has(e)?h[e]:d[e]:l?(f[e]="__NOT_IN_VERSION_FILE__",y.push(e)):f[e]=r}u||(u=await this.pickTemplateVariablesFromBackupZip(r,t));const w=this.buildBackupFingerprint(f);let v=null;return o&&l&&w!==o.buildFingerprint&&(v={expected:o.buildFingerprint,actual:w},this.logger.warn(c.yellow(`[DistService] Build manifest fingerprint mismatch (confirm in UI): expected ${o.buildFingerprint}, got ${w}`))),{backupFingerprint:w,unknownFiles:y,templateVariables:u,mainHash:p,allFilesInMeta:Boolean(l&&0===y.length),buildManifestMismatch:v,versionManifestHashMismatches:m}}finally{await N.rm(t,{recursive:!0,force:!0})}}async analyzeBackup(e){if(!Xt.equals(e.subarray(0,Xt.length)))throw new Error("Backup file is not a ZIP file");return await this.resolveBackupAnalysisFromZip(e)}async getPublicTemplateVariablesHash(){const e=T.resolve(this.root,"public",ss),t=await N.readFile(e).catch(()=>null);return t?j.createHash("sha256").update(t).digest("hex"):null}async readPublicTemplateVariablesFile(){const e=T.resolve(this.root,"public",ss);return await N.readFile(e).catch(()=>null)}async saveTemplateVariablesFile(e){const t=T.resolve(this.root,"public",ss);return await N.mkdir(T.dirname(t),{recursive:!0}),await N.writeFile(t,e),t}async saveBackup(e,t){const s=t??await this.analyzeBackup(e),n=s.backupFingerprint,r=await this.getLatestSavedBackup(),a=await this.meta();if(r){const{lastBackupHash:e,lastMainHash:t}=a;if(e===n)return void this.logger.info(c.yellow(`[DistService] Backup skipped: same backup fingerprint as last saved (${n.slice(0,12)}...)`));if(s.allFilesInMeta&&s.mainHash&&t===s.mainHash)return void this.logger.info(c.yellow("[DistService] Backup skipped: same VERSION manifest checksum (main hash) and all files listed in VERSION"))}const i=new Date,o=this.backupName(this.pageName,i);a.lastBackupName=o,a.lastBackupHash=n,a.lastBackupDate=i.toISOString(),s.mainHash?a.lastMainHash=s.mainHash:delete a.lastMainHash,await this.syncMeta(),await N.writeFile(T.resolve(this.backupFolder,o),e),this.logger.info(`Backup saved to ${o}`),await this.pruneBackups(o)}async buildNewAssets(){if(this.nextBuild)return await this.buildNextAssets();this.logger.info(c.cyan("[DistService] Build started"));const e=qt("pp-dev build","node",[T.resolve(Gt,"./bin/pp-dev.js"),"build"],{cwd:this.root,env:Object.assign({},L.env,{NODE_ENV:"production"}),timeoutMs:this.buildTimeoutMs,signal:this.builds.signal});try{if(await this.logBuild("Build",e),this.buildInputFolder){const e=T.resolve(this.root,this.buildInputFolder);if(!await this.isDirectory(e))throw new Error(`Build input directory ${e} not found`);const t=await Ht(e);return this.throwIfStopped("pp-dev build"),t}const t=T.resolve(this.root,this.distZipFolder,this.distZipFilename);let s;try{s=await N.readFile(t)}catch(e){if("ENOENT"===e.code)throw new Error(`File ${t} not found`);throw e}return this.throwIfStopped("pp-dev build"),s}catch(e){throw this.logger.error(e instanceof Error?e.stack??e.message:String(e)),e}}async saveBackupAndBuild(e){return await this.saveBackup(e),await this.buildNewAssets()}async buildNextAssets(){const{projectRoot:e,distDir:t}=this.nextBuild;this.logger.info(c.cyan("[DistService] Next.js build started")),await this.logBuild("Next.js build",Wt(e,{timeoutMs:this.buildTimeoutMs,signal:this.builds.signal}));const s=T.resolve(e,t);if(!await this.isDirectory(s))throw new Error(`Next.js build output directory not found: ${s}`);this.throwIfStopped("next build"),await x({outDir:s,packageVersion:this.nextBuild.packageVersion,versionFileTemplate:this.versionFileTemplate,packageRepositoryUrl:this.nextBuild.packageRepositoryUrl,packageBranchName:this.nextBuild.packageBranchName}),this.throwIfStopped("next build");const n=await Ht(s);return this.throwIfStopped("next build"),n}get stopped(){return this.builds.signal.aborted}throwIfStopped(e){if(this.stopped)throw new Error(`${e} was stopped`)}async logBuild(e,t){try{await t}catch(t){const s=this.builds.signal.aborted;throw this.logger.info(c.yellow(`[DistService] ${e} ${s?"stopped":"failed"}`)),t}this.logger.info(c.cyan(`[DistService] ${e} finished`))}async isDirectory(e){try{return(await N.stat(e)).isDirectory()}catch{return!1}}}class rs{server;opts;eventMap;logger;syncInFlight=null;syncActionResolvers=new Map;constructor(e,t){this.server=e,this.opts=t||{},this.eventMap=new Map,this.eventMap.set("info-data:request",this.onInfoDataRequest.bind(this)),this.eventMap.set("template:sync",this.onTemplateSync.bind(this)),this.eventMap.set("template:sync:action-response",this.onTemplateSyncActionResponse.bind(this)),this.eventMap.set("page-variables:reload",this.onPageVariablesReload.bind(this)),this.logger=o(),this.init()}init(){const{ws:e}=this.server;for(const[t,s]of this.eventMap)e.on(t,s);e.on("error",()=>{this.clearAllPendingSyncActions(!1)})}dispose(){this.clearAllPendingSyncActions(!1),this.opts.distService?.stopBuilds()}resolveSyncAction(e,t){const s=this.syncActionResolvers.get(e);s&&(clearTimeout(s.timeoutId),s.cleanup(),this.syncActionResolvers.delete(e),s.resolve(t))}clearAllPendingSyncActions(e){for(const t of[...this.syncActionResolvers.keys()])this.resolveSyncAction(t,e)}sendSyncResponse(e,t){e.send("template:sync:response",t)}onInfoDataRequest(e,t){t.send("info-data:response",{})}onTemplateSyncActionResponse(e){e&&"string"==typeof e.requestId&&"boolean"==typeof e.approved&&this.resolveSyncAction(e.requestId,e.approved)}async requestSyncAction(e,t){const s=P(),n=this.opts.syncActionTimeoutMs??12e4;return await new Promise(r=>{const a=()=>this.resolveSyncAction(s,!1),i=setTimeout(a,n),{socket:o}=t;o?.once("close",a),this.syncActionResolvers.set(s,{resolve:r,timeoutId:i,cleanup:()=>o?.off("close",a)}),o&&o.readyState!==o.OPEN?a():t.send("template:sync:action-required",{...e,requestId:s})})}async onTemplateSync(e,t){if(this.syncInFlight)return this.logger.warn(c.yellow("Template sync requested while another one is running; ignored")),void this.sendSyncResponse(t,{error:"A template sync is already running. Wait for it to finish, or answer its dialog in the tab that started it.",code:"SYNC_IN_PROGRESS"});const s=this.runTemplateSync(e,t);this.syncInFlight=s;try{await s}finally{this.syncInFlight=null}}async runTemplateSync(e,t){if(!this.opts.distService||!this.opts.miAPI)return this.sendSyncResponse(t,{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:s}=this.opts;try{if(this.server.config.clientInjectionPlugin?.v7Features){if(!s?.isV710OrHigher)return void this.sendSyncResponse(t,{error:"This feature is available only for MI v7.1.0 or higher",config:{canSync:!1}});t.send("client:config:update",{config:{canSync:!0}})}const n=await(s?.getAssets().catch(async e=>{if(v(e)){if("SESSION_EXPIRED"===Re(e).code){this.logger.info(c.yellow("Session expired - attempting to validate credentials"));try{const e=await(s?.validateCredentials());e&&!e.isValid?(this.logger.error(c.red(`Authentication error: ${e.error}`)),this.sendSyncResponse(t,{error:e.error??"Authentication failed",code:e.code,refresh:!0})):(this.logger.info(c.yellow("Session expired")),this.sendSyncResponse(t,{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(c.yellow("Session expired")),this.sendSyncResponse(t,{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.sendSyncResponse(t,{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e;const n=e.response?.status;if(502===n||503===n||504===n)return this.logger.info(c.yellow(`Server in maintenance mode or unreachable (HTTP ${n}); VPN may be required`)),this.sendSyncResponse(t,{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e}if(ke(e))return this.logger.info(c.yellow("Server in maintenance mode or non-JSON page / page-template API response (unavailable HTML body)")),this.sendSyncResponse(t,{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e;throw e}));if(n instanceof Error)return;let r;if(n){const s=await(e?.analyzeBackup(n).catch(e=>"Backup file is not a ZIP file"===e.message?(this.logger.error(c.red("Backup file is not a ZIP file")),e):e));if(s instanceof Error)r=s;else if(s){await(e?.saveBackup(n,s));const a=0===s.unknownFiles.length&&1===s.versionManifestHashMismatches.length&&T.basename(s.versionManifestHashMismatches[0].relativePath)===ss,i=s.versionManifestHashMismatches,o=i.filter(e=>T.basename(e.relativePath)===ss),l=i.filter(e=>T.basename(e.relativePath)!==ss),d=!a&&o.length>0&&l.length>0,u=a?[]:l.map(e=>e.relativePath),p=async()=>{if(!s.templateVariables||!e)return;const{templateVariables:n}=s;if(await e.getPublicTemplateVariablesHash()!==n.actualHash){await this.requestSyncAction({title:"Template variables (server backup)",content:"The server backup includes __template_variables.json. It differs from your local public/__template_variables.json (or that file is missing). Replace your project copy with the server backup?",confirmText:"Replace from server",cancelText:"Keep local"},t)&&await e.saveTemplateVariablesFile(n.content)}};if(s.unknownFiles.length>0){if(!await this.requestSyncAction({title:"Unknown files found in backup",content:`Backup contains files not listed in VERSION: ${s.unknownFiles.join(", ")}. Continue sync or cancel?`,confirmText:"Continue sync",cancelText:"Cancel sync"},t))return this.sendSyncResponse(t,{cancelled:!0,message:"Sync cancelled by user. Backup was saved."}),void this.logger.info(c.yellow("Sync cancelled by user"))}if(d&&await p(),!a&&u.length>0){const e=40,s=u,n=s.slice(0,e),r=s.length-n.length,a=n.map(e=>`• ${e}`).join("\n"),i=r>0?`\n... and ${r} more file${1===r?"":"s"}`:"";if(!await this.requestSyncAction({title:"VERSION manifest out of date",content:`These files no longer match the hashes recorded in the VERSION manifest:\n\n${a}${i}\n\nCancel sync, or override and continue using the files on disk?`,confirmText:"Override and continue",cancelText:"Cancel sync"},t))return this.sendSyncResponse(t,{cancelled:!0,message:"Sync cancelled by user. Backup was saved."}),void this.logger.info(c.yellow("Sync cancelled by user"))}if(!a&&s.buildManifestMismatch&&0===s.versionManifestHashMismatches.length){const{expected:e,actual:n}=s.buildManifestMismatch;if(!await this.requestSyncAction({title:"Build manifest fingerprint mismatch",content:`The recomputed backup fingerprint does not match BUILD-MANIFEST.json.\nManifest: ${e.slice(0,12)}...\nComputed: ${n.slice(0,12)}...\nContinue sync anyway?`,confirmText:"Continue sync",cancelText:"Cancel sync"},t))return this.sendSyncResponse(t,{cancelled:!0,message:"Sync cancelled by user. Backup was saved."}),void this.logger.info(c.yellow("Sync cancelled by user"))}d||await p(),r=await(e?.buildNewAssets())}}else r=await(e?.buildNewAssets());if(!(r&&r instanceof Buffer))return r instanceof Error?(this.sendSyncResponse(t,{error:r.message}),void this.logger.error(c.red(r.message))):(this.sendSyncResponse(t,{error:"Failed to build new assets"}),void this.logger.error(c.red("Failed to build new assets")));{if(e.stopped)return this.sendSyncResponse(t,{error:"Sync stopped: the dev server is shutting down."}),void this.logger.warn(c.yellow("Sync stopped before the upload: the dev server is shutting down"));const n=await(s?.updateAssets(r));if("OK"===n?.status){const s=e?.getBackupMeta(),n=s?.lastBackupDate?new Date(s.lastBackupDate):new Date;this.sendSyncResponse(t,{syncedAt:(Number.isNaN(n.getTime())?new Date:n).toISOString(),currentHash:s?.lastBackupHash??"",backupFilename:s?.lastBackupName??""}),this.logger.info(c.green("Template synced"))}else this.sendSyncResponse(t,{error:"Failed to update assets"}),this.logger.error(c.red("Failed to update assets"))}}catch(e){const s=e instanceof Error?e.message:"Template sync failed";return this.logger.error(c.red(`Template sync failed: ${s}`)),void this.sendSyncResponse(t,{error:s,code:"SYNC_FAILED"})}}}async onPageVariablesReload(e,t){const{miAPI:s}=this.opts;if(!s)return t.send("page-variables:reload:response",{error:"MiAPI is not defined"}),void this.logger.error(c.red("MiAPI is not defined"));try{const e=await s.reloadPageVariables();t.send("page-variables:reload:response",{ok:!0,count:e?e.length:0,skipped:null===e}),this.logger.info(c.green("Page variables reloaded"))}catch(e){const s=e instanceof Error?e.message:"Reload variables failed";this.logger.error(c.red(`Reload variables failed: ${s}`)),t.send("page-variables:reload:response",{error:s})}}}const as=["text","select","multiselect","file","list","color","boolean"];function is(e){return as.includes(e)}const os=["true","false","Y","N","1","0"],cs=/^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;function ls(e,t){return e.id===t||e.text===t}function ds(e){if("string"==typeof e||"number"==typeof e)return{id:String(e),text:String(e)};if("object"!=typeof e||null===e)return{text:""};const{id:t,text:s}=e,n="string"==typeof t||"number"==typeof t?String(t):void 0;return{id:n,text:"string"==typeof s?s:n??""}}function us(e,t,s,n){const r="select"===s.type||"multi-select"===s.type;if("string"!=typeof n&&(!r||"number"!=typeof n))return[{name:e,severity:"warning",message:`${t}: field "${s.name}" should be a string, got ${typeof n}.`}];const a=String(n);if(!a)return[];switch(s.type){case"color":return cs.test(a)?[]:[{name:e,severity:"warning",message:`${t}: field "${s.name}" value "${a}" is not a recognized color (expected e.g. "#075b7e").`}];case"select":{if(!s.options?.length)return[];const n=s.options.map(ds);return n.some(e=>ls(e,a))?[]:[{name:e,severity:"warning",message:`${t}: field "${s.name}" value "${a}" is not one of the declared options (${n.map(e=>e.text).join(", ")}).`}]}case"multi-select":{if(!s.options?.length)return[];const n=s.options.map(ds),r=a.split(",").map(e=>e.trim()).filter(e=>!n.some(t=>ls(t,e)));return r.length?[{name:e,severity:"warning",message:`${t}: field "${s.name}" value "${r.join(", ")}" is not among the declared options (${n.map(e=>e.text).join(", ")}).`}]:[]}default:return[]}}function ps(e,t){const s=function(e){if(!Array.isArray(e)||0===e.length)return null;const t=e.map(e=>"string"==typeof e?{name:e,type:"textarea"}:e&&"object"==typeof e&&"string"==typeof e.name?e:null).filter(e=>null!==e);return t.length?t:null}(e.additional_options);if(!s)return[];const n=new Set(s.map(e=>e.name)),r=[];return t.forEach((t,a)=>{const i=`"${e.name}" item #${a+1}`;if("object"!=typeof t||null===t||Array.isArray(t))return void r.push({name:e.name,severity:"warning",message:`${i} should be an object with field(s): ${s.map(e=>e.name).join(", ")}.`});const o=t;for(const t of s)t.name in o?r.push(...us(e.name,i,t,o[t.name])):r.push({name:e.name,severity:"warning",message:`${i} is missing field "${t.name}".`});const c=Object.keys(o).filter(e=>!n.has(e));c.length&&r.push({name:e.name,severity:"warning",message:`${i} has unexpected field(s) not declared in additional_options: ${c.join(", ")}.`})}),r}function hs(e,t){const s=[];switch(e.tag_type){case"boolean":os.includes(t)||s.push({name:e.name,severity:"warning",message:`Value "${t}" is not a recognized boolean encoding (expected one of ${os.join(", ")}).`});break;case"list":try{const n=JSON.parse(t);Array.isArray(n)?s.push(...ps(e,n)):s.push({name:e.name,severity:"warning",message:`Value for list variable "${e.name}" is valid JSON but not an array.`})}catch{s.push({name:e.name,severity:"warning",message:`Value for list variable "${e.name}" is not valid JSON.`})}break;case"select":case"multiselect":if(Array.isArray(e.additional_options)){const n=e.additional_options.map(ds),r=("multiselect"===e.tag_type?t.split(",").map(e=>e.trim()):[t]).filter(e=>!n.some(t=>ls(t,e)));r.length&&s.push({name:e.name,severity:"warning",message:`Value "${r.join(", ")}" does not match any declared option for "${e.name}".`})}}return s}function ms(e,t){switch(e.tag_type){case"boolean":return os.includes(t)?null:`Not a recognized boolean value ("${t}").`;case"color":return""===t||cs.test(t)?null:`Not a recognized color value ("${t}").`;case"list":if(""===t)return null;try{const e=JSON.parse(t);return null===e||Array.isArray(e)?null:"Value is valid JSON but not an array."}catch{return"Value is not valid JSON."}default:return null}}const gs="/@pp-dev/variables-editor",fs=/^[A-Za-z0-9_\s-]+$/,ys="Dist service or MiAPI is not defined",ws=new WeakMap;async function vs(e){const t=await e.readPublicTemplateVariablesFile();if(!t)return null;const s=t.toString("utf-8");let n;try{n=JSON.parse(s)}catch(e){return{raw:s,schema:null,parseError:e instanceof Error?e.message:"Invalid JSON"}}return"object"!=typeof n||null===n||Array.isArray(n)||!Array.isArray(n.tags)?{raw:s,schema:null,parseError:'The root value must be a JSON object with a "tags" array.'}:{raw:s,schema:n}}async function bs(e){return e?(await vs(e))?.schema??null:null}function ks(e,t,s){const n=ws.get(e);if(n)return void(n.deps=t);const r={deps:t};ws.set(e,r),e.get("/@api/variables/schema",async(e,t)=>{const{distService:s}=r.deps;if(!s)return void t.status(503).json({error:ys});const n=await vs(s);t.json(n?{exists:!0,...n}:{exists:!1,schema:null,raw:null})}),e.put("/@api/variables/schema",async(e,t)=>{const{distService:s}=r.deps;if(!s)return void t.status(503).json({error:ys});const n=e.body?.raw;if("string"!=typeof n)return void t.status(400).json({error:"Request body must be { raw: string }."});let a;try{a=JSON.parse(n)}catch{return void t.status(400).json({error:"Not valid JSON."})}if("object"!=typeof a||null===a||Array.isArray(a))return void t.status(400).json({error:"The root value must be a JSON object."});const i=a.tags;if(!Array.isArray(i))return void t.status(400).json({error:'"tags" must be an array.'});const o=i.findIndex(e=>"object"!=typeof e||null===e||"string"!=typeof e.name||!e.name);if(-1!==o)return void t.status(400).json({error:`tags[${o}] is missing a non-empty "name".`});const c=[],l=new Set;for(const e of i)l.has(e.name)&&c.push(`Duplicate variable name "${e.name}".`),l.add(e.name),e.tag_type&&!is(e.tag_type)&&c.push(`"${e.name}" has an unrecognized tag_type "${e.tag_type}".`),fs.test(e.name)||c.push(`"${e.name}" contains a character MI's own editor doesn't allow (only letters, digits, underscore, hyphen, and whitespace).`);try{await s.saveTemplateVariablesFile(Buffer.from(n,"utf-8"))}catch(e){return void t.status(500).json({error:`Failed to write ${ss}.`,details:e instanceof Error?e.message:String(e)})}t.json({ok:!0,warnings:c})}),e.get("/@api/variables/values",async(e,t)=>{const{distService:s,miAPI:n}=r.deps;try{const e=await bs(s),r=await n.getLivePageVariables(),a=function(e,t){const s=new Map((e?.tags??[]).map(e=>[e.name,e])),n=new Map(t.map(e=>[e.name,e.value])),r=new Set([...s.keys(),...n.keys()]);return Array.from(r).map(e=>({name:e,value:n.get(e)??s.get(e)?.default_value??""}))}(e,r);t.json({schema:e,live:r,combined:a,local:n.localPageVariables??null})}catch(e){t.status(502).json({error:"Failed to fetch live page variables.",details:e instanceof Error?e.message:String(e)})}}),e.put("/@api/variables/values",async(e,t)=>{const{distService:s,miAPI:n}=r.deps,a=function(e){const t="object"==typeof e&&null!==e?e.tags:void 0;if(!Array.isArray(t))return null;const s=[];for(const e of t){if("object"!=typeof e||null===e)return null;const{name:t,value:n}=e;if("string"!=typeof t||!t||"string"!=typeof n)return null;s.push({name:t,value:n})}return s}(e.body);if(a)try{const e=await bs(s),r=new Map((e?.tags??[]).map(e=>[e.name,e])),i=[];for(const e of a){const t=r.get(e.name);t&&i.push(...hs(t,e.value))}let o;await n.applyPageVariables(a);try{await n.reloadPageVariables()}catch(e){o=e instanceof Error?e.message:String(e)}t.json({ok:!0,warnings:i,local:n.localPageVariables??null,...o?{localError:o}:{}})}catch(e){t.status(502).json({error:"Failed to save live page variables.",details:e instanceof Error?e.message:String(e)})}else t.status(400).json({error:"Request body must be { tags: {name, value}[] }."})}),e.post("/@api/variables/values/local",async(e,t)=>{const{miAPI:s}=r.deps;try{await s.reloadPageVariables(),t.json({local:s.localPageVariables??null})}catch(e){t.status(502).json({error:"Failed to update the local values.",details:e instanceof Error?e.message:String(e)})}}),e.get("/@api/variables/pages",async(e,t)=>{const{miAPI:s}=r.deps;try{const e=await s.listPages(),n=e.find(e=>e.internal_name===s.internalPageName)??null,r=e.filter(e=>e.internal_name!==s.internalPageName).map(e=>({id:e.id,name:e.name,internal_name:e.internal_name,sameTemplate:!!n&&(null!=n.template_id?e.template_id===n.template_id:!!n.template&&e.template===n.template)}));t.json({pages:r,currentPageName:n?.name??null})}catch(e){t.status(502).json({error:"Failed to fetch the page list.",details:e instanceof Error?e.message:String(e)})}}),e.get("/@api/variables/import-plan/:pageId",async(e,t)=>{const{distService:s,miAPI:n}=r.deps,a=Number(e.params.pageId);if(!Number.isInteger(a)||a<=0)t.status(400).json({error:"pageId must be a positive integer."});else try{const e=await bs(s),r=await n.getPageVariablesFor(a);t.json(function(e,t){const s=new Map((e?.tags??[]).map(e=>[e.name,e])),n=[],r=[];for(const e of t){const t=s.get(e.name);if(!t){r.push({name:e.name,sourceValue:e.value,reason:"Not in the current page's schema."});continue}const a=ms(t,e.value);a?r.push({name:e.name,sourceValue:e.value,reason:a}):n.push({name:e.name,sourceValue:e.value,tagType:t.tag_type||"text"})}return{importable:n,skipped:r}}(e,r))}catch(e){t.status(502).json({error:"Failed to fetch values from the selected page.",details:e instanceof Error?e.message:String(e)})}}),W(e,{path:gs,name:"variables-editor",clientDir:s,values:()=>({templateLess:String(Boolean(r.deps.miAPI.isTemplateLess))})})}const $s="/@api/users",xs=new WeakMap;function Ss(e,t){const s=ze(t,e.name);return{name:e.name,kind:e.kind,...e.state?{state:e.state}:{},..."session"===e.kind?{loginUrl:`${s}/login`}:{},miUser:e.miUser,origin:s}}function As(e,t,s,n){e.status(t).json({error:n,code:s})}function Es(e){let t;try{t=JSON.parse(U.readFileSync(e,"utf-8"))}catch(t){return"ENOENT"!==t.code&&o().warn(c.yellow(`Could not read the saved users from ${e}: ${String(t)}`)),[]}const s=t&&"object"==typeof t&&!Array.isArray(t)?t.users:void 0;return(Array.isArray(s)?s:[]).filter(e=>"string"==typeof e?.name&&"string"==typeof e.token&&Boolean(e.token))}const Ts=new WeakMap,Is=new WeakMap;function Ns(e){Ts.delete(e),Is.get(e)?.(),Is.delete(e)}async function js(e,t){const s=function(e,t,s=H.homedir()){const n=O("sha256").update(`${D.resolve(e)}\n${t.replace(/\/+$/,"")}`).digest("hex").slice(0,16);return D.join(s,".pp-dev","users",`${n}.json`)}(t.projectRoot,t.miUrl,t.homeDir),n={project:D.resolve(t.projectRoot),miUrl:t.miUrl},r=o();if(Ts.get(e)===s)return;Ns(e),Ts.set(e,s);const a=Es(s);let i=!0,l=!1,d=e.list().some(e=>"token"===e.kind&&e.token);const u=new Set,p=new Set,h=()=>{const t=e.list(),a=t.filter(e=>"token"===e.kind&&e.token).map(e=>({name:e.name,token:e.token})),i=new Set(t.map(e=>e.name)),o=Es(s).filter(e=>!i.has(e.name)&&!p.has(e.name));try{!function(e,t,s){const n={version:1,...s,users:t},r=`${e}.${process.pid}.tmp`;U.mkdirSync(D.dirname(e),{recursive:!0,mode:448}),U.writeFileSync(r,`${JSON.stringify(n,null,2)}\n`,{mode:384}),U.renameSync(r,e),U.chmodSync(e,384)}(s,[...a,...o],n)}catch(e){r.warn(c.yellow(`Could not save the users to ${s}: ${String(e)}`))}},m=e.onRemove(t=>{Ts.get(e)===s&&(p.add(t.name),i&&u.add(t.name))}),g=e.onChange(()=>{Ts.get(e)===s&&(i?d||=!l:h())});Is.set(e,()=>{m(),g()});try{const n=await Promise.all(a.map(e=>t.checkToken(e.token)));if(Ts.get(e)!==s)return;a.forEach((t,s)=>{if(_e(t.name)||e.get(t.name)||u.has(t.name))return;const a=n[s];l=!0;try{e.add({name:t.name,kind:"token",token:t.token,...a.ok?{miUser:a.miUser}:{},...!a.ok&&a.rejected?{state:"expired"}:{}})}finally{l=!1}a.ok||r.warn(c.yellow(`Restored user ${t.name}: ${a.message}`))})}finally{i=!1}d&&Ts.get(e)===s&&h(),a.length&&r.info(`${c.blue("Restored")} ${a.length} ${c.blue("saved user(s) from")} ${s}`)}function Ps(e){const t=`${D.resolve(e.projectRoot)}\n${e.miUrl.replace(/\/+$/,"")}`;qe.context!==t&&(Ns(qe),qe.useContext(t)),e.persist?e.miAPI.personalAccessToken?js(qe,{projectRoot:e.projectRoot,miUrl:e.miUrl,checkToken:t=>Ye(e.miAPI,t)}).catch(e=>{o().warn(c.yellow(`Could not restore the saved users: ${String(e)}`))}):o().warn(c.yellow("users.persist is on, but users need your own API token (mi.token or MI_ACCESS_TOKEN).")):Ns(qe)}function Ls(e,t){return{headers:{host:new URL(e).host,referer:e,origin:e.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},appId:t.appId,templateLess:t.templateLess,disableSSLValidation:t.disableSSLValidation,v7Features:t.v7Features,personalAccessToken:t.personalAccessToken??process.env.MI_ACCESS_TOKEN}}function Fs(e){const t=Number(e);return!t||Number.isNaN(t)||t<0?6e5:t}function Rs(e){return new RegExp(`^((${t=e,t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")})|/)$`);var t}function Bs(e){return["/@vite","/@metricinsights","/@",e.endsWith("/")?e.slice(0,-1):e]}function Cs(e){const{distService:t,miAPI:s}=e,n=new rs(e.server,{distService:t,miAPI:s});return ks(e.internalServer,{distService:t,miAPI:s}),function(e,t){const s=xs.get(e);if(s)return void(s.deps=t);const n={deps:t};xs.set(e,n);const r=o(),a=()=>n.deps.users??qe;e.get($s,(e,t)=>{const s=a();t.json({available:Boolean(n.deps.miAPI.personalAccessToken),users:s.list().map(t=>Ss(t,e)),defaultUser:s.defaultUser?.name??null})}),e.put(`${$s}/default`,(e,t)=>{const s=a(),n=(e.body??{}).name;if(null===n||"string"==typeof n)if(null===n||s.get(n)){try{s.setDefaultUser(n??void 0)}catch(e){return void As(t,409,"NOT_LOGGED_IN",e instanceof Error?e.message:String(e))}r.info(`${c.blue("Default user:")} ${c.yellow(n??"the original user")}`),t.json({defaultUser:n})}else As(t,404,"NOT_FOUND",`There is no user named "${n}"`);else As(t,400,"INVALID_NAME","name must be a user name or null")}),e.post($s,async(e,t)=>{const{miAPI:s}=n.deps,i=a(),o=e.body??{},l="string"==typeof o.name?o.name:"",d="string"==typeof o.token?o.token.trim():"",u=o.kind??"token";if("token"!==u&&"session"!==u)return void As(t,400,"INVALID_KIND",'kind must be "token" or "session"');if(!s.personalAccessToken)return void As(t,409,"ORIGINAL_TOKEN_REQUIRED","Adding users needs your own API token: set mi.token or MI_ACCESS_TOKEN.");const p=_e(l);if(p)return void As(t,400,"INVALID_NAME",p);if(i.get(l))return void As(t,409,"NAME_TAKEN",`A user named "${l}" already exists`);if("session"===u){const s=i.add({name:l,kind:"session"});return r.info(`${c.blue("Added user")} ${c.yellow(s.name)}: log in at ${ze(e,s.name)}/login`),void t.status(201).json({user:Ss(s,e)})}if(!d)return void As(t,400,"TOKEN_REQUIRED","The API token is required");const h=i.context,m=await Ye(s,d);if(i.context!==h||n.deps.miAPI!==s||a()!==i)return void As(t,409,"CONTEXT_CHANGED","The dev server switched to another MI instance; add the user again");if(!m.ok)return void(m.rejected?As(t,400,"INVALID_TOKEN",m.message):As(t,502,"MI_UNAVAILABLE",m.message));const{miUser:g}=m;let f;try{f=i.add({name:l,kind:"token",token:d,miUser:g})}catch(e){return void As(t,409,"NAME_TAKEN",e instanceof Error?e.message:String(e))}r.info(`${c.blue("Added user")} ${c.yellow(f.name)} (MI user ${g.id}${g.username?`, ${g.username}`:""}) at ${ze(e,f.name)}`),t.status(201).json({user:Ss(f,e)})}),e.patch(`${$s}/:name`,async(e,t)=>{const{miAPI:s}=n.deps,i=a(),o=String(e.params.name),l=i.get(o),d=e.body??{},u="string"==typeof d.name&&d.name?d.name:o,p="string"==typeof d.token?d.token.trim():"";if(!l)return void As(t,404,"NOT_FOUND",`There is no user named "${o}"`);if("token"!==l.kind)return void As(t,400,"NOT_EDITABLE","Only users added with an API token can be edited. Remove this user and add it again.");const h=_e(u);if(h)return void As(t,400,"INVALID_NAME",h);if(u!==o&&i.get(u))return void As(t,409,"NAME_TAKEN",`A user named "${u}" already exists`);let m,g={...l,name:u};if(p&&p!==l.token){const e=i.context,r=await Ye(s,p);if(i.context!==e||n.deps.miAPI!==s||a()!==i)return void As(t,409,"CONTEXT_CHANGED","The dev server switched to another MI instance; edit the user again");if(!r.ok)return void(r.rejected?As(t,400,"INVALID_TOKEN",r.message):As(t,502,"MI_UNAVAILABLE",r.message));const{state:o,...c}=g;g={...c,token:p,miUser:r.miUser}}if(i.get(o)===l)if(u!==o||g.token!==l.token){try{m=i.replace(o,g)}catch(e){return void As(t,409,"NAME_TAKEN",e instanceof Error?e.message:String(e))}r.info(`${c.blue("Edited user")} ${c.yellow(o)}${u!==o?` → ${c.yellow(u)}`:""}${m.token!==l.token?" (new API token)":""}`),t.json({user:Ss(m,e)})}else t.json({user:Ss(l,e)});else As(t,409,"USER_CHANGED",`The user "${o}" changed meanwhile; edit it again`)}),e.delete(`${$s}/:name`,(e,t)=>{const s=String(e.params.name);a().remove(s)?(r.info(`${c.blue("Removed user")} ${c.yellow(s)}`),t.status(204).end()):As(t,404,"NOT_FOUND",`There is no user named "${s}"`)})}(e.internalServer,{miAPI:s}),Ps({persist:e.persistUsers,miAPI:s,projectRoot:e.projectRoot,miUrl:e.miUrl}),n}const Os="10mb",Ms=(e,t,s,n)=>{const r="number"==typeof e?.status?e.status:void 0;if(!r||r<400||r>=500||"string"!=typeof e.type||s.headersSent)return void n(e);const a="entity.too.large"===e.type?`The request body is larger than the dev server accepts (${Os}).`:`The request body could not be read: ${e.message}`;s.status(r).json({error:a})};function Us({allowedHosts:e=[]}={}){const t=_();return t.use(g(e)),t.use(_.json({limit:Os})),t.use(_.urlencoded({extended:!0})),t.use(Ms),t}function Hs(e){return(e.requestBody?.byteLength??0)+(e.responseBody?.byteLength??0)+512}function Ds(e){return{id:e.id,timestamp:e.timestamp,method:e.method,url:e.url,statusCode:e.statusCode,duration:e.duration,source:e.source,user:e.user,requestSize:e.requestBody?.byteLength??0,responseSize:e.responseBody?.byteLength??0,requestBodyTruncated:e.requestBodyTruncated,responseBodyTruncated:e.responseBodyTruncated}}class _s{entries=new Map;insertOrder=[];head=0;totalSize=0;maxMemory;maxEntries;constructor(e=1073741824,t=1e4){this.maxMemory=e,this.maxEntries=t}evictOldest(){const e=this.insertOrder[this.head++],t=this.entries.get(e);t&&(this.totalSize-=Hs(t),this.entries.delete(e)),this.head>=1024&&2*this.head>=this.insertOrder.length&&(this.insertOrder=this.insertOrder.slice(this.head),this.head=0)}allocateId(){return M()}add(e){let t=e,s=(e.requestBody?.byteLength??0)+(e.responseBody?.byteLength??0);s>this.maxMemory&&(t={...e,requestBody:null,responseBody:null,requestBodyTruncated:e.requestBodyTruncated||null!==e.requestBody,responseBodyTruncated:e.responseBodyTruncated||null!==e.responseBody},s=0);const n=Hs(t);for(;(this.totalSize+n>this.maxMemory||this.entries.size>=this.maxEntries)&&this.head<this.insertOrder.length;)this.evictOldest();this.entries.set(t.id,t),this.insertOrder.push(t.id),this.totalSize+=n}get(e){return this.entries.get(e)}list(e){const t=e?.method?.toUpperCase(),s=e?.search?.toLowerCase(),n=e=>(!t||e.method===t)&&(!s||e.url.toLowerCase().includes(s)),r=Number.isFinite(e?.limit)?e.limit:1/0,a=[];if(r<=0)return a;if(void 0===e?.offset){for(let e=this.insertOrder.length-1;e>=this.head&&a.length<r;e-=1){const t=this.entries.get(this.insertOrder[e]);t&&n(t)&&a.push(Ds(t))}return a.reverse()}let i=Number.isFinite(e.offset)?Math.max(0,e.offset):0;for(let e=this.head;e<this.insertOrder.length&&a.length<r;e+=1){const t=this.entries.get(this.insertOrder[e]);t&&n(t)&&(i>0?i-=1:a.push(Ds(t)))}return a}clear(){this.entries.clear(),this.insertOrder=[],this.head=0,this.totalSize=0}get size(){return this.entries.size}get memoryUsage(){return this.totalSize}}const Vs="<redacted>",zs=new RegExp(`(^|;\\s*)(${Te}=)[^;]*`,"gi"),qs=new RegExp(`^(\\s*${Te}=)[^;]*`,"i");function Ws(e){const t={...e};if("string"==typeof t.authorization){const[e,s]=t.authorization.split(/\s+/,2);t.authorization=void 0===s?Vs:`${e} ${Vs}`}return void 0!==t.token&&(t.token=Vs),"string"==typeof t.cookie&&(t.cookie=t.cookie.replace(zs,`$1$2${Vs}`)),t}function Js(e){const t={...e},s=t["set-cookie"],n=e=>e.replace(qs,`$1${Vs}`);return Array.isArray(s)?t["set-cookie"]=s.map(n):"string"==typeof s&&(t["set-cookie"]=n(s)),t}const Zs=/^\/(?:login|auth)(?:[/?#]|$)/i,Ks=/pass(?:word|wd|code)?|pwd|secret|token|otp|mfa|2fa/i;function Gs(e,t){return Array.isArray(e)?e.map(e=>Gs(e,t)):e&&"object"==typeof e?Object.fromEntries(Object.entries(e).map(([e,s])=>Ks.test(e)?(t.any=!0,[e,Vs]):[e,Gs(s,t)])):e}function Xs(e,t,s){if(!s)return s;if(Zs.test(e))return Buffer.from(Vs);const n=(t??"").split(";",1)[0].trim().toLowerCase();try{if("application/x-www-form-urlencoded"===n){const e=new URLSearchParams(s.toString("utf8")),t=[...new Set(e.keys())].filter(e=>Ks.test(e));return t.forEach(t=>e.set(t,Vs)),t.length?Buffer.from(e.toString()):s}if("application/json"===n||n.endsWith("+json")){const e={any:!1},t=Gs(JSON.parse(s.toString("utf8")),e);return e.any?Buffer.from(JSON.stringify(t)):s}}catch{}return s}const Ys=["/@","/_next/","/__nextjs_"],Qs=new Set(["/favicon.ico","/installHook.js.map"]);function en(e,t=10485760,s=qe){return(n,r,a)=>{const i=n.url||"/",o=i.split("?")[0];if(Ys.some(e=>i.startsWith(e))||Qs.has(o))return void a();const c=e.allocateId(),l=s.resolve(n)?.user?.name,d=Date.now(),u=[];let p=0,h=!1;const m=n.emit.bind(n);n.emit=(e,...s)=>{if("data"===e&&!h){const e=s[0],n=Buffer.isBuffer(e)?e:Buffer.from(String(e));p+=n.byteLength,p<=t?u.push(n):(h=!0,u.length=0)}return m(e,...s)};const g=[];let f=0,y=!1;const w=r.write.bind(r),v=r.end.bind(r);function b(e,s){if(!y&&null!=e)try{const n=Buffer.isBuffer(e)?e:"string"==typeof e?Buffer.from(e,s):ArrayBuffer.isView(e)?Buffer.from(e.buffer,e.byteOffset,e.byteLength):e instanceof ArrayBuffer?Buffer.from(e):Buffer.from(String(e));f+=n.byteLength,f<=t?g.push(n):(y=!0,g.length=0)}catch{}}function k(e){return"string"==typeof e[0]?e[0]:void 0}function $(){const e=r.getHeaders();return e["x-pp-proxy"]?"hit"===e["x-pp-cache"]?"proxy-cache":"proxy":"local"}let x=!1;r.write=function(e,...t){return b(e,k(t)),w(e,...t)},r.end=function(t,...s){return"function"!=typeof t&&b(t,k(s)),function(){if(x)return;x=!0;const t=Xs(i,"string"==typeof n.headers["content-type"]?n.headers["content-type"]:void 0,!h&&u.length>0?Buffer.concat(u):null),s=!y&&g.length>0?Buffer.concat(g):null;e.add({id:c,timestamp:d,method:n.method||"GET",url:i,statusCode:r.statusCode??null,duration:Date.now()-d,source:$(),user:l,requestHeaders:Ws(n.headers),requestBody:t,requestBodyTruncated:h,responseHeaders:Js(r.getHeaders()),responseBody:s,responseBodyTruncated:y})}(),v(t,...s)},a()}}export{ns as D,Z as I,Me as M,V as P,_s as R,$s as U,gs as V,en as a,We as b,Us as c,Fs as d,Et as e,Rs as f,Ls as g,Ct as h,de as i,ut as j,Bs as k,se as l,Dt as m,_t as n,Wt as o,Ve as p,bt as q,X as r,Cs as s,Ps as t,ie as u,ce as v,Pe as w,Ae as x,Re as y,Ht as z};
|
|
2
|
+
//# sourceMappingURL=request-capture.middleware-B9t-px8Z.js.map
|