@metricinsights/pp-dev 0.3.0 → 0.3.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 (101) hide show
  1. package/README.md +51 -41
  2. package/bin/pp-dev.js +4 -10
  3. package/dist/cjs/cli.js +589 -0
  4. package/dist/cjs/cli.js.map +1 -0
  5. package/dist/cjs/helpers.js +29 -0
  6. package/dist/cjs/helpers.js.map +1 -0
  7. package/dist/cjs/index-ab672d81.js +292 -0
  8. package/dist/cjs/index-ab672d81.js.map +1 -0
  9. package/dist/cjs/index.js +27 -0
  10. package/dist/cjs/index.js.map +1 -0
  11. package/dist/cjs/package.json +113 -0
  12. package/dist/cjs/plugin-24dd0a43.js +878 -0
  13. package/dist/cjs/plugin-24dd0a43.js.map +1 -0
  14. package/dist/cjs/plugin.js +20 -0
  15. package/dist/cjs/plugin.js.map +1 -0
  16. package/dist/{cli.js → esm/cli.js} +210 -23
  17. package/dist/esm/cli.js.map +1 -0
  18. package/dist/esm/helpers.js +25 -0
  19. package/dist/esm/helpers.js.map +1 -0
  20. package/dist/{index.js → esm/index-d2c8ad2e.js} +98 -12
  21. package/dist/esm/index-d2c8ad2e.js.map +1 -0
  22. package/dist/esm/index.js +19 -0
  23. package/dist/esm/index.js.map +1 -0
  24. package/dist/esm/package.json +113 -0
  25. package/dist/esm/plugin-ecb1c54a.js +843 -0
  26. package/dist/esm/plugin-ecb1c54a.js.map +1 -0
  27. package/dist/esm/plugin.js +14 -0
  28. package/dist/esm/plugin.js.map +1 -0
  29. package/dist/types/cli.d.ts +3 -0
  30. package/dist/types/helpers.d.ts +24 -0
  31. package/dist/types/index.d.ts +18 -0
  32. package/dist/{plugin.d.ts → types/plugin.d.ts} +4 -2
  33. package/package.json +23 -8
  34. package/pp-dev.d.ts +1 -1
  35. package/dist/api/assets.d.ts +0 -15
  36. package/dist/api/assets.js +0 -58
  37. package/dist/api/assets.js.map +0 -1
  38. package/dist/api/base.d.ts +0 -5
  39. package/dist/api/base.js +0 -7
  40. package/dist/api/base.js.map +0 -1
  41. package/dist/api/constants.d.ts +0 -1
  42. package/dist/api/constants.js +0 -2
  43. package/dist/api/constants.js.map +0 -1
  44. package/dist/api/index.d.ts +0 -2
  45. package/dist/api/index.js +0 -3
  46. package/dist/api/index.js.map +0 -1
  47. package/dist/api/page.d.ts +0 -16
  48. package/dist/api/page.js +0 -43
  49. package/dist/api/page.js.map +0 -1
  50. package/dist/banner/header.d.ts +0 -2
  51. package/dist/banner/header.js +0 -10
  52. package/dist/banner/header.js.map +0 -1
  53. package/dist/cli.d.ts +0 -1
  54. package/dist/cli.js.map +0 -1
  55. package/dist/client/rollup.config.d.ts +0 -2
  56. package/dist/constants.d.ts +0 -6
  57. package/dist/constants.js +0 -18
  58. package/dist/constants.js.map +0 -1
  59. package/dist/index.d.ts +0 -13
  60. package/dist/index.js.map +0 -1
  61. package/dist/lib/client.service.d.ts +0 -16
  62. package/dist/lib/client.service.js +0 -59
  63. package/dist/lib/client.service.js.map +0 -1
  64. package/dist/lib/dist.service.d.ts +0 -31
  65. package/dist/lib/dist.service.js +0 -148
  66. package/dist/lib/dist.service.js.map +0 -1
  67. package/dist/lib/helpers/content-encoding.helper.d.ts +0 -3
  68. package/dist/lib/helpers/content-encoding.helper.js +0 -26
  69. package/dist/lib/helpers/content-encoding.helper.js.map +0 -1
  70. package/dist/lib/helpers/server.d.ts +0 -14
  71. package/dist/lib/helpers/server.js +0 -40
  72. package/dist/lib/helpers/server.js.map +0 -1
  73. package/dist/lib/helpers/url.helper.d.ts +0 -7
  74. package/dist/lib/helpers/url.helper.js +0 -40
  75. package/dist/lib/helpers/url.helper.js.map +0 -1
  76. package/dist/lib/load-pp-data.middleware.d.ts +0 -5
  77. package/dist/lib/load-pp-data.middleware.js +0 -28
  78. package/dist/lib/load-pp-data.middleware.js.map +0 -1
  79. package/dist/lib/pp-redirect.middleware.d.ts +0 -3
  80. package/dist/lib/pp-redirect.middleware.js +0 -21
  81. package/dist/lib/pp-redirect.middleware.js.map +0 -1
  82. package/dist/lib/pp.middleware.d.ts +0 -27
  83. package/dist/lib/pp.middleware.js +0 -155
  84. package/dist/lib/pp.middleware.js.map +0 -1
  85. package/dist/lib/proxy-cache.middleware.d.ts +0 -18
  86. package/dist/lib/proxy-cache.middleware.js +0 -51
  87. package/dist/lib/proxy-cache.middleware.js.map +0 -1
  88. package/dist/lib/proxy-pass.middleware.d.ts +0 -11
  89. package/dist/lib/proxy-pass.middleware.js +0 -90
  90. package/dist/lib/proxy-pass.middleware.js.map +0 -1
  91. package/dist/lib/rewrite-response.middleware.d.ts +0 -6
  92. package/dist/lib/rewrite-response.middleware.js +0 -23
  93. package/dist/lib/rewrite-response.middleware.js.map +0 -1
  94. package/dist/plugin.js +0 -76
  95. package/dist/plugin.js.map +0 -1
  96. package/dist/plugins/client-injection-plugin.d.ts +0 -12
  97. package/dist/plugins/client-injection-plugin.js +0 -57
  98. package/dist/plugins/client-injection-plugin.js.map +0 -1
  99. package/dist/shortcuts.d.ts +0 -12
  100. package/dist/shortcuts.js +0 -93
  101. package/dist/shortcuts.js.map +0 -1
