@social-mail/social-mail-web-server 1.7.697 → 1.7.699
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/puppeteer/PuppeteerService.d.ts +13 -1
- package/dist/server/services/puppeteer/PuppeteerService.d.ts.map +1 -1
- package/dist/server/services/puppeteer/PuppeteerService.js +143 -2
- package/dist/server/services/puppeteer/PuppeteerService.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/wwwroot/routes/social-mail/site/preview/get.d.ts +2 -2
- package/dist/wwwroot/routes/social-mail/site/preview/get.d.ts.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/preview/get.js +13 -105
- package/dist/wwwroot/routes/social-mail/site/preview/get.js.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/templates/list/get.d.ts +1 -0
- package/dist/wwwroot/routes/social-mail/site/templates/list/get.d.ts.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/templates/list/get.js +9 -3
- package/dist/wwwroot/routes/social-mail/site/templates/list/get.js.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.d.ts +2 -2
- package/dist/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.d.ts.map +1 -1
- package/dist/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.js +14 -105
- package/dist/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.js.map +1 -1
- package/package.json +3 -3
- package/src/server/services/puppeteer/PuppeteerService.ts +89 -1
- package/src/wwwroot/routes/social-mail/site/preview/get.tsx +12 -44
- package/src/wwwroot/routes/social-mail/site/templates/list/get.tsx +9 -3
- package/src/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.tsx +8 -38
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
2
2
|
import WebSiteContentService from "../../../../../server/services/files/WebSiteContentService.js";
|
|
3
3
|
import Content from "@entity-access/server-pages/dist/Content.js";
|
|
4
|
-
import
|
|
4
|
+
import PuppeteerService from "../../../../../server/services/puppeteer/PuppeteerService.js";
|
|
5
5
|
export default class extends Page {
|
|
6
6
|
wcs: WebSiteContentService;
|
|
7
|
-
siteCache: SiteDiskContentCache;
|
|
8
7
|
mobile: any;
|
|
9
8
|
cacheKey: any;
|
|
9
|
+
puppeteerService: PuppeteerService;
|
|
10
10
|
run(): Promise<Content>;
|
|
11
11
|
}
|
|
12
12
|
//# sourceMappingURL=get.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/social-mail/site/preview/get.tsx"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,qBAAqB,MAAM,+DAA+D,CAAC;AAIlG,OAAO,OAA2B,MAAM,6CAA6C,CAAC;
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/social-mail/site/preview/get.tsx"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,qBAAqB,MAAM,+DAA+D,CAAC;AAIlG,OAAO,OAA2B,MAAM,6CAA6C,CAAC;AAOtF,OAAO,gBAAgB,MAAM,8DAA8D,CAAC;AAO5F,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,GAAG,EAAE,qBAAqB,CAAC;IAG3B,MAAM,MAAC;IAGP,QAAQ,MAAC;IAGT,gBAAgB,EAAE,gBAAgB,CAAC;IAE7B,GAAG;CA2CZ"}
|
|
@@ -7,90 +7,18 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
11
|
-
if (value !== null && value !== void 0) {
|
|
12
|
-
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
13
|
-
var dispose, inner;
|
|
14
|
-
if (async) {
|
|
15
|
-
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
16
|
-
dispose = value[Symbol.asyncDispose];
|
|
17
|
-
}
|
|
18
|
-
if (dispose === void 0) {
|
|
19
|
-
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
20
|
-
dispose = value[Symbol.dispose];
|
|
21
|
-
if (async) inner = dispose;
|
|
22
|
-
}
|
|
23
|
-
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
24
|
-
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
25
|
-
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
26
|
-
}
|
|
27
|
-
else if (async) {
|
|
28
|
-
env.stack.push({ async: true });
|
|
29
|
-
}
|
|
30
|
-
return value;
|
|
31
|
-
};
|
|
32
|
-
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
33
|
-
return function (env) {
|
|
34
|
-
function fail(e) {
|
|
35
|
-
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
36
|
-
env.hasError = true;
|
|
37
|
-
}
|
|
38
|
-
var r, s = 0;
|
|
39
|
-
function next() {
|
|
40
|
-
while (r = env.stack.pop()) {
|
|
41
|
-
try {
|
|
42
|
-
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
43
|
-
if (r.dispose) {
|
|
44
|
-
var result = r.dispose.call(r.value);
|
|
45
|
-
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
46
|
-
}
|
|
47
|
-
else s |= 1;
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
fail(e);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
54
|
-
if (env.hasError) throw env.error;
|
|
55
|
-
}
|
|
56
|
-
return next();
|
|
57
|
-
};
|
|
58
|
-
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
59
|
-
var e = new Error(message);
|
|
60
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
61
|
-
});
|
|
62
10
|
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
63
11
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
64
12
|
import WebSiteContentService from "../../../../../server/services/files/WebSiteContentService.js";
|
|
65
13
|
import { Query } from "@entity-access/server-pages/dist/core/Query.js";
|
|
66
14
|
import { globalEnv } from "../../../../../common/globalEnv.js";
|
|
67
|
-
import { Agent, fetch } from "undici";
|
|
68
15
|
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
69
|
-
import { connect } from "net";
|
|
70
16
|
import HttpProxyService from "../../../../../server/services/http/HttpProxyService.js";
|
|
71
|
-
import
|
|
72
|
-
import LockFile from "../../../../../server/storage/LockFile.js";
|
|
17
|
+
import PuppeteerService from "../../../../../server/services/puppeteer/PuppeteerService.js";
|
|
73
18
|
let port = globalEnv.puppeteer.port;
|
|
74
19
|
if (/^\d+$/i.test(port)) {
|
|
75
20
|
port = Number(port);
|
|
76
21
|
}
|
|
77
|
-
const dispatcher = new Agent({
|
|
78
|
-
connect: (options, callback) => {
|
|
79
|
-
try {
|
|
80
|
-
const s = connect({
|
|
81
|
-
port,
|
|
82
|
-
host: globalEnv.puppeteer.host
|
|
83
|
-
}, () => callback(null, s));
|
|
84
|
-
s.on("error", (e) => {
|
|
85
|
-
console.error(e);
|
|
86
|
-
callback(e, null);
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
callback(error, null);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
22
|
export default class default_1 extends Page {
|
|
95
23
|
async run() {
|
|
96
24
|
const snapshot = await this.wcs.getCurrentSnapshotFolder(this.request.hostName);
|
|
@@ -110,34 +38,14 @@ export default class default_1 extends Page {
|
|
|
110
38
|
height = 1000;
|
|
111
39
|
deviceScaleFactor = 2;
|
|
112
40
|
}
|
|
113
|
-
const
|
|
114
|
-
const file = await this.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
height,
|
|
122
|
-
deviceScaleFactor,
|
|
123
|
-
output: "webp"
|
|
124
|
-
});
|
|
125
|
-
const r = await fetch(`http://localhost/screen-shot?${query.toString()}`, {
|
|
126
|
-
dispatcher
|
|
127
|
-
});
|
|
128
|
-
if (r.status !== 200) {
|
|
129
|
-
throw new Error(await r.text());
|
|
130
|
-
}
|
|
131
|
-
const buffer = Buffer.from(await r.arrayBuffer());
|
|
132
|
-
await lf.writeAll(buffer);
|
|
133
|
-
}
|
|
134
|
-
catch (e_1) {
|
|
135
|
-
env_1.error = e_1;
|
|
136
|
-
env_1.hasError = true;
|
|
137
|
-
}
|
|
138
|
-
finally {
|
|
139
|
-
__disposeResources(env_1);
|
|
140
|
-
}
|
|
41
|
+
const packageHash = await this.wcs.getPackagesHash();
|
|
42
|
+
const file = await this.puppeteerService.generate({
|
|
43
|
+
width,
|
|
44
|
+
height,
|
|
45
|
+
deviceScaleFactor,
|
|
46
|
+
packageHash,
|
|
47
|
+
url: `https://${this.request.hostName}`,
|
|
48
|
+
output: "webp"
|
|
141
49
|
});
|
|
142
50
|
const [fileName = "preview.webp"] = this.childPath;
|
|
143
51
|
return new TempFileResult(file, {
|
|
@@ -150,10 +58,6 @@ __decorate([
|
|
|
150
58
|
Inject,
|
|
151
59
|
__metadata("design:type", WebSiteContentService)
|
|
152
60
|
], default_1.prototype, "wcs", void 0);
|
|
153
|
-
__decorate([
|
|
154
|
-
Inject,
|
|
155
|
-
__metadata("design:type", SiteDiskContentCache)
|
|
156
|
-
], default_1.prototype, "siteCache", void 0);
|
|
157
61
|
__decorate([
|
|
158
62
|
Query("mobile"),
|
|
159
63
|
__metadata("design:type", Object)
|
|
@@ -162,4 +66,8 @@ __decorate([
|
|
|
162
66
|
Query("cache-key"),
|
|
163
67
|
__metadata("design:type", Object)
|
|
164
68
|
], default_1.prototype, "cacheKey", void 0);
|
|
69
|
+
__decorate([
|
|
70
|
+
Inject,
|
|
71
|
+
__metadata("design:type", PuppeteerService)
|
|
72
|
+
], default_1.prototype, "puppeteerService", void 0);
|
|
165
73
|
//# sourceMappingURL=get.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/social-mail/site/preview/get.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/social-mail/site/preview/get.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,qBAAqB,MAAM,+DAA+D,CAAC;AAClG,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAgB,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAGtF,OAAO,gBAAgB,MAAM,yDAAyD,CAAC;AAIvF,OAAO,gBAAgB,MAAM,8DAA8D,CAAC;AAE5F,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;AAED,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAc7B,KAAK,CAAC,GAAG;QAEL,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEhF,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACrB,6BAA6B;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAC7B,OAAO,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnG,CAAC;QAED,IAAI,KAAK,GAAG,IAAW,CAAC;QACxB,IAAI,MAAM,GAAG,IAAW,CAAC;QAEzB,IAAI,iBAAiB,GAAG,CAAQ,CAAC;QAEjC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,KAAK,GAAG,GAAG,CAAC;YACZ,MAAM,GAAG,IAAI,CAAC;YACd,iBAAiB,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAErD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAC9C,KAAK;YACL,MAAM;YACN,iBAAiB;YACjB,WAAW;YACX,GAAG,EAAE,WAAW,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACvC,MAAM,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,MAAM,CAAE,QAAQ,GAAG,cAAc,CAAE,GAAG,IAAI,CAAC,SAAkB,CAAC;QAE9D,OAAO,IAAI,cAAc,CAAC,IAAI,EAAE;YAC5B,QAAQ;YACR,WAAW,EAAE,YAAY;SAC5B,CAAC,CAAC;IACP,CAAC;CACJ;AAtDG;IADC,MAAM;8BACF,qBAAqB;sCAAC;AAG3B;IADC,KAAK,CAAC,QAAQ,CAAC;;yCACT;AAGP;IADC,KAAK,CAAC,WAAW,CAAC;;2CACV;AAGT;IADC,MAAM;8BACW,gBAAgB;mDAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../../src/wwwroot/routes/social-mail/site/templates/list/get.tsx"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qDAAqD,CAAC;AAMpF,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,EAAE,EAAE,iBAAiB,CAAC;IAGtB,IAAI,EAAE,MAAM,CAAC;IAGb,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../../src/wwwroot/routes/social-mail/site/templates/list/get.tsx"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qDAAqD,CAAC;AAMpF,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,EAAE,EAAE,iBAAiB,CAAC;IAGtB,IAAI,EAAE,MAAM,CAAC;IAGb,KAAK,EAAE,MAAM,CAAC;IAGd,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,MAAM,CAAC;IAGf,UAAU,EAAE,MAAM,CAAC;IAEb,GAAG;CAoEZ"}
|
|
@@ -51,17 +51,19 @@ export default class default_1 extends Page {
|
|
|
51
51
|
.orderByDescending(void 0, (p) => (x) => x.templateSites)
|
|
52
52
|
.include((x) => [x.folder, x.hosts, x.webSiteTags.forEach((t) => t.tag)])
|
|
53
53
|
.toArray();
|
|
54
|
+
const cdn = this.withoutCdn
|
|
55
|
+
? this.request.hostName
|
|
56
|
+
: globalEnv.cdn ?? this.request.hostName;
|
|
54
57
|
const items = list.map((x) => {
|
|
55
58
|
const { host } = x.hosts[0];
|
|
56
|
-
const cdn = globalEnv.cdn ?? this.request.hostName;
|
|
57
59
|
const { currentVersionID } = x;
|
|
58
60
|
return {
|
|
59
61
|
id: x.folderID,
|
|
60
62
|
tags: x.webSiteTags?.map((t) => t.tag.name) ?? [],
|
|
61
63
|
name: x.folder.name,
|
|
62
64
|
host,
|
|
63
|
-
preview: `https://${cdn}/social-mail/site/templates/preview/${host}/desktop/
|
|
64
|
-
previewMobile: `https://${cdn}/social-mail/site/templates/preview/${host}/mobile/
|
|
65
|
+
preview: `https://${cdn}/social-mail/site/templates/preview/${host}/desktop/c4-${currentVersionID}/desktop-preview-1.webp`,
|
|
66
|
+
previewMobile: `https://${cdn}/social-mail/site/templates/preview/${host}/mobile/c4-${currentVersionID}/desktop-preview-1.webp`,
|
|
65
67
|
url: `https://${host}`
|
|
66
68
|
};
|
|
67
69
|
});
|
|
@@ -91,4 +93,8 @@ __decorate([
|
|
|
91
93
|
Query("search"),
|
|
92
94
|
__metadata("design:type", String)
|
|
93
95
|
], default_1.prototype, "search", void 0);
|
|
96
|
+
__decorate([
|
|
97
|
+
Query.caseInsensitiveAsBoolean,
|
|
98
|
+
__metadata("design:type", String)
|
|
99
|
+
], default_1.prototype, "withoutCdn", void 0);
|
|
94
100
|
//# sourceMappingURL=get.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../../../src/wwwroot/routes/social-mail/site/templates/list/get.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,iBAAiB,MAAM,qDAAqD,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,GAAG,MAAM,8CAA8C,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAElE,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../../../src/wwwroot/routes/social-mail/site/templates/list/get.tsx"],"names":[],"mappings":"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"}
|
package/dist/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
2
|
-
import SiteDiskContentCache from "../../../../../../../../../server/services/files/SiteDiskContentCache.js";
|
|
3
2
|
import WebSiteContentService from "../../../../../../../../../server/services/files/WebSiteContentService.js";
|
|
4
3
|
import CacheService from "../../../../../../../../../server/services/cache/CacheService.js";
|
|
5
4
|
import TempFileService from "../../../../../../../../../server/storage/TempFileService.js";
|
|
5
|
+
import PuppeteerService from "../../../../../../../../../server/services/puppeteer/PuppeteerService.js";
|
|
6
6
|
export default class extends Page {
|
|
7
7
|
wcs: WebSiteContentService;
|
|
8
|
-
siteCache: SiteDiskContentCache;
|
|
9
8
|
cacheService: CacheService;
|
|
10
9
|
tfs: TempFileService;
|
|
10
|
+
puppeteerService: PuppeteerService;
|
|
11
11
|
type: any;
|
|
12
12
|
cacheKey: any;
|
|
13
13
|
host: any;
|
package/dist/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.tsx"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.tsx"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAO5D,OAAO,qBAAqB,MAAM,2EAA2E,CAAC;AAI9G,OAAO,YAAY,MAAM,kEAAkE,CAAC;AAE5F,OAAO,eAAe,MAAM,8DAA8D,CAAC;AAE3F,OAAO,gBAAgB,MAAM,0EAA0E,CAAC;AAOxG,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,GAAG,EAAE,qBAAqB,CAAC;IAG3B,YAAY,EAAE,YAAY,CAAC;IAG3B,GAAG,EAAE,eAAe,CAAC;IAGrB,gBAAgB,EAAE,gBAAgB,CAAC;IAGnC,IAAI,MAAC;IAGL,QAAQ,MAAC;IAGT,IAAI,MAAC;IAEC,GAAG;CA0DZ"}
|
package/dist/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.js
CHANGED
|
@@ -7,94 +7,22 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
|
-
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
11
|
-
if (value !== null && value !== void 0) {
|
|
12
|
-
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
13
|
-
var dispose, inner;
|
|
14
|
-
if (async) {
|
|
15
|
-
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
16
|
-
dispose = value[Symbol.asyncDispose];
|
|
17
|
-
}
|
|
18
|
-
if (dispose === void 0) {
|
|
19
|
-
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
20
|
-
dispose = value[Symbol.dispose];
|
|
21
|
-
if (async) inner = dispose;
|
|
22
|
-
}
|
|
23
|
-
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
24
|
-
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
25
|
-
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
26
|
-
}
|
|
27
|
-
else if (async) {
|
|
28
|
-
env.stack.push({ async: true });
|
|
29
|
-
}
|
|
30
|
-
return value;
|
|
31
|
-
};
|
|
32
|
-
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
33
|
-
return function (env) {
|
|
34
|
-
function fail(e) {
|
|
35
|
-
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
36
|
-
env.hasError = true;
|
|
37
|
-
}
|
|
38
|
-
var r, s = 0;
|
|
39
|
-
function next() {
|
|
40
|
-
while (r = env.stack.pop()) {
|
|
41
|
-
try {
|
|
42
|
-
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
43
|
-
if (r.dispose) {
|
|
44
|
-
var result = r.dispose.call(r.value);
|
|
45
|
-
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
46
|
-
}
|
|
47
|
-
else s |= 1;
|
|
48
|
-
}
|
|
49
|
-
catch (e) {
|
|
50
|
-
fail(e);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
54
|
-
if (env.hasError) throw env.error;
|
|
55
|
-
}
|
|
56
|
-
return next();
|
|
57
|
-
};
|
|
58
|
-
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
59
|
-
var e = new Error(message);
|
|
60
|
-
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
61
|
-
});
|
|
62
10
|
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
63
11
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
64
|
-
import { Agent, fetch } from "undici";
|
|
65
12
|
import { TempFileResult } from "@entity-access/server-pages/dist/Content.js";
|
|
66
|
-
import { connect } from "net";
|
|
67
13
|
import { globalEnv } from "../../../../../../../../../common/globalEnv.js";
|
|
68
|
-
import SiteDiskContentCache from "../../../../../../../../../server/services/files/SiteDiskContentCache.js";
|
|
69
14
|
import WebSiteContentService from "../../../../../../../../../server/services/files/WebSiteContentService.js";
|
|
70
15
|
import HttpProxyService from "../../../../../../../../../server/services/http/HttpProxyService.js";
|
|
71
|
-
import LockFile from "../../../../../../../../../server/storage/LockFile.js";
|
|
72
16
|
import { Route } from "@entity-access/server-pages/dist/core/Route.js";
|
|
73
17
|
import CacheService from "../../../../../../../../../server/services/cache/CacheService.js";
|
|
74
18
|
import TimeSpan from "@entity-access/entity-access/dist/types/TimeSpan.js";
|
|
75
19
|
import TempFileService from "../../../../../../../../../server/storage/TempFileService.js";
|
|
76
20
|
import { Retry } from "../../../../../../../../../common/Retry.js";
|
|
21
|
+
import PuppeteerService from "../../../../../../../../../server/services/puppeteer/PuppeteerService.js";
|
|
77
22
|
let port = globalEnv.puppeteer.port;
|
|
78
23
|
if (/^\d+$/i.test(port)) {
|
|
79
24
|
port = Number(port);
|
|
80
25
|
}
|
|
81
|
-
const dispatcher = new Agent({
|
|
82
|
-
connect: (options, callback) => {
|
|
83
|
-
try {
|
|
84
|
-
const s = connect({
|
|
85
|
-
port,
|
|
86
|
-
host: globalEnv.puppeteer.host
|
|
87
|
-
}, () => callback(null, s));
|
|
88
|
-
s.on("error", (e) => {
|
|
89
|
-
console.error(e);
|
|
90
|
-
callback(e, null);
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
catch (error) {
|
|
94
|
-
callback(error, null);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
26
|
export default class default_1 extends Page {
|
|
99
27
|
async run() {
|
|
100
28
|
const snapshot = await this.wcs.getCurrentSnapshotFolder(this.host);
|
|
@@ -121,34 +49,15 @@ export default class default_1 extends Page {
|
|
|
121
49
|
key,
|
|
122
50
|
ttl: TimeSpan.fromDays(30),
|
|
123
51
|
factory: (c) => Retry.retry(async () => {
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
});
|
|
134
|
-
const r = await fetch(`http://localhost/screen-shot?${query.toString()}`, {
|
|
135
|
-
dispatcher
|
|
136
|
-
});
|
|
137
|
-
if (r.status >= 399) {
|
|
138
|
-
throw new Error(await r.text());
|
|
139
|
-
}
|
|
140
|
-
const buffer = Buffer.from(await r.arrayBuffer());
|
|
141
|
-
const lf = await this.tfs.createTempFile(".webp", "preview.webp", "image/webp");
|
|
142
|
-
await lf.writeAll(buffer);
|
|
143
|
-
return lf;
|
|
144
|
-
}
|
|
145
|
-
catch (e_1) {
|
|
146
|
-
env_1.error = e_1;
|
|
147
|
-
env_1.hasError = true;
|
|
148
|
-
}
|
|
149
|
-
finally {
|
|
150
|
-
__disposeResources(env_1);
|
|
151
|
-
}
|
|
52
|
+
const url = `https://${this.host}`;
|
|
53
|
+
return await this.puppeteerService.generate({
|
|
54
|
+
width,
|
|
55
|
+
height,
|
|
56
|
+
deviceScaleFactor,
|
|
57
|
+
packageHash,
|
|
58
|
+
url,
|
|
59
|
+
output: "webp"
|
|
60
|
+
});
|
|
152
61
|
})
|
|
153
62
|
});
|
|
154
63
|
this.cacheControl = "public, max-age=2592000, immutable";
|
|
@@ -162,10 +71,6 @@ __decorate([
|
|
|
162
71
|
Inject,
|
|
163
72
|
__metadata("design:type", WebSiteContentService)
|
|
164
73
|
], default_1.prototype, "wcs", void 0);
|
|
165
|
-
__decorate([
|
|
166
|
-
Inject,
|
|
167
|
-
__metadata("design:type", SiteDiskContentCache)
|
|
168
|
-
], default_1.prototype, "siteCache", void 0);
|
|
169
74
|
__decorate([
|
|
170
75
|
Inject,
|
|
171
76
|
__metadata("design:type", CacheService)
|
|
@@ -174,6 +79,10 @@ __decorate([
|
|
|
174
79
|
Inject,
|
|
175
80
|
__metadata("design:type", TempFileService)
|
|
176
81
|
], default_1.prototype, "tfs", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
Inject,
|
|
84
|
+
__metadata("design:type", PuppeteerService)
|
|
85
|
+
], default_1.prototype, "puppeteerService", void 0);
|
|
177
86
|
__decorate([
|
|
178
87
|
Route("type"),
|
|
179
88
|
__metadata("design:type", Object)
|
package/dist/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../../../../../../../../src/wwwroot/routes/social-mail/site/templates/preview/[host]/[type]/[cacheKey]/get.tsx"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAE3E,OAAO,qBAAqB,MAAM,2EAA2E,CAAC;AAC9G,OAAO,gBAAgB,MAAM,qEAAqE,CAAC;AAEnG,OAAO,EAAE,KAAK,EAAE,MAAM,gDAAgD,CAAC;AACvE,OAAO,YAAY,MAAM,kEAAkE,CAAC;AAC5F,OAAO,QAAQ,MAAM,qDAAqD,CAAC;AAC3E,OAAO,eAAe,MAAM,8DAA8D,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,4CAA4C,CAAC;AACnE,OAAO,gBAAgB,MAAM,0EAA0E,CAAC;AAExG,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;AAED,MAAM,CAAC,OAAO,gBAAO,SAAQ,IAAI;IAuB7B,KAAK,CAAC,GAAG;QAEL,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACrB,6BAA6B;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;YAC7B,OAAO,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAGrD,IAAI,KAAK,GAAG,IAAW,CAAC;QACxB,IAAI,MAAM,GAAG,IAAW,CAAC;QAEzB,IAAI,iBAAiB,GAAG,CAAQ,CAAC;QAEjC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,KAAK,GAAG,GAAG,CAAC;YACZ,MAAM,GAAG,IAAI,CAAC;YACd,iBAAiB,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM,CAAE,QAAQ,GAAG,cAAc,CAAE,GAAG,IAAI,CAAC,SAAkB,CAAC;QAE9D,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,gBAAgB,IAAI,WAAW,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,KAAK,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;QAEvH,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;YACnC,GAAG;YACH,GAAG,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;gBAEnC,MAAM,GAAG,GAAG,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC;gBAEnC,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC;oBACxC,KAAK;oBACL,MAAM;oBACN,iBAAiB;oBACjB,WAAW;oBACX,GAAG;oBACH,MAAM,EAAE,MAAM;iBACjB,CAAC,CAAC;YAEP,CAAC,CAAC;SACL,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,oCAAoC,CAAC;QAEzD,OAAO,IAAI,cAAc,CAAC,EAAE,EAAE;YAC1B,QAAQ;YACR,WAAW,EAAE,YAAY;SAC5B,CAAC,CAAC;IACP,CAAC;CACJ;AA9EG;IADC,MAAM;8BACF,qBAAqB;sCAAC;AAG3B;IADC,MAAM;8BACO,YAAY;+CAAC;AAG3B;IADC,MAAM;8BACF,eAAe;sCAAC;AAGrB;IADC,MAAM;8BACW,gBAAgB;mDAAC;AAGnC;IADC,KAAK,CAAC,MAAM,CAAC;;uCACT;AAGL;IADC,KAAK,CAAC,UAAU,CAAC;;2CACT;AAGT;IADC,KAAK,CAAC,MAAM,CAAC;;uCACT"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@social-mail/social-mail-web-server",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.699",
|
|
4
4
|
"description": "## Phase 1",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@aws-sdk/client-s3": "^3.717.0",
|
|
23
23
|
"@azure/storage-blob": "^12.25.0",
|
|
24
|
-
"@entity-access/entity-access": "^1.0.
|
|
25
|
-
"@entity-access/server-pages": "^1.1.
|
|
24
|
+
"@entity-access/entity-access": "^1.0.481",
|
|
25
|
+
"@entity-access/server-pages": "^1.1.470",
|
|
26
26
|
"@ffmpeg/core-mt": "^0.12.6",
|
|
27
27
|
"@ffmpeg/ffmpeg": "^0.12.10",
|
|
28
28
|
"@ffmpeg/util": "^0.12.1",
|
|
@@ -1 +1,89 @@
|
|
|
1
|
-
|
|
1
|
+
/* eslint-disable no-console */
|
|
2
|
+
import Inject, { RegisterSingleton } from "@entity-access/entity-access/dist/di/di.js";
|
|
3
|
+
import { Agent, fetch } from "undici";
|
|
4
|
+
import { connect } from "net";
|
|
5
|
+
import { hash } from "crypto";
|
|
6
|
+
import { globalEnv } from "../../../common/globalEnv.js";
|
|
7
|
+
import LockFile from "../../storage/LockFile.js";
|
|
8
|
+
import SiteDiskContentCache from "../files/SiteDiskContentCache.js";
|
|
9
|
+
|
|
10
|
+
let port = globalEnv.puppeteer.port as any;
|
|
11
|
+
if (/^\d+$/i.test(port)) {
|
|
12
|
+
port = Number(port);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
@RegisterSingleton
|
|
16
|
+
export default class PuppeteerService {
|
|
17
|
+
|
|
18
|
+
@Inject
|
|
19
|
+
siteCache: SiteDiskContentCache;
|
|
20
|
+
|
|
21
|
+
async generate({
|
|
22
|
+
url,
|
|
23
|
+
mobile = false,
|
|
24
|
+
width = mobile ? 650 : 1200,
|
|
25
|
+
height = mobile ? 1000 : 1536,
|
|
26
|
+
deviceScaleFactor = mobile ? 2 : 1,
|
|
27
|
+
output = "webp",
|
|
28
|
+
packageHash = globalEnv.serverID
|
|
29
|
+
}) {
|
|
30
|
+
|
|
31
|
+
const key = `previews/${packageHash}/preview-${hash("sha256", url, "hex")}.${output}`;
|
|
32
|
+
|
|
33
|
+
const file = await this.siteCache.htmlCache.getOrCreateAsync(key, async (lf) => {
|
|
34
|
+
|
|
35
|
+
using _ = await LockFile.lock(`puppeteer-preview-generator`);
|
|
36
|
+
|
|
37
|
+
const query = new URLSearchParams({
|
|
38
|
+
url,
|
|
39
|
+
width: width as any,
|
|
40
|
+
height: height as any,
|
|
41
|
+
deviceScaleFactor: deviceScaleFactor as any,
|
|
42
|
+
mobile: mobile ? "true" : void 0,
|
|
43
|
+
output
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
// const dispatcher = new Agent({
|
|
47
|
+
// connect: (options, callback) => {
|
|
48
|
+
// try {
|
|
49
|
+
// const s= connect({
|
|
50
|
+
// port,
|
|
51
|
+
// host: globalEnv.puppeteer.host
|
|
52
|
+
// }, () => callback(null, s));
|
|
53
|
+
// s.on("error", (e) => {
|
|
54
|
+
// console.error(e);
|
|
55
|
+
// callback(e, null);
|
|
56
|
+
// });
|
|
57
|
+
// } catch (error) {
|
|
58
|
+
// callback(error, null);
|
|
59
|
+
// }
|
|
60
|
+
// }
|
|
61
|
+
// });
|
|
62
|
+
|
|
63
|
+
const r = await fetch(`http://${globalEnv.puppeteer.host}:${port}/screen-shot?${query.toString()}`, {
|
|
64
|
+
// dispatcher
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const b = await r.arrayBuffer();
|
|
68
|
+
const buffer = Buffer.from(b);
|
|
69
|
+
await lf.writeAll(buffer);
|
|
70
|
+
});
|
|
71
|
+
switch(output) {
|
|
72
|
+
case "pdf":
|
|
73
|
+
// @ts-expect-error readonly
|
|
74
|
+
file.contentType = "application/pdf";
|
|
75
|
+
break;
|
|
76
|
+
case "png":
|
|
77
|
+
// @ts-expect-error readonly
|
|
78
|
+
file.contentType = "image/png";
|
|
79
|
+
break;
|
|
80
|
+
case "webp":
|
|
81
|
+
// @ts-expect-error readonly
|
|
82
|
+
file.contentType = "image/webp";
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
return file;
|
|
86
|
+
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
}
|