@metricinsights/pp-dev 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/assets.d.ts +15 -0
- package/dist/api/assets.js +58 -0
- package/dist/api/assets.js.map +1 -0
- package/dist/api/constants.d.ts +1 -0
- package/dist/api/constants.js +2 -0
- package/dist/api/constants.js.map +1 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.js +3 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/page.d.ts +18 -0
- package/dist/api/page.js +46 -0
- package/dist/api/page.js.map +1 -0
- package/dist/client/client.css +131 -28
- package/dist/client/client.js +40 -1
- package/dist/client/client.js.map +1 -1
- package/dist/client/index.html +2 -2
- package/dist/lib/client.service.d.ts +9 -3
- package/dist/lib/client.service.js +32 -6
- package/dist/lib/client.service.js.map +1 -1
- package/dist/lib/dist.service.d.ts +31 -0
- package/dist/lib/dist.service.js +148 -0
- package/dist/lib/dist.service.js.map +1 -0
- package/dist/lib/pp.middleware.d.ts +15 -3
- package/dist/lib/pp.middleware.js +58 -43
- package/dist/lib/pp.middleware.js.map +1 -1
- package/dist/plugin.js +13 -3
- package/dist/plugin.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { Axios } from 'axios';
|
|
3
|
+
import { Headers } from './constants.js';
|
|
4
|
+
export declare class AssetsAPI {
|
|
5
|
+
private axios;
|
|
6
|
+
constructor(axios: Axios);
|
|
7
|
+
downloadPageAssets(portalPageId: number | string, headers?: Headers): Promise<Buffer>;
|
|
8
|
+
uploadPageAssets(portalPageId: number | string, file: Buffer, headers?: Headers): Promise<{
|
|
9
|
+
status?: "OK" | undefined;
|
|
10
|
+
}>;
|
|
11
|
+
downloadTemplateAssets(templateId: number | string, headers?: Headers): Promise<Buffer>;
|
|
12
|
+
uploadTemplateAssets(templateId: number | string, file: Buffer, headers?: Headers): Promise<{
|
|
13
|
+
status?: "OK" | undefined;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { FormData, File } from 'formdata-node';
|
|
2
|
+
export class AssetsAPI {
|
|
3
|
+
axios;
|
|
4
|
+
constructor(axios) {
|
|
5
|
+
this.axios = axios;
|
|
6
|
+
}
|
|
7
|
+
async downloadPageAssets(portalPageId, headers) {
|
|
8
|
+
return this.axios
|
|
9
|
+
.get(`/admin/page/downloadassets/id/${portalPageId}`, {
|
|
10
|
+
withCredentials: true,
|
|
11
|
+
headers: Object.assign({}, headers, { accept: '*/*' }),
|
|
12
|
+
responseType: 'arraybuffer',
|
|
13
|
+
})
|
|
14
|
+
.then((res) => res.data);
|
|
15
|
+
}
|
|
16
|
+
async uploadPageAssets(portalPageId, file, headers) {
|
|
17
|
+
const formData = new FormData();
|
|
18
|
+
const assetFile = new File([file.buffer], 'file.zip', { type: 'application/zip' });
|
|
19
|
+
formData.append('file', assetFile);
|
|
20
|
+
const url = `/admin/page/uploadassets/id/${portalPageId}`;
|
|
21
|
+
return this.axios
|
|
22
|
+
.post(`/admin/page/uploadassets/id/${portalPageId}`, formData, {
|
|
23
|
+
withCredentials: true,
|
|
24
|
+
headers: Object.assign({}, headers, {
|
|
25
|
+
accept: 'application/json',
|
|
26
|
+
'Content-Type': 'multipart/form-data',
|
|
27
|
+
Referer: this.axios.getUri({ url }),
|
|
28
|
+
}),
|
|
29
|
+
})
|
|
30
|
+
.then((res) => res.data);
|
|
31
|
+
}
|
|
32
|
+
async downloadTemplateAssets(templateId, headers) {
|
|
33
|
+
return this.axios
|
|
34
|
+
.get(`/admin/pagetemplate/downloadassets/id/${templateId}`, {
|
|
35
|
+
withCredentials: true,
|
|
36
|
+
headers: Object.assign({}, headers, { accept: '*/*' }),
|
|
37
|
+
responseType: 'arraybuffer',
|
|
38
|
+
})
|
|
39
|
+
.then((res) => res.data);
|
|
40
|
+
}
|
|
41
|
+
async uploadTemplateAssets(templateId, file, headers) {
|
|
42
|
+
const formData = new FormData();
|
|
43
|
+
const assetFile = new File([file.buffer], 'file.zip', { type: 'application/zip' });
|
|
44
|
+
formData.append('file', assetFile, 'file.zip');
|
|
45
|
+
const url = `/admin/pagetemplate/uploadassets/id/${templateId}`;
|
|
46
|
+
return this.axios
|
|
47
|
+
.post(url, formData, {
|
|
48
|
+
withCredentials: true,
|
|
49
|
+
headers: Object.assign({}, headers, {
|
|
50
|
+
accept: 'application/json',
|
|
51
|
+
'Content-Type': 'multipart/form-data',
|
|
52
|
+
Referer: this.axios.getUri({ url }),
|
|
53
|
+
}),
|
|
54
|
+
})
|
|
55
|
+
.then((res) => res.data);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/api/assets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Headers = Record<string, string | undefined>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/api/constants.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Axios } from 'axios';
|
|
2
|
+
import { Headers } from './constants.js';
|
|
3
|
+
export interface Page {
|
|
4
|
+
name: string;
|
|
5
|
+
enabled: 'Y' | 'N';
|
|
6
|
+
visible_in_homepage: 'Y' | 'N';
|
|
7
|
+
internal_name: string;
|
|
8
|
+
tags?: string;
|
|
9
|
+
template?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class PageAPI {
|
|
12
|
+
private axios;
|
|
13
|
+
constructor(axios: Axios);
|
|
14
|
+
getAll(headers?: Headers): Promise<Page[]>;
|
|
15
|
+
get(id: number | string, headers?: Headers): Promise<Page>;
|
|
16
|
+
getPageContent(internalPageName: string, headers?: Headers): Promise<string>;
|
|
17
|
+
create(page: Page, headers?: Headers): Promise<Page>;
|
|
18
|
+
}
|
package/dist/api/page.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export class PageAPI {
|
|
2
|
+
axios;
|
|
3
|
+
constructor(axios) {
|
|
4
|
+
this.axios = axios;
|
|
5
|
+
}
|
|
6
|
+
async getAll(headers) {
|
|
7
|
+
return (await this.axios.get('/api/page', {
|
|
8
|
+
withCredentials: true,
|
|
9
|
+
headers: Object.assign({}, headers, {
|
|
10
|
+
Accept: 'application/json',
|
|
11
|
+
'Content-Type': 'application/json',
|
|
12
|
+
'Cache-Control': 'no-cache',
|
|
13
|
+
Pragma: 'no-cache',
|
|
14
|
+
Expires: '0',
|
|
15
|
+
}),
|
|
16
|
+
})).data.pages;
|
|
17
|
+
}
|
|
18
|
+
async get(id, headers) {
|
|
19
|
+
return (await this.axios.get(`/api/page/id/${id}`, {
|
|
20
|
+
withCredentials: true,
|
|
21
|
+
headers: Object.assign({}, headers, {
|
|
22
|
+
accept: 'application/json',
|
|
23
|
+
'content-type': 'application/json',
|
|
24
|
+
}),
|
|
25
|
+
})).data.page;
|
|
26
|
+
}
|
|
27
|
+
async getPageContent(internalPageName, headers) {
|
|
28
|
+
return (await this.axios.get(`/p/${internalPageName}`, {
|
|
29
|
+
withCredentials: true,
|
|
30
|
+
headers: Object.assign({}, headers, {
|
|
31
|
+
accept: 'text/html',
|
|
32
|
+
'content-type': 'application/json',
|
|
33
|
+
}),
|
|
34
|
+
})).data;
|
|
35
|
+
}
|
|
36
|
+
async create(page, headers) {
|
|
37
|
+
return (await this.axios.post('/api/page', page, {
|
|
38
|
+
withCredentials: true,
|
|
39
|
+
headers: Object.assign({}, headers, {
|
|
40
|
+
accept: 'application/json',
|
|
41
|
+
'content-type': 'application/json',
|
|
42
|
+
}),
|
|
43
|
+
})).data.page;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/api/page.ts"],"names":[],"mappings":"AAYA,MAAM,OAAO,OAAO;IACV,KAAK,CAAQ;IAErB,YAAY,KAAY;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAiB;QAC5B,OAAO,CACL,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAoB,WAAW,EAAE;YACnD,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU;gBAC3B,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,GAAG;aACb,CAAC;SACH,CAAC,CACH,CAAC,IAAI,CAAC,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAmB,EAAE,OAAiB;QAC9C,OAAO,CACL,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,gBAAgB,EAAE,EAAE,EAAE;YACzD,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC,CAAC;SACH,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,gBAAwB,EAAE,OAAiB;QAC9D,OAAO,CACL,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAS,MAAM,gBAAgB,EAAE,EAAE;YACrD,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;gBAClC,MAAM,EAAE,WAAW;gBACnB,cAAc,EAAE,kBAAkB;aACnC,CAAC;SACH,CAAC,CACH,CAAC,IAAI,CAAC;IACT,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAU,EAAE,OAAiB;QACxC,OAAO,CACL,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,WAAW,EAAE,IAAI,EAAE;YACvD,eAAe,EAAE,IAAI;YACrB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,cAAc,EAAE,kBAAkB;aACnC,CAAC;SACH,CAAC,CACH,CAAC,IAAI,CAAC,IAAI,CAAC;IACd,CAAC;CACF"}
|
package/dist/client/client.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.pp-dev-info {
|
|
1
|
+
.pp-dev-info-namespace {
|
|
2
2
|
--pp-dev-info-color-primary: #007bff;
|
|
3
3
|
--pp-dev-info-color-secondary: #6c757d;
|
|
4
4
|
--pp-dev-info-color-success: #28a745;
|
|
@@ -9,6 +9,81 @@
|
|
|
9
9
|
--pp-dev-info-color-dark: #343a40;
|
|
10
10
|
--pp-dev-info-color-white: #ffffff;
|
|
11
11
|
--pp-dev-info-color-black: #000000;
|
|
12
|
+
}
|
|
13
|
+
.pp-dev-info-namespace .pp-dev-info__popup {
|
|
14
|
+
position: absolute;
|
|
15
|
+
top: 10px;
|
|
16
|
+
right: 10px;
|
|
17
|
+
width: max-content;
|
|
18
|
+
max-width: 300px;
|
|
19
|
+
height: max-content;
|
|
20
|
+
max-height: max-content;
|
|
21
|
+
background-color: var(--pp-dev-info-color-white);
|
|
22
|
+
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
|
|
23
|
+
border-radius: 3px;
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: column;
|
|
26
|
+
transition: all 0.3s;
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
z-index: 100000;
|
|
29
|
+
border: 1px solid var(--pp-dev-info-color-secondary);
|
|
30
|
+
}
|
|
31
|
+
.pp-dev-info-namespace .pp-dev-info__popup-title {
|
|
32
|
+
display: flex;
|
|
33
|
+
align-items: center;
|
|
34
|
+
justify-content: space-between;
|
|
35
|
+
padding: 0 10px;
|
|
36
|
+
height: 30px;
|
|
37
|
+
width: 100%;
|
|
38
|
+
box-sizing: border-box;
|
|
39
|
+
border-bottom: 1px solid var(--pp-dev-info-color-light);
|
|
40
|
+
background-color: var(--pp-dev-info-color-secondary);
|
|
41
|
+
}
|
|
42
|
+
.pp-dev-info-namespace .pp-dev-info__popup-title-text {
|
|
43
|
+
font-size: 14px;
|
|
44
|
+
font-weight: 700;
|
|
45
|
+
color: var(--pp-dev-info-color-white);
|
|
46
|
+
}
|
|
47
|
+
.pp-dev-info-namespace .pp-dev-info__popup-title-close {
|
|
48
|
+
cursor: pointer;
|
|
49
|
+
width: 30px;
|
|
50
|
+
height: 30px;
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
color: var(--pp-dev-info-color-white);
|
|
55
|
+
}
|
|
56
|
+
.pp-dev-info-namespace .pp-dev-info__popup-title-close:hover {
|
|
57
|
+
color: var(--pp-dev-info-color-light);
|
|
58
|
+
}
|
|
59
|
+
.pp-dev-info-namespace .pp-dev-info__popup-content {
|
|
60
|
+
padding: 10px;
|
|
61
|
+
overflow-y: auto;
|
|
62
|
+
box-sizing: border-box;
|
|
63
|
+
flex-grow: 1;
|
|
64
|
+
background-color: var(--pp-dev-info-color-white);
|
|
65
|
+
width: 100%;
|
|
66
|
+
}
|
|
67
|
+
.pp-dev-info-namespace .pp-dev-info__popup--success {
|
|
68
|
+
border-color: var(--pp-dev-info-color-success);
|
|
69
|
+
}
|
|
70
|
+
.pp-dev-info-namespace .pp-dev-info__popup--success .pp-dev-info__popup-title {
|
|
71
|
+
background-color: var(--pp-dev-info-color-success);
|
|
72
|
+
}
|
|
73
|
+
.pp-dev-info-namespace .pp-dev-info__popup--success .pp-dev-info__popup-content {
|
|
74
|
+
color: var(--pp-dev-info-color-success);
|
|
75
|
+
}
|
|
76
|
+
.pp-dev-info-namespace .pp-dev-info__popup--danger {
|
|
77
|
+
border-color: var(--pp-dev-info-color-danger);
|
|
78
|
+
}
|
|
79
|
+
.pp-dev-info-namespace .pp-dev-info__popup--danger .pp-dev-info__popup-title {
|
|
80
|
+
background-color: var(--pp-dev-info-color-danger);
|
|
81
|
+
}
|
|
82
|
+
.pp-dev-info-namespace .pp-dev-info__popup--danger .pp-dev-info__popup-content {
|
|
83
|
+
color: var(--pp-dev-info-color-danger);
|
|
84
|
+
}
|
|
85
|
+
.pp-dev-info-namespace.pp-dev-info,
|
|
86
|
+
.pp-dev-info-namespace .pp-dev-info {
|
|
12
87
|
position: fixed;
|
|
13
88
|
z-index: 10000;
|
|
14
89
|
white-space: nowrap;
|
|
@@ -27,7 +102,8 @@
|
|
|
27
102
|
transition: all 0.3s;
|
|
28
103
|
overflow: hidden;
|
|
29
104
|
}
|
|
30
|
-
.pp-dev-info
|
|
105
|
+
.pp-dev-info-namespace.pp-dev-info *,
|
|
106
|
+
.pp-dev-info-namespace .pp-dev-info * {
|
|
31
107
|
color: var(--pp-dev-info-color-dark);
|
|
32
108
|
font-family: sans-serif;
|
|
33
109
|
font-size: 13px;
|
|
@@ -47,45 +123,58 @@
|
|
|
47
123
|
-webkit-font-smoothing: antialiased;
|
|
48
124
|
-moz-osx-font-smoothing: grayscale;
|
|
49
125
|
}
|
|
50
|
-
.pp-dev-info .primary
|
|
126
|
+
.pp-dev-info-namespace.pp-dev-info .primary,
|
|
127
|
+
.pp-dev-info-namespace .pp-dev-info .primary {
|
|
51
128
|
color: var(--pp-dev-info-color-primary) !important;
|
|
52
129
|
}
|
|
53
|
-
.pp-dev-info .success
|
|
130
|
+
.pp-dev-info-namespace.pp-dev-info .success,
|
|
131
|
+
.pp-dev-info-namespace .pp-dev-info .success {
|
|
54
132
|
color: var(--pp-dev-info-color-success) !important;
|
|
55
133
|
}
|
|
56
|
-
.pp-dev-info .info
|
|
134
|
+
.pp-dev-info-namespace.pp-dev-info .info,
|
|
135
|
+
.pp-dev-info-namespace .pp-dev-info .info {
|
|
57
136
|
color: var(--pp-dev-info-color-info) !important;
|
|
58
137
|
}
|
|
59
|
-
.pp-dev-info .warning
|
|
138
|
+
.pp-dev-info-namespace.pp-dev-info .warning,
|
|
139
|
+
.pp-dev-info-namespace .pp-dev-info .warning {
|
|
60
140
|
color: var(--pp-dev-info-color-warning) !important;
|
|
61
141
|
}
|
|
62
|
-
.pp-dev-info .danger
|
|
142
|
+
.pp-dev-info-namespace.pp-dev-info .danger,
|
|
143
|
+
.pp-dev-info-namespace .pp-dev-info .danger {
|
|
63
144
|
color: var(--pp-dev-info-color-danger) !important;
|
|
64
145
|
}
|
|
65
|
-
.pp-dev-info a
|
|
146
|
+
.pp-dev-info-namespace.pp-dev-info a,
|
|
147
|
+
.pp-dev-info-namespace .pp-dev-info a {
|
|
66
148
|
color: var(--pp-dev-info-color-primary);
|
|
67
149
|
text-decoration: none;
|
|
68
150
|
vertical-align: middle;
|
|
69
151
|
line-height: 1.5;
|
|
70
152
|
}
|
|
71
|
-
.pp-dev-info a:hover
|
|
153
|
+
.pp-dev-info-namespace.pp-dev-info a:hover,
|
|
154
|
+
.pp-dev-info-namespace .pp-dev-info a:hover {
|
|
72
155
|
text-decoration: none;
|
|
73
156
|
}
|
|
74
|
-
.pp-dev-info a:active, .pp-dev-info a:hover
|
|
157
|
+
.pp-dev-info-namespace.pp-dev-info a:active, .pp-dev-info-namespace.pp-dev-info a:hover,
|
|
158
|
+
.pp-dev-info-namespace .pp-dev-info a:active,
|
|
159
|
+
.pp-dev-info-namespace .pp-dev-info a:hover {
|
|
75
160
|
outline: 0;
|
|
76
161
|
}
|
|
77
|
-
.pp-dev-info button
|
|
162
|
+
.pp-dev-info-namespace.pp-dev-info button,
|
|
163
|
+
.pp-dev-info-namespace .pp-dev-info button {
|
|
78
164
|
padding: 1px;
|
|
79
165
|
border: none;
|
|
80
166
|
background: none;
|
|
81
167
|
cursor: pointer;
|
|
82
168
|
outline: none;
|
|
83
169
|
}
|
|
84
|
-
.pp-dev-info .bold,
|
|
85
|
-
.pp-dev-info .status-text
|
|
170
|
+
.pp-dev-info-namespace.pp-dev-info .bold,
|
|
171
|
+
.pp-dev-info-namespace.pp-dev-info .status-text,
|
|
172
|
+
.pp-dev-info-namespace .pp-dev-info .bold,
|
|
173
|
+
.pp-dev-info-namespace .pp-dev-info .status-text {
|
|
86
174
|
font-weight: 700;
|
|
87
175
|
}
|
|
88
|
-
.pp-dev-info__wrap-btn
|
|
176
|
+
.pp-dev-info-namespace.pp-dev-info__wrap-btn,
|
|
177
|
+
.pp-dev-info-namespace .pp-dev-info__wrap-btn {
|
|
89
178
|
box-sizing: content-box;
|
|
90
179
|
display: flex;
|
|
91
180
|
align-items: center;
|
|
@@ -95,46 +184,58 @@
|
|
|
95
184
|
padding-left: 10px;
|
|
96
185
|
cursor: pointer;
|
|
97
186
|
}
|
|
98
|
-
.pp-dev-info__wrap-btn:hover
|
|
187
|
+
.pp-dev-info-namespace.pp-dev-info__wrap-btn:hover,
|
|
188
|
+
.pp-dev-info-namespace .pp-dev-info__wrap-btn:hover {
|
|
99
189
|
animation: arrowHover 0.8s linear infinite;
|
|
100
190
|
}
|
|
101
|
-
.pp-dev-info__wrap-btn-arrow
|
|
191
|
+
.pp-dev-info-namespace.pp-dev-info__wrap-btn-arrow,
|
|
192
|
+
.pp-dev-info-namespace .pp-dev-info__wrap-btn-arrow {
|
|
102
193
|
width: 13px;
|
|
103
194
|
fill: var(--pp-dev-info-color-dark);
|
|
104
195
|
}
|
|
105
|
-
.pp-dev-info.closed
|
|
196
|
+
.pp-dev-info-namespace.pp-dev-info.closed,
|
|
197
|
+
.pp-dev-info-namespace .pp-dev-info.closed {
|
|
106
198
|
transform: translateX(calc(100% - 27px));
|
|
107
199
|
}
|
|
108
|
-
.pp-dev-info.closed .pp-dev-info__wrap-btn:hover
|
|
200
|
+
.pp-dev-info-namespace.pp-dev-info.closed .pp-dev-info__wrap-btn:hover,
|
|
201
|
+
.pp-dev-info-namespace .pp-dev-info.closed .pp-dev-info__wrap-btn:hover {
|
|
109
202
|
animation: arrowHover 1.2s linear infinite;
|
|
110
203
|
}
|
|
111
|
-
.pp-dev-info.closed .pp-dev-info__wrap-btn .pp-dev-info__wrap-btn-arrow
|
|
204
|
+
.pp-dev-info-namespace.pp-dev-info.closed .pp-dev-info__wrap-btn .pp-dev-info__wrap-btn-arrow,
|
|
205
|
+
.pp-dev-info-namespace .pp-dev-info.closed .pp-dev-info__wrap-btn .pp-dev-info__wrap-btn-arrow {
|
|
112
206
|
transform: rotate(180deg);
|
|
113
207
|
max-width: 12px;
|
|
114
208
|
}
|
|
115
|
-
.pp-dev-info.closed .pp-dev-info__wrap-btn
|
|
209
|
+
.pp-dev-info-namespace.pp-dev-info.closed .pp-dev-info__wrap-btn,
|
|
210
|
+
.pp-dev-info-namespace .pp-dev-info.closed .pp-dev-info__wrap-btn {
|
|
116
211
|
margin-left: -2px;
|
|
117
212
|
}
|
|
118
|
-
.pp-dev-info .sync-button
|
|
213
|
+
.pp-dev-info-namespace.pp-dev-info .sync-button,
|
|
214
|
+
.pp-dev-info-namespace .pp-dev-info .sync-button {
|
|
119
215
|
background-color: transparent;
|
|
120
216
|
border: none;
|
|
121
217
|
cursor: pointer;
|
|
122
218
|
padding: 4px 2px;
|
|
123
219
|
}
|
|
124
|
-
.pp-dev-info .sync-button.syncing
|
|
220
|
+
.pp-dev-info-namespace.pp-dev-info .sync-button.syncing,
|
|
221
|
+
.pp-dev-info-namespace .pp-dev-info .sync-button.syncing {
|
|
125
222
|
cursor: not-allowed;
|
|
126
223
|
pointer-events: none;
|
|
127
224
|
}
|
|
128
|
-
.pp-dev-info .sync-button.syncing svg
|
|
225
|
+
.pp-dev-info-namespace.pp-dev-info .sync-button.syncing svg,
|
|
226
|
+
.pp-dev-info-namespace .pp-dev-info .sync-button.syncing svg {
|
|
129
227
|
animation: rotation 2s linear infinite;
|
|
130
228
|
}
|
|
131
|
-
.pp-dev-info .margin-5
|
|
229
|
+
.pp-dev-info-namespace.pp-dev-info .margin-5,
|
|
230
|
+
.pp-dev-info-namespace .pp-dev-info .margin-5 {
|
|
132
231
|
margin-right: 5px;
|
|
133
232
|
}
|
|
134
|
-
.pp-dev-info .margin-10
|
|
233
|
+
.pp-dev-info-namespace.pp-dev-info .margin-10,
|
|
234
|
+
.pp-dev-info-namespace .pp-dev-info .margin-10 {
|
|
135
235
|
margin-right: 10px;
|
|
136
236
|
}
|
|
137
|
-
.pp-dev-info .custom-font
|
|
237
|
+
.pp-dev-info-namespace.pp-dev-info .custom-font,
|
|
238
|
+
.pp-dev-info-namespace .pp-dev-info .custom-font {
|
|
138
239
|
font-family: sans-serif;
|
|
139
240
|
font-size: 13px;
|
|
140
241
|
font-weight: 300;
|
|
@@ -142,7 +243,8 @@
|
|
|
142
243
|
line-height: 1.5;
|
|
143
244
|
color: var(--pp-dev-info-color-dark);
|
|
144
245
|
}
|
|
145
|
-
.pp-dev-info .custom-font:not(.not-colored) a
|
|
246
|
+
.pp-dev-info-namespace.pp-dev-info .custom-font:not(.not-colored) a,
|
|
247
|
+
.pp-dev-info-namespace .pp-dev-info .custom-font:not(.not-colored) a {
|
|
146
248
|
color: var(--pp-dev-info-color-primary) !important;
|
|
147
249
|
}
|
|
148
250
|
@keyframes rotation {
|
|
@@ -165,7 +267,8 @@
|
|
|
165
267
|
}
|
|
166
268
|
}
|
|
167
269
|
@media screen and (prefers-color-scheme: dark) {
|
|
168
|
-
.pp-dev-info
|
|
270
|
+
.pp-dev-info-namespace.pp-dev-info,
|
|
271
|
+
.pp-dev-info-namespace .pp-dev-info {
|
|
169
272
|
--pp-dev-info-color-primary: #007bff;
|
|
170
273
|
--pp-dev-info-color-secondary: #a4abb6;
|
|
171
274
|
--pp-dev-info-color-success: #56f000;
|
package/dist/client/client.js
CHANGED
|
@@ -19,6 +19,32 @@ function getStorageItem(key) {
|
|
|
19
19
|
}
|
|
20
20
|
return null;
|
|
21
21
|
}
|
|
22
|
+
function infoPopup(opts) {
|
|
23
|
+
const template = `
|
|
24
|
+
<div class="pp-dev-info__popup ${opts.className || ''}" style="${opts.style || ''}">
|
|
25
|
+
<div class="pp-dev-info__popup-title">
|
|
26
|
+
<div class="pp-dev-info__popup-title-text">${opts.title}</div>
|
|
27
|
+
<div class="pp-dev-info__popup-title-close">
|
|
28
|
+
<svg viewBox="0 0 24 24" width="16" height="16" stroke="currentColor" stroke-width="1.5" fill="none" stroke-linecap="round" stroke-linejoin="round">
|
|
29
|
+
<path d="M18 6L6 18"></path>
|
|
30
|
+
<path d="M6 6l12 12"></path>
|
|
31
|
+
</svg>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
<div class="pp-dev-info__popup-content">${opts.content}</div>
|
|
35
|
+
</div>
|
|
36
|
+
`;
|
|
37
|
+
const $popup = document.createElement('div');
|
|
38
|
+
$popup.classList.add('pp-dev-info-namespace');
|
|
39
|
+
$popup.innerHTML = template;
|
|
40
|
+
$popup.querySelector('.pp-dev-info__popup-title-close')?.addEventListener('click', () => {
|
|
41
|
+
$popup.remove();
|
|
42
|
+
});
|
|
43
|
+
document.body.appendChild($popup);
|
|
44
|
+
setTimeout(() => {
|
|
45
|
+
$popup.remove();
|
|
46
|
+
}, 10000);
|
|
47
|
+
}
|
|
22
48
|
if (import.meta.hot) {
|
|
23
49
|
const { hot } = import.meta;
|
|
24
50
|
const CLOSED_CLASS = 'closed';
|
|
@@ -47,7 +73,20 @@ if (import.meta.hot) {
|
|
|
47
73
|
if ($syncButton) {
|
|
48
74
|
hot.on('template:sync:response', (payload) => {
|
|
49
75
|
$syncButton.classList.remove('syncing');
|
|
50
|
-
|
|
76
|
+
if ('error' in payload && typeof payload.error !== 'undefined') {
|
|
77
|
+
infoPopup({
|
|
78
|
+
title: 'Sync error',
|
|
79
|
+
content: payload.error,
|
|
80
|
+
className: 'pp-dev-info__popup--danger',
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else if ('syncedAt' in payload && typeof payload.syncedAt !== 'undefined') {
|
|
84
|
+
infoPopup({
|
|
85
|
+
title: 'Sync success',
|
|
86
|
+
content: `Synced at ${new Date(payload.syncedAt).toLocaleString()}.<br />Backup filename: ${payload.backupFilename}`,
|
|
87
|
+
className: 'pp-dev-info__popup--success',
|
|
88
|
+
});
|
|
89
|
+
}
|
|
51
90
|
});
|
|
52
91
|
$syncButton.addEventListener('click', (ev) => {
|
|
53
92
|
ev.preventDefault();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sources":["index.ts"],"sourcesContent":[null],"names":[],"mappings":"AAIA,SAAS,iBAAiB,GAAA;IACxB,IAAI;AACF,QAAA,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACrC,QAAA,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAEhC,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACV,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,KAAa,EAAA;IAChD,IAAI,iBAAiB,EAAE,EAAE;AACvB,QAAA,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAClC,KAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAA;IACjC,IAAI,iBAAiB,EAAE,EAAE;AACvB,QAAA,OAAO,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAClC,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;AACnB,IAAA,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAE5B,MAAM,YAAY,GAAG,QAAQ,CAAC;IAC9B,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;IAEtD,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAqB,KAAI;QAC3C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC;AAClC,KAAC,CAAC,CAAC;IAEH,IAAI,QAAQ,GAAG,cAAc,CAAC,wBAAwB,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC;IAE5E,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IAE1D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC;IAC7E,MAAM,kBAAkB,GAAG,mBAAmB,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;AAErE,IAAA,IAAI,UAAU,IAAI,mBAAmB,IAAI,kBAAkB,EAAE;AAC3D,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACvC,YAAA,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChD,SAAA;QAED,mBAAmB,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,KAAI;YAClD,CAAC,CAAC,cAAc,EAAE,CAAC;AAEnB,YAAA,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAC1C,YAAA,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAElD,QAAQ,GAAG,CAAC,QAAQ,CAAC;AAErB,YAAA,cAAc,CAAC,wBAAwB,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;AACxE,SAAC,CAAC,CAAC;AACJ,KAAA;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;AAE7D,IAAA,IAAI,WAAW,EAAE;QACf,GAAG,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"client.js","sources":["index.ts"],"sourcesContent":[null],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/client/index.html
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{%# This is EJS template. Parameters: openDelimiter: "{", closeDelimiter="}" %}
|
|
2
|
-
<div class="pp-dev-info">
|
|
2
|
+
<div class="pp-dev-info-namespace pp-dev-info">
|
|
3
3
|
<div class="pp-dev-info__wrap-btn">
|
|
4
4
|
<svg class="pp-dev-info__wrap-btn-arrow" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
|
|
5
5
|
<path
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
{% } %}
|
|
34
34
|
</div>
|
|
35
35
|
{% if (!templateLess && backendBaseURL && !Number.isNaN(+portalPageId)) { %}
|
|
36
|
-
<button id="sync-template" class="sync-button" title="Sync template
|
|
36
|
+
<button id="sync-template" class="sync-button" title="Sync template">
|
|
37
37
|
<svg
|
|
38
38
|
fill="#007BFF"
|
|
39
39
|
width="16px"
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { ViteDevServer } from 'vite';
|
|
2
|
+
import { DistService } from './dist.service';
|
|
3
|
+
import { MiAPI } from './pp.middleware';
|
|
4
|
+
export interface ClientServiceOptions {
|
|
5
|
+
distService?: DistService;
|
|
6
|
+
miAPI?: MiAPI;
|
|
7
|
+
}
|
|
2
8
|
export declare class ClientService {
|
|
3
9
|
private readonly server;
|
|
4
|
-
private opts;
|
|
10
|
+
private readonly opts;
|
|
5
11
|
private readonly eventMap;
|
|
6
|
-
constructor(server: ViteDevServer, opts?:
|
|
12
|
+
constructor(server: ViteDevServer, opts?: ClientServiceOptions);
|
|
7
13
|
init(): void;
|
|
8
14
|
onInfoDataRequest(): void;
|
|
9
|
-
onTemplateSync(
|
|
15
|
+
onTemplateSync(): Promise<void>;
|
|
10
16
|
}
|
|
@@ -4,7 +4,7 @@ export class ClientService {
|
|
|
4
4
|
eventMap;
|
|
5
5
|
constructor(server, opts) {
|
|
6
6
|
this.server = server;
|
|
7
|
-
this.opts = opts;
|
|
7
|
+
this.opts = opts || {};
|
|
8
8
|
this.eventMap = new Map();
|
|
9
9
|
this.eventMap.set('info-data:request', this.onInfoDataRequest.bind(this));
|
|
10
10
|
this.eventMap.set('template:sync', this.onTemplateSync.bind(this));
|
|
@@ -23,11 +23,37 @@ export class ClientService {
|
|
|
23
23
|
data: {},
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
onTemplateSync(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
26
|
+
async onTemplateSync() {
|
|
27
|
+
if (this.opts.distService && this.opts.miAPI) {
|
|
28
|
+
const { distService, miAPI } = this.opts;
|
|
29
|
+
const currentAssets = await miAPI?.getAssets();
|
|
30
|
+
const newAssets = currentAssets
|
|
31
|
+
? await distService?.saveBackupAndBuild(currentAssets)
|
|
32
|
+
: await distService?.buildNewAssets();
|
|
33
|
+
if (newAssets) {
|
|
34
|
+
const updateResult = await miAPI?.updateAssets(newAssets);
|
|
35
|
+
if (updateResult?.status === 'OK') {
|
|
36
|
+
const backupMeta = distService?.getBackupMeta();
|
|
37
|
+
const { lastBackupName: backupFilename, lastBackupHash: currentHash, lastBackupDate: backupDate, } = backupMeta || { lastBackupName: '', lastBackupHash: '', lastBackupDate: new Date().toISOString() };
|
|
38
|
+
this.server.ws.send('template:sync:response', {
|
|
39
|
+
syncedAt: new Date(backupDate),
|
|
40
|
+
currentHash,
|
|
41
|
+
backupFilename,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.server.ws.send('template:sync:response', { error: 'Failed to update assets' });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.server.ws.send('template:sync:response', { error: 'Failed to build new assets' });
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
this.server.ws.send('template:sync:response', { error: 'Dist service or MiAPI is not defined' });
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
31
57
|
}
|
|
32
58
|
}
|
|
33
59
|
//# sourceMappingURL=client.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.service.js","sourceRoot":"","sources":["../../src/lib/client.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.service.js","sourceRoot":"","sources":["../../src/lib/client.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export declare const TEMPLATE_PART_PAGE_NAME = "pageName";
|
|
3
|
+
export declare const TEMPLATE_PART_DATE = "date";
|
|
4
|
+
export interface SyncOptions {
|
|
5
|
+
backupFolder?: string;
|
|
6
|
+
backupNameTemplate?: string;
|
|
7
|
+
dateFormat?: (date: Date) => string;
|
|
8
|
+
}
|
|
9
|
+
export interface SyncMeta {
|
|
10
|
+
lastBackupName: string;
|
|
11
|
+
lastBackupHash: string;
|
|
12
|
+
lastBackupDate: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class DistService {
|
|
15
|
+
private readonly backupFolder;
|
|
16
|
+
private backupNameTemplate;
|
|
17
|
+
private readonly dateFormat;
|
|
18
|
+
private readonly pageName;
|
|
19
|
+
private currentMeta;
|
|
20
|
+
constructor(pageName: string, syncOptions?: SyncOptions);
|
|
21
|
+
checkMeta(): Promise<void>;
|
|
22
|
+
readMetaFile(): Promise<string>;
|
|
23
|
+
writeMetaFile(meta: SyncMeta): Promise<void>;
|
|
24
|
+
syncMeta(): Promise<void>;
|
|
25
|
+
getLatestSavedBackup(): Promise<string | null>;
|
|
26
|
+
backupName(pageName: string, date?: Date): string;
|
|
27
|
+
getBackupMeta(): SyncMeta | null;
|
|
28
|
+
saveBackup(backupFile: Buffer): Promise<void>;
|
|
29
|
+
buildNewAssets(): Promise<Buffer>;
|
|
30
|
+
saveBackupAndBuild(backupFile: Buffer): Promise<Buffer>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import * as crypto from 'crypto';
|
|
5
|
+
import * as process from 'process';
|
|
6
|
+
import * as child_process from 'child_process';
|
|
7
|
+
import * as console from 'console';
|
|
8
|
+
export const TEMPLATE_PART_PAGE_NAME = 'pageName';
|
|
9
|
+
export const TEMPLATE_PART_DATE = 'date';
|
|
10
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const pluginPath = path.resolve(__dirname, '..', '..');
|
|
12
|
+
const node_modules_path = path.resolve(pluginPath, '..', '..');
|
|
13
|
+
const metaDirName = '.pp-dev-meta';
|
|
14
|
+
const metaDirPath = path.resolve(node_modules_path, metaDirName);
|
|
15
|
+
const metaFilePath = path.resolve(metaDirPath, 'sync-service.meta.json');
|
|
16
|
+
export class DistService {
|
|
17
|
+
backupFolder;
|
|
18
|
+
backupNameTemplate;
|
|
19
|
+
dateFormat;
|
|
20
|
+
pageName;
|
|
21
|
+
currentMeta = null;
|
|
22
|
+
constructor(pageName, syncOptions) {
|
|
23
|
+
const { backupFolder = path.resolve(process.cwd(), 'backups'), backupNameTemplate = `{${TEMPLATE_PART_PAGE_NAME}}-{${TEMPLATE_PART_DATE}}.zip`, dateFormat = (date) => date.toISOString().replace(/:/g, '-').replace(/\..*$/, ''), } = syncOptions || {};
|
|
24
|
+
this.backupFolder = backupFolder;
|
|
25
|
+
this.backupNameTemplate = backupNameTemplate;
|
|
26
|
+
this.dateFormat = dateFormat;
|
|
27
|
+
this.pageName = pageName;
|
|
28
|
+
this.syncMeta();
|
|
29
|
+
}
|
|
30
|
+
async checkMeta() {
|
|
31
|
+
try {
|
|
32
|
+
await fs.stat(metaDirPath);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
await fs.mkdir(metaDirPath);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
await fs.stat(this.backupFolder);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
await fs.mkdir(this.backupFolder);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
async readMetaFile() {
|
|
45
|
+
await this.checkMeta();
|
|
46
|
+
return await fs
|
|
47
|
+
.readFile(metaFilePath, {
|
|
48
|
+
encoding: 'utf-8',
|
|
49
|
+
})
|
|
50
|
+
.catch(() => '{}');
|
|
51
|
+
}
|
|
52
|
+
async writeMetaFile(meta) {
|
|
53
|
+
await this.checkMeta();
|
|
54
|
+
return await fs.writeFile(metaFilePath, JSON.stringify(meta, null, 2), {
|
|
55
|
+
encoding: 'utf-8',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async syncMeta() {
|
|
59
|
+
if (!this.currentMeta) {
|
|
60
|
+
this.currentMeta = JSON.parse(await this.readMetaFile());
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
await this.writeMetaFile(this.currentMeta);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async getLatestSavedBackup() {
|
|
67
|
+
const { lastBackupName } = this.currentMeta;
|
|
68
|
+
if (!lastBackupName) {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const backupPath = path.resolve(this.backupFolder, lastBackupName);
|
|
72
|
+
try {
|
|
73
|
+
await fs.stat(backupPath);
|
|
74
|
+
return backupPath;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
backupName(pageName, date = new Date()) {
|
|
81
|
+
return this.backupNameTemplate
|
|
82
|
+
.replace(`{${TEMPLATE_PART_PAGE_NAME}}`, pageName)
|
|
83
|
+
.replace(`{${TEMPLATE_PART_DATE}}`, this.dateFormat(date));
|
|
84
|
+
}
|
|
85
|
+
getBackupMeta() {
|
|
86
|
+
return this.currentMeta;
|
|
87
|
+
}
|
|
88
|
+
async saveBackup(backupFile) {
|
|
89
|
+
const backupFileHash = crypto.createHash('md5').update(backupFile).digest('hex');
|
|
90
|
+
const lastSavedBackup = await this.getLatestSavedBackup();
|
|
91
|
+
if (lastSavedBackup) {
|
|
92
|
+
const { lastBackupHash } = this.currentMeta;
|
|
93
|
+
if (lastBackupHash === backupFileHash) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const backupDate = new Date();
|
|
98
|
+
const filename = this.backupName(this.pageName, backupDate);
|
|
99
|
+
this.currentMeta.lastBackupName = filename;
|
|
100
|
+
this.currentMeta.lastBackupHash = backupFileHash;
|
|
101
|
+
this.currentMeta.lastBackupDate = backupDate.toISOString();
|
|
102
|
+
await this.syncMeta();
|
|
103
|
+
return await fs.writeFile(path.resolve(this.backupFolder, filename), backupFile);
|
|
104
|
+
}
|
|
105
|
+
async buildNewAssets() {
|
|
106
|
+
const buildCommand = new Promise(function (resolve, reject) {
|
|
107
|
+
let data = '';
|
|
108
|
+
console.log('\x1b[36m%s\x1b[0m', '[DistService] Build started');
|
|
109
|
+
const proc = child_process.spawn('node', [path.resolve(pluginPath, './bin/pp-dev.js'), 'build'], {
|
|
110
|
+
cwd: process.cwd(),
|
|
111
|
+
env: process.env,
|
|
112
|
+
stdio: 'inherit',
|
|
113
|
+
});
|
|
114
|
+
proc.on('message', (msg) => {
|
|
115
|
+
data += msg;
|
|
116
|
+
});
|
|
117
|
+
proc.on('close', (code) => {
|
|
118
|
+
if (code !== 0) {
|
|
119
|
+
reject(new Error(`build command exited with code ${code}`));
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
resolve(data);
|
|
123
|
+
});
|
|
124
|
+
proc.on('error', (err) => {
|
|
125
|
+
reject(err);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
try {
|
|
129
|
+
await buildCommand.finally(() => {
|
|
130
|
+
console.log('\x1b[36m%s\x1b[0m', '[DistService] Build finished');
|
|
131
|
+
});
|
|
132
|
+
const assetFile = path.resolve(process.cwd(), `./dist-zip/${this.pageName}.zip`);
|
|
133
|
+
if (!(await fs.stat(assetFile))) {
|
|
134
|
+
throw new Error(`File ${assetFile} not found`);
|
|
135
|
+
}
|
|
136
|
+
return await fs.readFile(assetFile);
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
console.log(e);
|
|
140
|
+
throw e;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
async saveBackupAndBuild(backupFile) {
|
|
144
|
+
await this.saveBackup(backupFile);
|
|
145
|
+
return await this.buildNewAssets();
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=dist.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dist.service.js","sourceRoot":"","sources":["../../src/lib/dist.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
export type Headers = Record<string, string | undefined>;
|
|
3
|
+
export interface MiAPIOptions {
|
|
4
|
+
portalPageId?: number;
|
|
5
|
+
headers?: Headers;
|
|
6
|
+
templateLess: boolean;
|
|
7
|
+
}
|
|
3
8
|
export declare class MiAPI {
|
|
4
9
|
#private;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
10
|
+
private portalPageId?;
|
|
11
|
+
private templateLess?;
|
|
12
|
+
private assetsApi;
|
|
13
|
+
private pageApi;
|
|
14
|
+
constructor(baseURL: string, opts?: MiAPIOptions);
|
|
8
15
|
isTemplateLoaded(): Promise<boolean>;
|
|
16
|
+
updateHeaders(headers: Headers): void;
|
|
9
17
|
getPageTemplate(headers: Headers): Promise<string>;
|
|
10
18
|
getPageVariables(pageId: number, headers: Headers): Promise<{
|
|
11
19
|
name: string;
|
|
12
20
|
value: string;
|
|
13
21
|
}[]>;
|
|
14
22
|
buildPage(content: string | Buffer, miHudLess?: boolean): string;
|
|
23
|
+
getAssets(): Promise<Buffer | undefined>;
|
|
24
|
+
updateAssets(assets: Buffer): Promise<{
|
|
25
|
+
status?: "OK" | undefined;
|
|
26
|
+
} | undefined>;
|
|
15
27
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
2
|
import { JSDOM } from 'jsdom';
|
|
3
|
+
import { AssetsAPI, PageAPI } from '../api/index.js';
|
|
3
4
|
export class MiAPI {
|
|
4
5
|
#headers;
|
|
5
6
|
#axios;
|
|
@@ -8,8 +9,12 @@ export class MiAPI {
|
|
|
8
9
|
#pageVars;
|
|
9
10
|
#templateLoaded;
|
|
10
11
|
#templateLoadedResolve;
|
|
12
|
+
portalPageId;
|
|
13
|
+
templateLess;
|
|
14
|
+
assetsApi;
|
|
15
|
+
pageApi;
|
|
11
16
|
constructor(baseURL, opts) {
|
|
12
|
-
const { headers = {} } = opts || {};
|
|
17
|
+
const { headers = {}, portalPageId, templateLess = true } = opts || {};
|
|
13
18
|
this.#headers = headers;
|
|
14
19
|
this.#pageVars = [];
|
|
15
20
|
this.#pageTitle = '';
|
|
@@ -17,6 +22,10 @@ export class MiAPI {
|
|
|
17
22
|
this.#templateLoadedResolve = resolve;
|
|
18
23
|
});
|
|
19
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);
|
|
20
29
|
}
|
|
21
30
|
async isTemplateLoaded() {
|
|
22
31
|
return this.#templateLoaded;
|
|
@@ -24,49 +33,34 @@ export class MiAPI {
|
|
|
24
33
|
#clearHeaders(headers) {
|
|
25
34
|
const obj = Object.assign({}, headers, { host: undefined });
|
|
26
35
|
Object.keys(obj).forEach((key) => obj[key] === undefined && delete obj[key]);
|
|
36
|
+
this.#headers = obj;
|
|
27
37
|
return obj;
|
|
28
38
|
}
|
|
39
|
+
updateHeaders(headers) {
|
|
40
|
+
this.#clearHeaders(headers);
|
|
41
|
+
}
|
|
29
42
|
async getPageTemplate(headers) {
|
|
30
43
|
if (this.#pageTemplate) {
|
|
31
44
|
return Promise.resolve(this.#pageTemplate);
|
|
32
45
|
}
|
|
33
|
-
|
|
34
|
-
.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
'content-type': 'application/json',
|
|
39
|
-
}),
|
|
40
|
-
})
|
|
41
|
-
.then((response) => response.data);
|
|
42
|
-
let page = pageList.pages.find((p) => p.name === '[DEV PAGE. DO NOT DELETE]');
|
|
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]');
|
|
43
51
|
if (!page) {
|
|
44
|
-
page = await this
|
|
45
|
-
.post('/api/page/', {
|
|
52
|
+
page = await this.pageApi.create({
|
|
46
53
|
enabled: 'Y',
|
|
47
54
|
name: '[DEV PAGE. DO NOT DELETE]',
|
|
48
55
|
internal_name: 'dev-page-template',
|
|
49
56
|
visible_in_homepage: 'Y',
|
|
50
|
-
},
|
|
51
|
-
withCredentials: true,
|
|
52
|
-
headers: Object.assign(this.#clearHeaders(headers), {
|
|
53
|
-
accept: 'application/json',
|
|
54
|
-
'content-type': 'application/json',
|
|
55
|
-
}),
|
|
56
|
-
})
|
|
57
|
-
.then((response) => response.data.page);
|
|
57
|
+
}, this.#clearHeaders(headers));
|
|
58
58
|
}
|
|
59
|
-
return await this
|
|
60
|
-
.
|
|
61
|
-
withCredentials: true,
|
|
62
|
-
headers: Object.assign(this.#clearHeaders(headers), {
|
|
63
|
-
accept: 'text/html',
|
|
64
|
-
'content-type': 'application/json',
|
|
65
|
-
}),
|
|
66
|
-
})
|
|
59
|
+
return await this.pageApi
|
|
60
|
+
.getPageContent(page.internal_name, this.#clearHeaders(headers))
|
|
67
61
|
.then((response) => {
|
|
68
|
-
this.#pageTemplate = response
|
|
69
|
-
return response
|
|
62
|
+
this.#pageTemplate = response;
|
|
63
|
+
return response;
|
|
70
64
|
})
|
|
71
65
|
.finally(() => {
|
|
72
66
|
this.#templateLoadedResolve(true);
|
|
@@ -74,19 +68,14 @@ export class MiAPI {
|
|
|
74
68
|
}
|
|
75
69
|
async getPageVariables(pageId, headers) {
|
|
76
70
|
this.#pageTemplate = await this.getPageTemplate(headers);
|
|
77
|
-
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
'cache-control': 'no-cache',
|
|
84
|
-
pragma: 'no-cache',
|
|
85
|
-
expires: '0',
|
|
86
|
-
}),
|
|
87
|
-
})
|
|
71
|
+
if (!this.portalPageId) {
|
|
72
|
+
this.portalPageId = pageId;
|
|
73
|
+
this.templateLess = false;
|
|
74
|
+
}
|
|
75
|
+
return await this.pageApi
|
|
76
|
+
.get(pageId, this.#clearHeaders(headers))
|
|
88
77
|
.then((response) => {
|
|
89
|
-
const {
|
|
78
|
+
const { tags = '[]', name, template } = response;
|
|
90
79
|
if (template && tags) {
|
|
91
80
|
const parsed = JSON.parse(tags);
|
|
92
81
|
this.#pageVars = parsed;
|
|
@@ -136,5 +125,31 @@ export class MiAPI {
|
|
|
136
125
|
const serializedDom = dom.serialize();
|
|
137
126
|
return serializedDom.replace(new RegExp(`<div>\\s*${placeholderText}\\s*<\\/div>`, 'i'), result);
|
|
138
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
|
+
}
|
|
139
154
|
}
|
|
140
155
|
//# sourceMappingURL=pp.middleware.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pp.middleware.js","sourceRoot":"","sources":["../../src/lib/pp.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"pp.middleware.js","sourceRoot":"","sources":["../../src/lib/pp.middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -3,6 +3,7 @@ import { MiAPI } from './lib/pp.middleware.js';
|
|
|
3
3
|
import { urlReplacer } from './lib/helpers/url.helper.js';
|
|
4
4
|
import { ClientService } from './lib/client.service.js';
|
|
5
5
|
import { initProxyCache } from './lib/proxy-cache.middleware.js';
|
|
6
|
+
import { DistService } from './lib/dist.service.js';
|
|
6
7
|
const redirect = (res, url, statusCode) => {
|
|
7
8
|
res.setHeader('location', url);
|
|
8
9
|
res.statusCode = statusCode || 302;
|
|
@@ -44,12 +45,21 @@ function vitePPDev(options) {
|
|
|
44
45
|
if (req.url === '/' || req.url === `/pt/${templateName}` || req.url === baseWithoutTrailingSlash) {
|
|
45
46
|
return redirect(res, base, 302);
|
|
46
47
|
}
|
|
48
|
+
else if (req.url?.includes('?') && req.url.split('?')[0] === baseWithoutTrailingSlash) {
|
|
49
|
+
return redirect(res, `${base}?${req.url.split('?')[1]}`, 302);
|
|
50
|
+
}
|
|
47
51
|
next();
|
|
48
52
|
});
|
|
49
53
|
if (backendBaseURL) {
|
|
50
54
|
const baseUrlHost = new URL(backendBaseURL).host;
|
|
51
55
|
const mi = new MiAPI(backendBaseURL, {
|
|
52
|
-
headers: {
|
|
56
|
+
headers: {
|
|
57
|
+
host: baseUrlHost,
|
|
58
|
+
referer: backendBaseURL,
|
|
59
|
+
origin: backendBaseURL.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i, '$1$2'),
|
|
60
|
+
},
|
|
61
|
+
portalPageId,
|
|
62
|
+
templateLess,
|
|
53
63
|
});
|
|
54
64
|
server.middlewares.use(initProxyCache({ viteDevServer: server, ttl: 10 * 60 * 1000 }));
|
|
55
65
|
server.middlewares.use(proxyPassMiddleware({
|
|
@@ -98,8 +108,8 @@ function vitePPDev(options) {
|
|
|
98
108
|
}
|
|
99
109
|
next();
|
|
100
110
|
});
|
|
101
|
-
const
|
|
102
|
-
eventHandler
|
|
111
|
+
const distService = new DistService(templateName);
|
|
112
|
+
const eventHandler = new ClientService(server, { distService, miAPI: mi });
|
|
103
113
|
}
|
|
104
114
|
},
|
|
105
115
|
};
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AACA,OAAO,mBAAmB,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,KAAK,EAAW,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metricinsights/pp-dev",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"description": "Portal Page dev build tool",
|
|
6
6
|
"bin": {
|
|
7
7
|
"pp-dev": "bin/pp-dev.js"
|
|
@@ -37,6 +37,7 @@
|
|
|
37
37
|
"esbuild": "^0.17.18",
|
|
38
38
|
"express": "^4.18.2",
|
|
39
39
|
"file-type": "^18.3.0",
|
|
40
|
+
"formdata-node": "^5.0.1",
|
|
40
41
|
"http-proxy-middleware": "^2.0.6",
|
|
41
42
|
"jsdom": "^22.0.0",
|
|
42
43
|
"memory-cache": "^0.2.0",
|