@@ -1,155 +0,0 @@
1
- import axios from 'axios';
2
- import { JSDOM } from 'jsdom';
3
- import { AssetsAPI, PageAPI } from '../api/index.js';
4
- export class MiAPI {
5
- #headers;
6
- #axios;
7
- #pageTemplate = null;
8
- #pageTitle;
9
- #pageVars;
10
- #templateLoaded;
11
- #templateLoadedResolve;
12
- portalPageId;
13
- templateLess;
14
- assetsApi;
15
- pageApi;
16
- constructor(baseURL, opts) {
17
- const { headers = {}, portalPageId, templateLess = true } = opts || {};
18
- this.#headers = headers;
19
- this.#pageVars = [];
20
- this.#pageTitle = '';
21
- this.#templateLoaded = new Promise((resolve) => {
22
- this.#templateLoadedResolve = resolve;
23
- });
24
- this.#axios = axios.create({ baseURL, headers });
25
- this.portalPageId = portalPageId;
26
- this.templateLess = templateLess;
27
- this.assetsApi = new AssetsAPI(this.#axios);
28
- this.pageApi = new PageAPI(this.#axios);
29
- }
30
- async isTemplateLoaded() {
31
- return this.#templateLoaded;
32
- }
33
- #clearHeaders(headers) {
34
- const obj = Object.assign({}, headers, { host: undefined });
35
- Object.keys(obj).forEach((key) => obj[key] === undefined && delete obj[key]);
36
- this.#headers = obj;
37
- return obj;
38
- }
39
- updateHeaders(headers) {
40
- this.#clearHeaders(headers);
41
- }
42
- async getPageTemplate(headers) {
43
- if (this.#pageTemplate) {
44
- return Promise.resolve(this.#pageTemplate);
45
- }
46
- if (typeof this.templateLess === 'undefined') {
47
- this.templateLess = false;
48
- }
49
- const pageList = await this.pageApi.getAll(this.#clearHeaders(headers));
50
- let page = pageList.find((p) => p.name === '[DEV PAGE. DO NOT DELETE]');
51
- if (!page) {
52
- page = await this.pageApi.create({
53
- enabled: 'Y',
54
- name: '[DEV PAGE. DO NOT DELETE]',
55
- internal_name: 'dev-page-template',
56
- visible_in_homepage: 'Y',
57
- }, this.#clearHeaders(headers));
58
- }
59
- return await this.pageApi
60
- .getPageContent(page.internal_name, this.#clearHeaders(headers))
61
- .then((response) => {
62
- this.#pageTemplate = response;
63
- return response;
64
- })
65
- .finally(() => {
66
- this.#templateLoadedResolve(true);
67
- });
68
- }
69
- async getPageVariables(pageId, headers) {
70
- this.#pageTemplate = await this.getPageTemplate(headers);
71
- if (!this.portalPageId) {
72
- this.portalPageId = pageId;
73
- this.templateLess = false;
74
- }
75
- return await this.pageApi
76
- .get(pageId, this.#clearHeaders(headers))
77
- .then((response) => {
78
- const { tags = '[]', name, template } = response;
79
- if (template && tags) {
80
- const parsed = JSON.parse(tags);
81
- this.#pageVars = parsed;
82
- this.#pageTitle = name;
83
- return parsed;
84
- }
85
- this.#pageVars = [];
86
- this.#pageTitle = name;
87
- return [];
88
- })
89
- .catch((reason) => {
90
- if (reason.response?.status === 404) {
91
- throw new Error(`Portal Page with id "${pageId}" not found on instance ${this.#axios.getUri()}`);
92
- }
93
- throw reason;
94
- });
95
- }
96
- buildPage(content, miHudLess = false) {
97
- let result = typeof content === 'string' ? content : content.toString('utf-8');
98
- for (const v of this.#pageVars) {
99
- result = result.replace(new RegExp(`\\[${v.name}\\]`, 'g'), v.value);
100
- }
101
- const dom = new JSDOM(miHudLess ? result : this.#pageTemplate);
102
- const placeholderText = '%%PLACEHOLDER%%';
103
- if (!miHudLess) {
104
- const placeholder = dom.window.document.createElement('div');
105
- placeholder.innerHTML = placeholderText;
106
- const container = dom.window.document.querySelector('.main-side');
107
- if (container) {
108
- const scripts = container.querySelectorAll('script');
109
- if (scripts.length) {
110
- container.insertBefore(placeholder, scripts.item(scripts.length - 1));
111
- }
112
- else {
113
- container.append(placeholder);
114
- }
115
- const head = dom.window.document.querySelector('head');
116
- const title = head.querySelector('title');
117
- if (title) {
118
- title.text = this.#pageTitle;
119
- }
120
- else {
121
- head.innerHTML += `<title>${this.#pageTitle}</title>`;
122
- }
123
- }
124
- }
125
- const serializedDom = dom.serialize();
126
- return serializedDom.replace(new RegExp(`<div>\\s*${placeholderText}\\s*<\\/div>`, 'i'), result);
127
- }
128
- async getAssets() {
129
- if (this.portalPageId) {
130
- if (this.templateLess) {
131
- return await this.assetsApi.downloadPageAssets(this.portalPageId, this.#headers);
132
- }
133
- else {
134
- const pageInfo = await this.pageApi.get(this.portalPageId, this.#headers);
135
- if (pageInfo.template) {
136
- return await this.assetsApi.downloadTemplateAssets(pageInfo.template, this.#headers);
137
- }
138
- }
139
- }
140
- }
141
- async updateAssets(assets) {
142
- if (this.portalPageId) {
143
- if (this.templateLess) {
144
- return await this.assetsApi.uploadPageAssets(this.portalPageId, assets, this.#headers);
145
- }
146
- else {
147
- const pageInfo = await this.pageApi.get(this.portalPageId, this.#headers);
148
- if (pageInfo.template) {
149
- return await this.assetsApi.uploadTemplateAssets(pageInfo.template, assets, this.#headers);
150
- }
151
- }
152
- }
153
- }
154
- }
155
- //# sourceMappingURL=pp.middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pp.middleware.js","sourceRoot":"","sources":["../../src/lib/pp.middleware.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { Connect, ViteDevServer } from 'vite';
2
- import * as memoryCache from 'memory-cache';
3
- import NextHandleFunction = Connect.NextHandleFunction;
4
- import { Express } from 'express';
5
- export interface CacheItem {
6
- headers: Record<string, any>;
7
- content: any;
8
- }
9
- export interface ProxyCacheOpts {
10
- devServer: ViteDevServer | Express;
11
- ttl?: number;
12
- }
13
- declare module 'vite' {
14
- interface ViteDevServer {
15
- cache?: memoryCache.CacheClass<string, CacheItem>;
16
- }
17
- }
18
- export declare function initProxyCache(opts: ProxyCacheOpts): NextHandleFunction;
@@ -1,51 +0,0 @@
1
- import * as memoryCache from 'memory-cache';
2
- import { PROXY_HEADER } from './proxy-pass.middleware.js';
3
- const cache = new memoryCache.Cache();
4
- const testCacheUrlRegExp = /\.[a-z0-9]+$/i;
5
- export function initProxyCache(opts) {
6
- const { devServer, ttl = 10 * 60 * 1000 } = opts;
7
- devServer.cache = cache;
8
- return (req, res, next) => {
9
- const url = req.originalUrl || req.url || '';
10
- if (testCacheUrlRegExp.test(url.split('?')[0] || '')) {
11
- const cacheItem = cache.get(url);
12
- if (cacheItem && devServer.config) {
13
- devServer.config.logger.info(`Proxies request: ${req.method} ${url} -> Cache ${url}`);
14
- for (const [header, value] of Object.entries(cacheItem.headers)) {
15
- res.setHeader(header, value);
16
- }
17
- res.write(cacheItem.content);
18
- res.end();
19
- return;
20
- }
21
- const end = res.end;
22
- const write = res.write;
23
- let buffer = Buffer.from('', 'utf8');
24
- res.write = function (data, encoding, callback) {
25
- if (!res.hasHeader(PROXY_HEADER)) {
26
- return write.call(this, data, encoding, callback);
27
- }
28
- buffer = Buffer.concat([buffer, data]);
29
- return true;
30
- };
31
- res.end = function (chunk, encoding, cb) {
32
- if (!res.hasHeader(PROXY_HEADER)) {
33
- return end.call(this, chunk, encoding, cb);
34
- }
35
- if (typeof chunk === 'string') {
36
- buffer = Buffer.concat([buffer, Buffer.from(chunk, encoding)]);
37
- }
38
- if (Buffer.isBuffer(chunk)) {
39
- buffer = Buffer.concat([buffer, chunk]);
40
- }
41
- if (res.hasHeader(PROXY_HEADER)) {
42
- devServer.config.logger?.info(`[Cached] ${url}`);
43
- cache.put(url, { headers: res.getHeaders(), content: buffer }, ttl);
44
- }
45
- end.call(this, buffer, encoding, cb);
46
- };
47
- }
48
- next();
49
- };
50
- }
51
- //# sourceMappingURL=proxy-cache.middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proxy-cache.middleware.js","sourceRoot":"","sources":["../../src/lib/proxy-cache.middleware.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { ViteDevServer } from 'vite';
2
- import { Express } from 'express';
3
- export interface ProxyOpts {
4
- rewritePath?: string | string[] | RegExp;
5
- baseURL: string;
6
- proxyIgnore?: (string | RegExp)[];
7
- devServer: ViteDevServer | Express;
8
- }
9
- export declare const PROXY_HEADER = "X-PP-Proxy";
10
- export declare function initProxy(opts: ProxyOpts): import("http-proxy-middleware").RequestHandler;
11
- export default initProxy;
@@ -1,90 +0,0 @@
1
- import { createProxyMiddleware, responseInterceptor } from 'http-proxy-middleware';
2
- import { urlReplacer, urlPathReplacer } from './helpers/url.helper.js';
3
- const hostOriginRegExp = /^(https?:\/\/)([^/]+)(\/.*)?$/i;
4
- export const PROXY_HEADER = 'X-PP-Proxy';
5
- export function initProxy(opts) {
6
- const { rewritePath = /^\/(?!pt).*/i, baseURL = '', devServer } = opts;
7
- if (!baseURL) {
8
- throw new Error('Base url is required');
9
- }
10
- const host = baseURL.replace(hostOriginRegExp, '$2');
11
- const origin = baseURL.replace(hostOriginRegExp, '$1$2');
12
- const fileType = import('file-type');
13
- return createProxyMiddleware((pathname) => {
14
- if ((opts.proxyIgnore || []).some((value) => {
15
- if (typeof value === 'string') {
16
- return pathname.startsWith(value);
17
- }
18
- else if (typeof value.test === 'function') {
19
- return value.test(pathname);
20
- }
21
- return true;
22
- })) {
23
- return false;
24
- }
25
- if (typeof rewritePath === 'string') {
26
- return pathname.startsWith(rewritePath);
27
- }
28
- else if (Array.isArray(rewritePath)) {
29
- return rewritePath.some((rP) => pathname.startsWith(rP));
30
- }
31
- else if (typeof rewritePath.test === 'function') {
32
- return rewritePath.test(pathname);
33
- }
34
- return false;
35
- }, {
36
- selfHandleResponse: true,
37
- target: baseURL,
38
- changeOrigin: true,
39
- autoRewrite: true,
40
- logLevel: 'silent',
41
- headers: {
42
- host,
43
- origin,
44
- },
45
- onProxyReq(proxyReq, req, res) {
46
- const host = req.headers.host;
47
- const referer = proxyReq.getHeader('referer');
48
- devServer.config.logger.info(`Proxies request: ${req.method} ${req.url} -> ${proxyReq.method} ${proxyReq.protocol}//${proxyReq.host}${proxyReq.path}`);
49
- if (host && referer && typeof referer === 'string') {
50
- proxyReq.setHeader('referer', referer.replace(new RegExp(`https?://${host}`), baseURL));
51
- }
52
- req.socket.on('close', () => {
53
- setTimeout(() => {
54
- if (!proxyReq.destroyed) {
55
- proxyReq.destroy();
56
- }
57
- }, 200);
58
- });
59
- return proxyReq;
60
- },
61
- onProxyRes: responseInterceptor(async (responseBuffer, proxyRes, req, res) => {
62
- res.setHeader(PROXY_HEADER, 1);
63
- const type = await (await fileType).fileTypeFromBuffer(responseBuffer);
64
- if (type) {
65
- return responseBuffer;
66
- }
67
- else {
68
- let response = responseBuffer.toString('utf8');
69
- try {
70
- const reqUrl = new URL(req.url ?? '', `http://${host}`);
71
- if (reqUrl.searchParams && reqUrl.searchParams.has('proxyRedirect')) {
72
- response +=
73
- '<script>' +
74
- 'const params = new URLSearchParams(window.location.search);' +
75
- "if (params.has('proxyRedirect')) {" +
76
- " setTimeout(() => { window.location = params.get('proxyRedirect'); }, 50);" +
77
- '}' +
78
- '</script>';
79
- }
80
- }
81
- catch {
82
- }
83
- const reqHost = req.headers.host ?? '';
84
- return urlPathReplacer('/auth/saml/login', '/login', urlReplacer(host, reqHost, response));
85
- }
86
- }),
87
- });
88
- }
89
- export default initProxy;
90
- //# sourceMappingURL=proxy-pass.middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proxy-pass.middleware.js","sourceRoot":"","sources":["../../src/lib/proxy-pass.middleware.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { Connect } from 'vite';
4
- import NextHandleFunction = Connect.NextHandleFunction;
5
- import type { ServerResponse } from 'http';
6
- export declare function initRewriteResponse(predicate: (url: string, req: Connect.IncomingMessage, res: ServerResponse<Connect.IncomingMessage>) => boolean, rewrite: (response: Buffer, req: Connect.IncomingMessage, res: ServerResponse<Connect.IncomingMessage>) => Buffer): NextHandleFunction;
@@ -1,23 +0,0 @@
1
- import { decodeContent, encodeContent } from './helpers/content-encoding.helper.js';
2
- export function initRewriteResponse(predicate, rewrite) {
3
- return (req, res, next) => {
4
- if (predicate(req.url ?? '', req, res)) {
5
- const end = res.end;
6
- const buffers = [];
7
- res.write = function (body) {
8
- buffers.push(body);
9
- return true;
10
- };
11
- res.end = function (chunk, encoding, cb) {
12
- if (typeof chunk === 'string') {
13
- buffers.push(Buffer.from(chunk));
14
- }
15
- const contentEncoding = res.getHeader('content-encoding');
16
- const content = decodeContent(Buffer.from(Buffer.concat(buffers)), contentEncoding);
17
- end.call(this, encodeContent(rewrite(content, req, res), contentEncoding), encoding, cb);
18
- };
19
- }
20
- next();
21
- };
22
- }
23
- //# sourceMappingURL=rewrite-response.middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rewrite-response.middleware.js","sourceRoot":"","sources":["../../src/lib/rewrite-response.middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AASpF,MAAM,UAAU,mBAAmB,CACjC,SAA+G,EAC/G,OAAiH;IAEjH,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACxB,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;YACtC,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;YAEpB,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,GAAG,CAAC,KAAK,GAAG,UAAU,IAAI;gBACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEnB,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;YAIF,GAAG,CAAC,GAAG,GAAG,UAAU,KAAU,EAAE,QAAwB,EAAE,EAAe;gBACvE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;iBAClC;gBAED,MAAM,eAAe,GAAG,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAW,CAAC;gBACpE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;gBAEpF,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC3F,CAAC,CAAC;SACH;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC"}
package/dist/plugin.js DELETED
@@ -1,76 +0,0 @@
1
- import proxyPassMiddleware from './lib/proxy-pass.middleware.js';
2
- import { MiAPI } from './lib/pp.middleware.js';
3
- import { cutUrlParams, urlReplacer } from './lib/helpers/url.helper.js';
4
- import { ClientService } from './lib/client.service.js';
5
- import { initProxyCache } from './lib/proxy-cache.middleware.js';
6
- import { DistService } from './lib/dist.service.js';
7
- import { initRewriteResponse } from './lib/rewrite-response.middleware.js';
8
- import { initPPRedirect } from './lib/pp-redirect.middleware.js';
9
- import { initLoadPPData } from './lib/load-pp-data.middleware.js';
10
- function vitePPDev(options) {
11
- const { templateName, templateLess = false, backendBaseURL, miHudLess = false, portalPageId, enableProxyCache = true, proxyCacheTTL = 10 * 60 * 1000, } = options || {};
12
- let isFirstRequest = true;
13
- return {
14
- name: 'vite-pp-dev',
15
- apply: 'serve',
16
- config: (config) => {
17
- config.clientInjectionPlugin = { backendBaseURL, portalPageId, templateLess };
18
- return config;
19
- },
20
- transformIndexHtml: async (html, ctx) => {
21
- const result = { html, tags: [] };
22
- if (isFirstRequest) {
23
- isFirstRequest = false;
24
- result.tags.push({
25
- tag: 'script',
26
- injectTo: 'body',
27
- children: `${Math.random()}`,
28
- });
29
- }
30
- return result;
31
- },
32
- configureServer: (server) => {
33
- let base = server.config.base;
34
- if (!base.endsWith('/')) {
35
- base += '/';
36
- }
37
- const baseWithoutTrailingSlash = base.substring(0, base.lastIndexOf('/'));
38
- server.middlewares.use(initPPRedirect(base, templateName));
39
- if (backendBaseURL) {
40
- const baseUrlHost = new URL(backendBaseURL).host;
41
- const mi = new MiAPI(backendBaseURL, {
42
- headers: {
43
- host: baseUrlHost,
44
- referer: backendBaseURL,
45
- origin: backendBaseURL.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i, '$1$2'),
46
- },
47
- portalPageId,
48
- templateLess,
49
- });
50
- if (enableProxyCache) {
51
- let ttl = +proxyCacheTTL;
52
- if (!ttl || Number.isNaN(ttl) || ttl < 0) {
53
- ttl = 10 * 60 * 1000;
54
- }
55
- server.middlewares.use(initProxyCache({ devServer: server, ttl }));
56
- }
57
- server.middlewares.use(proxyPassMiddleware({
58
- devServer: server,
59
- baseURL: backendBaseURL,
60
- proxyIgnore: ['/@vite', '/@metricinsights', '/@', baseWithoutTrailingSlash],
61
- }));
62
- const isIndexRegExp = new RegExp(`^((${base})|/)$`);
63
- server.middlewares.use(initLoadPPData(isIndexRegExp, mi, options));
64
- server.middlewares.use(initRewriteResponse((url) => {
65
- return isIndexRegExp.test(cutUrlParams(url));
66
- }, (response, req) => {
67
- return Buffer.from(urlReplacer(baseUrlHost, req.headers.host ?? '', mi.buildPage(response, miHudLess)));
68
- }));
69
- const distService = new DistService(templateName);
70
- const eventHandler = new ClientService(server, { distService, miAPI: mi });
71
- }
72
- },
73
- };
74
- }
75
- export default vitePPDev;
76
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { Plugin } from 'vite';
2
- export interface ClientInjectionPluginOpts {
3
- backendBaseURL?: string;
4
- templateLess: boolean;
5
- portalPageId?: number;
6
- }
7
- declare module 'vite' {
8
- interface UserConfig {
9
- clientInjectionPlugin?: ClientInjectionPluginOpts;
10
- }
11
- }
12
- export declare function clientInjectionPlugin(opts?: ClientInjectionPluginOpts): Plugin;
@@ -1,57 +0,0 @@
1
- import { normalizePath } from 'vite';
2
- import * as path from 'path';
3
- import { PP_DEV_CLIENT_ENTRY, PACKAGE_NAME, VERSION, PP_DEV_PACKAGE_DIR } from '../constants.js';
4
- import * as fs from 'fs';
5
- import { compile } from 'ejs';
6
- import * as url from 'url';
7
- const __dirname = url.fileURLToPath(new URL('.', import.meta.url));
8
- const PACKAGE_IMPORT = `${PACKAGE_NAME}/client`;
9
- const CLIENT_PATH = `/${PACKAGE_IMPORT}`;
10
- export function clientInjectionPlugin(opts) {
11
- const clientPanelTpl = fs.readFileSync(path.resolve(__dirname, '..', 'client', 'index.html'), {
12
- encoding: 'utf8',
13
- flag: 'r',
14
- });
15
- let render;
16
- return {
17
- name: 'pp-dev:client',
18
- apply: 'serve',
19
- config: (config) => {
20
- config.optimizeDeps?.exclude?.push(`${PACKAGE_NAME}/client`);
21
- return config;
22
- },
23
- resolveId(source) {
24
- const pkgRegExp = new RegExp(`^\\/?${PACKAGE_NAME}\\/client\\/(.*)$`);
25
- if (pkgRegExp.test(source)) {
26
- return {
27
- id: normalizePath(path.join(PP_DEV_PACKAGE_DIR, 'dist/client', source.replace(pkgRegExp, '$1'))),
28
- };
29
- }
30
- },
31
- transformIndexHtml: async (html, ctx) => {
32
- const result = {
33
- html,
34
- tags: [
35
- { tag: 'link', injectTo: 'head', attrs: { rel: 'stylesheet', href: `${PACKAGE_NAME}/client/client.css` } },
36
- { tag: 'script', injectTo: 'body', attrs: { src: `${PACKAGE_NAME}/client/client.js`, type: 'module' } },
37
- ],
38
- };
39
- const { backendBaseURL, templateLess, portalPageId } = opts || ctx.server?.config.clientInjectionPlugin || {};
40
- if (!render && ctx.server?.config.base) {
41
- render = compile(clientPanelTpl.replace(new RegExp(`${CLIENT_PATH}`, 'g'), path.posix.join(ctx.server.config.base, PACKAGE_IMPORT)), { openDelimiter: '{', closeDelimiter: '}', async: true });
42
- }
43
- if (ctx.server?.config.base) {
44
- result.tags.push({
45
- tag: 'div',
46
- injectTo: 'body',
47
- children: await render({ PACKAGE_NAME, VERSION, backendBaseURL, templateLess, portalPageId }),
48
- });
49
- }
50
- return result;
51
- },
52
- configureServer(server) {
53
- server.config.server?.fs?.allow?.push(normalizePath(path.resolve(server.config.root, path.dirname(PP_DEV_CLIENT_ENTRY))));
54
- },
55
- };
56
- }
57
- //# sourceMappingURL=client-injection-plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-injection-plugin.js","sourceRoot":"","sources":["../../src/plugins/client-injection-plugin.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import type { ViteDevServer } from 'vite';
2
- export declare function isDefined<T>(value: T | undefined | null): value is T;
3
- export type BindShortcutsOptions = {
4
- print?: boolean;
5
- customShortcuts?: (CLIShortcut | undefined | null)[];
6
- };
7
- export type CLIShortcut = {
8
- key: string;
9
- description: string;
10
- action(server: ViteDevServer): void | Promise<void>;
11
- };
12
- export declare function bindShortcuts(server: ViteDevServer, opts: BindShortcutsOptions): void;