@social-mail/social-mail-web-server 1.7.477 → 1.7.478
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/server/services/html/PreviewDraftService.d.ts.map +1 -1
- package/dist/server/services/html/PreviewDraftService.js +29 -44
- package/dist/server/services/html/PreviewDraftService.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/server/services/html/PreviewDraftService.ts +31 -46
package/package.json
CHANGED
|
@@ -49,7 +49,6 @@ export default class PreviewDraftService extends ServiceObject implements ICache
|
|
|
49
49
|
|
|
50
50
|
async prepareSecureHtml(siteID, site: WebSite, localFile: LocalFile) {
|
|
51
51
|
|
|
52
|
-
|
|
53
52
|
const updateAttribute = (root: string, name: string, element: Element) => {
|
|
54
53
|
const value = element.getAttribute(name);
|
|
55
54
|
if (!value) {
|
|
@@ -68,57 +67,43 @@ export default class PreviewDraftService extends ServiceObject implements ICache
|
|
|
68
67
|
};
|
|
69
68
|
|
|
70
69
|
let body = await localFile.readAsText();
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
src = src.substring(1);
|
|
83
|
-
}
|
|
84
|
-
const includeFile = await this.websiteService.getFile(site.folderID, ... src.split("/"));
|
|
85
|
-
// const includeFile = await this.tfs.downloadAppFile(include);
|
|
86
|
-
const parsed = parser.parseFromString(await includeFile.readAsText(), "text/html");
|
|
87
|
-
const folder = join(b.href , src, "..");
|
|
88
|
-
for(const pe of Array.from(parsed.body.children)) {
|
|
89
|
-
pe.remove();
|
|
90
|
-
updateAddress( folder , pe);
|
|
91
|
-
e.parentElement.insertBefore(pe, e);
|
|
92
|
-
}
|
|
93
|
-
e.remove();
|
|
70
|
+
// perform inject...
|
|
71
|
+
const { window: { document } } = new JSDOM(body);
|
|
72
|
+
const parser = new document.defaultView.DOMParser();
|
|
73
|
+
const b = document.createElement("base");
|
|
74
|
+
b.href = `/social-mail/site/draft/${siteID}/`;
|
|
75
|
+
document.head.insertAdjacentElement("afterbegin", b);
|
|
76
|
+
// we need to process injects first
|
|
77
|
+
for(const e of Array.from(document.body.querySelectorAll("inject"))) {
|
|
78
|
+
let src = e.getAttribute("src");
|
|
79
|
+
if (src.startsWith("/")) {
|
|
80
|
+
src = src.substring(1);
|
|
94
81
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
82
|
+
const includeFile = await this.websiteService.getFile(site.folderID, ... src.split("/"));
|
|
83
|
+
// const includeFile = await this.tfs.downloadAppFile(include);
|
|
84
|
+
const parsed = parser.parseFromString(await includeFile.readAsText(), "text/html");
|
|
85
|
+
const folder = join(b.href , src, "..");
|
|
86
|
+
for(const pe of Array.from(parsed.body.children)) {
|
|
87
|
+
pe.remove();
|
|
88
|
+
updateAddress( folder , pe);
|
|
89
|
+
e.parentElement.insertBefore(pe, e);
|
|
105
90
|
}
|
|
91
|
+
e.remove();
|
|
92
|
+
}
|
|
106
93
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
await this.rewriteLink(node, "href");
|
|
116
|
-
continue;
|
|
117
|
-
}
|
|
94
|
+
for(const node of descendentElementIterator(document.documentElement)) {
|
|
95
|
+
switch(node.tagName) {
|
|
96
|
+
case "SCRIPT":
|
|
97
|
+
await this.rewriteLink(node, "src");
|
|
98
|
+
continue;
|
|
99
|
+
case "LINK":
|
|
100
|
+
await this.rewriteLink(node, "href");
|
|
101
|
+
continue;
|
|
118
102
|
}
|
|
119
|
-
body = body.split(/\<\/head\>/i).join(`<base href="/api/site/draft/${siteID}/"/></head>`);
|
|
120
103
|
}
|
|
121
104
|
|
|
105
|
+
body = `<!DOCTYPE HTML>${document.documentElement.outerHTML}`;
|
|
106
|
+
|
|
122
107
|
return body;
|
|
123
108
|
}
|
|
124
109
|
|