@cosmicdrift/kumiko-renderer-puppeteer-client 0.388.0 → 0.389.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/render-and-store.d.ts +9 -0
- package/dist/render-and-store.js +27 -7
- package/package.json +6 -6
- package/src/changes.json +6 -0
package/dist/index.d.ts
CHANGED
|
@@ -5,4 +5,4 @@ export { createRendererPuppeteerClientFeature } from "./feature.ts";
|
|
|
5
5
|
export { countPdfPages } from "./pdf-page-count.ts";
|
|
6
6
|
export { RendererPuppeteerClientQueries } from "./qualified-names.ts";
|
|
7
7
|
export { puppeteerRender } from "./render.ts";
|
|
8
|
-
export { type RenderedPdfUpload, type RenderPdfArgs, renderPdfBeforeTransaction, type StoredRenderedPdf, storeRenderedPdf, } from "./render-and-store.ts";
|
|
8
|
+
export { type RenderedPdfBytes, type RenderedPdfUpload, type RenderPdfArgs, renderPdfBeforeTransaction, renderPdfBytes, type StoredRenderedPdf, storeRenderedPdf, } from "./render-and-store.ts";
|
package/dist/index.js
CHANGED
|
@@ -5,4 +5,4 @@ export { createRendererPuppeteerClientFeature } from "./feature.js";
|
|
|
5
5
|
export { countPdfPages } from "./pdf-page-count.js";
|
|
6
6
|
export { RendererPuppeteerClientQueries } from "./qualified-names.js";
|
|
7
7
|
export { puppeteerRender } from "./render.js";
|
|
8
|
-
export { renderPdfBeforeTransaction, storeRenderedPdf, } from "./render-and-store.js";
|
|
8
|
+
export { renderPdfBeforeTransaction, renderPdfBytes, storeRenderedPdf, } from "./render-and-store.js";
|
|
@@ -31,5 +31,14 @@ export type StoredRenderedPdf = {
|
|
|
31
31
|
readonly layout?: RenderedTemplateRef;
|
|
32
32
|
};
|
|
33
33
|
export declare function clientErrorForRenderFailure(e: unknown, ctx: HandlerContext, slug: string): KumikoError;
|
|
34
|
+
export type RenderedPdfBytes = {
|
|
35
|
+
readonly fileName: string;
|
|
36
|
+
readonly pdfBytes: Uint8Array;
|
|
37
|
+
readonly pageCount: number;
|
|
38
|
+
readonly sizeBytes: number;
|
|
39
|
+
readonly template: RenderedTemplateRef;
|
|
40
|
+
readonly layout?: RenderedTemplateRef;
|
|
41
|
+
};
|
|
42
|
+
export declare function renderPdfBytes(ctx: HandlerContext, args: Pick<RenderPdfArgs, "slug" | "locale" | "variables">): Promise<WriteResult<RenderedPdfBytes>>;
|
|
34
43
|
export declare function renderPdfBeforeTransaction(ctx: HandlerContext, args: RenderPdfArgs): Promise<BeforeTransactionResult<RenderedPdfUpload>>;
|
|
35
44
|
export declare function storeRenderedPdf(ctx: HandlerContext, rendered: RenderedPdfUpload): Promise<WriteResult<StoredRenderedPdf>>;
|
package/dist/render-and-store.js
CHANGED
|
@@ -25,9 +25,9 @@ export function clientErrorForRenderFailure(e, ctx, slug) {
|
|
|
25
25
|
function renderFailure(e, ctx, slug) {
|
|
26
26
|
return writeFailure(clientErrorForRenderFailure(e, ctx, slug));
|
|
27
27
|
}
|
|
28
|
-
// Renders
|
|
29
|
-
//
|
|
30
|
-
export async function
|
|
28
|
+
// Renders without storing: no file, no rendered-pdf row. For callers that keep the bytes
|
|
29
|
+
// themselves (mail attachment, download); same no-transaction rule as renderPdfBeforeTransaction.
|
|
30
|
+
export async function renderPdfBytes(ctx, args) {
|
|
31
31
|
const tenantId = ctx.user.tenantId;
|
|
32
32
|
const plugin = createRendererFoundationApi(collectRendererPlugins(ctx.registry)).createRendererForTenant({ tenantId, kind: "document-pdf" });
|
|
33
33
|
let response;
|
|
@@ -53,15 +53,35 @@ export async function renderPdfBeforeTransaction(ctx, args) {
|
|
|
53
53
|
if (template === undefined) {
|
|
54
54
|
throw new RendererError(`renderer "${plugin.name}" did not report which template produced the PDF`, "other");
|
|
55
55
|
}
|
|
56
|
+
return {
|
|
57
|
+
isSuccess: true,
|
|
58
|
+
data: {
|
|
59
|
+
fileName: response.fileName,
|
|
60
|
+
pdfBytes: response.pdfBytes,
|
|
61
|
+
pageCount: response.pageCount,
|
|
62
|
+
sizeBytes: response.sizeBytes,
|
|
63
|
+
template,
|
|
64
|
+
...(layout !== undefined && { layout }),
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Renders and uploads the PDF while no transaction is open: the print service call can take
|
|
69
|
+
// seconds and must not hold a pool connection. Use as a handler's `beforeTransaction`.
|
|
70
|
+
export async function renderPdfBeforeTransaction(ctx, args) {
|
|
71
|
+
const rendered = await renderPdfBytes(ctx, args);
|
|
72
|
+
if (!rendered.isSuccess)
|
|
73
|
+
return rendered;
|
|
74
|
+
const { fileName, pdfBytes, pageCount, sizeBytes, template, layout } = rendered.data;
|
|
75
|
+
const tenantId = ctx.user.tenantId;
|
|
56
76
|
const uploaded = await uploadFileBytesBeforeTransaction({
|
|
57
77
|
db: ctx.db,
|
|
58
78
|
files: fileContextForTenant(ctx, tenantId, tenantId),
|
|
59
79
|
registry: ctx.registry,
|
|
60
80
|
user: ctx.user,
|
|
61
81
|
}, {
|
|
62
|
-
fileName
|
|
82
|
+
fileName,
|
|
63
83
|
mimeType: PDF_MIME_TYPE,
|
|
64
|
-
data:
|
|
84
|
+
data: pdfBytes,
|
|
65
85
|
...(args.attachTo !== undefined && { attachTo: args.attachTo }),
|
|
66
86
|
});
|
|
67
87
|
if (!uploaded.isSuccess)
|
|
@@ -74,8 +94,8 @@ export async function renderPdfBeforeTransaction(ctx, args) {
|
|
|
74
94
|
locale: args.locale,
|
|
75
95
|
template,
|
|
76
96
|
...(layout !== undefined && { layout }),
|
|
77
|
-
pageCount
|
|
78
|
-
sizeBytes
|
|
97
|
+
pageCount,
|
|
98
|
+
sizeBytes,
|
|
79
99
|
},
|
|
80
100
|
...(uploaded.release && { release: uploaded.release }),
|
|
81
101
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cosmicdrift/kumiko-renderer-puppeteer-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.389.0",
|
|
4
4
|
"description": "Renderer-Foundation plugin: HTTP client for puppeteer-service (PDF + image snapshot via remote browser).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@cosmicdrift/kumiko-bundled-features": "0.
|
|
23
|
-
"@cosmicdrift/kumiko-framework": "0.
|
|
24
|
-
"@cosmicdrift/kumiko-renderer-mail-html": "0.
|
|
25
|
-
"@cosmicdrift/kumiko-types": "0.
|
|
22
|
+
"@cosmicdrift/kumiko-bundled-features": "0.389.0",
|
|
23
|
+
"@cosmicdrift/kumiko-framework": "0.389.0",
|
|
24
|
+
"@cosmicdrift/kumiko-renderer-mail-html": "0.389.0",
|
|
25
|
+
"@cosmicdrift/kumiko-types": "0.389.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@cosmicdrift/kumiko-testing": "0.
|
|
28
|
+
"@cosmicdrift/kumiko-testing": "0.389.0"
|
|
29
29
|
},
|
|
30
30
|
"repository": {
|
|
31
31
|
"type": "git",
|
package/src/changes.json
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
[
|
|
2
|
+
{
|
|
3
|
+
"version": "0.389.0",
|
|
4
|
+
"type": "improvement",
|
|
5
|
+
"title": "Render a PDF without storing it",
|
|
6
|
+
"detail": "renderPdfBytes is the render half of renderPdfBeforeTransaction. Use it when the bytes go straight into a mail or a download and no file or rendered-pdf row should exist."
|
|
7
|
+
},
|
|
2
8
|
{
|
|
3
9
|
"version": "0.388.0",
|
|
4
10
|
"type": "fix",
|