@social-mail/social-mail-web-server 1.16.428 → 1.16.430
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/.tsbuildinfo +1 -1
- package/dist/server/services/puppeteer/PuppeteerService.d.ts +16 -0
- package/dist/server/services/puppeteer/PuppeteerService.d.ts.map +1 -1
- package/dist/server/services/puppeteer/PuppeteerService.js +62 -0
- package/dist/server/services/puppeteer/PuppeteerService.js.map +1 -1
- package/dist/server/services/site/SitePreviewGenerator.d.ts +2 -0
- package/dist/server/services/site/SitePreviewGenerator.d.ts.map +1 -1
- package/dist/server/services/site/SitePreviewGenerator.js +2 -0
- package/dist/server/services/site/SitePreviewGenerator.js.map +1 -1
- package/dist/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.js +3 -1
- package/dist/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.js.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.d.ts +19 -0
- package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.d.ts.map +1 -0
- package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.js +126 -0
- package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.js.map +1 -0
- package/package.json +1 -1
- package/src/server/services/puppeteer/PuppeteerService.ts +84 -0
- package/src/server/services/site/SitePreviewGenerator.ts +2 -0
- package/src/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.ts +3 -1
- package/src/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.tsx +129 -0
|
@@ -21,5 +21,21 @@ export default class PuppeteerService {
|
|
|
21
21
|
url: any;
|
|
22
22
|
width?: number;
|
|
23
23
|
}): Promise<import("@entity-access/server-pages/dist/core/LocalFile.js").LocalFile>;
|
|
24
|
+
generateVideo({ url, mobile, width, height, deviceScaleFactor, pageReadyScript, output, fileName, cacheKey, fullPage, timeout, pageStopScript, pageEvalScript, page }: {
|
|
25
|
+
cacheKey?: string;
|
|
26
|
+
deviceScaleFactor?: number;
|
|
27
|
+
fileName?: string;
|
|
28
|
+
fullPage?: boolean;
|
|
29
|
+
height?: number;
|
|
30
|
+
mobile?: boolean;
|
|
31
|
+
output?: string;
|
|
32
|
+
page?: Page<any, any>;
|
|
33
|
+
pageEvalScript?: string;
|
|
34
|
+
pageReadyScript?: any;
|
|
35
|
+
pageStopScript?: string;
|
|
36
|
+
timeout?: number;
|
|
37
|
+
url: any;
|
|
38
|
+
width?: number;
|
|
39
|
+
}): Promise<import("@entity-access/server-pages/dist/core/LocalFile.js").LocalFile>;
|
|
24
40
|
}
|
|
25
41
|
//# sourceMappingURL=PuppeteerService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PuppeteerService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/puppeteer/PuppeteerService.ts"],"names":[],"mappings":"AAMA,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,oBAAoB,MAAM,mEAAmE,CAAC;AACrG,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAQ5D,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAGjC,SAAS,EAAE,oBAAoB,CAAC;IAGhC,WAAW,EAAE,oBAAoB,CAAC;IAE5B,QAAQ,CAAC,EACX,GAAG,EACH,MAAc,EACd,KAA2B,EAC3B,MAA6B,EAC7B,iBAAkC,EAClC,eAAwB,EACxB,MAAe,EACf,QAAmB,EACnB,QAA6B,EAC7B,IAA8C,EAC9C,SAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,cAA+B,EAC/B,IAAqB,EACxB;;;;;;;;;;;;;;;;KAAA,mFA2EA;CAEJ"}
|
|
1
|
+
{"version":3,"file":"PuppeteerService.d.ts","sourceRoot":"","sources":["../../../../src/server/services/puppeteer/PuppeteerService.ts"],"names":[],"mappings":"AAMA,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,oBAAoB,MAAM,mEAAmE,CAAC;AACrG,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAQ5D,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAGjC,SAAS,EAAE,oBAAoB,CAAC;IAGhC,WAAW,EAAE,oBAAoB,CAAC;IAE5B,QAAQ,CAAC,EACX,GAAG,EACH,MAAc,EACd,KAA2B,EAC3B,MAA6B,EAC7B,iBAAkC,EAClC,eAAwB,EACxB,MAAe,EACf,QAAmB,EACnB,QAA6B,EAC7B,IAA8C,EAC9C,SAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,cAA+B,EAC/B,IAAqB,EACxB;;;;;;;;;;;;;;;;KAAA,mFA2EA;IAGK,aAAa,CAAC,EAChB,GAAG,EACH,MAAc,EACd,KAA2B,EAC3B,MAA6B,EAC7B,iBAAkC,EAClC,eAAwB,EACxB,MAAe,EACf,QAAmB,EACnB,QAA6B,EAC7B,QAAgB,EAChB,OAAe,EACf,cAAuB,EACvB,cAA+B,EAC/B,IAAqB,EACxB;;;;;;;;;;;;;;;KAAA,mFAkEA;CAEJ"}
|
|
@@ -143,6 +143,68 @@ let PuppeteerService = class PuppeteerService {
|
|
|
143
143
|
}
|
|
144
144
|
return file;
|
|
145
145
|
}
|
|
146
|
+
async generateVideo({ url, mobile = false, width = mobile ? 650 : 1200, height = mobile ? 1000 : 1536, deviceScaleFactor = mobile ? 2 : 1, pageReadyScript = void 0, output = "webp", fileName = "w.webp", cacheKey = globalEnv.serverID, fullPage = false, timeout = 30000, pageStopScript = "7000", pageEvalScript = "() => void 0", page = void 0 }) {
|
|
147
|
+
const pageCookies = page?.request?.cookies;
|
|
148
|
+
let cookies = "undefined";
|
|
149
|
+
if (pageCookies) {
|
|
150
|
+
const domain = page.request.URL.hostname;
|
|
151
|
+
cookies = JSON.stringify(Object.entries(pageCookies).map(([name, value]) => ({ name, value, domain, httpOnly: true, secure: true })));
|
|
152
|
+
}
|
|
153
|
+
const qs = new URLSearchParams({
|
|
154
|
+
url,
|
|
155
|
+
width: width,
|
|
156
|
+
height: height,
|
|
157
|
+
deviceScaleFactor: deviceScaleFactor,
|
|
158
|
+
fullPage: fullPage ? "true" : "false",
|
|
159
|
+
stopScript: pageStopScript,
|
|
160
|
+
timeout: timeout,
|
|
161
|
+
pageEvalScript,
|
|
162
|
+
output,
|
|
163
|
+
v: fileName
|
|
164
|
+
});
|
|
165
|
+
if (mobile) {
|
|
166
|
+
qs.append("mobile", "true");
|
|
167
|
+
}
|
|
168
|
+
if (pageReadyScript) {
|
|
169
|
+
qs.append("pageReadyScript", pageReadyScript);
|
|
170
|
+
}
|
|
171
|
+
if (cookies) {
|
|
172
|
+
qs.append("cookies", cookies);
|
|
173
|
+
}
|
|
174
|
+
const query = qs.toString();
|
|
175
|
+
const key = `web-preview-videos/${cacheKey}/${hash("sha256", query, "hex")}.${output}`;
|
|
176
|
+
const file = await this.siteCache.htmlCache.getOrCreateAsync(key, async (lf) => {
|
|
177
|
+
const env_2 = { stack: [], error: void 0, hasError: false };
|
|
178
|
+
try {
|
|
179
|
+
console.log(`Fetching: ${url}`);
|
|
180
|
+
const fetchUrl = `http://${globalEnv.puppeteer.host}:${port}/screen-cast?${query}`;
|
|
181
|
+
const _ = __addDisposableResource(env_2, await LockFile.lock(`puppeteer-preview-generator`), false);
|
|
182
|
+
const r = await fetch(fetchUrl, {
|
|
183
|
+
// dispatcher
|
|
184
|
+
});
|
|
185
|
+
if (r.status >= 399) {
|
|
186
|
+
throw new Error(`Puppeteer Error ${await r.text()}`);
|
|
187
|
+
}
|
|
188
|
+
const b = await r.arrayBuffer();
|
|
189
|
+
const buffer = Buffer.from(b);
|
|
190
|
+
await lf.writeAll(buffer);
|
|
191
|
+
}
|
|
192
|
+
catch (e_2) {
|
|
193
|
+
env_2.error = e_2;
|
|
194
|
+
env_2.hasError = true;
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
__disposeResources(env_2);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
switch (output) {
|
|
201
|
+
case "webm":
|
|
202
|
+
// @ts-expect-error readonly
|
|
203
|
+
file.contentType = "video/webm";
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
return file;
|
|
207
|
+
}
|
|
146
208
|
};
|
|
147
209
|
__decorate([
|
|
148
210
|
Inject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PuppeteerService.js","sourceRoot":"","sources":["../../../../src/server/services/puppeteer/PuppeteerService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PuppeteerService.js","sourceRoot":"","sources":["../../../../src/server/services/puppeteer/PuppeteerService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SitePreviewGenerator.d.ts","sourceRoot":"","sources":["../../../../src/server/services/site/SitePreviewGenerator.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AAEtE,OAAO,OAAO,MAAM,iCAAiC,CAAC;AAGtD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAGrC,GAAG,EAAE,qBAAqB,CAAC;IAErB,cAAc,CAAC,IAAI,EAAC,OAAO,EAAE,QAAQ,CAAC,KAAA
|
|
1
|
+
{"version":3,"file":"SitePreviewGenerator.d.ts","sourceRoot":"","sources":["../../../../src/server/services/site/SitePreviewGenerator.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AAEtE,OAAO,OAAO,MAAM,iCAAiC,CAAC;AAGtD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IAGrC,GAAG,EAAE,qBAAqB,CAAC;IAErB,cAAc,CAAC,IAAI,EAAC,OAAO,EAAE,QAAQ,CAAC,KAAA;;;;;OAc3C;CACJ"}
|
|
@@ -21,6 +21,8 @@ let SitePreviewGenerator = class SitePreviewGenerator {
|
|
|
21
21
|
return {
|
|
22
22
|
preview: `https://${cdn}/social-mail/site/preview/${host}/desktop/${cv}/desktop-preview.webp`,
|
|
23
23
|
previewMobile: `https://${cdn}/social-mail/site/preview/${host}/mobile/${cv}/mobile-preview.webp`,
|
|
24
|
+
previewVideo: `https://${cdn}/social-mail/site/preview-video/${host}/desktop/${cv}/desktop-preview.webm`,
|
|
25
|
+
previewVideoMobile: `https://${cdn}/social-mail/site/preview-video/${host}/mobile/${cv}/mobile-preview.webm`,
|
|
24
26
|
};
|
|
25
27
|
}
|
|
26
28
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SitePreviewGenerator.js","sourceRoot":"","sources":["../../../../src/server/services/site/SitePreviewGenerator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAI1C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAKrC,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,QAAS;QAExC,MAAM,GAAG,GAAG,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1D,OAAO;YACH,OAAO,EAAE,WAAW,GAAG,6BAA6B,IAAI,YAAY,EAAE,uBAAuB;YAC7F,aAAa,EAAE,WAAW,GAAG,6BAA6B,IAAI,WAAW,EAAE,sBAAsB;
|
|
1
|
+
{"version":3,"file":"SitePreviewGenerator.js","sourceRoot":"","sources":["../../../../src/server/services/site/SitePreviewGenerator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,qBAAqB,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAI1C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAKrC,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,QAAS;QAExC,MAAM,GAAG,GAAG,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC;QACtC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,CAAC,CAAC;QACb,MAAM,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1D,OAAO;YACH,OAAO,EAAE,WAAW,GAAG,6BAA6B,IAAI,YAAY,EAAE,uBAAuB;YAC7F,aAAa,EAAE,WAAW,GAAG,6BAA6B,IAAI,WAAW,EAAE,sBAAsB;YACjG,YAAY,EAAE,WAAW,GAAG,mCAAmC,IAAI,YAAY,EAAE,uBAAuB;YACxG,kBAAkB,EAAE,WAAW,GAAG,mCAAmC,IAAI,WAAW,EAAE,sBAAsB;SAC/G,CAAC;IACN,CAAC;CACJ,CAAA;AAjBG;IADC,MAAM;8BACF,qBAAqB;iDAAC;AAHV,oBAAoB;IADxC,cAAc;GACM,oBAAoB,CAoBxC;eApBoB,oBAAoB"}
|
package/dist/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateTemplatePreviewWorkflow.d.ts","sourceRoot":"","sources":["../../../../../src/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.ts"],"names":[],"mappings":"AACA,OAAO,QAA4B,MAAM,yDAAyD,CAAC;AACnG,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AAKpE,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,+BAAgC,SAAQ,QAAQ;IAE3D,GAAG,kBAQR;IAGK,QAAQ,CACV,KAAK,KAAA,EACG,EAAE,CAAC,EAAE,iBAAiB,EACtB,GAAG,CAAC,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"GenerateTemplatePreviewWorkflow.d.ts","sourceRoot":"","sources":["../../../../../src/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.ts"],"names":[],"mappings":"AACA,OAAO,QAA4B,MAAM,yDAAyD,CAAC;AACnG,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AAKpE,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,+BAAgC,SAAQ,QAAQ;IAE3D,GAAG,kBAQR;IAGK,QAAQ,CACV,KAAK,KAAA,EACG,EAAE,CAAC,EAAE,iBAAiB,EACtB,GAAG,CAAC,EAAE,oBAAoB,gBA4BrC;IAEK,eAAe,CAAC,GAAG,EAAE,MAAM,iBA0BhC;CAIJ"}
|
|
@@ -44,10 +44,12 @@ export default class GenerateTemplatePreviewWorkflow extends Workflow {
|
|
|
44
44
|
if (!t.hosts?.length) {
|
|
45
45
|
continue;
|
|
46
46
|
}
|
|
47
|
-
const { preview, previewMobile } = await spg.getPreviewUrls(t);
|
|
47
|
+
const { preview, previewMobile, previewVideo, previewVideoMobile } = await spg.getPreviewUrls(t);
|
|
48
48
|
start = t.folderID;
|
|
49
49
|
await this.generatePreview(preview);
|
|
50
50
|
await this.generatePreview(previewMobile);
|
|
51
|
+
await this.generatePreview(previewVideo);
|
|
52
|
+
await this.generatePreview(previewVideoMobile);
|
|
51
53
|
}
|
|
52
54
|
return start;
|
|
53
55
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenerateTemplatePreviewWorkflow.js","sourceRoot":"","sources":["../../../../../src/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,QAAQ,EAAE,EAAE,cAAc,EAAE,MAAM,yDAAyD,CAAC;AACnG,OAAO,iBAAiB,MAAM,qCAAqC,CAAC;AACpE,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAC5D,OAAO,KAAK,MAAM,6BAA6B,CAAC;AAChD,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAElF,MAAM,CAAC,OAAO,OAAO,+BAAgC,SAAQ,QAAQ;IAEjE,KAAK,CAAC,GAAG;QACL,IAAI,KAAK,GAAG,GAAG,CAAC;QAChB,SAAQ,CAAC;YACL,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnC,IAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChB,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAGK,AAAN,KAAK,CAAC,QAAQ,CACV,KAAK,EACG,EAAsB,EACtB,GAA0B;QAElC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,cAAc;aACpC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK;eACzC,CAAC,CAAC,UAAU,KAAK,IAAI;eACrB,CAAC,CAAC,gBAAgB,KAAK,IAAI,CACjC;aACA,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;aAC1B,KAAK,CAAC,EAAE,CAAC;aACT,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACvB,OAAO,EAAE,CAAC;QAEf,IAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC;QACb,CAAC;QAED,KAAI,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YACvB,IAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBAClB,SAAS;YACb,CAAC;YACD,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"GenerateTemplatePreviewWorkflow.js","sourceRoot":"","sources":["../../../../../src/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
2
|
+
import WebSiteContentService from "../../../../../../../../server/services/files/WebSiteContentService.js";
|
|
3
|
+
import CacheService from "../../../../../../../../server/services/cache/CacheService.js";
|
|
4
|
+
import TempFileService from "../../../../../../../../server/storage/TempFileService.js";
|
|
5
|
+
import PuppeteerService from "../../../../../../../../server/services/puppeteer/PuppeteerService.js";
|
|
6
|
+
import DBConfig from "../../../../../../../../server/services/DBConfig.js";
|
|
7
|
+
export default class extends Page {
|
|
8
|
+
wcs: WebSiteContentService;
|
|
9
|
+
cacheService: CacheService;
|
|
10
|
+
config: DBConfig;
|
|
11
|
+
tfs: TempFileService;
|
|
12
|
+
puppeteerService: PuppeteerService;
|
|
13
|
+
type: any;
|
|
14
|
+
cacheKey: any;
|
|
15
|
+
host: any;
|
|
16
|
+
ready: any;
|
|
17
|
+
run(): Promise<import("@entity-access/server-pages/dist/Content.js").default>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=get.d.ts.map
|
package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.tsx"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAG5D,OAAO,qBAAqB,MAAM,wEAAwE,CAAC;AAG3G,OAAO,YAAY,MAAM,+DAA+D,CAAC;AAEzF,OAAO,eAAe,MAAM,2DAA2D,CAAC;AACxF,OAAO,gBAAgB,MAAM,uEAAuE,CAAC;AACrG,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAO3E,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,GAAG,EAAE,qBAAqB,CAAC;IAG3B,YAAY,EAAE,YAAY,CAAC;IAG3B,MAAM,EAAE,QAAQ,CAAC;IAGjB,GAAG,EAAE,eAAe,CAAC;IAGrB,gBAAgB,EAAE,gBAAgB,CAAC;IAGnC,IAAI,MAAC;IAGL,QAAQ,MAAC;IAGT,IAAI,MAAC;IAGL,KAAK,MAAC;IAEA,GAAG,2EAgFR;CACJ"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
11
|
+
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
12
|
+
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
13
|
+
import { globalEnv } from "../../../../../../../../common/globalEnv.js";
|
|
14
|
+
import WebSiteContentService from "../../../../../../../../server/services/files/WebSiteContentService.js";
|
|
15
|
+
import HttpProxyService from "../../../../../../../../server/services/http/HttpProxyService.js";
|
|
16
|
+
import { Route } from "@entity-access/server-pages/dist/core/Route.js";
|
|
17
|
+
import CacheService from "../../../../../../../../server/services/cache/CacheService.js";
|
|
18
|
+
import TimeSpan from "@entity-access/entity-access/dist/types/TimeSpan.js";
|
|
19
|
+
import TempFileService from "../../../../../../../../server/storage/TempFileService.js";
|
|
20
|
+
import PuppeteerService from "../../../../../../../../server/services/puppeteer/PuppeteerService.js";
|
|
21
|
+
import DBConfig from "../../../../../../../../server/services/DBConfig.js";
|
|
22
|
+
let port = globalEnv.puppeteer.port;
|
|
23
|
+
if (/^\d+$/i.test(port)) {
|
|
24
|
+
port = Number(port);
|
|
25
|
+
}
|
|
26
|
+
export default class default_1 extends Page {
|
|
27
|
+
async run() {
|
|
28
|
+
const snapshot = await this.wcs.getCurrentSnapshotFolder(this.host);
|
|
29
|
+
if (!snapshot?.isTemplate) {
|
|
30
|
+
return this.notFound();
|
|
31
|
+
}
|
|
32
|
+
if (snapshot.remoteUrl) {
|
|
33
|
+
// we need to send http fetch
|
|
34
|
+
const url = this.request.URL;
|
|
35
|
+
return await HttpProxyService.fetch(this, `${snapshot.remoteUrl}${url.pathname}${url.search}`);
|
|
36
|
+
}
|
|
37
|
+
let pageStopScript = "";
|
|
38
|
+
// check if we have page-ready.js page...
|
|
39
|
+
const hasStopScript = await this.wcs.getSnapshotFile(snapshot, ["stop-preview.js"]);
|
|
40
|
+
if (hasStopScript) {
|
|
41
|
+
pageStopScript = "./stop-preview.js";
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// const uiPackage = await this.config.getValue(UIPackageConfig);
|
|
45
|
+
// pageReadyScript = `https://cdn.jsdelivr.net/npm/${uiPackage.package}@${uiPackage.version}/content/preview-generator/stop-preview.js`;
|
|
46
|
+
}
|
|
47
|
+
let width = 1200;
|
|
48
|
+
let height = 1536;
|
|
49
|
+
let deviceScaleFactor = 1;
|
|
50
|
+
let mobile = false;
|
|
51
|
+
if (/mobile/i.test(this.type)) {
|
|
52
|
+
width = 450;
|
|
53
|
+
height = 800;
|
|
54
|
+
mobile = true;
|
|
55
|
+
// for preview we will keep device scale same
|
|
56
|
+
deviceScaleFactor = 1;
|
|
57
|
+
}
|
|
58
|
+
const [fileName = "preview.webp"] = this.childPath;
|
|
59
|
+
const cacheKey = this.cacheKey;
|
|
60
|
+
const key = `site-preview-video/${cacheKey}/${this.type}-${width}-${height}-${fileName}`;
|
|
61
|
+
let output = "webm";
|
|
62
|
+
let contentType = "video/webm";
|
|
63
|
+
const cf = await this.cacheService.get({
|
|
64
|
+
key,
|
|
65
|
+
ttl: TimeSpan.fromDays(30),
|
|
66
|
+
factory: (c) => {
|
|
67
|
+
const url = `https://${this.host}`;
|
|
68
|
+
return this.puppeteerService.generateVideo({
|
|
69
|
+
width,
|
|
70
|
+
height,
|
|
71
|
+
mobile,
|
|
72
|
+
deviceScaleFactor,
|
|
73
|
+
fileName,
|
|
74
|
+
cacheKey,
|
|
75
|
+
pageStopScript,
|
|
76
|
+
fullPage: true,
|
|
77
|
+
url,
|
|
78
|
+
output,
|
|
79
|
+
timeout: 30000
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
this.cacheControl = "public, max-age=2592000, immutable";
|
|
84
|
+
return new TempFileResult(cf, {
|
|
85
|
+
fileName,
|
|
86
|
+
contentType
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
__decorate([
|
|
91
|
+
Inject,
|
|
92
|
+
__metadata("design:type", WebSiteContentService)
|
|
93
|
+
], default_1.prototype, "wcs", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
Inject,
|
|
96
|
+
__metadata("design:type", CacheService)
|
|
97
|
+
], default_1.prototype, "cacheService", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
Inject,
|
|
100
|
+
__metadata("design:type", DBConfig)
|
|
101
|
+
], default_1.prototype, "config", void 0);
|
|
102
|
+
__decorate([
|
|
103
|
+
Inject,
|
|
104
|
+
__metadata("design:type", TempFileService)
|
|
105
|
+
], default_1.prototype, "tfs", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
Inject,
|
|
108
|
+
__metadata("design:type", PuppeteerService)
|
|
109
|
+
], default_1.prototype, "puppeteerService", void 0);
|
|
110
|
+
__decorate([
|
|
111
|
+
Route("type"),
|
|
112
|
+
__metadata("design:type", Object)
|
|
113
|
+
], default_1.prototype, "type", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
Route("cacheKey"),
|
|
116
|
+
__metadata("design:type", Object)
|
|
117
|
+
], default_1.prototype, "cacheKey", void 0);
|
|
118
|
+
__decorate([
|
|
119
|
+
Route("host"),
|
|
120
|
+
__metadata("design:type", Object)
|
|
121
|
+
], default_1.prototype, "host", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
Route("ready"),
|
|
124
|
+
__metadata("design:type", Object)
|
|
125
|
+
], default_1.prototype, "ready", void 0);
|
|
126
|
+
//# sourceMappingURL=get.js.map
|
package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../../../../../src/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -115,4 +115,88 @@ export default class PuppeteerService {
|
|
|
115
115
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
|
|
119
|
+
async generateVideo({
|
|
120
|
+
url,
|
|
121
|
+
mobile = false,
|
|
122
|
+
width = mobile ? 650 : 1200,
|
|
123
|
+
height = mobile ? 1000 : 1536,
|
|
124
|
+
deviceScaleFactor = mobile ? 2 : 1,
|
|
125
|
+
pageReadyScript = void 0,
|
|
126
|
+
output = "webp",
|
|
127
|
+
fileName = "w.webp",
|
|
128
|
+
cacheKey = globalEnv.serverID,
|
|
129
|
+
fullPage = false,
|
|
130
|
+
timeout = 30000,
|
|
131
|
+
pageStopScript = "7000",
|
|
132
|
+
pageEvalScript = "() => void 0",
|
|
133
|
+
page = void 0 as Page
|
|
134
|
+
}) {
|
|
135
|
+
|
|
136
|
+
const pageCookies = page?.request?.cookies;
|
|
137
|
+
let cookies = "undefined";
|
|
138
|
+
if (pageCookies) {
|
|
139
|
+
const domain = page.request.URL.hostname;
|
|
140
|
+
cookies = JSON.stringify(Object.entries(pageCookies).map(([name, value]) => ({ name, value, domain, httpOnly: true, secure: true })));
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const qs = new URLSearchParams({
|
|
144
|
+
url,
|
|
145
|
+
width: width as any,
|
|
146
|
+
height: height as any,
|
|
147
|
+
deviceScaleFactor: deviceScaleFactor as any,
|
|
148
|
+
fullPage: fullPage ? "true" : "false",
|
|
149
|
+
stopScript: pageStopScript,
|
|
150
|
+
timeout: timeout as any,
|
|
151
|
+
pageEvalScript,
|
|
152
|
+
output,
|
|
153
|
+
v: fileName
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
if(mobile) {
|
|
157
|
+
qs.append("mobile" , "true");
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if(pageReadyScript){
|
|
161
|
+
qs.append("pageReadyScript", pageReadyScript);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (cookies) {
|
|
165
|
+
qs.append("cookies", cookies);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
const query = qs.toString();
|
|
169
|
+
|
|
170
|
+
const key = `web-preview-videos/${cacheKey}/${hash("sha256",query, "hex")}.${output}`;
|
|
171
|
+
|
|
172
|
+
const file = await this.siteCache.htmlCache.getOrCreateAsync(key, async (lf) => {
|
|
173
|
+
|
|
174
|
+
console.log(`Fetching: ${url}`);
|
|
175
|
+
|
|
176
|
+
const fetchUrl = `http://${globalEnv.puppeteer.host}:${port}/screen-cast?${query}`;
|
|
177
|
+
|
|
178
|
+
using _ = await LockFile.lock(`puppeteer-preview-generator`);
|
|
179
|
+
|
|
180
|
+
const r = await fetch(fetchUrl, {
|
|
181
|
+
// dispatcher
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
if (r.status >= 399) {
|
|
185
|
+
throw new Error(`Puppeteer Error ${await r.text()}`);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
const b = await r.arrayBuffer();
|
|
189
|
+
const buffer = Buffer.from(b);
|
|
190
|
+
await lf.writeAll(buffer);
|
|
191
|
+
});
|
|
192
|
+
switch(output) {
|
|
193
|
+
case "webm":
|
|
194
|
+
// @ts-expect-error readonly
|
|
195
|
+
file.contentType = "video/webm";
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
return file;
|
|
199
|
+
|
|
200
|
+
}
|
|
201
|
+
|
|
118
202
|
}
|
|
@@ -20,6 +20,8 @@ export default class SitePreviewGenerator {
|
|
|
20
20
|
return {
|
|
21
21
|
preview: `https://${cdn}/social-mail/site/preview/${host}/desktop/${cv}/desktop-preview.webp`,
|
|
22
22
|
previewMobile: `https://${cdn}/social-mail/site/preview/${host}/mobile/${cv}/mobile-preview.webp`,
|
|
23
|
+
previewVideo: `https://${cdn}/social-mail/site/preview-video/${host}/desktop/${cv}/desktop-preview.webm`,
|
|
24
|
+
previewVideoMobile: `https://${cdn}/social-mail/site/preview-video/${host}/mobile/${cv}/mobile-preview.webm`,
|
|
23
25
|
};
|
|
24
26
|
}
|
|
25
27
|
}
|
|
@@ -43,10 +43,12 @@ export default class GenerateTemplatePreviewWorkflow extends Workflow {
|
|
|
43
43
|
if(!t.hosts?.length) {
|
|
44
44
|
continue;
|
|
45
45
|
}
|
|
46
|
-
const { preview, previewMobile } = await spg.getPreviewUrls(t);
|
|
46
|
+
const { preview, previewMobile, previewVideo, previewVideoMobile } = await spg.getPreviewUrls(t);
|
|
47
47
|
start = t.folderID;
|
|
48
48
|
await this.generatePreview(preview);
|
|
49
49
|
await this.generatePreview(previewMobile);
|
|
50
|
+
await this.generatePreview(previewVideo);
|
|
51
|
+
await this.generatePreview(previewVideoMobile);
|
|
50
52
|
}
|
|
51
53
|
return start;
|
|
52
54
|
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
2
|
+
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
3
|
+
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
4
|
+
import { globalEnv } from "../../../../../../../../common/globalEnv.js";
|
|
5
|
+
import WebSiteContentService from "../../../../../../../../server/services/files/WebSiteContentService.js";
|
|
6
|
+
import HttpProxyService from "../../../../../../../../server/services/http/HttpProxyService.js";
|
|
7
|
+
import { Route } from "@entity-access/server-pages/dist/core/Route.js";
|
|
8
|
+
import CacheService from "../../../../../../../../server/services/cache/CacheService.js";
|
|
9
|
+
import TimeSpan from "@entity-access/entity-access/dist/types/TimeSpan.js";
|
|
10
|
+
import TempFileService from "../../../../../../../../server/storage/TempFileService.js";
|
|
11
|
+
import PuppeteerService from "../../../../../../../../server/services/puppeteer/PuppeteerService.js";
|
|
12
|
+
import DBConfig from "../../../../../../../../server/services/DBConfig.js";
|
|
13
|
+
|
|
14
|
+
let port = globalEnv.puppeteer.port as any;
|
|
15
|
+
if (/^\d+$/i.test(port)) {
|
|
16
|
+
port = Number(port);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export default class extends Page {
|
|
20
|
+
|
|
21
|
+
@Inject
|
|
22
|
+
wcs: WebSiteContentService;
|
|
23
|
+
|
|
24
|
+
@Inject
|
|
25
|
+
cacheService: CacheService;
|
|
26
|
+
|
|
27
|
+
@Inject
|
|
28
|
+
config: DBConfig;
|
|
29
|
+
|
|
30
|
+
@Inject
|
|
31
|
+
tfs: TempFileService;
|
|
32
|
+
|
|
33
|
+
@Inject
|
|
34
|
+
puppeteerService: PuppeteerService;
|
|
35
|
+
|
|
36
|
+
@Route("type")
|
|
37
|
+
type;
|
|
38
|
+
|
|
39
|
+
@Route("cacheKey")
|
|
40
|
+
cacheKey;
|
|
41
|
+
|
|
42
|
+
@Route("host")
|
|
43
|
+
host;
|
|
44
|
+
|
|
45
|
+
@Route("ready")
|
|
46
|
+
ready;
|
|
47
|
+
|
|
48
|
+
async run() {
|
|
49
|
+
|
|
50
|
+
const snapshot = await this.wcs.getCurrentSnapshotFolder(this.host);
|
|
51
|
+
|
|
52
|
+
if (!snapshot?.isTemplate) {
|
|
53
|
+
return this.notFound();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (snapshot.remoteUrl) {
|
|
57
|
+
// we need to send http fetch
|
|
58
|
+
const url = this.request.URL;
|
|
59
|
+
return await HttpProxyService.fetch(this, `${snapshot.remoteUrl}${url.pathname}${url.search}`);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
let pageStopScript = "";
|
|
63
|
+
|
|
64
|
+
// check if we have page-ready.js page...
|
|
65
|
+
const hasStopScript = await this.wcs.getSnapshotFile(snapshot, ["stop-preview.js"]);
|
|
66
|
+
if(hasStopScript) {
|
|
67
|
+
pageStopScript = "./stop-preview.js";
|
|
68
|
+
} else {
|
|
69
|
+
// const uiPackage = await this.config.getValue(UIPackageConfig);
|
|
70
|
+
// pageReadyScript = `https://cdn.jsdelivr.net/npm/${uiPackage.package}@${uiPackage.version}/content/preview-generator/stop-preview.js`;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
let width = 1200 as any;
|
|
75
|
+
let height = 1536 as any;
|
|
76
|
+
|
|
77
|
+
let deviceScaleFactor = 1 as any;
|
|
78
|
+
|
|
79
|
+
let mobile = false;
|
|
80
|
+
|
|
81
|
+
if (/mobile/i.test(this.type)) {
|
|
82
|
+
width = 450;
|
|
83
|
+
height = 800;
|
|
84
|
+
mobile = true;
|
|
85
|
+
// for preview we will keep device scale same
|
|
86
|
+
deviceScaleFactor = 1;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const [ fileName = "preview.webp" ] = this.childPath as any[];
|
|
90
|
+
|
|
91
|
+
const cacheKey = this.cacheKey;
|
|
92
|
+
|
|
93
|
+
const key = `site-preview-video/${cacheKey}/${this.type}-${width}-${height}-${fileName}`;
|
|
94
|
+
|
|
95
|
+
let output = "webm";
|
|
96
|
+
let contentType = "video/webm";
|
|
97
|
+
|
|
98
|
+
const cf = await this.cacheService.get({
|
|
99
|
+
key,
|
|
100
|
+
ttl: TimeSpan.fromDays(30),
|
|
101
|
+
factory: (c) => {
|
|
102
|
+
|
|
103
|
+
const url = `https://${this.host}`;
|
|
104
|
+
|
|
105
|
+
return this.puppeteerService.generateVideo({
|
|
106
|
+
width,
|
|
107
|
+
height,
|
|
108
|
+
mobile,
|
|
109
|
+
deviceScaleFactor,
|
|
110
|
+
fileName,
|
|
111
|
+
cacheKey,
|
|
112
|
+
pageStopScript,
|
|
113
|
+
fullPage: true,
|
|
114
|
+
url,
|
|
115
|
+
output,
|
|
116
|
+
timeout: 30000
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
this.cacheControl = "public, max-age=2592000, immutable";
|
|
123
|
+
|
|
124
|
+
return new TempFileResult(cf, {
|
|
125
|
+
fileName,
|
|
126
|
+
contentType
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}
|