@f-o-t/e-signature 1.5.0 → 1.6.1

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/README.md CHANGED
@@ -68,6 +68,32 @@ function SignForm() {
68
68
 
69
69
  `pdf` and `p12` accept `File`, `Blob`, or `Uint8Array` — the hook converts `File`/`Blob` to `Uint8Array` automatically before calling `signPdf`.
70
70
 
71
+ ## Web Worker Signing
72
+
73
+ Runs signing off the main thread to prevent browser freezes.
74
+
75
+ ```ts
76
+ import { signPdfInWorker } from "@f-o-t/e-signature/plugins/worker";
77
+
78
+ const worker = new Worker(
79
+ new URL("@f-o-t/e-signature/plugins/worker-entry", import.meta.url),
80
+ { type: "module" },
81
+ );
82
+
83
+ const signed = await signPdfInWorker(worker, pdfBytes, {
84
+ certificate: { p12, password: "secret" },
85
+ appearance: "auto",
86
+ policy: "pades-icp-brasil",
87
+ });
88
+
89
+ // Reuse the worker for multiple signings, or terminate when done
90
+ worker.terminate();
91
+ ```
92
+
93
+ ### `signPdfInWorker(worker: Worker, pdf: Uint8Array, options: PdfSignOptions): Promise<Uint8Array>`
94
+
95
+ Same as `signPdf` but takes a `Worker` as the first argument. PDF bytes are transferred (zero-copy) to the worker thread.
96
+
71
97
  ## Automatic Signature Positioning
72
98
 
73
99
  ### Using `appearance: "auto"`
@@ -1,5 +1,7 @@
1
1
  // @bun
2
- var __require = import.meta.require;
2
+ import {
3
+ __require
4
+ } from "./index-r24hmh0q.js";
3
5
 
4
6
  // src/detect-position.ts
5
7
  import { PDFReader } from "@f-o-t/pdf";
@@ -682,4 +684,4 @@ class PdfSignError extends Error {
682
684
 
683
685
  export { detectSigningPosition, clearPolicyCache, buildSigningCertificateV2, buildSignaturePolicy, ICP_BRASIL_OIDS, SignaturePolicyError, pdfSignOptionsSchema, TIMESTAMP_SERVERS, TIMESTAMP_TOKEN_OID, requestTimestamp, TimestampError, signPdf, PdfSignError };
684
686
 
685
- //# debugId=D088988EDADADD3C64756E2164756E21
687
+ //# debugId=BCF42743EB848F8664756E2164756E21
@@ -9,7 +9,7 @@
9
9
  "/**\n * PDF Signing — Main Entry Point\n *\n * Signs a PDF document using PAdES format with optional ICP-Brasil compliance.\n *\n * Flow:\n * 1. Parse certificate for display info\n * 2. Load PDF and draw visual appearance\n * 3. Save PDF with signature placeholder\n * 4. Find byte range and extract bytes to sign\n * 5. Build CMS/PKCS#7 SignedData with ICP-Brasil attributes\n * 6. Embed signature into PDF\n */\n\nimport type { Asn1Node } from \"@f-o-t/asn1\";\nimport { decodeDer } from \"@f-o-t/asn1\";\nimport type { CmsAttribute } from \"@f-o-t/crypto\";\nimport {\n appendUnauthAttributes,\n createSignedData,\n parsePkcs12,\n} from \"@f-o-t/crypto\";\nimport type { CertificateInfo } from \"@f-o-t/digital-certificate\";\nimport { parseCertificateFromDer } from \"@f-o-t/digital-certificate\";\nimport {\n embedSignature,\n extractBytesToSign,\n findByteRange,\n loadPdf,\n} from \"@f-o-t/pdf/plugins/editing\";\nimport {\n drawSignatureAppearance,\n precomputeSharedQrImage,\n} from \"./appearance.ts\";\nimport { detectSigningPosition } from \"./detect-position.ts\";\nimport {\n buildSignaturePolicy,\n buildSigningCertificateV2,\n ICP_BRASIL_OIDS,\n} from \"./icp-brasil.ts\";\nimport { pdfSignOptionsSchema } from \"./schemas.ts\";\nimport { requestTimestamp, TIMESTAMP_TOKEN_OID } from \"./timestamp.ts\";\nimport type { PdfSignOptions, SignatureAppearance } from \"./types.ts\";\n\n/**\n * Sign a PDF document with a digital certificate.\n *\n * Supports PAdES-BES and PAdES with ICP-Brasil compliance\n * (signing-certificate-v2 and signature-policy attributes).\n *\n * @param pdf - The PDF document as a Uint8Array or ReadableStream<Uint8Array>\n * @param options - Signing options\n * @returns The signed PDF as a Uint8Array\n *\n * @example\n * ```ts\n * const signedPdf = await signPdf(pdfBytes, {\n * certificate: { p12, password: \"secret\" },\n * reason: \"Document approval\",\n * location: \"Corporate Office\",\n * policy: \"pades-icp-brasil\",\n * });\n * ```\n */\nexport async function signPdf(\n pdf: Uint8Array | ReadableStream<Uint8Array>,\n options: PdfSignOptions,\n): Promise<Uint8Array> {\n // Accumulate ReadableStream into Uint8Array if needed\n let pdfBytes: Uint8Array;\n if (pdf instanceof ReadableStream) {\n const chunks: Uint8Array[] = [];\n const reader = pdf.getReader();\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) chunks.push(value);\n }\n } finally {\n reader.releaseLock();\n }\n const totalLength = chunks.reduce((sum, c) => sum + c.length, 0);\n pdfBytes = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of chunks) {\n pdfBytes.set(chunk, offset);\n offset += chunk.length;\n }\n } else {\n pdfBytes = pdf;\n }\n\n // Validate input\n const opts = pdfSignOptionsSchema.parse(options);\n\n // 1. Parse PKCS#12 early — needed both for display info and for sizing the\n // signature placeholder accurately based on the actual certificate chain length.\n const { certificate, privateKey, chain } = await parsePkcs12(\n opts.certificate.p12,\n opts.certificate.password,\n );\n\n // 1b. Build display info from already-parsed cert (avoids second P12 parse)\n let certInfo: CertificateInfo | null = null;\n try {\n certInfo = parseCertificateFromDer(\n certificate,\n privateKey,\n opts.certificate.p12,\n opts.certificate.password,\n );\n } catch {\n // If parsing fails, continue without cert info for display\n }\n\n // 2. Load PDF via editing plugin (single parse — reused for drawing + saving)\n const doc = loadPdf(pdfBytes);\n\n // Resolve \"auto\" appearance — stamp on ALL pages\n let resolvedAppearance: Exclude<typeof opts.appearance, \"auto\"> | undefined;\n let autoAppearances: SignatureAppearance[] | undefined;\n\n if (opts.appearance === \"auto\") {\n const width = 420;\n const height = 120;\n\n // Use the already-loaded doc for page dimensions to avoid a second parse.\n // detectSigningPosition still does its own lightweight parse for text scanning,\n // but we use doc.pageCount and page dimensions from the editing plugin.\n const detected = detectSigningPosition(pdfBytes, {\n signerName: certInfo?.subject.commonName ?? undefined,\n organization: certInfo?.subject.organization ?? undefined,\n preferredPage: -1,\n width,\n height,\n });\n\n // Fallback: center horizontally, place near bottom of first page\n const firstPage = doc.getPage(0);\n const baseX = detected?.x ?? Math.max(10, (firstPage.width - width) / 2);\n const baseY = detected?.y ?? Math.max(10, firstPage.height - height - 50);\n\n // Generate one appearance per page\n autoAppearances = [];\n for (let i = 0; i < doc.pageCount; i++) {\n autoAppearances.push({\n x: baseX,\n y: baseY,\n width,\n height,\n page: i,\n });\n }\n\n // Clear single appearance — we use appearances[] instead\n resolvedAppearance = false;\n } else {\n resolvedAppearance = opts.appearance === false ? false : opts.appearance;\n }\n\n // 3. Draw visual signature appearance if requested\n if (resolvedAppearance !== false && resolvedAppearance) {\n const pageIndex = resolvedAppearance.page ?? 0;\n\n if (pageIndex < 0 || pageIndex >= doc.pageCount) {\n throw new PdfSignError(\n `Invalid page index: ${pageIndex}. PDF has ${doc.pageCount} pages.`,\n );\n }\n\n const page = doc.getPage(pageIndex);\n\n drawSignatureAppearance(doc, page, resolvedAppearance, certInfo, {\n reason: opts.reason,\n location: opts.location,\n qrCode: opts.qrCode,\n pdfData: pdfBytes,\n });\n }\n\n // 3b. Draw multiple visual signature appearances\n const allAppearances = [\n ...(autoAppearances ?? []),\n ...(opts.appearances ?? []),\n ];\n\n if (allAppearances.length > 0) {\n const needsQr = allAppearances.some((a) => a.showQrCode !== false);\n const sharedQrImage = needsQr\n ? precomputeSharedQrImage(doc, certInfo, pdfBytes, opts.qrCode)\n : undefined;\n\n for (const app of allAppearances) {\n const pageIndex = app.page ?? 0;\n\n if (pageIndex < 0 || pageIndex >= doc.pageCount) {\n throw new PdfSignError(\n `Invalid page index ${pageIndex} in appearances. PDF has ${doc.pageCount} pages.`,\n );\n }\n\n const page = doc.getPage(pageIndex);\n\n drawSignatureAppearance(doc, page, app, certInfo, {\n reason: opts.reason,\n location: opts.location,\n qrCode: opts.qrCode,\n pdfData: pdfBytes,\n preEmbeddedQr: sharedQrImage,\n });\n }\n }\n\n // 4. Save with signature placeholder\n const signerName =\n certInfo?.subject.commonName ||\n opts.certificate.name ||\n \"Digital Signature\";\n\n // Dynamic placeholder size: base 8 KB + 2× actual cert chain + 4 KB for a\n // timestamp token (if configured). Prevents \"Signature too large\" failures for\n // certificates with long chains (5+ certs) or large RSA keys.\n const certChainBytes =\n certificate.length + chain.reduce((sum, c) => sum + c.length, 0);\n const signatureLength = Math.max(\n 16384,\n certChainBytes * 2 + (opts.tsaUrl ? 4096 : 0) + 8192,\n );\n\n // Which page hosts the widget annotation — must match the visual appearance\n // page so PDF readers navigate to the right page when a signature is clicked.\n const appearancePage = resolvedAppearance\n ? ((resolvedAppearance as { page?: number }).page ?? 0)\n : (opts.appearances?.[0]?.page ?? 0);\n\n const { pdf: pdfWithPlaceholder } = doc.saveWithPlaceholder({\n reason: opts.reason || \"Digitally signed\",\n name: signerName,\n location: opts.location,\n contactInfo: opts.contactInfo,\n signatureLength,\n docMdpPermission: opts.docMdpPermission ?? 2,\n appearancePage,\n });\n\n // 5. Find byte range and extract bytes to sign\n const { byteRange } = findByteRange(pdfWithPlaceholder);\n const bytesToSign = extractBytesToSign(pdfWithPlaceholder, byteRange);\n\n // 6. Cryptographic material already parsed in step 1\n\n // 7. Build ICP-Brasil authenticated attributes if needed\n const authenticatedAttributes: CmsAttribute[] = [];\n\n if (opts.policy === \"pades-icp-brasil\") {\n // signing-certificate-v2\n const sigCertV2 = buildSigningCertificateV2(certificate);\n authenticatedAttributes.push({\n oid: ICP_BRASIL_OIDS.signingCertificateV2,\n values: [sigCertV2],\n });\n\n // signature-policy\n try {\n const sigPolicy = await buildSignaturePolicy();\n authenticatedAttributes.push({\n oid: ICP_BRASIL_OIDS.signaturePolicy,\n values: [sigPolicy],\n });\n } catch {\n // Policy download failure is non-fatal\n // The signature will still be valid PAdES-BES\n }\n }\n\n // 8. Build unauthenticated attributes\n const unauthenticatedAttributes: CmsAttribute[] = [];\n\n // 9. Create CMS/PKCS#7 SignedData\n const signedData = await createSignedData({\n content: bytesToSign,\n certificate,\n privateKey,\n chain,\n hashAlgorithm: \"sha256\",\n authenticatedAttributes:\n authenticatedAttributes.length > 0\n ? authenticatedAttributes\n : undefined,\n unauthenticatedAttributes:\n unauthenticatedAttributes.length > 0\n ? unauthenticatedAttributes\n : undefined,\n detached: true,\n });\n\n // 10. Optionally request timestamp and embed as unauthenticated attribute\n if (opts.timestamp && opts.tsaUrl) {\n try {\n const tsToken = await requestTimestamp(\n extractSignatureValue(signedData),\n opts.tsaUrl,\n \"sha256\",\n {\n tsaTimeout: opts.tsaTimeout,\n tsaRetries: opts.tsaRetries,\n tsaFallbackUrls: opts.tsaFallbackUrls,\n },\n );\n unauthenticatedAttributes.push({\n oid: TIMESTAMP_TOKEN_OID,\n values: [tsToken],\n });\n } catch (err) {\n // Timestamp failure is non-fatal\n opts.onTimestampError?.(err);\n }\n }\n\n // 11. Patch timestamp token into SignedData as unauthenticated attribute (no re-signing)\n const finalSignedData = appendUnauthAttributes(\n signedData,\n unauthenticatedAttributes,\n );\n\n // 12. Embed signature into PDF\n return embedSignature(pdfWithPlaceholder, finalSignedData);\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Extract the raw signature value bytes from a DER-encoded CMS ContentInfo.\n *\n * Per CAdES (ETSI EN 319 122-1) / RFC 5126 §5.5.1, the id-smime-aa-timeStampToken\n * attribute must be a timestamp over the SignerInfo.signature octets, not the\n * full ContentInfo blob.\n *\n * ContentInfo → [0] EXPLICIT → SignedData → signerInfos[0] → signature OCTET STRING\n */\nfunction extractSignatureValue(contentInfoDer: Uint8Array): Uint8Array {\n const contentInfo = decodeDer(contentInfoDer);\n const signedDataNode = (\n (contentInfo.value as Asn1Node[])[1]!.value as Asn1Node[]\n )[0]!;\n // signerInfos is always the last child of SignedData per RFC 5652\n const signerInfosSet = (signedDataNode.value as Asn1Node[]).at(-1)!;\n const signerInfo = (signerInfosSet.value as Asn1Node[])[0]!;\n const signatureNode = (signerInfo.value as Asn1Node[])[5]!;\n return signatureNode.value as Uint8Array;\n}\n\n// ---------------------------------------------------------------------------\n// Errors\n// ---------------------------------------------------------------------------\n\nexport class PdfSignError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"PdfSignError\";\n }\n}\n",
10
10
  "/**\n * Visual Signature Appearance\n *\n * Draws certificate information and QR code on the PDF page\n * following the ICP-Brasil standard visual signature layout.\n */\n\nimport type { CertificateInfo } from \"@f-o-t/digital-certificate\";\nimport type {\n PdfDocument,\n PdfImage,\n PdfPage,\n} from \"@f-o-t/pdf/plugins/editing\";\nimport { generateQrCode } from \"@f-o-t/qrcode\";\nimport type { QrCodeConfig, SignatureAppearance } from \"./types.ts\";\n\nconst VALIDATION_URL = \"https://validar.iti.gov.br\";\n\n/**\n * Draw the visual signature appearance on a PDF page.\n *\n * Includes optional QR code and certificate information text\n * inside a bordered rectangle following ICP-Brasil layout.\n */\nexport function drawSignatureAppearance(\n doc: PdfDocument,\n page: PdfPage,\n appearance: SignatureAppearance,\n certInfo: CertificateInfo | null,\n options: {\n reason?: string;\n location?: string;\n qrCode?: QrCodeConfig;\n pdfData: Uint8Array;\n preEmbeddedQr?: PdfImage;\n },\n): void {\n const { x, width, height } = appearance;\n const showQrCode = appearance.showQrCode !== false;\n const showCertInfo = appearance.showCertInfo !== false;\n\n // Convert from top-left origin (user-facing) to PDF bottom-left origin.\n const y = page.height - appearance.y - height;\n\n // Draw bordered rectangle around the signature area\n page.drawRectangle({\n x,\n y,\n width,\n height,\n borderColor: \"#C0C0C0\",\n borderWidth: 1,\n });\n\n let qrSize = 0;\n\n // Draw QR code if requested (enabled by default)\n if (showQrCode) {\n const qrImage =\n options.preEmbeddedQr ??\n (() => {\n const qrData = options.qrCode?.data ?? VALIDATION_URL;\n const qrPng = generateQrCode(qrData, {\n size: options.qrCode?.size ?? 100,\n });\n return doc.embedPng(qrPng);\n })();\n\n qrSize = Math.min(80, height - 20);\n\n page.drawImage(qrImage, {\n x: x + 10,\n y: y + 10,\n width: qrSize,\n height: qrSize,\n });\n }\n\n // Draw certificate info text\n if (showCertInfo) {\n drawCertInfo(page, certInfo, {\n x,\n y,\n width,\n height,\n qrOffset: qrSize > 0 ? qrSize + 20 : 10,\n });\n }\n\n // Reference link below the box\n const linkText = \"validar.iti.gov.br\";\n const linkX = x + width / 2 - linkText.length * 2;\n page.drawText(linkText, {\n x: linkX,\n y: y - 10,\n size: 6,\n color: \"#888888\",\n });\n}\n\n/**\n * Draw certificate information text on the page following ICP-Brasil layout.\n */\nfunction drawCertInfo(\n page: PdfPage,\n certInfo: CertificateInfo | null,\n opts: {\n x: number;\n y: number;\n width: number;\n height: number;\n qrOffset: number;\n },\n): void {\n const textX = opts.x + opts.qrOffset;\n let textY = opts.y + opts.height - 16;\n const fontSize = 7.5;\n const lineHeight = 10;\n\n // Green header\n page.drawText(\"ASSINADO DIGITALMENTE\", {\n x: textX,\n y: textY,\n size: 9,\n color: \"#008000\",\n });\n textY -= lineHeight * 1.3;\n\n if (certInfo) {\n // Signer name\n const signerName = certInfo.subject.commonName || \"N/A\";\n page.drawText(`Signatário: ${signerName}`, {\n x: textX,\n y: textY,\n size: fontSize,\n });\n textY -= lineHeight;\n\n // Organization (if available)\n if (certInfo.subject.organization) {\n page.drawText(`Empresa: ${certInfo.subject.organization}`, {\n x: textX,\n y: textY,\n size: fontSize,\n });\n textY -= lineHeight;\n }\n\n // CNPJ or CPF\n if (certInfo.brazilian.cnpj) {\n const cnpj = formatCnpj(certInfo.brazilian.cnpj);\n page.drawText(`CNPJ: ${cnpj}`, {\n x: textX,\n y: textY,\n size: fontSize,\n });\n textY -= lineHeight;\n } else if (certInfo.brazilian.cpf) {\n const cpf = formatCpf(certInfo.brazilian.cpf);\n page.drawText(`CPF: ${cpf}`, {\n x: textX,\n y: textY,\n size: fontSize,\n });\n textY -= lineHeight;\n }\n\n // Date and time\n const now = new Date();\n const dateStr = now.toLocaleDateString(\"pt-BR\");\n const timeStr = now.toLocaleTimeString(\"pt-BR\");\n page.drawText(`Data: ${dateStr} ${timeStr}`, {\n x: textX,\n y: textY,\n size: fontSize,\n });\n textY -= lineHeight;\n\n // Certificate type\n page.drawText(\"Certificado: ICP-Brasil (A1)\", {\n x: textX,\n y: textY,\n size: fontSize,\n });\n } else {\n // Fallback if cert info not available\n page.drawText(\"Assinatura Digital\", {\n x: textX,\n y: textY,\n size: fontSize,\n });\n }\n}\n\n/**\n * Pre-compute the QR code image and embed it once into the PDF document.\n * Call this before an appearances loop so all appearances share a single XObject.\n */\nexport function precomputeSharedQrImage(\n doc: PdfDocument,\n certInfo: CertificateInfo | null,\n pdfData: Uint8Array,\n qrConfig?: QrCodeConfig,\n): PdfImage {\n const qrData = qrConfig?.data ?? VALIDATION_URL;\n const qrPng = generateQrCode(qrData, { size: qrConfig?.size ?? 100 });\n return doc.embedPng(qrPng);\n}\n\n/**\n * Format a CNPJ number with punctuation\n */\nfunction formatCnpj(cnpj: string): string {\n return cnpj.replace(/(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})/, \"$1.$2.$3/$4-$5\");\n}\n\n/**\n * Format a CPF number with punctuation\n */\nfunction formatCpf(cpf: string): string {\n return cpf.replace(/(\\d{3})(\\d{3})(\\d{3})(\\d{2})/, \"$1.$2.$3-$4\");\n}\n"
11
11
  ],
12
- "mappings": "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",
13
- "debugId": "D088988EDADADD3C64756E2164756E21",
12
+ "mappings": "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",
13
+ "debugId": "BCF42743EB848F8664756E2164756E21",
14
14
  "names": []
15
15
  }
