@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.
Files changed (21) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/server/services/puppeteer/PuppeteerService.d.ts +16 -0
  3. package/dist/server/services/puppeteer/PuppeteerService.d.ts.map +1 -1
  4. package/dist/server/services/puppeteer/PuppeteerService.js +62 -0
  5. package/dist/server/services/puppeteer/PuppeteerService.js.map +1 -1
  6. package/dist/server/services/site/SitePreviewGenerator.d.ts +2 -0
  7. package/dist/server/services/site/SitePreviewGenerator.d.ts.map +1 -1
  8. package/dist/server/services/site/SitePreviewGenerator.js +2 -0
  9. package/dist/server/services/site/SitePreviewGenerator.js.map +1 -1
  10. package/dist/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.d.ts.map +1 -1
  11. package/dist/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.js +3 -1
  12. package/dist/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.js.map +1 -1
  13. package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.d.ts +19 -0
  14. package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.d.ts.map +1 -0
  15. package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.js +126 -0
  16. package/dist/wwwroot/routes/social-mail/site/preview-video/[host]/[type]/[cacheKey]/get.js.map +1 -0
  17. package/package.json +1 -1
  18. package/src/server/services/puppeteer/PuppeteerService.ts +84 -0
  19. package/src/server/services/site/SitePreviewGenerator.ts +2 -0
  20. package/src/server/workflows/site/generate-previews/GenerateTemplatePreviewWorkflow.ts +3 -1
  21. 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA+B;AAC/B,OAAO,MAAM,EAAE,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,QAAQ,MAAM,2BAA2B,CAAC;AACjD,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,oBAAoB,MAAM,mEAAmE,CAAC;AAGrG,IAAI,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,IAAW,CAAC;AAC3C,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACtB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAGc,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAQjC,KAAK,CAAC,QAAQ,CAAC,EACX,GAAG,EACH,MAAM,GAAG,KAAK,EACd,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAC3B,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAC7B,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClC,eAAe,GAAG,KAAK,CAAC,EACxB,MAAM,GAAG,MAAM,EACf,QAAQ,GAAG,QAAQ,EACnB,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAC7B,IAAI,GAAG,MAAuC,EAC9C,SAAS,GAAG,IAAI,EAChB,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,EACf,cAAc,GAAG,cAAc,EAC/B,IAAI,GAAG,KAAK,CAAS,EACxB;QAEG,MAAM,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3C,IAAI,OAAO,GAAG,WAAW,CAAC;QAC1B,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1I,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC;YAC3B,GAAG;YACH,KAAK,EAAE,KAAY;YACnB,MAAM,EAAE,MAAa;YACrB,iBAAiB,EAAE,iBAAwB;YAC3C,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YACrC,IAAI;YACJ,SAAS,EAAE,SAAgB;YAC3B,OAAO,EAAE,OAAc;YACvB,cAAc;YACd,MAAM;YACN,CAAC,EAAE,QAAQ;SACd,CAAC,CAAC;QAEH,IAAG,MAAM,EAAE,CAAC;YACR,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAG,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,IAAG,eAAe,EAAC,CAAC;YAChB,EAAE,CAAC,MAAM,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACV,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAE5B,MAAM,GAAG,GAAG,gBAAgB,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAEhF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;;;gBAE3E,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC;gBAEhC,MAAM,QAAQ,GAAG,UAAU,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,gBAAgB,KAAK,EAAE,CAAC;gBAEnF,MAAM,CAAC,kCAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,QAAA,CAAC;gBAE7D,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;gBAC5B,aAAa;iBAChB,CAAC,CAAC;gBAEH,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACzD,CAAC;gBAED,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;;;;;;;;QAC9B,CAAC,CAAC,CAAC;QACH,QAAO,MAAM,EAAE,CAAC;YACZ,KAAK,KAAK;gBACN,4BAA4B;gBAC5B,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;gBACrC,MAAM;YACV,KAAK,KAAK;gBACN,4BAA4B;gBAC5B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;gBAC/B,MAAM;YACV,KAAK,MAAM;gBACP,4BAA4B;gBAC5B,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;gBAChC,MAAM;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IAEhB,CAAC;CAEJ,CAAA;AAlGG;IADC,MAAM;8BACI,oBAAoB;mDAAC;AAGhC;IADC,MAAM;8BACM,oBAAoB;qDAAC;AANjB,gBAAgB;IADpC,cAAc;GACM,gBAAgB,CAqGpC;eArGoB,gBAAgB"}
1
+ {"version":3,"file":"PuppeteerService.js","sourceRoot":"","sources":["../../../../src/server/services/puppeteer/PuppeteerService.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ export default class SitePreviewGenerator {
5
5
  getPreviewUrls(site: WebSite, hostName?: any): Promise<{
6
6
  preview: string;
7
7
  previewMobile: string;
8
+ previewVideo: string;
9
+ previewVideoMobile: string;
8
10
  }>;
9
11
  }
10
12
  //# sourceMappingURL=SitePreviewGenerator.d.ts.map
@@ -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;;;OAY3C;CACJ"}
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;SACpG,CAAC;IACN,CAAC;CACJ,CAAA;AAfG;IADC,MAAM;8BACF,qBAAqB;iDAAC;AAHV,oBAAoB;IADxC,cAAc;GACM,oBAAoB,CAkBxC;eAlBoB,oBAAoB"}
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"}
@@ -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,gBA0BrC;IAEK,eAAe,CAAC,GAAG,EAAE,MAAM,iBA0BhC;CAIJ"}
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":"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"}
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
@@ -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
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@social-mail/social-mail-web-server",
3
- "version": "1.16.428",
3
+ "version": "1.16.430",
4
4
  "description": "## Phase 1",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -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
+ }