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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +198 -0
  2. package/README.md +298 -266
  3. package/dist/CHANGELOG.md +198 -0
  4. package/dist/README.md +298 -266
  5. package/dist/cjs/cli.js +1 -1
  6. package/dist/cjs/cli.js.map +1 -1
  7. package/dist/cjs/helpers.js +1 -1
  8. package/dist/cjs/helpers.js.map +1 -1
  9. package/dist/cjs/index-DeUfAH6g.js +2 -0
  10. package/dist/cjs/index-DeUfAH6g.js.map +1 -0
  11. package/dist/cjs/index.js +1 -1
  12. package/dist/cjs/migrate-r2mXdGLZ.js +2 -0
  13. package/dist/cjs/migrate-r2mXdGLZ.js.map +1 -0
  14. package/dist/cjs/package.json +16 -16
  15. package/dist/cjs/plugin-Cm9vRLCu.js +2 -0
  16. package/dist/cjs/plugin-Cm9vRLCu.js.map +1 -0
  17. package/dist/cjs/plugin.js +1 -1
  18. package/dist/cjs/version-plugin-DsC5NLoX.js +2 -0
  19. package/dist/cjs/{version-plugin-DUKsGBsW.js.map → version-plugin-DsC5NLoX.js.map} +1 -1
  20. package/dist/client/client.css +1 -1
  21. package/dist/client/client.css.map +1 -1
  22. package/dist/client/client.js +509 -47
  23. package/dist/client/client.js.map +1 -1
  24. package/dist/client/index.html +71 -18
  25. package/dist/esm/cli.js +1 -1
  26. package/dist/esm/cli.js.map +1 -1
  27. package/dist/esm/helpers.js +1 -1
  28. package/dist/esm/helpers.js.map +1 -1
  29. package/dist/esm/index-DOjGFYJ7.js +2 -0
  30. package/dist/esm/index-DOjGFYJ7.js.map +1 -0
  31. package/dist/esm/index.js +1 -1
  32. package/dist/esm/migrate-BYuCtRbI.js +2 -0
  33. package/dist/esm/migrate-BYuCtRbI.js.map +1 -0
  34. package/dist/esm/package.json +16 -16
  35. package/dist/esm/plugin-B2ocw-wb.js +2 -0
  36. package/dist/esm/plugin-B2ocw-wb.js.map +1 -0
  37. package/dist/esm/plugin.js +1 -1
  38. package/dist/esm/version-plugin-BGWVTSsN.js +2 -0
  39. package/dist/esm/{version-plugin-C7j2jDQX.js.map → version-plugin-BGWVTSsN.js.map} +1 -1
  40. package/dist/types/index.d.ts +116 -139
  41. package/package.json +34 -28
  42. package/dist/cjs/index-Bb3yIW5d.js +0 -2
  43. package/dist/cjs/index-Bb3yIW5d.js.map +0 -1
  44. package/dist/cjs/plugin-CqahMAGe.js +0 -2
  45. package/dist/cjs/plugin-CqahMAGe.js.map +0 -1
  46. package/dist/cjs/version-plugin-DUKsGBsW.js +0 -2
  47. package/dist/esm/index-Cd-DmbPQ.js +0 -2
  48. package/dist/esm/index-Cd-DmbPQ.js.map +0 -1
  49. package/dist/esm/plugin-BeehFkJq.js +0 -2
  50. package/dist/esm/plugin-BeehFkJq.js.map +0 -1
  51. package/dist/esm/version-plugin-C7j2jDQX.js +0 -2
@@ -3,25 +3,93 @@ import { ViteImageOptimizer } from 'vite-plugin-image-optimizer';
3
3
  import next, { NextConfig } from 'next';
4
4
  import * as nextConstants from 'next/constants';
5
5
 