@@ -0,0 +1,6 @@
1
+ // @bun
2
+ var __require = import.meta.require;
3
+
4
+ export { __require };
5
+
6
+ //# debugId=EFA1C851E99D23D364756E2164756E21
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "EFA1C851E99D23D364756E2164756E21",
8
+ "names": []
9
+ }
package/dist/index.js CHANGED
@@ -13,7 +13,8 @@ import {
13
13
  pdfSignOptionsSchema,
14
14
  requestTimestamp,
15
15
  signPdf
16
- } from "./index-47hecyt4.js";
16
+ } from "./index-eavt9jtf.js";
17
+ import"./index-r24hmh0q.js";
17
18
 
18
19
  // src/batch.ts
19
20
  async function* signPdfBatch(files, options) {
@@ -85,4 +86,4 @@ export {
85
86
  ICP_BRASIL_OIDS
86
87
  };
87
88
 
88
- //# debugId=31F738785901A9FF64756E2164756E21
89
+ //# debugId=E7252B97659C919664756E2164756E21
package/dist/index.js.map CHANGED
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "import { signPdf } from \"./sign-pdf.ts\";\nimport type { PdfSignOptions } from \"./types.ts\";\n\n/**\n * Input for a single PDF in a batch signing operation.\n */\nexport type BatchSignInput = {\n /** Filename for identification in events */\n filename: string;\n /** PDF content as Uint8Array or ReadableStream */\n pdf: Uint8Array | ReadableStream<Uint8Array>;\n /** Per-file option overrides merged with base options */\n options?: Partial<PdfSignOptions>;\n};\n\n/**\n * Events emitted during batch signing.\n */\nexport type BatchSignEvent =\n | { type: \"file_start\"; fileIndex: number; filename: string }\n | {\n type: \"file_complete\";\n fileIndex: number;\n filename: string;\n signed: Uint8Array;\n }\n | { type: \"file_error\"; fileIndex: number; filename: string; error: string }\n | { type: \"batch_complete\"; totalFiles: number; errorCount: number };\n\n/**\n * Sign multiple PDFs sequentially, yielding progress events.\n *\n * Yields control between each signing operation to prevent blocking\n * the event loop under bulk load.\n *\n * @param files - Array of PDFs with filename and optional per-file options\n * @param options - Base signing options (per-file options override these)\n * @yields BatchSignEvent for each file start, completion, error, and batch complete\n */\nexport async function* signPdfBatch(\n files: BatchSignInput[],\n options: PdfSignOptions,\n): AsyncGenerator<BatchSignEvent> {\n let errorCount = 0;\n let processedCount = 0;\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n if (!file) continue;\n processedCount++;\n\n yield { type: \"file_start\", fileIndex: i, filename: file.filename };\n\n try {\n // Merge per-file options with base options (file.options takes priority)\n const mergedOptions: PdfSignOptions = { ...options, ...file.options };\n\n const signed = await signPdf(file.pdf, mergedOptions);\n\n yield {\n type: \"file_complete\",\n fileIndex: i,\n filename: file.filename,\n signed,\n };\n } catch (err) {\n errorCount++;\n yield {\n type: \"file_error\",\n fileIndex: i,\n filename: file.filename,\n error: err instanceof Error ? err.message : String(err),\n };\n }\n\n // Yield control between files to prevent event loop blocking\n await new Promise<void>((resolve) => setTimeout(resolve, 0));\n }\n\n yield { type: \"batch_complete\", totalFiles: processedCount, errorCount };\n}\n\n/**\n * Sign multiple PDFs sequentially, collecting all results.\n *\n * Convenience wrapper around {@link signPdfBatch} that collects all events\n * into an array of results.\n *\n * @param files - Array of PDFs with filename and optional per-file options\n * @param options - Base signing options\n * @returns Array of results with signed PDF bytes or error per file\n */\nexport async function signPdfBatchToArray(\n files: BatchSignInput[],\n options: PdfSignOptions,\n): Promise<{ filename: string; signed?: Uint8Array; error?: string }[]> {\n const results: { filename: string; signed?: Uint8Array; error?: string }[] =\n files.map((f) => ({ filename: f.filename }));\n\n for await (const event of signPdfBatch(files, options)) {\n switch (event.type) {\n case \"file_complete\": {\n const r = results[event.fileIndex];\n if (r) r.signed = event.signed;\n break;\n }\n case \"file_error\": {\n const r = results[event.fileIndex];\n if (r) r.error = event.error;\n break;\n }\n }\n }\n\n return results;\n}\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;AAuCA,gBAAuB,YAAY,CAChC,OACA,SAC+B;AAAA,EAC/B,IAAI,aAAa;AAAA,EACjB,IAAI,iBAAiB;AAAA,EAErB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACpC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,CAAC;AAAA,MAAM;AAAA,IACX;AAAA,IAEA,MAAM,EAAE,MAAM,cAAc,WAAW,GAAG,UAAU,KAAK,SAAS;AAAA,IAElE,IAAI;AAAA,MAED,MAAM,gBAAgC,KAAK,YAAY,KAAK,QAAQ;AAAA,MAEpE,MAAM,SAAS,MAAM,QAAQ,KAAK,KAAK,aAAa;AAAA,MAEpD,MAAM;AAAA,QACH,MAAM;AAAA,QACN,WAAW;AAAA,QACX,UAAU,KAAK;AAAA,QACf;AAAA,MACH;AAAA,MACD,OAAO,KAAK;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACH,MAAM;AAAA,QACN,WAAW;AAAA,QACX,UAAU,KAAK;AAAA,QACf,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACzD;AAAA;AAAA,IAIH,MAAM,IAAI,QAAc,CAAC,YAAY,WAAW,SAAS,CAAC,CAAC;AAAA,EAC9D;AAAA,EAEA,MAAM,EAAE,MAAM,kBAAkB,YAAY,gBAAgB,WAAW;AAAA;AAa1E,eAAsB,mBAAmB,CACtC,OACA,SACqE;AAAA,EACrE,MAAM,UACH,MAAM,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;AAAA,EAE9C,iBAAiB,SAAS,aAAa,OAAO,OAAO,GAAG;AAAA,IACrD,QAAQ,MAAM;AAAA,WACN,iBAAiB;AAAA,QACnB,MAAM,IAAI,QAAQ,MAAM;AAAA,QACxB,IAAI;AAAA,UAAG,EAAE,SAAS,MAAM;AAAA,QACxB;AAAA,MACH;AAAA,WACK,cAAc;AAAA,QAChB,MAAM,IAAI,QAAQ,MAAM;AAAA,QACxB,IAAI;AAAA,UAAG,EAAE,QAAQ,MAAM;AAAA,QACvB;AAAA,MACH;AAAA;AAAA,EAEN;AAAA,EAEA,OAAO;AAAA;",
8
- "debugId": "31F738785901A9FF64756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAuCA,gBAAuB,YAAY,CAChC,OACA,SAC+B;AAAA,EAC/B,IAAI,aAAa;AAAA,EACjB,IAAI,iBAAiB;AAAA,EAErB,SAAS,IAAI,EAAG,IAAI,MAAM,QAAQ,KAAK;AAAA,IACpC,MAAM,OAAO,MAAM;AAAA,IACnB,IAAI,CAAC;AAAA,MAAM;AAAA,IACX;AAAA,IAEA,MAAM,EAAE,MAAM,cAAc,WAAW,GAAG,UAAU,KAAK,SAAS;AAAA,IAElE,IAAI;AAAA,MAED,MAAM,gBAAgC,KAAK,YAAY,KAAK,QAAQ;AAAA,MAEpE,MAAM,SAAS,MAAM,QAAQ,KAAK,KAAK,aAAa;AAAA,MAEpD,MAAM;AAAA,QACH,MAAM;AAAA,QACN,WAAW;AAAA,QACX,UAAU,KAAK;AAAA,QACf;AAAA,MACH;AAAA,MACD,OAAO,KAAK;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACH,MAAM;AAAA,QACN,WAAW;AAAA,QACX,UAAU,KAAK;AAAA,QACf,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACzD;AAAA;AAAA,IAIH,MAAM,IAAI,QAAc,CAAC,YAAY,WAAW,SAAS,CAAC,CAAC;AAAA,EAC9D;AAAA,EAEA,MAAM,EAAE,MAAM,kBAAkB,YAAY,gBAAgB,WAAW;AAAA;AAa1E,eAAsB,mBAAmB,CACtC,OACA,SACqE;AAAA,EACrE,MAAM,UACH,MAAM,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;AAAA,EAE9C,iBAAiB,SAAS,aAAa,OAAO,OAAO,GAAG;AAAA,IACrD,QAAQ,MAAM;AAAA,WACN,iBAAiB;AAAA,QACnB,MAAM,IAAI,QAAQ,MAAM;AAAA,QACxB,IAAI;AAAA,UAAG,EAAE,SAAS,MAAM;AAAA,QACxB;AAAA,MACH;AAAA,WACK,cAAc;AAAA,QAChB,MAAM,IAAI,QAAQ,MAAM;AAAA,QACxB,IAAI;AAAA,UAAG,EAAE,QAAQ,MAAM;AAAA,QACvB;AAAA,MACH;AAAA;AAAA,EAEN;AAAA,EAEA,OAAO;AAAA;",
8
+ "debugId": "E7252B97659C919664756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,7 +1,8 @@
1
1
  // @bun
2
2
  import {
3
3
  signPdf
4
- } from "../../index-47hecyt4.js";
4
+ } from "../../index-eavt9jtf.js";
5
+ import"../../index-r24hmh0q.js";
5
6
 
6
7
  // src/plugins/react/index.ts
7
8
  import { useCallback, useReducer } from "react";
@@ -82,4 +83,4 @@ export {
82
83
  useSignPdf
83
84
  };
84
85
 
85
- //# debugId=9CC6C489081393C764756E2164756E21
86
+ //# debugId=59560D7C4C4FC11364756E2164756E21
@@ -4,7 +4,7 @@
4
4
  "sourcesContent": [
5
5
  "/**\n * React hook for client-side PDF signing\n *\n * @example\n * ```tsx\n * import { useSignPdf } from \"@f-o-t/e-signature/plugins/react\";\n *\n * function SignForm() {\n * const { sign, isSigning, isDone, result, error, download, reset } = useSignPdf();\n * // ...\n * }\n * ```\n */\n\nimport { useCallback, useReducer } from \"react\";\nimport { signPdf } from \"../../sign-pdf.ts\";\nimport type { PdfSignOptions } from \"../../types.ts\";\n\n// ── Public types ──────────────────────────────────────────────────────────────\n\n/** Anything that can be resolved to raw PDF / P12 bytes */\nexport type ByteSource = File | Blob | Uint8Array;\n\n/** Input to `sign()` */\nexport type SignInput = {\n /** The PDF document to sign */\n pdf: ByteSource;\n /** The .p12 / .pfx certificate */\n p12: ByteSource;\n /** Password protecting the certificate */\n password: string;\n /** All other signPdf options (reason, appearance, policy, timestamp…) */\n options?: Omit<PdfSignOptions, \"certificate\">;\n};\n\n/** Discriminated union for all hook states */\nexport type SigningStatus = \"idle\" | \"signing\" | \"done\" | \"error\";\n\n/** Return value of useSignPdf */\nexport type UseSignPdfReturn = {\n /** Current lifecycle status */\n status: SigningStatus;\n /** True when no signing operation is in progress */\n isIdle: boolean;\n /** True while signing is running */\n isSigning: boolean;\n /** True when the last sign() call succeeded */\n isDone: boolean;\n /** True when the last sign() call threw */\n isError: boolean;\n /** The signed PDF bytes — non-null only when isDone */\n result: Uint8Array | null;\n /** The error from the last failure — non-null only when isError */\n error: Error | null;\n /**\n * Sign a PDF document.\n * - While a signing is already in progress, subsequent calls are ignored (returns undefined).\n * - Re-throws on failure after updating state to \"error\".\n */\n sign: (input: SignInput) => Promise<Uint8Array | undefined>;\n /** Trigger a browser download of the signed PDF. No-op if status is not \"done\". */\n download: (filename?: string) => void;\n /** Reset to idle state, clearing result and error */\n reset: () => void;\n};\n\n// ── State machine ─────────────────────────────────────────────────────────────\n\ntype State =\n | { status: \"idle\" }\n | { status: \"signing\" }\n | { status: \"done\"; result: Uint8Array }\n | { status: \"error\"; error: Error };\n\ntype Action =\n | { type: \"START\" }\n | { type: \"SUCCESS\"; result: Uint8Array }\n | { type: \"FAILURE\"; error: Error }\n | { type: \"RESET\" };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case \"START\":\n return { status: \"signing\" };\n case \"SUCCESS\":\n return { status: \"done\", result: action.result };\n case \"FAILURE\":\n return { status: \"error\", error: action.error };\n case \"RESET\":\n return { status: \"idle\" };\n default:\n return state;\n }\n}\n\nconst initialState: State = { status: \"idle\" };\n\n// ── Hook ──────────────────────────────────────────────────────────────────────\n\nexport function useSignPdf(): UseSignPdfReturn {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const sign = useCallback(\n async (input: SignInput): Promise<Uint8Array | undefined> => {\n if (state.status === \"signing\") return undefined;\n\n dispatch({ type: \"START\" });\n\n try {\n const pdfBytes = await toUint8Array(input.pdf);\n const p12Bytes = await toUint8Array(input.p12);\n\n const signed = await signPdf(pdfBytes, {\n ...input.options,\n certificate: {\n p12: p12Bytes,\n password: input.password,\n },\n });\n\n dispatch({ type: \"SUCCESS\", result: signed });\n return signed;\n } catch (err) {\n const error =\n err instanceof Error ? err : new Error(\"Unknown signing error\");\n dispatch({ type: \"FAILURE\", error });\n throw error;\n }\n },\n // sign only needs to re-create when status changes (to enforce the signing guard)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [state.status],\n );\n\n const download = useCallback(\n (filename = \"signed.pdf\") => {\n if (state.status !== \"done\") return;\n const blob = new Blob(\n [\n (state as { status: \"done\"; result: Uint8Array }).result\n .buffer as ArrayBuffer,\n ],\n { type: \"application/pdf\" },\n );\n const url = URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n },\n [state],\n );\n\n const reset = useCallback(() => dispatch({ type: \"RESET\" }), []);\n\n return {\n status: state.status,\n isIdle: state.status === \"idle\",\n isSigning: state.status === \"signing\",\n isDone: state.status === \"done\",\n isError: state.status === \"error\",\n result:\n state.status === \"done\"\n ? (state as { status: \"done\"; result: Uint8Array }).result\n : null,\n error:\n state.status === \"error\"\n ? (state as { status: \"error\"; error: Error }).error\n : null,\n sign,\n download,\n reset,\n };\n}\n\n// ── Internal helpers ──────────────────────────────────────────────────────────\n\nasync function toUint8Array(source: ByteSource): Promise<Uint8Array> {\n if (source instanceof Uint8Array) return source;\n return new Uint8Array(await source.arrayBuffer());\n}\n"
6
6
  ],