6
- type RequiredSelection<T, K extends keyof T> = Required<Pick<T, K>> & Omit<T, K>;
7
- interface DistZipOptions {
8
- /**
9
- * Output ZIP archive file name.
10
- * You can use `[templateName]` placeholder to replace it with the template name.
11
- * @default `${templateName}.zip`
12
- */
13
- outFileName?: string;
14
- /**
15
- * Output directory for the build.
16
- * @default 'dist-zip'
17
- */
6
+ type MiMode = 'standalone' | 'embedding';
7
+ type MiInclude = 'shared-components' | 'top-bar';
8
+ type AppType = 'page' | 'template';
9
+ interface MiConfig {
10
+ /** MI instance base URL. Falls back to process.env.MI_BACKEND_URL. */
11
+ url?: string;
12
+ /** Personal Access Token. Falls back to process.env.MI_ACCESS_TOKEN. */
13
+ token?: string;
14
+ /** How the page integrates into MI. @default 'standalone' */
15
+ mode?: MiMode;
16
+ /** Optional MI shared resources. Only valid when mode === 'standalone'. */
17
+ include?: MiInclude;
18
+ /** MI API/routing version. @default 7 */
19
+ apiVersion?: 6 | 7;
20
+ }
21
+ interface AppConfig {
22
+ /** Portal page / app ID on MI. Required for type=template and type=page+standalone. */
23
+ id?: number;
24
+ /** Internal asset name. @default package.json#name */
25
+ name?: string;
26
+ /** App type affecting routing and data loading. @default 'template' */
27
+ type?: AppType;
28
+ }
29
+ interface ProxyConfig {
30
+ /** Enable request caching to the backend. @default true */
31
+ cache?: boolean;
32
+ /** Cache TTL in milliseconds. @default 600000 */
33
+ cacheTtl?: number;
34
+ tls?: {
35
+ /** Allow self-signed TLS certificates. @default false */
36
+ allowSelfSigned?: boolean;
37
+ };
38
+ }
39
+ interface DistZipBuildConfig {
40
+ /** Output ZIP file name. @default '<app.name>.zip' */
41
+ fileName?: string;
42
+ /** Output directory for the ZIP archive. @default 'dist-zip' */
18
43
  outDir?: string;
19
- /**
20
- * Input directory for the build.
21
- * @default 'dist'
22
- */
44
+ /** Input directory to zip. @default value of build.outDir */
23
45
  inDir?: string;
24
46
  }
47
+ interface VersionFileBuildConfig {
48
+ /** @default true */
49
+ enabled?: boolean;
50
+ /** @default 'VERSION-v{packageversion}-{currentDate}.json' */
51
+ fileNameTemplate?: string;
52
+ }
53
+ interface BuildConfig {
54
+ /** Build output directory. @default 'dist' */
55
+ outDir?: string;
56
+ /** Pack build output into a ZIP archive. @default true */
57
+ zip?: boolean | DistZipBuildConfig;
58
+ /** Create a VERSION JSON file with SHA256 hashes. @default true */
59
+ versionFile?: boolean | VersionFileBuildConfig;
60
+ /** Image optimisation options. @default true */
61
+ imageOptimisations?: boolean | Record<string, unknown>;
62
+ }
63
+ interface SyncConfig {
64
+ /** Directory for sync backups. @default 'backups' */
65
+ backupsDir?: string;
66
+ }
67
+ interface InspectorConfig {
68
+ /** Enable the request inspector web UI at /@pp-dev/inspector. @default true */
69
+ enabled?: boolean;
70
+ /** Maximum RAM for stored request/response payloads in bytes. @default 1073741824 (1 GB) */
71
+ maxMemory?: number;
72
+ /** Maximum bytes captured per individual request/response body. @default 10485760 (10 MB) */
73
+ captureLimit?: number;
74
+ }
75
+ type DevPanelPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
76
+ interface DevPanelConfig {
77
+ /** Screen corner the dev panel is anchored to. @default 'bottom-right' */
78
+ position?: DevPanelPosition;
79
+ /** Fully hide the panel. Restore in the browser with ?pp-dev-panel=show. @default false */
80
+ hidden?: boolean;
81
+ /** Auto-hide: the panel slides behind the screen edge leaving a thin strip; hover reveals it. @default false */
82
+ autoHide?: boolean;
83
+ }
84
+ interface PPDevConfig {
85
+ mi?: MiConfig;
86
+ app?: AppConfig;
87
+ proxy?: ProxyConfig;
88
+ build?: BuildConfig;
89
+ sync?: SyncConfig;
90
+ inspector?: InspectorConfig;
91
+ devPanel?: DevPanelConfig;
92
+ }
25
93
  interface VersionPluginOptions {
26
94
  /**
27
95
  * Version file filename template.
@@ -29,130 +97,45 @@ interface VersionPluginOptions {
29
97
  * @default "VERSION-v{packageversion}-{currentDate}.json"
30
98
  */
31
99
  versionFileTemplate?: string;
32
- /**
33
- * Enable or disable the version plugin.
34
- * @default true
35
- */
100
+ /** @default true */
36
101
  enabled?: boolean;
37
102
  }
38
- interface VitePPDevOptions {
39
- /**
40
- * Backend base URL to MI instance for the local proxy.
41
- */
103
+ /** @internal — used by the Vite plugin and CLI; not part of the public API. */
104
+ interface NormalizedVitePPDevOptions {
105
+ templateName: string;
42
106
  backendBaseURL?: string;
43
- /**
44
- * Portal page ID on the MI instance.
45
- * @deprecated Use appId instead
46
- */
47
- portalPageId?: number;
48
- /**
49
- * Application ID on the MI instance.
50
- * This is a synonym for portalPageId.
51
- */
52
107
  appId?: number;
53
- /**
54
- * Template name or PP internal name that will be used for the asset generation.
55
- * Equals to package.json name field value.
56
- */
57
- templateName: string;
58
- /**
59
- * Enable or disable template variables loading from the backend.
60
- */
61
- templateLess?: boolean;
62
- /**
63
- * Enable or disable MI top bar and scripts loading from the backend for local development.
64
- */
65
- miHudLess?: boolean;
66
- /**
67
- * Integrate MI Top Bar and script into the App build.
68
- *
69
- * Depends on `miHudLess` option. Can be used only if `miHudLess` is enabled (true).
70
- *
71
- * @since 0.11.0
72
- * @default false
73
- */
74
- integrateMiTopBar?: boolean | {
75
- /**
76
- * Add MI Top Bar root element to the build.
77
- * If disabled, you will need to add the root element manually to the HTML.
78
- * @default false
79
- */
108
+ templateLess: boolean;
109
+ miHudLess: boolean;
110
+ integrateMiTopBar: boolean | {
80
111
  addRootElement?: boolean;
81
- /**
82
- * Add MI Shared Components scripts to the build.
83
- * @default false
84
- */
85
112
  addSharedComponentsScripts?: boolean;
86
113
  };
87
- /**
88
- * Enable or disable request caching to the backend by the local proxy.
89
- * @default true
90
- */
91
- enableProxyCache?: boolean;
92
- /**
93
- * Request caching time in milliseconds.
94
- * @default 600000 (10 minutes)
95
- */
96
- proxyCacheTTL?: number;
97
- /**
98
- * Disable SSL certificate validation for MI instances with self-signed certificates.
99
- * @default false
100
- */
101
- disableSSLValidation?: boolean;
102
- /**
103
- * Image optimizer options.
104
- * @default true
105
- */
106
- imageOptimizer?: boolean | Parameters<typeof ViteImageOptimizer>[0];
107
- /**
108
- * Output directory for the build.
109
- * @default 'dist'
110
- */
111
- outDir?: string;
112
- /**
113
- * Disable or enable packing the build output into a ZIP archive.
114
- * @default true
115
- */
116
- distZip?: boolean | DistZipOptions;
117
- /**
118
- * Create a VERSION JSON file with SHA256 hashes of all build output files.
119
- * @default true
120
- */
121
- versionPlugin?: boolean | VersionPluginOptions;
122
- /**
123
- * Backups an asset directory path for sync with the MI instance.
124
- * @default backups
125
- */
126
- syncBackupsDir?: string;
127
- /**
128
- * Enable Metric Insights v7 features.
129
- * @default false
130
- * @since 0.8.0
131
- */
132
- v7Features?: boolean;
133
- /**
134
- * Personal Access Token for the MI instance.
135
- * @default process.env.MI_ACCESS_TOKEN
136
- * @since 0.10.0
137
- * @example
138
- * ```ts
139
- * import vitePPDev from '@metricinsights/pp-dev';
140
- *
141
- * export default vitePPDev({
142
- * personalAccessToken: process.env.MI_ACCESS_TOKEN,
143
- * // other options...
144
- * });
145
- * ```
146
- */
114
+ enableProxyCache: boolean;
115
+ proxyCacheTTL: number;
116
+ disableSSLValidation: boolean;
117
+ imageOptimizer: boolean | Parameters<typeof ViteImageOptimizer>[0];
118
+ outDir: string;
119
+ distZip: false | {
120
+ outFileName: string;
121
+ outDir: string;
122
+ inDir?: string;
123
+ };
124
+ versionPlugin: false | VersionPluginOptions;
125
+ syncBackupsDir: string;
126
+ v7Features: boolean;
147
127
  personalAccessToken?: string;
128
+ inspectorEnabled: boolean;
129
+ inspectorMaxMemory: number;
130
+ inspectorCaptureLimit: number;
131
+ devPanelPosition: DevPanelPosition;
132
+ devPanelHidden: boolean;
133
+ devPanelAutoHide: boolean;
148
134
  }
149
- type NormalizedVitePPDevOptions = RequiredSelection<VitePPDevOptions, 'templateName' | 'templateLess' | 'miHudLess' | 'integrateMiTopBar' | 'enableProxyCache' | 'proxyCacheTTL' | 'disableSSLValidation' | 'imageOptimizer' | 'outDir' | 'distZip' | 'versionPlugin' | 'syncBackupsDir' | 'v7Features' | 'personalAccessToken'>;
135
+ declare function validatePPDevConfig(config: PPDevConfig, templateName: string): void;
136
+ declare function normalizePPDevConfig(config: PPDevConfig, templateName: string): NormalizedVitePPDevOptions;
150
137
 
151
- type PPDevConfig = Omit<VitePPDevOptions, 'templateName'>;
152
- type PPWatchConfig = {
153
- baseURL: string;
154
- portalPageId: number;
155
- };
138
+ declare function defineConfig(config: PPDevConfig): PPDevConfig;
156
139
 
157
140
  /**
158
141
  * Safe Next.js import utility
@@ -226,12 +209,6 @@ declare class AuthProvider {
226
209
  * Notify all listeners of state changes
227
210
  */
228
211
  private notifyListeners;
229
- /**
230
- * Get authentication info for debugging
231
- */
232
- getDebugInfo(): AuthState & {
233
- listenerCount: number;
234
- };
235
212
  }
236
213
  declare const authProvider: AuthProvider;
237
214
 
@@ -260,7 +237,7 @@ declare function getViteConfig(): Promise<InlineConfig>;
260
237
  * ```ts
261
238
  * // In next.config.js - use withPPDev to avoid validation warnings
262
239
  * const { withPPDev } = require('@metricinsights/pp-dev');
263
- * module.exports = withPPDev({ ... }, { backendBaseURL: '...' });
240
+ * module.exports = withPPDev({ ... }, { mi: { url: '...' } });
264
241
  *
265
242
  * // Or use standalone pp-dev.config.js (preferred - no Next.js config pollution)
266
243
  * module.exports = { ... }; // your next config
@@ -287,5 +264,5 @@ declare function withPPDev(nextjsConfig: NextConfig | ((phase: string, nextConfi
287
264
  defaultConfig?: any;
288
265
  }) => Promise<NextConfig>;
289
266
 
290
- export { AuthProvider, authProvider, getNextVersion, getPPDevConfigFromNextConfig, getViteConfig, isNextAvailable, safeNextImport, withPPDev };
291
- export type { AuthState, PPDevConfig, PPWatchConfig };
267
+ export { AuthProvider, authProvider, defineConfig, getNextVersion, getPPDevConfigFromNextConfig, getViteConfig, isNextAvailable, normalizePPDevConfig, safeNextImport, validatePPDevConfig, withPPDev };
268
+ export type { AppConfig, AppType, AuthState, BuildConfig, DevPanelConfig, DevPanelPosition, MiConfig, MiInclude, MiMode, PPDevConfig, ProxyConfig, SyncConfig, VersionPluginOptions };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@metricinsights/pp-dev",
3
3
  "type": "module",
4
- "version": "0.19.0",
4
+ "version": "1.0.0-beta.2",
5
5
  "description": "Portal Page dev build tool",
6
6
  "bin": {
7
7
  "pp-dev": "bin/pp-dev.js"
@@ -14,7 +14,7 @@
14
14
  "prebuild": "npm run clean",
15
15
  "build": "npm run build:parallel",
16
16
  "build:parallel": "npm run build:node && npm run build:client",
17
- "build:node": "rollup --config rollup.config.ts --configPlugin typescript && node scripts/postbuild.js",
17
+ "build:node": "rollup --config rollup.config.ts --configPlugin typescript && node scripts/postbuild.js && node scripts/build-types.mjs",
18
18
  "build:client": "rollup --config src/client/rollup.config.ts --configPlugin typescript",
19
19
  "build:watch": "rollup --config rollup.config.ts --configPlugin typescript --watch",
20
20
  "build:analyze": "rollup --config rollup.config.ts --configPlugin typescript --configPlugin rollup-plugin-visualizer",
@@ -30,10 +30,14 @@
30
30
  "test:unit:watch": "vitest --config vitest.config.ts",
31
31
  "test:unit:coverage": "vitest run --config vitest.config.ts --coverage",
32
32
  "test:integration": "vitest run --config vitest.integration.config.ts",
33
+ "test:e2e": "vitest run --config vitest.e2e.config.ts",
34
+ "test:e2e:browser": "tsx scripts/run-playwright-e2e.ts",
35
+ "record:mi": "tsx tests/mock-mi/record.ts",
33
36
  "test:integration:watch": "vitest --config vitest.integration.config.ts",
34
- "test:e2e": "node scripts/run-tests.js",
35
37
  "test:e2e:ui": "npx playwright test --ui",
36
38
  "test:all": "npm run test:unit && npm run test:integration",
39
+ "lint": "eslint src",
40
+ "lint:fix": "eslint src --fix",
37
41
  "audit:all": "node scripts/audit-all.mjs",
38
42
  "prereinstall:all": "npm run build",
39
43
  "reinstall:all": "node scripts/reinstall-all.mjs"
@@ -67,22 +71,22 @@
67
71
  },
68
72
  "license": "ISC",
69
73
  "engines": {
70
- "node": ">=22.14"
74
+ "node": ">=24"
71
75
  },
72
76
  "overrides": {
73
77
  "@xmldom/xmldom": ">=0.8.12",
74
78
  "brace-expansion": "5.0.6",
75
79
  "chokidar": "^5.0.0",
76
- "file-type": "^22.0.0",
80
+ "file-type": "^22.0.1",
77
81
  "ip-address": "^10.2.0",
78
82
  "minimatch": "10.2.5",
79
83
  "next@*": {
80
84
  "postcss": "8.5.10"
81
85
  },
82
- "npm": ">=11.13.0",
86
+ "npm": ">=11.18.0",
83
87
  "qs": ">=6.15.2",
84
88
  "serialize-javascript": ">=7.0.5",
85
- "undici": ">=6.24.0",
89
+ "undici": "^7.28.0",
86
90
  "vite@*": {
87
91
  "postcss": "8.5.10"
88
92
  }
@@ -97,64 +101,66 @@
97
101
  }
98
102
  },
99
103
  "dependencies": {
100
- "axios": "^1.14.0",
104
+ "axios": "^1.18.1",
101
105
  "cac": "^7.0.0",
102
106
  "chokidar": "^5.0.0",
103
107
  "deepmerge-ts": "^7.1.5",
104
108
  "diff-match-patch": "^1.0.5",
105
109
  "dir-compare": "^5.0.0",
106
- "ejs": "^5.0.1",
107
- "esbuild": "^0.28.0",
110
+ "ejs": "^6.0.1",
111
+ "esbuild": "^0.28.1",
108
112
  "express": "^5.2.1",
109
113
  "extract-zip": "^2.0.1",
110
- "file-type": "^22.0.0",
114
+ "file-type": "^22.0.1",
111
115
  "formdata-node": "^6.0.3",
112
- "http-proxy-middleware": "^3.0.5",
116
+ "http-proxy-middleware": "^4.2.0",
113
117
  "isbinaryfile": "^6.0.0",
114
118
  "jsdom": "29.1.1",
115
119
  "jszip": "^3.10.1",
116
120
  "memory-cache": "^0.2.0",
117
121
  "picocolors": "^1.1.1",
118
- "rollup": "^4.60.1",
119
- "sass": "^1.99.0",
120
- "sharp": "^0.34.5",
122
+ "rollup": "^4.62.2",
123
+ "sass": "^1.101.0",
124
+ "sharp": "^0.35.3",
121
125
  "source-map-support": "^0.5.21",
122
126
  "svgo": "^4.0.1",
123
- "svgtofont": "^6.5.1",
127
+ "svgtofont": "^6.5.3",
124
128
  "typescript": "^6.0.3",
125
- "vite": "^8.0.11",
129
+ "vite": "^8.1.3",
126
130
  "vite-plugin-image-optimizer": "^2.0.3",
127
131
  "vite-plugin-zip-pack": "^1.2.4",
128
132
  "winston": "^3.19.0",
129
- "ws": "^8.18.3"
133
+ "ws": "^8.21.0"
130
134
  },
131
135
  "devDependencies": {
132
- "@playwright/test": "^1.59.1",
136
+ "@playwright/test": "^1.61.1",
133
137
  "@rollup/plugin-terser": "^1.0.0",
134
138
  "@rollup/plugin-typescript": "^12.3.0",
135
139
  "@rollup/plugin-url": "^8.0.2",
136
140
  "@semantic-release/changelog": "^6.0.3",
137
141
  "@semantic-release/git": "^10.0.1",
138
- "@types/diff": "^8.0.0",
139
142
  "@types/diff-match-patch": "^1.0.36",
140
143
  "@types/ejs": "^3.1.5",
141
144
  "@types/express": "^5.0.6",
142
- "@types/jsdom": "^28.0.1",
145
+ "@types/jsdom": "^28.0.3",
143
146
  "@types/memory-cache": "^0.2.6",
144
- "@types/node": "^25.5.2",
147
+ "@types/node": "^26.1.0",
145
148
  "@types/ws": "^8.18.1",
146
- "@vitest/coverage-v8": "^4.1.5",
149
+ "@vitest/coverage-v8": "^4.1.10",
147
150
  "connect": "^3.7.0",
148
- "next": "^16.2.7",
149
- "prettier": "^3.8.1",
151
+ "eslint": "^10.6.0",
152
+ "next": "^16.2.10",
153
+ "prettier": "^3.9.4",
150
154
  "rimraf": "^6.1.3",
151
155
  "rollup-plugin-dts": "^6.4.1",
152
156
  "rollup-plugin-scss": "^4.0.1",
153
157
  "rollup-plugin-visualizer": "7.0.1",
154
- "semantic-release": "^25.0.3",
158
+ "semantic-release": "^25.0.5",
155
159
  "tslib": "^2.8.1",
156
- "tsx": "^4.21.0",
157
- "vitest": "^4.1.5",
160
+ "tsx": "^4.23.0",
161
+ "typescript-eslint": "^8.63.0",
162
+ "undici": "^7.28.0",
163
+ "vitest": "^4.1.10",
158
164
  "yargs": "^18.0.0"
159
165
  },
160
166
  "files": [
@@ -1,2 +0,0 @@
1
- "use strict";const e=require("child_process"),t=require("./plugin-CqahMAGe.js"),n=require("fs"),i=require("path"),s=require("url"),r=require("vite"),o=require("ejs");var a="undefined"!=typeof document?document.currentScript:null;const c=e=>e&&"object"==typeof e&&"default"in e?e.default:e;function p(e){if(e&&"object"==typeof e&&"default"in e)return e;const t=Object.create(null);if(e)for(const n in e)t[n]=e[n];return t.default=e,Object.freeze(t)}const l=p(n),u=p(i),f=c(i),d=c(o),m=i.resolve("undefined"!=typeof __filename&&__filename||s.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-Bb3yIW5d.js",document.baseURI).href),"../../.."),g=i.resolve("undefined"!=typeof __filename&&__filename||s.fileURLToPath("undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-Bb3yIW5d.js",document.baseURI).href),"../.."),h=n.existsSync(i.resolve(m,"package.json"))?m:g,y=i.resolve(h,"dist/client/client.js"),{version:_,name:v}=JSON.parse(n.readFileSync(i.resolve(h,"package.json")).toString()),j=_,R=v,w=[".pp-watch.config.js",".pp-watch.config.ts",".pp-watch.config.json"],P=[".pp-dev.config.js",".pp-dev.config.cjs",".pp-dev.config.mjs",".pp-dev.config.ts",".pp-dev.config.cts",".pp-dev.config.mts",".pp-dev.config.json","pp-dev.config.js","pp-dev.config.cjs","pp-dev.config.mjs","pp-dev.config.ts","pp-dev.config.cts","pp-dev.config.mts","pp-dev.config.json"];const x=new class{cache;_maxSize;constructor(e=10){this._maxSize=e,this.cache=new Map}get maxSize(){return this._maxSize}set maxSize(e){this._maxSize=e}get(e){if(this.cache.has(e)){const t=this.cache.get(e);return this.cache.delete(e),this.cache.set(e,t),t}}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this._maxSize){const e=this.cache.keys().next().value;void 0!==e&&this.cache.delete(e)}this.cache.set(e,t)}clear(){this.cache.clear()}has(e){return this.cache.has(e)}}(5),T=new Map;let S;try{S="undefined"!=typeof __filename&&__filename?u.resolve(u.dirname(__filename),".."):void 0!=={url:"undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-Bb3yIW5d.js",document.baseURI).href}&&("undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-Bb3yIW5d.js",document.baseURI).href,1)&&("undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-Bb3yIW5d.js",document.baseURI).href)?u.resolve(s.fileURLToPath(new URL(".","undefined"==typeof document?require("url").pathToFileURL(__filename).href:a&&"SCRIPT"===a.tagName.toUpperCase()&&a.src||new URL("index-Bb3yIW5d.js",document.baseURI).href)),".."):process.cwd()}catch{S=process.cwd()}const I=`/${R}/client`,b=`/${I}`,U=new RegExp(`^\\/?${R}\\/client\\/(.*)$`);const $={templateCompilations:0,cacheHits:0,totalRequests:0};function C(e){let t="",n=!1,i=null;return{name:"pp-dev:client",apply:"serve",config:e=>(e.optimizeDeps?.exclude?.push(`${R}/client`),e),resolveId(e){if(U.test(e))return{id:r.normalizePath(u.join(h,"dist/client",e.replace(U,"$1")))}},transformIndexHtml:async(e,s)=>{$.totalRequests++;const r=s.server?.config.base||"";r!==t&&(t=r,n=!0,i=null),i&&!n||(x.has(t)?(i=x.get(t),$.cacheHits++):(i=function(e,t=!0){const n=e;if(t&&x.has(n))return x.get(n);const i=u.resolve(S,"client","index.html");let s;T.has(i)?s=T.get(i):(s=l.readFileSync(i,{encoding:"utf8"}),T.set(i,s));const r=b.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=d.compile(s.replace(new RegExp(r,"g"),u.posix.join(e,I)),{openDelimiter:"{",closeDelimiter:"}",async:!0,cache:!0,filename:i,rmWhitespace:!0,compileDebug:!1});return t&&x.set(n,o),o}(t,true),$.templateCompilations++),n=!1);const o=function(e){return{css:u.posix.join(e,R,"client/client.css"),js:u.posix.join(e,R,"client/client.js")}}(t),a={html:e,tags:[{tag:"link",injectTo:"head",attrs:{rel:"stylesheet",href:o.css}}]},{backendBaseURL:c,templateLess:p,portalPageId:f,canSync:m=!0}=s.server?.config.clientInjectionPlugin||{},g={PACKAGE_NAME:R,VERSION:j,backendBaseURL:c,templateLess:p,portalPageId:f,canSync:m};return a.tags.push({tag:"div",injectTo:"body-prepend",children:await i(g)}),a.tags.push({tag:"script",injectTo:"body-prepend",attrs:{src:o.js,type:"module"}}),a},configureServer(e){const t=r.normalizePath(u.resolve(e.config.root,u.dirname(y)));e.config.server?.fs?.allow&&e.config.server.fs.allow.push(t),e.middlewares.use("/@api/__pp-dev-metrics",(e,t)=>{t.setHeader("Content-Type","application/json"),t.end(JSON.stringify($,null,2))})},closeBundle(){x.clear(),T.clear()}}}const E=(e,t)=>` * ${t}`;function L(e){return`/*!\n${"***** DO NOT EDIT THIS CODE! *****\n***** ------- *****".replace(/^(.*)$/gm,E)}\n */`}async function N(){try{const[e,t]=await Promise.all([import("next"),import("next/constants.js")]);return{next:e.default,constants:t}}catch(e){throw new Error(`Next.js is required but not available. Please install Next.js as a dependency:\nnpm install next@^15\n\nThis package requires Next.js >=15 <17 as a peer dependency.\n\nError: ${e}`)}}const O=new Map,D=3e4;let F=null;function k(){const e=Date.now();if(F&&e-F.timestamp<6e4)return F.data;const t=process.cwd();try{const i=JSON.parse(n.readFileSync(f.resolve(t,"package.json"),{encoding:"utf-8",flag:"r"}));return F={data:i,timestamp:e},i}catch{const t={};return F={data:t,timestamp:e},t}}let z=null;async function q(e){const t=process.cwd(),i=`ts:${e}`,r=O.get(i);if(r&&Date.now()-r.timestamp<D)return r.data;let o=!1;if(/\.m[jt]s$/.test(e))o=!0;else if(/\.c[jt]s$/.test(e))o=!1;else{const e=k();o=!!e&&"module"===e.type}const a=await async function(){return z||(z=await import("esbuild")),z}(),c=await a.build({absWorkingDir:t,entryPoints:[e],outfile:"out.js",write:!1,target:["node14.18","node16"],platform:"node",bundle:!0,format:o?"esm":"cjs",mainFields:["main"],sourcemap:"inline",metafile:!0}),{text:p}=c.outputFiles[0],l=`${`pp-config.timestamp-${Date.now()}-${Math.random().toString(16).slice(2)}`}.js`,u=s.pathToFileURL(f.resolve(t,l)).toString();n.writeFileSync(l,p);let d={};try{const t=(await import(u)).default;d=t?.default||t,O.set(i,{data:d,timestamp:Date.now(),filePath:e})}finally{n.existsSync(l)&&n.unlink(l,()=>{})}return d}async function A(e){const t=`js:${e}`,n=O.get(t);if(n&&Date.now()-n.timestamp<D)return n.data;const i=(await import(s.pathToFileURL(e).toString())).default;return O.set(t,{data:i,timestamp:Date.now(),filePath:e}),i}async function V(e){const t=`json:${e}`,i=O.get(t);if(i&&Date.now()-i.timestamp<D)return i.data;const s=JSON.parse(n.readFileSync(e,{encoding:"utf-8"}));return O.set(t,{data:s,timestamp:Date.now(),filePath:e}),s}let H=null;async function B(e,t){for(const n of t)if(e.includes(n)){if(/\.[cm]?ts$/i.test(n))return await q(n);if(/\.[cm]?js$/i.test(n))return await A(f.resolve(".",n));if(n.endsWith(".json"))return await V(f.resolve(".",n))}return null}function M(){return k()}async function G(){const e=function(){const e=Date.now();if(H&&e-H.timestamp<1e4)return H.files;const t=/\.config\.(([cm]?ts)|([cm]?js)|(json))$/,i=process.cwd(),s=n.readdirSync(i,{withFileTypes:!0}).filter(e=>e.isFile()&&t.test(e.name)).map(e=>e.name);return H={files:s,timestamp:e},s}();let t={},i=!1;const s=await B(e,P);if(s&&(t=s,i=!0),e.length&&!i){const n=await B(e,w);n&&(t={backendBaseURL:n.baseURL,portalPageId:n.portalPageId},i=!0)}const r=k();return i||"object"!=typeof r["pp-dev"]||(t=r["pp-dev"]),t}const J=Object.freeze({__proto__:null,clearConfigCache:function(){O.clear(),F=null,H=null},getConfig:G,getConfigCacheStats:function(){return{configEntries:O.size,packageJsonCached:!!F,dirContentCached:!!H}},getPkg:M}),K="/p",W="/pt";function Y(t){if("string"==typeof t)return t;if(t&&"object"==typeof t&&"url"in t&&"string"==typeof t.url)return t.url;const n=["CI_REPOSITORY_URL","GIT_URL","BUILD_REPOSITORY_URI","CI_PROJECT_URL","BITBUCKET_GIT_HTTP_ORIGIN","BUILDKITE_REPO"];for(const e of n){const t=process.env[e];if("string"==typeof t&&t.trim())return t}const i=process.env.GITHUB_REPOSITORY;if("string"==typeof i&&i.trim()){return`${(process.env.GITHUB_SERVER_URL||"https://github.com").replace(/\/+$/,"")}/${i.replace(/^\/+/,"")}`}const s=process.env.CI_PROJECT_PATH;if("string"==typeof s&&s.trim()){return`${(process.env.CI_SERVER_URL||"https://gitlab.com").replace(/\/+$/,"")}/${s.replace(/^\/+/,"")}`}const r=process.env.BITBUCKET_REPO_FULL_NAME;if("string"==typeof r&&r.trim())return`https://bitbucket.org/${r.replace(/^\/+/,"")}`;const o=process.env.TRAVIS_REPO_SLUG;if("string"==typeof o&&o.trim())return`https://github.com/${o.replace(/^\/+/,"")}`;try{const t=e.execSync("git config --get remote.origin.url",{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim();if(t)return t}catch{}}function Z(e){return e?.ppDev||{}}function Q(e,t,n){return Object.assign({},e,t,n)}exports.PACKAGE_NAME=R,exports.PP_DEV_CLIENT_ENTRY=y,exports.PP_DEV_CONFIG_NAMES=P,exports.PP_DEV_HMR_WS_PATH="/@pp-dev-hmr",exports.PP_WATCH_CONFIG_NAMES=w,exports.VERSION=j,exports.config=J,exports.getNextVersion=async function(){try{return(await import("next/package.json")).version}catch{return null}},exports.getPPDevConfigFromNextConfig=Z,exports.getViteConfig=async function(){const e=M(),n=e.name,i=await G(),s=t.normalizeVitePPDevConfig(Object.assign(i,{templateName:n})),{default:r}=await Promise.resolve().then(()=>require("./plugin.js")),o=[r(s),C()],{outDir:a,distZip:c,versionPlugin:p,imageOptimizer:l,templateLess:u,integrateMiTopBar:f}=s;if(f&&o.push(function(e){return{name:"mi-topbar-plugin",transformIndexHtml(){const t=[];return(!0===e||"object"==typeof e&&!0===e.addRootElement)&&t.push({tag:"div",injectTo:"body-prepend",attrs:{id:"mi-react-root"}}),(!0===e||"object"==typeof e&&!0===e.addSharedComponentsScripts)&&t.push({tag:"script",injectTo:"head-prepend",attrs:{src:"/auth/info.js"}},{tag:"script",injectTo:"head-prepend",attrs:{src:"/js/main.js",defer:"defer"}},{tag:"link",injectTo:"head-prepend",attrs:{href:"/css/main.css",rel:"stylesheet"}}),t}}}(f)),l){const{ViteImageOptimizer:e}=await import("vite-plugin-image-optimizer");o.push(e("object"==typeof l?l:void 0))}if(p){const{versionPlugin:t}=await Promise.resolve().then(()=>require("./version-plugin-DUKsGBsW.js"));o.push(t({outDir:a,packageVersion:e.version??"0.0.0",packageRepositoryUrl:Y(e.repository),..."object"==typeof p?p:{}}))}if(c){const{default:e}=await import("vite-plugin-zip-pack");o.push({...e("object"==typeof c?c:{outFileName:`${n}.zip`}),enforce:"post"})}return{base:u?`${K}/${n}`:`${W}/${n}`,server:{port:3e3},build:{minify:!1,assetsInlineLimit:4096,rollupOptions:{output:{banner:L}},outDir:a},css:{modules:{localsConvention:"dashes"}},ppDevConfig:s,plugins:o}},exports.isNextAvailable=async function(){try{return await import("next"),!0}catch(e){return!1}},exports.safeNextImport=N,exports.withPPDev=function(e,t){return async(n,i={})=>{try{const{constants:s}=await N(),{PHASE_DEVELOPMENT_SERVER:r}=s,o=await G(),a=M().name,c="function"==typeof e?await e(n,i):e,p=Z(c),l=Object.assign({},o,p,t??{}),u=n===r,f=function(e,t,n,i){return n?i?t?`${K}/${e}`:`/pl/${e}`:t?`${K}/${e}`:`${W}/${e}`:`/p/${e}`}(a,l.templateLess??!1,u,l.v7Features??!1),d={basePath:f,trailingSlash:!!u||void 0};return l.templateLess||(d.assetPrefix=`${W}/${a}`),Q(d,c)}catch(t){console.error("Error in withPPDev:",t),console.warn("Falling back to original Next.js configuration");try{return"function"==typeof e?await e(n,i):e}catch(e){return console.error("Error in fallback configuration:",e),{}}}}};
2
- //# sourceMappingURL=index-Bb3yIW5d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Bb3yIW5d.js","sources":["../../../src/constants.ts","../../../src/plugins/client-injection-plugin.ts","../../../src/banner/header.ts","../../../src/lib/next-import.ts","../../../src/config.ts","../../../src/index.ts","../../../src/plugins/mi-topbar-plugin.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["afterBundlePath","resolve","__filename","fileURLToPath","document","require","pathToFileURL","href","_documentCurrentScript","tagName","toUpperCase","src","URL","baseURI","beforeBundlePath","PP_DEV_PACKAGE_DIR","existsSync","PP_DEV_CLIENT_ENTRY","version","name","JSON","parse","readFileSync","toString","VERSION","PACKAGE_NAME","PP_WATCH_CONFIG_NAMES","PP_DEV_CONFIG_NAMES","templateCache","cache","_maxSize","constructor","maxSize","this","Map","value","get","key","has","delete","set","size","firstKey","keys","next","undefined","clear","fileCache","DIRNAME","path","dirname","url","process","cwd","PACKAGE_IMPORT","CLIENT_PATH","PACKAGE_REGEXP","RegExp","performanceMetrics","templateCompilations","cacheHits","totalRequests","clientInjectionPlugin","opts","base","baseChanged","currentTemplate","apply","config","optimizeDeps","exclude","push","resolveId","source","test","id","normalizePath","join","replace","transformIndexHtml","async","html","ctx","serverBase","server","enableCache","cacheKey","templatePath","templateContent","fs","encoding","escapedClientPath","compiledTemplate","ejs","compile","posix","openDelimiter","closeDelimiter","filename","rmWhitespace","compileDebug","getTemplate","assetPaths","css","js","getAssetPaths","result","tags","tag","injectTo","attrs","rel","backendBaseURL","templateLess","portalPageId","canSync","templateData","children","type","configureServer","clientDir","root","allow","middlewares","use","req","res","setHeader","end","stringify","closeBundle","replacer","substring","$1","header","_chunk","safeNextImport","constants","Promise","all","import","default","error","Error","configCache","CACHE_TTL","packageJsonCache","getPackageJson","now","Date","timestamp","data","flag","empty","esbuildModule","loadTsConfig","filePath","cached","isESM","pkg","esbuild","getEsbuild","build","absWorkingDir","entryPoints","outfile","write","target","platform","bundle","format","mainFields","sourcemap","metafile","text","code","outputFiles","fileNameTmp","Math","random","slice","fileUrl","writeFileSync","conf","unlink","loadJsConfig","loadJSONConfig","dirContentCache","loadConfig","dirFiles","configNames","configName","includes","endsWith","getPkg","getConfig","dirContent","files","endsWithRegExp","readdirSync","withFileTypes","filter","isFile","map","getDirectoryContent","configFound","newConfig","length","watchConfig","baseURL","configEntries","packageJsonCached","dirContentCached","pathPagePrefix","pathTemplatePrefix","resolveRepositoryUrl","repository","directCiRepositoryUrlEnvVars","variableName","ciRepositoryUrl","env","trim","githubRepository","GITHUB_REPOSITORY","GITHUB_SERVER_URL","gitlabProjectPath","CI_PROJECT_PATH","CI_SERVER_URL","bitbucketRepositoryFullName","BITBUCKET_REPO_FULL_NAME","travisRepositorySlug","TRAVIS_REPO_SLUG","gitRemoteOriginUrl","execSync","stdio","getPPDevConfigFromNextConfig","nextConfig","ppDev","mergeConfigs","baseConfig","nextConfiguration","additionalConfig","Object","assign","templateName","ppDevConfig","normalizedPPDevConfig","normalizeVitePPDevConfig","vitePPDev","then","plugins","outDir","distZip","versionPlugin","imageOptimizer","integrateMiTopBar","addRootElement","addSharedComponentsScripts","defer","miTopBarPlugin","ViteImageOptimizer","versionPluginFn","packageVersion","packageRepositoryUrl","zipPack","outFileName","enforce","port","minify","assetsInlineLimit","rollupOptions","output","banner","modules","localsConvention","nextjsConfig","phase","PHASE_DEVELOPMENT_SERVER","nextConfigPPDev","mergedConfig","isDevelopment","basePath","v7Features","createBasePath","trailingSlash","assetPrefix","console","warn","fallbackError"],"mappings":"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"}