7
- "mappings": ";;;;;;AAcA;AAkEA,SAAS,OAAO,CAAC,OAAc,QAAuB;AAAA,EACnD,QAAQ,OAAO;AAAA,SACP;AAAA,MACF,OAAO,EAAE,QAAQ,UAAU;AAAA,SACzB;AAAA,MACF,OAAO,EAAE,QAAQ,QAAQ,QAAQ,OAAO,OAAO;AAAA,SAC7C;AAAA,MACF,OAAO,EAAE,QAAQ,SAAS,OAAO,OAAO,MAAM;AAAA,SAC5C;AAAA,MACF,OAAO,EAAE,QAAQ,OAAO;AAAA;AAAA,MAExB,OAAO;AAAA;AAAA;AAIhB,IAAM,eAAsB,EAAE,QAAQ,OAAO;AAItC,SAAS,UAAU,GAAqB;AAAA,EAC5C,OAAO,OAAO,YAAY,WAAW,SAAS,YAAY;AAAA,EAE1D,MAAM,OAAO,YACV,OAAO,UAAsD;AAAA,IAC1D,IAAI,MAAM,WAAW;AAAA,MAAW;AAAA,IAEhC,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,IAE1B,IAAI;AAAA,MACD,MAAM,WAAW,MAAM,aAAa,MAAM,GAAG;AAAA,MAC7C,MAAM,WAAW,MAAM,aAAa,MAAM,GAAG;AAAA,MAE7C,MAAM,SAAS,MAAM,QAAQ,UAAU;AAAA,WACjC,MAAM;AAAA,QACT,aAAa;AAAA,UACV,KAAK;AAAA,UACL,UAAU,MAAM;AAAA,QACnB;AAAA,MACH,CAAC;AAAA,MAED,SAAS,EAAE,MAAM,WAAW,QAAQ,OAAO,CAAC;AAAA,MAC5C,OAAO;AAAA,MACR,OAAO,KAAK;AAAA,MACX,MAAM,QACH,eAAe,QAAQ,MAAM,IAAI,MAAM,uBAAuB;AAAA,MACjE,SAAS,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,MACnC,MAAM;AAAA;AAAA,KAKZ,CAAC,MAAM,MAAM,CAChB;AAAA,EAEA,MAAM,WAAW,YACd,CAAC,WAAW,iBAAiB;AAAA,IAC1B,IAAI,MAAM,WAAW;AAAA,MAAQ;AAAA,IAC7B,MAAM,OAAO,IAAI,KACd;AAAA,MACI,MAAiD,OAC9C;AAAA,IACP,GACA,EAAE,MAAM,kBAAkB,CAC7B;AAAA,IACA,MAAM,MAAM,IAAI,gBAAgB,IAAI;AAAA,IACpC,MAAM,IAAI,SAAS,cAAc,GAAG;AAAA,IACpC,EAAE,OAAO;AAAA,IACT,EAAE,WAAW;AAAA,IACb,SAAS,KAAK,YAAY,CAAC;AAAA,IAC3B,EAAE,MAAM;AAAA,IACR,SAAS,KAAK,YAAY,CAAC;AAAA,IAC3B,IAAI,gBAAgB,GAAG;AAAA,KAE1B,CAAC,KAAK,CACT;AAAA,EAEA,MAAM,QAAQ,YAAY,MAAM,SAAS,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAA,EAE/D,OAAO;AAAA,IACJ,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM,WAAW;AAAA,IACzB,WAAW,MAAM,WAAW;AAAA,IAC5B,QAAQ,MAAM,WAAW;AAAA,IACzB,SAAS,MAAM,WAAW;AAAA,IAC1B,QACG,MAAM,WAAW,SACX,MAAiD,SAClD;AAAA,IACR,OACG,MAAM,WAAW,UACX,MAA4C,QAC7C;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACH;AAAA;AAKH,eAAe,YAAY,CAAC,QAAyC;AAAA,EAClE,IAAI,kBAAkB;AAAA,IAAY,OAAO;AAAA,EACzC,OAAO,IAAI,WAAW,MAAM,OAAO,YAAY,CAAC;AAAA;",
8
- "debugId": "9CC6C489081393C764756E2164756E21",
7
+ "mappings": ";;;;;;;AAcA;AAkEA,SAAS,OAAO,CAAC,OAAc,QAAuB;AAAA,EACnD,QAAQ,OAAO;AAAA,SACP;AAAA,MACF,OAAO,EAAE,QAAQ,UAAU;AAAA,SACzB;AAAA,MACF,OAAO,EAAE,QAAQ,QAAQ,QAAQ,OAAO,OAAO;AAAA,SAC7C;AAAA,MACF,OAAO,EAAE,QAAQ,SAAS,OAAO,OAAO,MAAM;AAAA,SAC5C;AAAA,MACF,OAAO,EAAE,QAAQ,OAAO;AAAA;AAAA,MAExB,OAAO;AAAA;AAAA;AAIhB,IAAM,eAAsB,EAAE,QAAQ,OAAO;AAItC,SAAS,UAAU,GAAqB;AAAA,EAC5C,OAAO,OAAO,YAAY,WAAW,SAAS,YAAY;AAAA,EAE1D,MAAM,OAAO,YACV,OAAO,UAAsD;AAAA,IAC1D,IAAI,MAAM,WAAW;AAAA,MAAW;AAAA,IAEhC,SAAS,EAAE,MAAM,QAAQ,CAAC;AAAA,IAE1B,IAAI;AAAA,MACD,MAAM,WAAW,MAAM,aAAa,MAAM,GAAG;AAAA,MAC7C,MAAM,WAAW,MAAM,aAAa,MAAM,GAAG;AAAA,MAE7C,MAAM,SAAS,MAAM,QAAQ,UAAU;AAAA,WACjC,MAAM;AAAA,QACT,aAAa;AAAA,UACV,KAAK;AAAA,UACL,UAAU,MAAM;AAAA,QACnB;AAAA,MACH,CAAC;AAAA,MAED,SAAS,EAAE,MAAM,WAAW,QAAQ,OAAO,CAAC;AAAA,MAC5C,OAAO;AAAA,MACR,OAAO,KAAK;AAAA,MACX,MAAM,QACH,eAAe,QAAQ,MAAM,IAAI,MAAM,uBAAuB;AAAA,MACjE,SAAS,EAAE,MAAM,WAAW,MAAM,CAAC;AAAA,MACnC,MAAM;AAAA;AAAA,KAKZ,CAAC,MAAM,MAAM,CAChB;AAAA,EAEA,MAAM,WAAW,YACd,CAAC,WAAW,iBAAiB;AAAA,IAC1B,IAAI,MAAM,WAAW;AAAA,MAAQ;AAAA,IAC7B,MAAM,OAAO,IAAI,KACd;AAAA,MACI,MAAiD,OAC9C;AAAA,IACP,GACA,EAAE,MAAM,kBAAkB,CAC7B;AAAA,IACA,MAAM,MAAM,IAAI,gBAAgB,IAAI;AAAA,IACpC,MAAM,IAAI,SAAS,cAAc,GAAG;AAAA,IACpC,EAAE,OAAO;AAAA,IACT,EAAE,WAAW;AAAA,IACb,SAAS,KAAK,YAAY,CAAC;AAAA,IAC3B,EAAE,MAAM;AAAA,IACR,SAAS,KAAK,YAAY,CAAC;AAAA,IAC3B,IAAI,gBAAgB,GAAG;AAAA,KAE1B,CAAC,KAAK,CACT;AAAA,EAEA,MAAM,QAAQ,YAAY,MAAM,SAAS,EAAE,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;AAAA,EAE/D,OAAO;AAAA,IACJ,QAAQ,MAAM;AAAA,IACd,QAAQ,MAAM,WAAW;AAAA,IACzB,WAAW,MAAM,WAAW;AAAA,IAC5B,QAAQ,MAAM,WAAW;AAAA,IACzB,SAAS,MAAM,WAAW;AAAA,IAC1B,QACG,MAAM,WAAW,SACX,MAAiD,SAClD;AAAA,IACR,OACG,MAAM,WAAW,UACX,MAA4C,QAC7C;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACH;AAAA;AAKH,eAAe,YAAY,CAAC,QAAyC;AAAA,EAClE,IAAI,kBAAkB;AAAA,IAAY,OAAO;AAAA,EACzC,OAAO,IAAI,WAAW,MAAM,OAAO,YAAY,CAAC;AAAA;",
8
+ "debugId": "59560D7C4C4FC11364756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -0,0 +1,22 @@
1
+ import type { PdfSignOptions } from "../../types.ts";
2
+ /**
3
+ * Sign a PDF in a Web Worker to avoid blocking the main thread.
4
+ *
5
+ * @param worker - A Worker running the worker-entry plugin script
6
+ * @param pdf - PDF bytes
7
+ * @param options - Same options as signPdf()
8
+ * @returns Signed PDF bytes
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * const worker = new Worker(
13
+ * new URL("@f-o-t/e-signature/plugins/worker-entry", import.meta.url),
14
+ * { type: "module" },
15
+ * );
16
+ * const signed = await signPdfInWorker(worker, pdfBytes, options);
17
+ * worker.terminate();
18
+ * ```
19
+ */
20
+ export declare function signPdfInWorker(worker: Worker, pdf: Uint8Array, options: PdfSignOptions): Promise<Uint8Array>;
21
+ export type { WorkerRequest, WorkerResponse } from "../worker-entry/index.ts";
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/worker/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGrD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAC5B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC,CA8BrB;AAID,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,37 @@
1
+ // @bun
2
+ import"../../index-r24hmh0q.js";
3
+
4
+ // src/plugins/worker/index.ts
5
+ function signPdfInWorker(worker, pdf, options) {
6
+ return new Promise((resolve, reject) => {
7
+ const id = nextId++;
8
+ function onMessage(e) {
9
+ if (e.data.id !== id)
10
+ return;
11
+ worker.removeEventListener("message", onMessage);
12
+ worker.removeEventListener("error", onError);
13
+ if (e.data.ok) {
14
+ resolve(e.data.result);
15
+ } else {
16
+ reject(new Error(e.data.error));
17
+ }
18
+ }
19
+ function onError(e) {
20
+ worker.removeEventListener("message", onMessage);
21
+ worker.removeEventListener("error", onError);
22
+ reject(new Error(e.message || "Worker error"));
23
+ }
24
+ worker.addEventListener("message", onMessage);
25
+ worker.addEventListener("error", onError);
26
+ const transfer = pdf.buffer instanceof ArrayBuffer ? [pdf.buffer] : [];
27
+ worker.postMessage({ id, pdf, options }, {
28
+ transfer
29
+ });
30
+ });
31
+ }
32
+ var nextId = 1;
33
+ export {
34
+ signPdfInWorker
35
+ };
36
+
37
+ //# debugId=A075BE52F17C089B64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/plugins/worker/index.ts"],
4
+ "sourcesContent": [
5
+ "import type { PdfSignOptions } from \"../../types.ts\";\nimport type { WorkerRequest, WorkerResponse } from \"../worker-entry/index.ts\";\n\n/**\n * Sign a PDF in a Web Worker to avoid blocking the main thread.\n *\n * @param worker - A Worker running the worker-entry plugin script\n * @param pdf - PDF bytes\n * @param options - Same options as signPdf()\n * @returns Signed PDF bytes\n *\n * @example\n * ```ts\n * const worker = new Worker(\n * new URL(\"@f-o-t/e-signature/plugins/worker-entry\", import.meta.url),\n * { type: \"module\" },\n * );\n * const signed = await signPdfInWorker(worker, pdfBytes, options);\n * worker.terminate();\n * ```\n */\nexport function signPdfInWorker(\n worker: Worker,\n pdf: Uint8Array,\n options: PdfSignOptions,\n): Promise<Uint8Array> {\n return new Promise((resolve, reject) => {\n const id = nextId++;\n\n function onMessage(e: MessageEvent<WorkerResponse>) {\n if (e.data.id !== id) return;\n worker.removeEventListener(\"message\", onMessage);\n worker.removeEventListener(\"error\", onError);\n\n if (e.data.ok) {\n resolve(e.data.result);\n } else {\n reject(new Error(e.data.error));\n }\n }\n\n function onError(e: ErrorEvent) {\n worker.removeEventListener(\"message\", onMessage);\n worker.removeEventListener(\"error\", onError);\n reject(new Error(e.message || \"Worker error\"));\n }\n\n worker.addEventListener(\"message\", onMessage);\n worker.addEventListener(\"error\", onError);\n\n const transfer = pdf.buffer instanceof ArrayBuffer ? [pdf.buffer] : [];\n worker.postMessage({ id, pdf, options } satisfies WorkerRequest, {\n transfer,\n });\n });\n}\n\nlet nextId = 1;\n\nexport type { WorkerRequest, WorkerResponse } from \"../worker-entry/index.ts\";\n"
6
+ ],
7
+ "mappings": ";;;;AAqBO,SAAS,eAAe,CAC5B,QACA,KACA,SACoB;AAAA,EACpB,OAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AAAA,IACrC,MAAM,KAAK;AAAA,IAEX,SAAS,SAAS,CAAC,GAAiC;AAAA,MACjD,IAAI,EAAE,KAAK,OAAO;AAAA,QAAI;AAAA,MACtB,OAAO,oBAAoB,WAAW,SAAS;AAAA,MAC/C,OAAO,oBAAoB,SAAS,OAAO;AAAA,MAE3C,IAAI,EAAE,KAAK,IAAI;AAAA,QACZ,QAAQ,EAAE,KAAK,MAAM;AAAA,MACxB,EAAO;AAAA,QACJ,OAAO,IAAI,MAAM,EAAE,KAAK,KAAK,CAAC;AAAA;AAAA;AAAA,IAIpC,SAAS,OAAO,CAAC,GAAe;AAAA,MAC7B,OAAO,oBAAoB,WAAW,SAAS;AAAA,MAC/C,OAAO,oBAAoB,SAAS,OAAO;AAAA,MAC3C,OAAO,IAAI,MAAM,EAAE,WAAW,cAAc,CAAC;AAAA;AAAA,IAGhD,OAAO,iBAAiB,WAAW,SAAS;AAAA,IAC5C,OAAO,iBAAiB,SAAS,OAAO;AAAA,IAExC,MAAM,WAAW,IAAI,kBAAkB,cAAc,CAAC,IAAI,MAAM,IAAI,CAAC;AAAA,IACrE,OAAO,YAAY,EAAE,IAAI,KAAK,QAAQ,GAA2B;AAAA,MAC9D;AAAA,IACH,CAAC;AAAA,GACH;AAAA;AAGJ,IAAI,SAAS;",
8
+ "debugId": "A075BE52F17C089B64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,16 @@
1
+ import type { PdfSignOptions } from "../../types.ts";
2
+ export type WorkerRequest = {
3
+ id: number;
4
+ pdf: Uint8Array;
5
+ options: PdfSignOptions;
6
+ };
7
+ export type WorkerResponse = {
8
+ id: number;
9
+ ok: true;
10
+ result: Uint8Array;
11
+ } | {
12
+ id: number;
13
+ ok: false;
14
+ error: string;
15
+ };
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/worker-entry/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,MAAM,MAAM,aAAa,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,cAAc,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,cAAc,GACrB;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC5C;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -0,0 +1,24 @@
1
+ // @bun
2
+ import {
3
+ signPdf
4
+ } from "../../index-eavt9jtf.js";
5
+ import"../../index-r24hmh0q.js";
6
+
7
+ // src/plugins/worker-entry/index.ts
8
+ if (typeof globalThis.postMessage === "function" && typeof globalThis.onmessage !== "undefined") {
9
+ globalThis.onmessage = async (e) => {
10
+ const { id, pdf, options } = e.data;
11
+ try {
12
+ const result = await signPdf(pdf, options);
13
+ globalThis.postMessage({ id, ok: true, result }, { transfer: [result.buffer] });
14
+ } catch (err) {
15
+ globalThis.postMessage({
16
+ id,
17
+ ok: false,
18
+ error: err instanceof Error ? err.message : String(err)
19
+ });
20
+ }
21
+ };
22
+ }
23
+
24
+ //# debugId=DBE17372DFC4912E64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/plugins/worker-entry/index.ts"],
4
+ "sourcesContent": [
5
+ "import { signPdf } from \"../../sign-pdf.ts\";\nimport type { PdfSignOptions } from \"../../types.ts\";\n\nexport type WorkerRequest = {\n id: number;\n pdf: Uint8Array;\n options: PdfSignOptions;\n};\n\nexport type WorkerResponse =\n | { id: number; ok: true; result: Uint8Array }\n | { id: number; ok: false; error: string };\n\n// Self-register when running as a Worker\nif (\n typeof globalThis.postMessage === \"function\" &&\n typeof globalThis.onmessage !== \"undefined\"\n) {\n globalThis.onmessage = async (e: MessageEvent<WorkerRequest>) => {\n const { id, pdf, options } = e.data;\n try {\n const result = await signPdf(pdf, options);\n (globalThis as unknown as Worker).postMessage(\n { id, ok: true, result } satisfies WorkerResponse,\n { transfer: [result.buffer] },\n );\n } catch (err) {\n (globalThis as unknown as Worker).postMessage({\n id,\n ok: false,\n error: err instanceof Error ? err.message : String(err),\n } satisfies WorkerResponse);\n }\n };\n}\n"
6
+ ],
7
+ "mappings": ";;;;;;;AAcA,IACG,OAAO,WAAW,gBAAgB,cAClC,OAAO,WAAW,cAAc,aACjC;AAAA,EACC,WAAW,YAAY,OAAO,MAAmC;AAAA,IAC9D,QAAQ,IAAI,KAAK,YAAY,EAAE;AAAA,IAC/B,IAAI;AAAA,MACD,MAAM,SAAS,MAAM,QAAQ,KAAK,OAAO;AAAA,MACxC,WAAiC,YAC/B,EAAE,IAAI,IAAI,MAAM,OAAO,GACvB,EAAE,UAAU,CAAC,OAAO,MAAM,EAAE,CAC/B;AAAA,MACD,OAAO,KAAK;AAAA,MACV,WAAiC,YAAY;AAAA,QAC3C;AAAA,QACA,IAAI;AAAA,QACJ,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACzD,CAA0B;AAAA;AAAA;AAGnC;",
8
+ "debugId": "DBE17372DFC4912E64756E2164756E21",
9
+ "names": []
10
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@f-o-t/e-signature",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "description": "PAdES PDF signing with ICP-Brasil compliance",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -17,6 +17,18 @@
17
17
  "module": "./dist/plugins/react/index.js",
18
18
  "import": "./dist/plugins/react/index.js",
19
19
  "default": "./dist/plugins/react/index.js"
20
+ },
21
+ "./plugins/worker": {
22
+ "types": "./dist/plugins/worker/index.d.ts",
23
+ "module": "./dist/plugins/worker/index.js",
24
+ "import": "./dist/plugins/worker/index.js",
25
+ "default": "./dist/plugins/worker/index.js"
26
+ },
27
+ "./plugins/worker-entry": {
28
+ "types": "./dist/plugins/worker-entry/index.d.ts",
29
+ "module": "./dist/plugins/worker-entry/index.js",
30
+ "import": "./dist/plugins/worker-entry/index.js",
31
+ "default": "./dist/plugins/worker-entry/index.js"
20
32
  }
21
33
  },
22
34
  "files": [