@reportwright/pdf 0.1.0-beta.1 → 0.1.0-beta.2

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.js CHANGED
@@ -13,7 +13,7 @@ var __export = (target, all) => {
13
13
  __defProp(target, name, { get: all[name], enumerable: true });
14
14
  };
15
15
 
16
- // src/core/sink.js
16
+ // packages/pdf/src/core/sink.js
17
17
  function raced(p, signal) {
18
18
  if (!signal) return p;
19
19
  if (signal.aborted) {
@@ -112,11 +112,11 @@ function openSink(sink) {
112
112
  };
113
113
  }
114
114
  var init_sink = __esm({
115
- "src/core/sink.js"() {
115
+ "packages/pdf/src/core/sink.js"() {
116
116
  }
117
117
  });
118
118
 
119
- // src/core/serialize.js
119
+ // packages/pdf/src/core/serialize.js
120
120
  function latin1(s) {
121
121
  const B = (
122
122
  /** @type {any} */
@@ -129,7 +129,7 @@ function latin1(s) {
129
129
  }
130
130
  var num, hex4, utf16, text, ascii, pdfName, UTF8, DELIM, fontName, pdfDate, esc;
131
131
  var init_serialize = __esm({
132
- "src/core/serialize.js"() {
132
+ "packages/pdf/src/core/serialize.js"() {
133
133
  num = (v) => {
134
134
  if (typeof v !== "number" || !(Math.abs(v) < 1e9)) throw new RangeError(`Not a usable number: ${v}`);
135
135
  const r = Math.round(v * 1e3) / 1e3;
@@ -166,7 +166,7 @@ var init_serialize = __esm({
166
166
  }
167
167
  });
168
168
 
169
- // ../../../reportwright/node_modules/fflate/esm/browser.js
169
+ // ../reportwright/node_modules/fflate/esm/browser.js
170
170
  function deflateSync(data, opts) {
171
171
  return dopt(data, opts || {}, 0, 0);
172
172
  }
@@ -183,7 +183,7 @@ function zlibSync(data, opts) {
183
183
  }
184
184
  var u8, u16, i32, fleb, fdeb, clim, freb, _a, fl, revfl, _b, fd, revfd, rev, x, i, hMap, flt, i, i, i, i, fdt, i, flm, flrm, fdm, fdrm, max, bits, bits16, shft, slc, ec, err, inflt, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, deo, et, dflt, adler, dopt, wbytes, zlh, zls, Inflate, Unzlib, td, tds;
185
185
  var init_browser = __esm({
186
- "../../../reportwright/node_modules/fflate/esm/browser.js"() {
186
+ "../reportwright/node_modules/fflate/esm/browser.js"() {
187
187
  u8 = Uint8Array;
188
188
  u16 = Uint16Array;
189
189
  i32 = Int32Array;
@@ -956,7 +956,7 @@ var init_browser = __esm({
956
956
  }
957
957
  });
958
958
 
959
- // src/core/deflate.js
959
+ // packages/pdf/src/core/deflate.js
960
960
  async function deflate(bytes) {
961
961
  if (slots.free > 0) slots.free--;
962
962
  else await new Promise((ok) => slots.wait.push(
@@ -1044,7 +1044,7 @@ function deflateStream() {
1044
1044
  }
1045
1045
  var NODE_ZLIB, slots;
1046
1046
  var init_deflate = __esm({
1047
- "src/core/deflate.js"() {
1047
+ "packages/pdf/src/core/deflate.js"() {
1048
1048
  init_browser();
1049
1049
  NODE_ZLIB = /** @type {any} */
1050
1050
  globalThis.process?.getBuiltinModule?.("node:zlib");
@@ -1055,7 +1055,7 @@ var init_deflate = __esm({
1055
1055
  }
1056
1056
  });
1057
1057
 
1058
- // src/core/objects.js
1058
+ // packages/pdf/src/core/objects.js
1059
1059
  function createObjects(out, o) {
1060
1060
  let pos = 0, nextNum = 0;
1061
1061
  const blocks = [];
@@ -1335,7 +1335,7 @@ ${xref}
1335
1335
  }
1336
1336
  var CHUNK, OBJSTM, XBITS, XB, BYTERANGE;
1337
1337
  var init_objects = __esm({
1338
- "src/core/objects.js"() {
1338
+ "packages/pdf/src/core/objects.js"() {
1339
1339
  init_serialize();
1340
1340
  init_deflate();
1341
1341
  init_sink();
@@ -1347,7 +1347,7 @@ var init_objects = __esm({
1347
1347
  }
1348
1348
  });
1349
1349
 
1350
- // src/standards/xmp.js
1350
+ // packages/pdf/src/standards/xmp.js
1351
1351
  function checkExt(x2) {
1352
1352
  if (!NAME.test(x2.prefix)) throw new TypeError(`XMP: the schema prefix ${JSON.stringify(x2.prefix)} is not an XML name`);
1353
1353
  if (typeof x2.ns !== "string" || !/^[A-Za-z][A-Za-z0-9+.-]*:[^\s<>"'&]{1,256}$/.test(x2.ns)) throw new TypeError(`XMP: the namespace ${JSON.stringify(x2.ns)} is not a URI`);
@@ -1379,7 +1379,7 @@ ${pdfa ? `<rdf:Description rdf:about="" xmlns:pdfaid="http://www.aiim.org/pdfa/n
1379
1379
  }
1380
1380
  var PRODUCER, xml, NAME, PDFUA;
1381
1381
  var init_xmp = __esm({
1382
- "src/standards/xmp.js"() {
1382
+ "packages/pdf/src/standards/xmp.js"() {
1383
1383
  PRODUCER = "@reportwright/pdf";
1384
1384
  xml = (s) => String(s).replace(/[\0-\x08\x0b\x0c\x0e-\x1f￾￿]|[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/g, "").replace(/[<>&"']/g, (c) => (
1385
1385
  /** @type {any} */
@@ -1396,7 +1396,7 @@ var init_xmp = __esm({
1396
1396
  }
1397
1397
  });
1398
1398
 
1399
- // src/core/brand.js
1399
+ // packages/pdf/src/core/brand.js
1400
1400
  function brand(obj, kind, doc, data) {
1401
1401
  brands.set(obj, { kind, doc, data });
1402
1402
  return obj;
@@ -1457,14 +1457,14 @@ function guarded(api) {
1457
1457
  }
1458
1458
  var brands, kindOf, MAX_SNAPSHOT;
1459
1459
  var init_brand = __esm({
1460
- "src/core/brand.js"() {
1460
+ "packages/pdf/src/core/brand.js"() {
1461
1461
  brands = /* @__PURE__ */ new WeakMap();
1462
1462
  kindOf = (v) => v !== null && typeof v === "object" ? brands.get(v)?.kind : void 0;
1463
1463
  MAX_SNAPSHOT = 16e6;
1464
1464
  }
1465
1465
  });
1466
1466
 
1467
- // src/document.js
1467
+ // packages/pdf/src/document.js
1468
1468
  function createDoc(out, o) {
1469
1469
  const level = o.pdfaLevel ?? (o.pdfa ? { part: 2, conformance: "b", unicode: false } : null);
1470
1470
  const objs = createObjects(out, { compress: o.compress, signal: o.signal, encrypt: o.encrypt, hash: o.hash, classic: level?.part === 1 });
@@ -1682,7 +1682,7 @@ function createDoc(out, o) {
1682
1682
  }
1683
1683
  var LEAF, IN_FLIGHT;
1684
1684
  var init_document = __esm({
1685
- "src/document.js"() {
1685
+ "packages/pdf/src/document.js"() {
1686
1686
  init_objects();
1687
1687
  init_deflate();
1688
1688
  init_serialize();
@@ -1693,10 +1693,10 @@ var init_document = __esm({
1693
1693
  }
1694
1694
  });
1695
1695
 
1696
- // src/content/content.js
1696
+ // packages/pdf/src/content/content.js
1697
1697
  var Content;
1698
1698
  var init_content = __esm({
1699
- "src/content/content.js"() {
1699
+ "packages/pdf/src/content/content.js"() {
1700
1700
  init_serialize();
1701
1701
  Content = class {
1702
1702
  constructor() {
@@ -1855,7 +1855,7 @@ var init_content = __esm({
1855
1855
  }
1856
1856
  });
1857
1857
 
1858
- // src/standards/icc.js
1858
+ // packages/pdf/src/standards/icc.js
1859
1859
  function parseIcc(bytes, what) {
1860
1860
  const b = toBytes(bytes, what);
1861
1861
  const bad = (m) => new TypeError(`${what}: not a usable ICC profile (${m})`);
@@ -1887,14 +1887,14 @@ function toBytes(v, what) {
1887
1887
  }
1888
1888
  var MAX_ICC, SPACES, tag;
1889
1889
  var init_icc = __esm({
1890
- "src/standards/icc.js"() {
1890
+ "packages/pdf/src/standards/icc.js"() {
1891
1891
  MAX_ICC = 32 << 20;
1892
1892
  SPACES = /* @__PURE__ */ new Map([["GRAY", 1], ["RGB ", 3], ["CMYK", 4]]);
1893
1893
  tag = (b, i2) => String.fromCharCode(b[i2], b[i2 + 1], b[i2 + 2], b[i2 + 3]);
1894
1894
  }
1895
1895
  });
1896
1896
 
1897
- // src/graphics/color.js
1897
+ // packages/pdf/src/graphics/color.js
1898
1898
  function cmyk(c, m, y, k) {
1899
1899
  const v = [c, m, y, k];
1900
1900
  if (!v.every(unit)) throw new RangeError(`cmyk(c, m, y, k): each is 0–1, not ${v.join(", ")}`);
@@ -1977,7 +1977,7 @@ async function iccColorSpace(doc, bytes) {
1977
1977
  }
1978
1978
  var DEVICE, unit, CSS_RGB, base, spots;
1979
1979
  var init_color = __esm({
1980
- "src/graphics/color.js"() {
1980
+ "packages/pdf/src/graphics/color.js"() {
1981
1981
  init_serialize();
1982
1982
  init_brand();
1983
1983
  init_icc();
@@ -1989,7 +1989,7 @@ var init_color = __esm({
1989
1989
  }
1990
1990
  });
1991
1991
 
1992
- // src/text/runs.js
1992
+ // packages/pdf/src/text/runs.js
1993
1993
  function spacing(o) {
1994
1994
  const tc = o?.characterSpacing ?? 0, tw = o?.wordSpacing ?? 0, tz = o?.horizontalScaling ?? 100;
1995
1995
  num(tc);
@@ -2124,7 +2124,7 @@ function runOps(run2, size, rise, tw, standard, tc = 0) {
2124
2124
  }
2125
2125
  var WS, RTL_RANGES, dirOf, maybeRtl, RTL, LTR;
2126
2126
  var init_runs = __esm({
2127
- "src/text/runs.js"() {
2127
+ "packages/pdf/src/text/runs.js"() {
2128
2128
  init_serialize();
2129
2129
  WS = /^\s$/u;
2130
2130
  RTL_RANGES = "֐-ࣿיִ-﷿ﹰ-\uFEFF";
@@ -2138,7 +2138,7 @@ var init_runs = __esm({
2138
2138
  }
2139
2139
  });
2140
2140
 
2141
- // src/text/text.js
2141
+ // packages/pdf/src/text/text.js
2142
2142
  function fontsOf(page, o, who) {
2143
2143
  const font = o?.font;
2144
2144
  if (!font || typeof font.encode !== "function") throw new TypeError(`${who}: options.font is required (pdf.standardFont(name) or await pdf.embedFont(bytes))`);
@@ -2207,7 +2207,7 @@ function text2(str3, o) {
2207
2207
  }
2208
2208
  var MAX_TEXT, MODES, PLAIN, PLAIN_STATE;
2209
2209
  var init_text = __esm({
2210
- "src/text/text.js"() {
2210
+ "packages/pdf/src/text/text.js"() {
2211
2211
  init_color();
2212
2212
  init_serialize();
2213
2213
  init_brand();
@@ -2219,7 +2219,7 @@ var init_text = __esm({
2219
2219
  }
2220
2220
  });
2221
2221
 
2222
- // src/text/box.js
2222
+ // packages/pdf/src/text/box.js
2223
2223
  function textBox(str3, o) {
2224
2224
  const fonts = fontsOf(this, o, "page.textBox");
2225
2225
  const size = o.size ?? 12, x2 = o.x ?? 0, y = o.y ?? 0, W = o.width;
@@ -2343,7 +2343,7 @@ function textBox(str3, o) {
2343
2343
  }
2344
2344
  var MAX_LINES;
2345
2345
  var init_box = __esm({
2346
- "src/text/box.js"() {
2346
+ "packages/pdf/src/text/box.js"() {
2347
2347
  init_serialize();
2348
2348
  init_runs();
2349
2349
  init_text();
@@ -2351,7 +2351,7 @@ var init_box = __esm({
2351
2351
  }
2352
2352
  });
2353
2353
 
2354
- // src/graphics/svg.js
2354
+ // packages/pdf/src/graphics/svg.js
2355
2355
  function parseSvgPath(d, path2) {
2356
2356
  if (typeof d !== "string") throw new TypeError("svgPath: the path data is a string");
2357
2357
  if (d.length > MAX_SVG) throw new RangeError(`svgPath: the path data is ${d.length} characters; at most ${MAX_SVG} (10 MB)`);
@@ -2515,7 +2515,7 @@ function arc(path2, x0, y0, rx, ry, phi, large, sweep, x2, y) {
2515
2515
  }
2516
2516
  var MAX_SVG, ARGS;
2517
2517
  var init_svg = __esm({
2518
- "src/graphics/svg.js"() {
2518
+ "packages/pdf/src/graphics/svg.js"() {
2519
2519
  init_path();
2520
2520
  MAX_SVG = 10 * 1024 * 1024;
2521
2521
  ARGS = /** @type {Record<string, number>} */
@@ -2523,14 +2523,14 @@ var init_svg = __esm({
2523
2523
  }
2524
2524
  });
2525
2525
 
2526
- // src/graphics/path.js
2526
+ // packages/pdf/src/graphics/path.js
2527
2527
  function coord(v, what) {
2528
2528
  if (typeof v !== "number" || !(Math.abs(v) < 1e9)) throw new RangeError(`${what}: ${v} is not a usable number (finite, under 1e9 in size)`);
2529
2529
  return v;
2530
2530
  }
2531
2531
  var MAX_SEGMENTS, TAU, Path;
2532
2532
  var init_path = __esm({
2533
- "src/graphics/path.js"() {
2533
+ "packages/pdf/src/graphics/path.js"() {
2534
2534
  init_serialize();
2535
2535
  init_svg();
2536
2536
  MAX_SEGMENTS = 1e6;
@@ -2743,7 +2743,7 @@ var init_path = __esm({
2743
2743
  }
2744
2744
  });
2745
2745
 
2746
- // src/graphics/paint.js
2746
+ // packages/pdf/src/graphics/paint.js
2747
2747
  function oneSpace(cols, doc) {
2748
2748
  const r = cols.map((c) => resolve(c, doc));
2749
2749
  if (r.every((x2) => x2.cs === DEVICE[1] || x2.cs === DEVICE[3]) && r.some((x2) => x2.cs === DEVICE[3])) {
@@ -2849,7 +2849,7 @@ function tilingPattern(o, draw) {
2849
2849
  }
2850
2850
  var MAX_STOPS, shading, base2;
2851
2851
  var init_paint = __esm({
2852
- "src/graphics/paint.js"() {
2852
+ "packages/pdf/src/graphics/paint.js"() {
2853
2853
  init_serialize();
2854
2854
  init_color();
2855
2855
  init_draw();
@@ -2860,7 +2860,7 @@ var init_paint = __esm({
2860
2860
  }
2861
2861
  });
2862
2862
 
2863
- // src/standards/level.js
2863
+ // packages/pdf/src/standards/level.js
2864
2864
  function pdfaLevel(pdfa, tagged) {
2865
2865
  if (pdfa == null || pdfa === false) return null;
2866
2866
  if (pdfa === true) return { part: 2, conformance: "b", unicode: false };
@@ -2877,11 +2877,11 @@ function refuseInA1(doc, what, why) {
2877
2877
  if (d.pdfaLevel?.part === 1) throw new TypeError(`${what}: PDF/A-1 (ISO 19005-1) ${why}; use PDF/A-2 or 3 (pdfa: { part: 2 })`);
2878
2878
  }
2879
2879
  var init_level = __esm({
2880
- "src/standards/level.js"() {
2880
+ "packages/pdf/src/standards/level.js"() {
2881
2881
  }
2882
2882
  });
2883
2883
 
2884
- // src/graphics/draw.js
2884
+ // packages/pdf/src/graphics/draw.js
2885
2885
  function state(page) {
2886
2886
  let s = states.get(page);
2887
2887
  if (!s) states.set(page, s = { m: [1, 0, 0, 1, 0, 0], stack: [], transparent: false, watched: false });
@@ -3066,7 +3066,7 @@ function figure(o, fn) {
3066
3066
  }
3067
3067
  var MAX_DEPTH, MAX_DEPTH_PDFA, MAX_DASH, BLEND_MODES, BLEND, CAPS, JOINS, GROUP, states, mul, flip, num6, matrix, rule;
3068
3068
  var init_draw = __esm({
3069
- "src/graphics/draw.js"() {
3069
+ "packages/pdf/src/graphics/draw.js"() {
3070
3070
  init_serialize();
3071
3071
  init_path();
3072
3072
  init_paint();
@@ -3098,7 +3098,7 @@ var init_draw = __esm({
3098
3098
  }
3099
3099
  });
3100
3100
 
3101
- // src/graphics/shapes.js
3101
+ // packages/pdf/src/graphics/shapes.js
3102
3102
  function line(x1, y1, x2, y2, o = {}) {
3103
3103
  const c = this.content, H = this.height;
3104
3104
  const gs = gstate(this, o);
@@ -3138,14 +3138,14 @@ function rect(x2, y, w, h, o = {}) {
3138
3138
  return this;
3139
3139
  }
3140
3140
  var init_shapes = __esm({
3141
- "src/graphics/shapes.js"() {
3141
+ "packages/pdf/src/graphics/shapes.js"() {
3142
3142
  init_serialize();
3143
3143
  init_color();
3144
3144
  init_draw();
3145
3145
  }
3146
3146
  });
3147
3147
 
3148
- // src/nav/trees.js
3148
+ // packages/pdf/src/nav/trees.js
3149
3149
  async function writeTree(doc, kind, entries) {
3150
3150
  let level = [];
3151
3151
  for (let i2 = 0; i2 < entries.length; i2 += LEAF2) {
@@ -3173,14 +3173,14 @@ function setNames(doc, key, ref) {
3173
3173
  }
3174
3174
  var LEAF2, names;
3175
3175
  var init_trees = __esm({
3176
- "src/nav/trees.js"() {
3176
+ "packages/pdf/src/nav/trees.js"() {
3177
3177
  init_serialize();
3178
3178
  LEAF2 = 64;
3179
3179
  names = /* @__PURE__ */ new WeakMap();
3180
3180
  }
3181
3181
  });
3182
3182
 
3183
- // src/nav/dest.js
3183
+ // packages/pdf/src/nav/dest.js
3184
3184
  function pageIndex(doc, page, who) {
3185
3185
  if (typeof page === "number") {
3186
3186
  if (!(Number.isInteger(page) && page >= 1)) throw new RangeError(`${who}: page is a whole number from 1`);
@@ -3274,7 +3274,7 @@ function create(doc) {
3274
3274
  }
3275
3275
  var FITS, MAX_NAMES, MAX_NAME_BYTES, UTF82, hexOf, registries;
3276
3276
  var init_dest = __esm({
3277
- "src/nav/dest.js"() {
3277
+ "packages/pdf/src/nav/dest.js"() {
3278
3278
  init_serialize();
3279
3279
  init_brand();
3280
3280
  init_trees();
@@ -3291,7 +3291,7 @@ var init_dest = __esm({
3291
3291
  }
3292
3292
  });
3293
3293
 
3294
- // src/nav/links.js
3294
+ // packages/pdf/src/nav/links.js
3295
3295
  function checkUrl(raw, allow, who) {
3296
3296
  if (typeof raw !== "string") throw new TypeError(`${who}: url is a string`);
3297
3297
  if (raw.length > MAX_URL) throw new RangeError(`${who}: a URL is at most ${MAX_URL} characters`);
@@ -3415,7 +3415,7 @@ function dashArray(d, who) {
3415
3415
  }
3416
3416
  var NEVER, DEFAULT_SCHEMES, ACTIVE, NAMED, MAX_URL, MAX_QUADS, HIGHLIGHT, BORDER;
3417
3417
  var init_links = __esm({
3418
- "src/nav/links.js"() {
3418
+ "packages/pdf/src/nav/links.js"() {
3419
3419
  init_serialize();
3420
3420
  init_color();
3421
3421
  init_dest();
@@ -3430,7 +3430,7 @@ var init_links = __esm({
3430
3430
  }
3431
3431
  });
3432
3432
 
3433
- // src/images/png.js
3433
+ // packages/pdf/src/images/png.js
3434
3434
  function crc32(b, from, to) {
3435
3435
  if (!CRC_TABLE) {
3436
3436
  CRC_TABLE = new Uint32Array(256);
@@ -3489,6 +3489,7 @@ function readPng(b) {
3489
3489
  return png;
3490
3490
  }
3491
3491
  async function inflateExact(idat, size, onData, drain = null) {
3492
+ if (NODE_ZLIB2 && size <= SYNC_MAX) return inflateNode(idat, size, onData, drain);
3492
3493
  let n = 0, done = false, total = 0;
3493
3494
  const z = new Unzlib((chunk, final) => {
3494
3495
  if (n + chunk.length > size) throw new TypeError(`PNG: the image data inflates past the ${size.toLocaleString("en")} bytes its header allows (corrupt, or a zip bomb)`);
@@ -3521,6 +3522,37 @@ async function inflateExact(idat, size, onData, drain = null) {
3521
3522
  if (!(rest instanceof Uint8Array) || typeof bit !== "number") throw new Error("PNG: internal: the inflater does not report where the zlib stream ends");
3522
3523
  return total - rest.length + (bit ? 1 : 0);
3523
3524
  }
3525
+ async function inflateNode(idat, size, onData, drain = null) {
3526
+ let total = 0;
3527
+ for (const d of idat) total += d.length;
3528
+ let src = idat[0];
3529
+ if (idat.length > 1) {
3530
+ src = new Uint8Array(total);
3531
+ let at = 0;
3532
+ for (const d of idat) {
3533
+ src.set(d, at);
3534
+ at += d.length;
3535
+ }
3536
+ }
3537
+ let r;
3538
+ try {
3539
+ r = NODE_ZLIB2.inflateSync(src, { info: true, maxOutputLength: Math.max(1, size) });
3540
+ } catch (e) {
3541
+ const code = (
3542
+ /** @type {any} */
3543
+ e.code
3544
+ );
3545
+ if (code === "ERR_BUFFER_TOO_LARGE") throw new TypeError(`PNG: the image data inflates past the ${size.toLocaleString("en")} bytes its header allows (corrupt, or a zip bomb)`);
3546
+ if (code === "Z_BUF_ERROR") throw new TypeError(`PNG: truncated image data (the zlib stream ends early)`);
3547
+ throw new TypeError(`PNG: corrupt image data (${/** @type {Error} */
3548
+ e.message})`);
3549
+ }
3550
+ const out = new Uint8Array(r.buffer.buffer, r.buffer.byteOffset, r.buffer.length);
3551
+ if (out.length !== size) throw new TypeError(`PNG: truncated image data (${out.length.toLocaleString("en")} of ${size.toLocaleString("en")} bytes)`);
3552
+ if (onData) onData(out, 0);
3553
+ if (drain) await drain();
3554
+ return r.engine.bytesWritten;
3555
+ }
3524
3556
  function unfilterRow(f, c, p, bpp) {
3525
3557
  const rb = c.length;
3526
3558
  if (f > 4) throw new TypeError(`PNG: unknown row filter ${f}`);
@@ -3545,29 +3577,58 @@ function unfilterRow(f, c, p, bpp) {
3545
3577
  }
3546
3578
  }
3547
3579
  function filterRow(x2, up, bpp, out, o, t) {
3548
- const rb = x2.length;
3549
- let bestSum = Infinity;
3550
- for (let f = 0; f <= 4; f++) {
3551
- if (f === 3) continue;
3552
- let sum = 0;
3553
- for (let i2 = 0; i2 < rb; i2++) {
3554
- const a = i2 >= bpp ? x2[i2 - bpp] : 0, u = up ? up[i2] : 0, c = up && i2 >= bpp ? up[i2 - bpp] : 0;
3555
- let p = 0;
3556
- if (f === 1) p = a;
3557
- else if (f === 2) p = u;
3558
- else if (f === 4) {
3559
- const pp = a + u - c, pa = Math.abs(pp - a), pb = Math.abs(pp - u), pc = Math.abs(pp - c);
3560
- p = pa <= pb && pa <= pc ? a : pb <= pc ? u : c;
3561
- }
3562
- const v = x2[i2] - p & 255;
3563
- t[i2] = v;
3564
- sum += v < 128 ? v : 256 - v;
3565
- }
3566
- if (sum < bestSum) {
3567
- bestSum = sum;
3568
- out.set(t, o + 1);
3569
- out[o] = f;
3570
- }
3580
+ const rb = x2.length, m = Math.min(bpp, rb);
3581
+ let best = 0, sum = 0;
3582
+ for (let i2 = 0; i2 < rb; i2++) {
3583
+ const v = x2[i2];
3584
+ sum += v < 128 ? v : 256 - v;
3585
+ }
3586
+ out[o] = 0;
3587
+ out.set(x2, o + 1);
3588
+ best = sum;
3589
+ sum = 0;
3590
+ for (let i2 = 0; i2 < m; i2++) {
3591
+ const v = x2[i2];
3592
+ t[i2] = v;
3593
+ sum += v < 128 ? v : 256 - v;
3594
+ }
3595
+ for (let i2 = m; i2 < rb; i2++) {
3596
+ const v = x2[i2] - x2[i2 - bpp] & 255;
3597
+ t[i2] = v;
3598
+ sum += v < 128 ? v : 256 - v;
3599
+ }
3600
+ if (sum < best) {
3601
+ best = sum;
3602
+ out[o] = 1;
3603
+ out.set(t, o + 1);
3604
+ }
3605
+ if (!up) return;
3606
+ sum = 0;
3607
+ for (let i2 = 0; i2 < rb; i2++) {
3608
+ const v = x2[i2] - up[i2] & 255;
3609
+ t[i2] = v;
3610
+ sum += v < 128 ? v : 256 - v;
3611
+ }
3612
+ if (sum < best) {
3613
+ best = sum;
3614
+ out[o] = 2;
3615
+ out.set(t, o + 1);
3616
+ }
3617
+ sum = 0;
3618
+ for (let i2 = 0; i2 < m; i2++) {
3619
+ const v = x2[i2] - up[i2] & 255;
3620
+ t[i2] = v;
3621
+ sum += v < 128 ? v : 256 - v;
3622
+ }
3623
+ for (let i2 = m; i2 < rb; i2++) {
3624
+ const a = x2[i2 - bpp], u = up[i2], c = up[i2 - bpp], pa = Math.abs(u - c), pb = Math.abs(a - c), pc = Math.abs(a + u - c - c);
3625
+ const v = x2[i2] - (pa <= pb && pa <= pc ? a : pb <= pc ? u : c) & 255;
3626
+ t[i2] = v;
3627
+ sum += v < 128 ? v : 256 - v;
3628
+ }
3629
+ if (sum < best) {
3630
+ out[o] = 4;
3631
+ out.set(t, o + 1);
3571
3632
  }
3572
3633
  }
3573
3634
  async function decodePng(p, maxDecoded = MAX_DECODED) {
@@ -3685,14 +3746,17 @@ async function decodePng(p, maxDecoded = MAX_DECODED) {
3685
3746
  };
3686
3747
  return { ...head, filtered: false, alpha: hasAlpha, rows };
3687
3748
  }
3688
- var MAX_SIDE, MAX_PIXELS, MAX_DECODED, STEP, DEPTHS, CHANNELS, ADAM7, CRC_TABLE, isPng, rawSize, filterBytes;
3749
+ var MAX_SIDE, MAX_PIXELS, MAX_DECODED, STEP, NODE_ZLIB2, SYNC_MAX, DEPTHS, CHANNELS, ADAM7, CRC_TABLE, isPng, rawSize, filterBytes;
3689
3750
  var init_png = __esm({
3690
- "src/images/png.js"() {
3751
+ "packages/pdf/src/images/png.js"() {
3691
3752
  init_browser();
3692
3753
  MAX_SIDE = 65535;
3693
3754
  MAX_PIXELS = 1e8;
3694
3755
  MAX_DECODED = 64 << 20;
3695
3756
  STEP = 1024;
3757
+ NODE_ZLIB2 = /** @type {any} */
3758
+ globalThis.process?.getBuiltinModule?.("node:zlib");
3759
+ SYNC_MAX = 32 << 20;
3696
3760
  DEPTHS = { 0: [1, 2, 4, 8, 16], 2: [8, 16], 3: [1, 2, 4, 8], 4: [8, 16], 6: [8, 16] };
3697
3761
  CHANNELS = { 0: 1, 2: 3, 3: 1, 4: 2, 6: 4 };
3698
3762
  ADAM7 = [[0, 0, 8, 8], [4, 0, 8, 8], [0, 4, 4, 8], [2, 0, 4, 4], [0, 2, 2, 4], [1, 0, 2, 2], [0, 1, 1, 2]];
@@ -3709,7 +3773,7 @@ var init_png = __esm({
3709
3773
  }
3710
3774
  });
3711
3775
 
3712
- // src/images/jpeg.js
3776
+ // packages/pdf/src/images/jpeg.js
3713
3777
  function readJpeg(b) {
3714
3778
  const bad = (m) => new TypeError(`JPEG: ${m}`);
3715
3779
  if (!isJpeg(b)) throw bad("no JPEG signature (FF D8)");
@@ -3780,22 +3844,47 @@ function exifOrientation(b, t, end) {
3780
3844
  }
3781
3845
  var isJpeg;
3782
3846
  var init_jpeg = __esm({
3783
- "src/images/jpeg.js"() {
3847
+ "packages/pdf/src/images/jpeg.js"() {
3784
3848
  init_png();
3785
3849
  isJpeg = (b) => b.length >= 3 && b[0] === 255 && b[1] === 216 && b[2] === 255;
3786
3850
  }
3787
3851
  });
3788
3852
 
3789
- // src/images/image.js
3853
+ // packages/pdf/src/images/image.js
3790
3854
  async function embedImage(doc, bytes, opt = {}) {
3791
3855
  const b = toBytes(bytes, "embedImage");
3792
- const own2 = (k) => opt != null && Object.hasOwn(opt, k) ? (
3856
+ const own2 = (k2) => opt != null && Object.hasOwn(opt, k2) ? (
3793
3857
  /** @type {any} */
3794
- opt[k]
3858
+ opt[k2]
3795
3859
  ) : void 0;
3796
3860
  const o = { colorSpace: own2("colorSpace"), maxDecodedBytes: own2("maxDecodedBytes") ?? MAX_DECODED };
3797
3861
  if (!(Number.isSafeInteger(o.maxDecodedBytes) && o.maxDecodedBytes > 0)) throw new TypeError("embedImage: maxDecodedBytes is a whole number of bytes > 0");
3798
3862
  if (b.length > MAX_INPUT) throw new RangeError(`embedImage: at most ${MAX_INPUT >> 20} MB`);
3863
+ let seen = SEEN.get(doc);
3864
+ if (!seen) SEEN.set(doc, seen = /* @__PURE__ */ new Map());
3865
+ const { key, copy } = await digest(b);
3866
+ const k = `${key} ${o.colorSpace == null ? "-" : idOf(o.colorSpace)} ${o.maxDecodedBytes}`;
3867
+ const hit = seen.get(k);
3868
+ if (hit && (!hit.copy || same(hit.copy, b))) return hit.img;
3869
+ const img = embed(doc, b, o);
3870
+ if (!hit) seen.set(k, { img, copy });
3871
+ img.catch(() => {
3872
+ if (seen.get(k)?.img === img) seen.delete(k);
3873
+ });
3874
+ return img;
3875
+ }
3876
+ async function digest(b) {
3877
+ if (NODE_CRYPTO) return { key: NODE_CRYPTO.createHash("sha256").update(b).digest("hex"), copy: null };
3878
+ const subtle = globalThis.crypto?.subtle;
3879
+ if (subtle) return { key: Array.from(new Uint8Array(await subtle.digest("SHA-256", b.slice())), (x2) => x2.toString(16).padStart(2, "0")).join(""), copy: null };
3880
+ let h1 = 2166136261, h2 = 2538058380;
3881
+ for (let i2 = 0; i2 < b.length; i2++) {
3882
+ h1 = Math.imul(h1 ^ b[i2], 16777619);
3883
+ h2 = Math.imul(h2 ^ b[i2], 1540483477) ^ h2 >>> 15;
3884
+ }
3885
+ return { key: `f${b.length}:${(h1 >>> 0).toString(16)}${(h2 >>> 0).toString(16)}`, copy: b.slice() };
3886
+ }
3887
+ async function embed(doc, b, o) {
3799
3888
  const space = (n) => {
3800
3889
  if (o.colorSpace != null) {
3801
3890
  const icc = unbrand(o.colorSpace, "icc", doc, "ICC colour space (pdf.iccColorSpace)");
@@ -3926,9 +4015,9 @@ function image(img, o = {}) {
3926
4015
  else draw();
3927
4016
  return page;
3928
4017
  }
3929
- var MAX_INPUT, ORIENT;
4018
+ var MAX_INPUT, ORIENT, SEEN, IDS, nextId, idOf, NODE_CRYPTO, same;
3930
4019
  var init_image = __esm({
3931
- "src/images/image.js"() {
4020
+ "packages/pdf/src/images/image.js"() {
3932
4021
  init_serialize();
3933
4022
  init_deflate();
3934
4023
  init_brand();
@@ -3950,10 +4039,23 @@ var init_image = __esm({
3950
4039
  [0, 1, 1, 0, 0, 0],
3951
4040
  [0, 1, -1, 0, 1, 0]
3952
4041
  ];
4042
+ SEEN = /** @type {WeakMap<any, Map<string, { img: Promise<any>, copy: Uint8Array | null }>>} */
4043
+ /* @__PURE__ */ new WeakMap();
4044
+ IDS = /** @type {WeakMap<object, number>} */
4045
+ /* @__PURE__ */ new WeakMap();
4046
+ nextId = 0;
4047
+ idOf = (v) => v !== null && typeof v === "object" ? IDS.get(v) ?? (IDS.set(v, ++nextId), nextId) : `?${String(v)}`;
4048
+ NODE_CRYPTO = /** @type {any} */
4049
+ globalThis.process?.getBuiltinModule?.("node:crypto");
4050
+ same = (a, b) => {
4051
+ if (a.length !== b.length) return false;
4052
+ for (let i2 = 0; i2 < a.length; i2++) if (a[i2] !== b[i2]) return false;
4053
+ return true;
4054
+ };
3953
4055
  }
3954
4056
  });
3955
4057
 
3956
- // src/annotations/annot.js
4058
+ // packages/pdf/src/annotations/annot.js
3957
4059
  function dateOf(d, who) {
3958
4060
  if (!(d instanceof Date) || isNaN(+d)) throw new TypeError(`${who}: a date is a valid Date`);
3959
4061
  return pdfDate(d);
@@ -4024,7 +4126,7 @@ function addAnnot(page, subtype, box, own2, common, draw) {
4024
4126
  }
4025
4127
  var FLAGS, MAX_CONTENTS, no;
4026
4128
  var init_annot = __esm({
4027
- "src/annotations/annot.js"() {
4129
+ "packages/pdf/src/annotations/annot.js"() {
4028
4130
  init_serialize();
4029
4131
  init_brand();
4030
4132
  init_content();
@@ -4037,7 +4139,7 @@ var init_annot = __esm({
4037
4139
  }
4038
4140
  });
4039
4141
 
4040
- // src/annotations/markup.js
4142
+ // packages/pdf/src/annotations/markup.js
4041
4143
  function boxOf(o, who) {
4042
4144
  const b = [o?.x ?? 0, o?.y ?? 0, o?.width, o?.height];
4043
4145
  for (const v of b) if (typeof v !== "number") throw new TypeError(`${who}: x, y, width and height are numbers`);
@@ -4240,7 +4342,7 @@ function stamp(o) {
4240
4342
  }
4241
4343
  var NOTE_ICONS, STAMPS, LINE_ENDINGS, MAX_POINTS, MAX_STROKES, dflt2, highlight, underline, strikeOut, squiggly, asciiHex;
4242
4344
  var init_markup = __esm({
4243
- "src/annotations/markup.js"() {
4345
+ "packages/pdf/src/annotations/markup.js"() {
4244
4346
  init_serialize();
4245
4347
  init_brand();
4246
4348
  init_color();
@@ -4264,7 +4366,7 @@ var init_markup = __esm({
4264
4366
  }
4265
4367
  });
4266
4368
 
4267
- // src/core/filename.js
4369
+ // packages/pdf/src/core/filename.js
4268
4370
  function checkFileName(raw, o, who, again = false) {
4269
4371
  if (typeof raw !== "string") throw new TypeError(`${who}: name (the file name) is a string`);
4270
4372
  if (raw.length > MAX_IN) throw new RangeError(`${who}: a file name is at most ${MAX_BYTES} bytes (UTF-8)`);
@@ -4323,7 +4425,7 @@ function check(name, allow, risky, o, who) {
4323
4425
  }
4324
4426
  var MAX_IN, MAX_BYTES, BAD, SPACES2, SLASHES, DOTS, DEVICE2, PASSIVE, MIMES, UTF83;
4325
4427
  var init_filename = __esm({
4326
- "src/core/filename.js"() {
4428
+ "packages/pdf/src/core/filename.js"() {
4327
4429
  MAX_IN = 4096;
4328
4430
  MAX_BYTES = 255;
4329
4431
  BAD = /[\p{Cc}\p{Cf}\p{Zl}\p{Zp}\p{Cs}<>:"|?*]/u;
@@ -4361,7 +4463,7 @@ var init_filename = __esm({
4361
4463
  }
4362
4464
  });
4363
4465
 
4364
- // src/core/md5.js
4466
+ // packages/pdf/src/core/md5.js
4365
4467
  function md5(bytes) {
4366
4468
  const n = bytes.length, total = (n + 8 >>> 6) + 1 << 6;
4367
4469
  const tail = new Uint8Array(total - (n & ~63));
@@ -4412,7 +4514,7 @@ function md5(bytes) {
4412
4514
  }
4413
4515
  var S, K;
4414
4516
  var init_md5 = __esm({
4415
- "src/core/md5.js"() {
4517
+ "packages/pdf/src/core/md5.js"() {
4416
4518
  S = [
4417
4519
  7,
4418
4520
  12,
@@ -4483,7 +4585,7 @@ var init_md5 = __esm({
4483
4585
  }
4484
4586
  });
4485
4587
 
4486
- // src/annotations/attach.js
4588
+ // packages/pdf/src/annotations/attach.js
4487
4589
  function attachFile(bytes, o = (
4488
4590
  /** @type {any} */
4489
4591
  {}
@@ -4519,7 +4621,7 @@ function attachFile(bytes, o = (
4519
4621
  }
4520
4622
  var FILE_ICONS, MAX_FILE;
4521
4623
  var init_attach = __esm({
4522
- "src/annotations/attach.js"() {
4624
+ "packages/pdf/src/annotations/attach.js"() {
4523
4625
  init_serialize();
4524
4626
  init_filename();
4525
4627
  init_md5();
@@ -4529,7 +4631,7 @@ var init_attach = __esm({
4529
4631
  }
4530
4632
  });
4531
4633
 
4532
- // src/standards/layers.js
4634
+ // packages/pdf/src/standards/layers.js
4533
4635
  function createLayers(doc) {
4534
4636
  const all = [];
4535
4637
  doc.onFinish(async () => {
@@ -4591,7 +4693,7 @@ function pageLayer(layer, fn) {
4591
4693
  }
4592
4694
  var MAX_LAYERS, MAX_NEST, depth;
4593
4695
  var init_layers = __esm({
4594
- "src/standards/layers.js"() {
4696
+ "packages/pdf/src/standards/layers.js"() {
4595
4697
  init_serialize();
4596
4698
  init_brand();
4597
4699
  init_level();
@@ -4602,7 +4704,7 @@ var init_layers = __esm({
4602
4704
  }
4603
4705
  });
4604
4706
 
4605
- // src/tags/tags.js
4707
+ // packages/pdf/src/tags/tags.js
4606
4708
  function createTagger(doc, opt) {
4607
4709
  const rootRef = doc.reserve(), docRef = doc.reserve();
4608
4710
  const docKids = [];
@@ -4773,12 +4875,12 @@ function checkOptions(type, o) {
4773
4875
  k
4774
4876
  );
4775
4877
  if (o.lang != null && (typeof o.lang !== "string" || !/^[A-Za-z]{1,8}(-[A-Za-z0-9]{1,8}){0,8}$/.test(o.lang))) throw new TypeError(`page.tag: lang is a language tag like "en" or "fr-CA", not ${JSON.stringify(o.lang)}`);
4776
- if (o.id != null) idOf(o.id);
4878
+ if (o.id != null) idOf2(o.id);
4777
4879
  if (o.scope != null && type !== "TH") throw new TypeError("page.tag: scope is for TH");
4778
4880
  if (o.headers != null) {
4779
4881
  if (type !== "TH" && type !== "TD") throw new TypeError("page.tag: headers is for TD and TH");
4780
4882
  if (!Array.isArray(o.headers) || !o.headers.length || o.headers.length > 64) throw new TypeError("page.tag: headers is an array of 1–64 TH ids");
4781
- o.headers.forEach(idOf);
4883
+ o.headers.forEach(idOf2);
4782
4884
  }
4783
4885
  for (
4784
4886
  const k of
@@ -4809,9 +4911,9 @@ function artifact(o, fn) {
4809
4911
  if (typeof fn !== "function") throw new TypeError("page.artifact: fn is a function that draws");
4810
4912
  return this.doc.tags ? this.doc.tags.artifact(this, o, fn) : fn();
4811
4913
  }
4812
- var STRUCTURE_TYPES, ART, PARENTS, NUMBERING, ARTIFACT_TYPES, ARTIFACT_SUBTYPES, MAX_TEXT2, MAX_IDS, str, idOf;
4914
+ var STRUCTURE_TYPES, ART, PARENTS, NUMBERING, ARTIFACT_TYPES, ARTIFACT_SUBTYPES, MAX_TEXT2, MAX_IDS, str, idOf2;
4813
4915
  var init_tags = __esm({
4814
- "src/tags/tags.js"() {
4916
+ "packages/pdf/src/tags/tags.js"() {
4815
4917
  init_serialize();
4816
4918
  init_trees();
4817
4919
  init_brand();
@@ -4894,14 +4996,14 @@ var init_tags = __esm({
4894
4996
  if (typeof v !== "string" || v.length > MAX_TEXT2) throw new TypeError(`page.tag: ${k} is a string of at most ${MAX_TEXT2} characters`);
4895
4997
  return v;
4896
4998
  };
4897
- idOf = (v) => {
4999
+ idOf2 = (v) => {
4898
5000
  if (typeof v !== "string" || !/^[A-Za-z0-9_.:-]{1,64}$/.test(v)) throw new TypeError(`page.tag: an id is 1–64 letters, digits, _ . : or -, not ${JSON.stringify(v)}`);
4899
5001
  return v;
4900
5002
  };
4901
5003
  }
4902
5004
  });
4903
5005
 
4904
- // src/page.js
5006
+ // packages/pdf/src/page.js
4905
5007
  function install(methods) {
4906
5008
  for (const [name, f] of Object.entries(methods)) {
4907
5009
  Page.prototype[name] = function(...a) {
@@ -4912,7 +5014,7 @@ function install(methods) {
4912
5014
  }
4913
5015
  var MAX_ANNOTS, Page;
4914
5016
  var init_page = __esm({
4915
- "src/page.js"() {
5017
+ "packages/pdf/src/page.js"() {
4916
5018
  init_content();
4917
5019
  init_brand();
4918
5020
  init_text();
@@ -4989,10 +5091,10 @@ var init_page = __esm({
4989
5091
  }
4990
5092
  });
4991
5093
 
4992
- // src/fonts/standard-metrics.js
5094
+ // packages/pdf/src/fonts/standard-metrics.js
4993
5095
  var ENCODINGS, METRICS;
4994
5096
  var init_standard_metrics = __esm({
4995
- "src/fonts/standard-metrics.js"() {
5097
+ "packages/pdf/src/fonts/standard-metrics.js"() {
4996
5098
  ENCODINGS = {
4997
5099
  WinAnsi: [
4998
5100
  32,
@@ -10014,7 +10116,7 @@ var init_standard_metrics = __esm({
10014
10116
  }
10015
10117
  });
10016
10118
 
10017
- // src/fonts/standard.js
10119
+ // packages/pdf/src/fonts/standard.js
10018
10120
  function standardFont(doc, key) {
10019
10121
  const m = typeof key === "string" && Object.hasOwn(METRICS, key) ? (
10020
10122
  /** @type {any} */
@@ -10101,27 +10203,27 @@ function standardFont(doc, key) {
10101
10203
  items(text3, o) {
10102
10204
  const draw = !o.measure;
10103
10205
  if (!o.rtl) {
10104
- let a2 = 0, n2 = 0, sp2 = 0, same = true;
10206
+ let a2 = 0, n2 = 0, sp2 = 0, same2 = true;
10105
10207
  for (let i2 = 0; i2 < text3.length; i2++) {
10106
10208
  const c = text3.charCodeAt(i2);
10107
10209
  if (c > 255) {
10108
- same = false;
10210
+ same2 = false;
10109
10211
  break;
10110
10212
  }
10111
10213
  const w = W8[c];
10112
10214
  if (w < 0) {
10113
- same = false;
10215
+ same2 = false;
10114
10216
  break;
10115
10217
  }
10116
10218
  a2 += w;
10117
10219
  n2++;
10118
10220
  if (c === 32 && SP32) sp2++;
10119
10221
  if (!SAME[c]) {
10120
- same = false;
10222
+ same2 = false;
10121
10223
  break;
10122
10224
  }
10123
10225
  }
10124
- if (same) return { body: draw ? text3 : "", a: a2, n: n2, sp: sp2 };
10226
+ if (same2) return { body: draw ? text3 : "", a: a2, n: n2, sp: sp2 };
10125
10227
  }
10126
10228
  let body = "", a = 0, n = 0, sp = 0;
10127
10229
  for (const ch of o.rtl ? [...text3].reverse() : text3) {
@@ -10144,7 +10246,7 @@ function standardFont(doc, key) {
10144
10246
  }
10145
10247
  var STANDARD_NAMES, CODE;
10146
10248
  var init_standard = __esm({
10147
- "src/fonts/standard.js"() {
10249
+ "packages/pdf/src/fonts/standard.js"() {
10148
10250
  init_brand();
10149
10251
  init_standard_metrics();
10150
10252
  init_serialize();
@@ -10155,7 +10257,7 @@ var init_standard = __esm({
10155
10257
  }
10156
10258
  });
10157
10259
 
10158
- // src/fonts/truetype.js
10260
+ // packages/pdf/src/fonts/truetype.js
10159
10261
  function sfntTables(bytes) {
10160
10262
  if (bytes.length < 12) throw new TypeError("Not a font: too short");
10161
10263
  const v = tagOf(bytes, 0);
@@ -10332,14 +10434,14 @@ function cmapLookup(dv) {
10332
10434
  }
10333
10435
  var broken, tagOf, view;
10334
10436
  var init_truetype = __esm({
10335
- "src/fonts/truetype.js"() {
10437
+ "packages/pdf/src/fonts/truetype.js"() {
10336
10438
  broken = (why) => new TypeError(`Broken font: ${why}`);
10337
10439
  tagOf = (b, p) => String.fromCharCode(b[p], b[p + 1], b[p + 2], b[p + 3]);
10338
10440
  view = (b) => new DataView(b.buffer, b.byteOffset, b.byteLength);
10339
10441
  }
10340
10442
  });
10341
10443
 
10342
- // src/fonts/subset.js
10444
+ // packages/pdf/src/fonts/subset.js
10343
10445
  function subsetGlyf(bytes, glyphs2) {
10344
10446
  const t = sfntTables(bytes);
10345
10447
  const head = t.get("head"), loca = t.get("loca"), glyf = t.get("glyf"), maxp = t.get("maxp");
@@ -10435,7 +10537,7 @@ function buildSfnt(tables, version = [0, 1, 0, 0]) {
10435
10537
  }
10436
10538
  var KEEP, tableSum;
10437
10539
  var init_subset = __esm({
10438
- "src/fonts/subset.js"() {
10540
+ "packages/pdf/src/fonts/subset.js"() {
10439
10541
  init_truetype();
10440
10542
  KEEP = ["head", "hhea", "hmtx", "maxp", "cvt ", "fpgm", "prep", "OS/2", "name", "gasp"];
10441
10543
  tableSum = (b, o, len) => {
@@ -10447,7 +10549,7 @@ var init_subset = __esm({
10447
10549
  }
10448
10550
  });
10449
10551
 
10450
- // src/fonts/cff.js
10552
+ // packages/pdf/src/fonts/cff.js
10451
10553
  function readIndex(t, p, what) {
10452
10554
  if (p + 2 > t.length) throw broken2(`the CFF ${what} INDEX lies outside the table`);
10453
10555
  const count = t[p] << 8 | t[p + 1];
@@ -10710,7 +10812,7 @@ function identityCharset(t, n) {
10710
10812
  }
10711
10813
  var broken2, MAX_STACK, MAX_DEPTH2, MAX_CS, BUDGET, FONT_BUDGET, bias;
10712
10814
  var init_cff = __esm({
10713
- "src/fonts/cff.js"() {
10815
+ "packages/pdf/src/fonts/cff.js"() {
10714
10816
  broken2 = (why) => new TypeError(`Broken font: ${why}`);
10715
10817
  MAX_STACK = 48;
10716
10818
  MAX_DEPTH2 = 10;
@@ -10721,7 +10823,7 @@ var init_cff = __esm({
10721
10823
  }
10722
10824
  });
10723
10825
 
10724
- // src/fonts/kern.js
10826
+ // packages/pdf/src/fonts/kern.js
10725
10827
  function kerning(tables, numGlyphs, warn) {
10726
10828
  const gpos = tables.get("GPOS"), kern = tables.get("kern");
10727
10829
  if (gpos) {
@@ -10956,7 +11058,7 @@ function kernTable(t, numGlyphs) {
10956
11058
  }
10957
11059
  var broken3, MAX_SUBTABLES, BUDGET2, vsize;
10958
11060
  var init_kern = __esm({
10959
- "src/fonts/kern.js"() {
11061
+ "packages/pdf/src/fonts/kern.js"() {
10960
11062
  broken3 = (why) => new TypeError(`Broken font: ${why}`);
10961
11063
  MAX_SUBTABLES = 64;
10962
11064
  BUDGET2 = 4e6;
@@ -10968,7 +11070,7 @@ var init_kern = __esm({
10968
11070
  }
10969
11071
  });
10970
11072
 
10971
- // src/fonts/embed.js
11073
+ // packages/pdf/src/fonts/embed.js
10972
11074
  function embedFont(doc, input, opt = {}) {
10973
11075
  const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
10974
11076
  const f = parseFont(bytes);
@@ -11139,7 +11241,7 @@ function embedFont(doc, input, opt = {}) {
11139
11241
  glued = null;
11140
11242
  const glue = !o.rtl && !!t0 && t0 !== " " && j < gl.length && at(j)[1] === " " && at(j)[0] - j === 1 && at(j)[0] < gl.length && MN.test(at(at(j)[0])[1]);
11141
11243
  const t = glue ? `${t0} ` : t0;
11142
- let lead = -1, span = glue;
11244
+ let lead = -1, li = -1, span = glue;
11143
11245
  if (t0) {
11144
11246
  for (let q = i2; q < j; q++) if ((gl[q].g || !strict) && (lead < 0 || gl[q].ax > gl[lead].ax)) lead = q;
11145
11247
  }
@@ -11155,6 +11257,7 @@ function embedFont(doc, input, opt = {}) {
11155
11257
  }
11156
11258
  const [c, exact] = o.measure ? [g, true] : code(g, q !== lead ? "⁠" : o.rtl && RTL3.test(t) ? [...t].reverse().join("") : t);
11157
11259
  if (!exact) span = true;
11260
+ if (q === lead) li = out.length;
11158
11261
  if (q !== lead && Math.abs(ax * k) >= 1) span ||= !o.rtl;
11159
11262
  out.push({ b: two(c), w: W(g), a: ax * k, dx: dx * k, dy: dy * k, sp: q === lead && t === " ", c: q !== lead && Math.abs(ax * k) < 1 || void 0 });
11160
11263
  }
@@ -11166,6 +11269,7 @@ function embedFont(doc, input, opt = {}) {
11166
11269
  flow[0].n = flow.length;
11167
11270
  if (glue) glued = flow[0];
11168
11271
  }
11272
+ if (li >= 0 && !out[li].c) out[li].b = two(code(gl[lead].g, "⁠")[0]);
11169
11273
  } else if (glue) glued = /** @type {any} */
11170
11274
  {};
11171
11275
  i2 = j;
@@ -11349,7 +11453,7 @@ function tag2(bytes) {
11349
11453
  }
11350
11454
  var OTF_KEEP;
11351
11455
  var init_embed = __esm({
11352
- "src/fonts/embed.js"() {
11456
+ "packages/pdf/src/fonts/embed.js"() {
11353
11457
  init_brand();
11354
11458
  init_truetype();
11355
11459
  init_subset();
@@ -11361,7 +11465,7 @@ var init_embed = __esm({
11361
11465
  }
11362
11466
  });
11363
11467
 
11364
- // src/nav/outline.js
11468
+ // packages/pdf/src/nav/outline.js
11365
11469
  function colorOf(c) {
11366
11470
  if (c == null) return "";
11367
11471
  const d = device(c);
@@ -11442,7 +11546,7 @@ function createOutline(doc) {
11442
11546
  }
11443
11547
  var MAX_ENTRIES, MAX_LEVEL, MAX_TITLE;
11444
11548
  var init_outline = __esm({
11445
- "src/nav/outline.js"() {
11549
+ "packages/pdf/src/nav/outline.js"() {
11446
11550
  init_serialize();
11447
11551
  init_color();
11448
11552
  init_dest();
@@ -11452,7 +11556,7 @@ var init_outline = __esm({
11452
11556
  }
11453
11557
  });
11454
11558
 
11455
- // src/nav/labels.js
11559
+ // packages/pdf/src/nav/labels.js
11456
11560
  function createPageLabels(doc) {
11457
11561
  let ranges = null;
11458
11562
  doc.onFinish(async () => {
@@ -11483,7 +11587,7 @@ function createPageLabels(doc) {
11483
11587
  }
11484
11588
  var STYLES, MAX_RANGES, MAX_PREFIX;
11485
11589
  var init_labels = __esm({
11486
- "src/nav/labels.js"() {
11590
+ "packages/pdf/src/nav/labels.js"() {
11487
11591
  init_serialize();
11488
11592
  init_trees();
11489
11593
  STYLES = ["D", "r", "R", "a", "A"];
@@ -11492,7 +11596,7 @@ var init_labels = __esm({
11492
11596
  }
11493
11597
  });
11494
11598
 
11495
- // src/nav/viewer.js
11599
+ // packages/pdf/src/nav/viewer.js
11496
11600
  function createViewer(doc) {
11497
11601
  const set2 = /* @__PURE__ */ new Map();
11498
11602
  let registered = false;
@@ -11545,7 +11649,7 @@ function createViewer(doc) {
11545
11649
  }
11546
11650
  var BOOLS, NAMES, PREF;
11547
11651
  var init_viewer = __esm({
11548
- "src/nav/viewer.js"() {
11652
+ "packages/pdf/src/nav/viewer.js"() {
11549
11653
  init_dest();
11550
11654
  BOOLS = { hideToolbar: "HideToolbar", hideMenubar: "HideMenubar", hideWindowUI: "HideWindowUI", fitWindow: "FitWindow", centerWindow: "CenterWindow", displayDocTitle: "DisplayDocTitle", pickTrayByPDFSize: "PickTrayByPDFSize" };
11551
11655
  NAMES = {
@@ -11559,7 +11663,7 @@ var init_viewer = __esm({
11559
11663
  }
11560
11664
  });
11561
11665
 
11562
- // src/standards/pdfa.js
11666
+ // packages/pdf/src/standards/pdfa.js
11563
11667
  function addOutputIntent(doc, opt) {
11564
11668
  const custom = opt && typeof opt === "object" && opt.outputIntent != null ? parseIcc(opt.outputIntent, "pdfa.outputIntent") : null;
11565
11669
  if (custom && custom.n === 1) throw new TypeError("pdfa.outputIntent: an RGB or CMYK profile (not gray)");
@@ -11575,7 +11679,7 @@ function addOutputIntent(doc, opt) {
11575
11679
  }
11576
11680
  var SRGB, unbase64;
11577
11681
  var init_pdfa = __esm({
11578
- "src/standards/pdfa.js"() {
11682
+ "packages/pdf/src/standards/pdfa.js"() {
11579
11683
  init_icc();
11580
11684
  init_serialize();
11581
11685
  SRGB = "AAAC4GxjbXMCEAAAbW50clJHQiBYWVogB+IAAwAUAAkADgAdYWNzcE1TRlQAAAAAc2F3c2N0cmwAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1oYW5kk7I0qQ6wIoqY/Zqvo2eJmwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJZGVzYwAAAPAAAABfY3BydAAAAQwAAAAMd3RwdAAAARgAAAAUclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUclRSQwAAAWgAAAF4Z1RSQwAAAWgAAAF4YlRSQwAAAWgAAAF4ZGVzYwAAAAAAAAAFc1JHQgAAAAAAAAAAAAAAAHRleHQAAAAAQ0MwAFhZWiAAAAAAAADzVAABAAAAARbJWFlaIAAAAAAAAG+gAAA48gAAA49YWVogAAAAAAAAYpYAALeJAAAY2lhZWiAAAAAAAAAkoAAAD4UAALbEY3VydgAAAAAAAAC2AAAAHAA4AFQAcACMAKgAxADhAQABIgFGAW0BlQHBAfACIAJVAosCxAMBAz8DggPGBA4EWQSnBPkFTAWkBf4GXAa+ByEHigf0CGMI1QlJCcMKPwq/C0ILyQxUDOENdA4JDqIPQA/gEIURLRHaEooTPhP2FLIVcRY2Fv0XyhiZGW4aRhsiHAMc5x3QHr0friCkIZ4inCOfJKUlsSbAJ9Uo7SoKKyssUS18Lqov3jEWMlIzlDTZNiQ3czjGOiA7fDzfPkU/sEEhQpZEEEWPRxJIm0ooS7tNUU7uUI9SNVPgVZBXRVkAWr5chF5MYBth72PHZaZniWlxa19tUW9KcUZzSnVRd155cXuIfaZ/yIHwhB6GUIiJisWNCY9RkZ+T85ZLmKubDp14n+eiW6TWp1ap26xnrvexj7Qqtsy5dLwhvtXBjcRMxxDJ2syrz3/SXNU92CTbEt4E4P7j/OcB6gztHPA081D2c/mb/Mr//w==";
@@ -11587,7 +11691,7 @@ var init_pdfa = __esm({
11587
11691
  }
11588
11692
  });
11589
11693
 
11590
- // src/standards/files.js
11694
+ // packages/pdf/src/standards/files.js
11591
11695
  function createFiles(doc, when) {
11592
11696
  const tree = /* @__PURE__ */ new Map();
11593
11697
  const af = [];
@@ -11633,7 +11737,7 @@ function createFiles(doc, when) {
11633
11737
  }
11634
11738
  var RELATIONSHIPS, MAX_FILE2, MAX_FILES, MIME;
11635
11739
  var init_files = __esm({
11636
- "src/standards/files.js"() {
11740
+ "packages/pdf/src/standards/files.js"() {
11637
11741
  init_serialize();
11638
11742
  init_filename();
11639
11743
  init_md5();
@@ -11646,7 +11750,7 @@ var init_files = __esm({
11646
11750
  }
11647
11751
  });
11648
11752
 
11649
- // src/standards/facturx.js
11753
+ // packages/pdf/src/standards/facturx.js
11650
11754
  function readInvoice(b) {
11651
11755
  if (b.length > MAX_XML) throw new RangeError(`pdf.facturX: the XML is ${b.length} bytes, over ${MAX_XML >> 20} MB`);
11652
11756
  let s;
@@ -11727,7 +11831,7 @@ function createFacturX(doc, attach) {
11727
11831
  }
11728
11832
  var MAX_XML, PROFILES, FX_NS;
11729
11833
  var init_facturx = __esm({
11730
- "src/standards/facturx.js"() {
11834
+ "packages/pdf/src/standards/facturx.js"() {
11731
11835
  MAX_XML = 10 << 20;
11732
11836
  PROFILES = /** @type {Record<string, [string, 'Data' | 'Alternative']>} */
11733
11837
  {
@@ -11742,7 +11846,7 @@ var init_facturx = __esm({
11742
11846
  }
11743
11847
  });
11744
11848
 
11745
- // src/standards/boxes.js
11849
+ // packages/pdf/src/standards/boxes.js
11746
11850
  function pageBoxes(page, o) {
11747
11851
  const W = page.width, H = page.height, who = "addPage";
11748
11852
  const got = {};
@@ -11780,7 +11884,7 @@ function pageBoxes(page, o) {
11780
11884
  }
11781
11885
  var BOXES, EPS;
11782
11886
  var init_boxes = __esm({
11783
- "src/standards/boxes.js"() {
11887
+ "packages/pdf/src/standards/boxes.js"() {
11784
11888
  init_serialize();
11785
11889
  init_level();
11786
11890
  BOXES = /** @type {const} */
@@ -11789,7 +11893,7 @@ var init_boxes = __esm({
11789
11893
  }
11790
11894
  });
11791
11895
 
11792
- // src/forms/draw.js
11896
+ // packages/pdf/src/forms/draw.js
11793
11897
  function frame(ap, w, h, f, bg = f.bg) {
11794
11898
  if (bg != null) ap.fill(ap.path().rect(0, 0, w, h), { fill: bg });
11795
11899
  if (f.bw > 0) ap.stroke(ap.path().rect(f.bw / 2, f.bw / 2, w - f.bw, h - f.bw), { stroke: f.bc, width: f.bw });
@@ -11915,7 +12019,7 @@ function buttonFace(ap, w, h, f, bg, t, label, icon) {
11915
12019
  }
11916
12020
  var MARKS, PLAIN2, AUTO_MAX, AUTO_MIN, widthOf2;
11917
12021
  var init_draw2 = __esm({
11918
- "src/forms/draw.js"() {
12022
+ "packages/pdf/src/forms/draw.js"() {
11919
12023
  init_content();
11920
12024
  init_text();
11921
12025
  init_runs();
@@ -11931,7 +12035,7 @@ var init_draw2 = __esm({
11931
12035
  }
11932
12036
  });
11933
12037
 
11934
- // src/forms/form.js
12038
+ // packages/pdf/src/forms/form.js
11935
12039
  function keys(o, allowed, who) {
11936
12040
  if (o == null || typeof o !== "object") throw new TypeError(`${who}: options are an object`);
11937
12041
  for (const k of Object.keys(o)) {
@@ -12315,7 +12419,7 @@ function createForm(doc, opt = {}) {
12315
12419
  }
12316
12420
  var MAX_FIELDS, MAX_BUTTONS, MAX_OPTIONS, MAX_OPTION_CHARS, MAX_WIDGETS, MAX_VALUE, MAX_NAME, MAX_DEPTH3, MAX_TOOLTIP, MAX_COMB, NAMED2, ACTIVE2, FF, BOX, LOOK, TEXT, BAD_CHAR, hexAscii;
12317
12421
  var init_form = __esm({
12318
- "src/forms/form.js"() {
12422
+ "packages/pdf/src/forms/form.js"() {
12319
12423
  init_serialize();
12320
12424
  init_brand();
12321
12425
  init_annot();
@@ -12363,7 +12467,7 @@ var init_form = __esm({
12363
12467
  }
12364
12468
  });
12365
12469
 
12366
- // src/security/crypto.js
12470
+ // packages/pdf/src/security/crypto.js
12367
12471
  function concat(parts) {
12368
12472
  let n = 0;
12369
12473
  for (const p of parts) n += p.length;
@@ -12424,7 +12528,7 @@ function aesCbcDecryptSync(key, iv, data, strip = true) {
12424
12528
  }
12425
12529
  var NODE, WEB, random, HASHES, nodeName, hex, unhex;
12426
12530
  var init_crypto = __esm({
12427
- "src/security/crypto.js"() {
12531
+ "packages/pdf/src/security/crypto.js"() {
12428
12532
  init_md5();
12429
12533
  NODE = /** @type {any} */
12430
12534
  globalThis.process?.getBuiltinModule?.("node:crypto");
@@ -12446,7 +12550,7 @@ var init_crypto = __esm({
12446
12550
  }
12447
12551
  });
12448
12552
 
12449
- // src/security/encrypt.js
12553
+ // packages/pdf/src/security/encrypt.js
12450
12554
  function permBits(p) {
12451
12555
  let P = 4294963392;
12452
12556
  for (const [k, bit] of Object.entries(PERMS)) if (p[k]) P |= 1 << bit - 1;
@@ -12639,7 +12743,7 @@ function encryptor(opt, doc) {
12639
12743
  }
12640
12744
  var MAX_PASSWORD, PERMS, PAD, UTF84;
12641
12745
  var init_encrypt = __esm({
12642
- "src/security/encrypt.js"() {
12746
+ "packages/pdf/src/security/encrypt.js"() {
12643
12747
  init_crypto();
12644
12748
  MAX_PASSWORD = 1024;
12645
12749
  PERMS = { print: 3, modify: 4, copy: 5, annotate: 6, fillForms: 9, accessibility: 10, assemble: 11, printHighQuality: 12 };
@@ -12648,7 +12752,7 @@ var init_encrypt = __esm({
12648
12752
  }
12649
12753
  });
12650
12754
 
12651
- // src/security/der.js
12755
+ // packages/pdf/src/security/der.js
12652
12756
  function oid(s) {
12653
12757
  const a = s.split(".").map(Number), out = [40 * a[0] + a[1]];
12654
12758
  for (const v of a.slice(2)) {
@@ -12694,7 +12798,7 @@ function kids(b, v) {
12694
12798
  }
12695
12799
  var lenBytes, tlv, seq, set, ctx, octets, NULL, int;
12696
12800
  var init_der = __esm({
12697
- "src/security/der.js"() {
12801
+ "packages/pdf/src/security/der.js"() {
12698
12802
  init_crypto();
12699
12803
  lenBytes = (n) => n < 128 ? [n] : n < 256 ? [129, n] : n < 65536 ? [130, n >> 8, n & 255] : n < 16777216 ? [131, n >> 16, n >> 8 & 255, n & 255] : [132, n >>> 24, n >> 16 & 255, n >> 8 & 255, n & 255];
12700
12804
  tlv = (tag3, ...parts) => {
@@ -12718,7 +12822,7 @@ var init_der = __esm({
12718
12822
  }
12719
12823
  });
12720
12824
 
12721
- // src/security/cms.js
12825
+ // packages/pdf/src/security/cms.js
12722
12826
  function readCerts(certs, who) {
12723
12827
  const list = Array.isArray(certs) ? certs : [certs];
12724
12828
  const out = [];
@@ -12821,7 +12925,7 @@ function nodeSigner(o) {
12821
12925
  }
12822
12926
  var NODE2, MAX_CERTS, MAX_CERT, MAX_SIGNATURE, MAX_TOKEN, DIGEST, RSA, ECDSA, SIGNED_DATA, DATA, attr, algId, eq;
12823
12927
  var init_cms = __esm({
12824
- "src/security/cms.js"() {
12928
+ "packages/pdf/src/security/cms.js"() {
12825
12929
  init_der();
12826
12930
  init_crypto();
12827
12931
  NODE2 = /** @type {any} */
@@ -12844,7 +12948,7 @@ var init_cms = __esm({
12844
12948
  }
12845
12949
  });
12846
12950
 
12847
- // src/security/sign.js
12951
+ // packages/pdf/src/security/sign.js
12848
12952
  function createSigning(doc, form, o) {
12849
12953
  let used = false;
12850
12954
  return function sign(field, opt) {
@@ -12896,8 +13000,8 @@ function createSigning(doc, form, o) {
12896
13000
  head: `<< /Type /Sig /Filter /Adobe.PPKLite /SubFilter /${sf} ${BYTERANGE} /Contents `,
12897
13001
  after: ` /M ${pdfDate(date)}${s}${ref} >>`,
12898
13002
  /** @param {Uint8Array} digest */
12899
- async sign(digest) {
12900
- const cms = await raced(Promise.resolve().then(() => signer({ digest, hash: o.hash, subFilter: sf, date, timestamp: timestamp ?? void 0, signal: doc.signal })), doc.signal);
13003
+ async sign(digest2) {
13004
+ const cms = await raced(Promise.resolve().then(() => signer({ digest: digest2, hash: o.hash, subFilter: sf, date, timestamp: timestamp ?? void 0, signal: doc.signal })), doc.signal);
12901
13005
  if (cms instanceof Uint8Array && cms.length > size) throw new RangeError(`${who}: the signer's CMS is ${cms.length} bytes, more than the ${size} reserved: pass a larger reserve (at most ${MAX_RESERVE})`);
12902
13006
  checkContentInfo(cms, size, `${who}: the signer's CMS`);
12903
13007
  if (timestamp && !has(cms, TST_OID)) throw new Error(`${who}: a timestamp was asked for but the signer's CMS has no id-aa-timeStampToken (nodeSigner and cmsSigner add it; a custom signer must call r.timestamp)`);
@@ -12909,7 +13013,7 @@ function createSigning(doc, form, o) {
12909
13013
  }
12910
13014
  var DEFAULT_RESERVE, MAX_RESERVE, TST_OID, has, KEYS;
12911
13015
  var init_sign = __esm({
12912
- "src/security/sign.js"() {
13016
+ "packages/pdf/src/security/sign.js"() {
12913
13017
  init_brand();
12914
13018
  init_serialize();
12915
13019
  init_sink();
@@ -12929,7 +13033,7 @@ var init_sign = __esm({
12929
13033
  }
12930
13034
  });
12931
13035
 
12932
- // src/reader/budget.js
13036
+ // packages/pdf/src/reader/budget.js
12933
13037
  function createBudget(o = {}) {
12934
13038
  const pos = (v, d, k) => {
12935
13039
  if (v == null) return d;
@@ -12990,7 +13094,7 @@ function createBudget(o = {}) {
12990
13094
  }
12991
13095
  var PdfReadError, fail, DEFAULTS;
12992
13096
  var init_budget = __esm({
12993
- "src/reader/budget.js"() {
13097
+ "packages/pdf/src/reader/budget.js"() {
12994
13098
  PdfReadError = class extends Error {
12995
13099
  /** @param {Code} code @param {string} message */
12996
13100
  constructor(code, message) {
@@ -13006,7 +13110,7 @@ var init_budget = __esm({
13006
13110
  }
13007
13111
  });
13008
13112
 
13009
- // src/reader/lexer.js
13113
+ // packages/pdf/src/reader/lexer.js
13010
13114
  function latin12(b) {
13011
13115
  if (b.length < 64) {
13012
13116
  let s2 = "";
@@ -13134,7 +13238,7 @@ function lastIndexOf(buf, needle, to, span = to) {
13134
13238
  }
13135
13239
  var MAX_DEPTH4, MAX_ITEMS, Ref, PdfString, PdfStream, Op, CLASS, T, HEX, Lexer, parseValueEnd;
13136
13240
  var init_lexer = __esm({
13137
- "src/reader/lexer.js"() {
13241
+ "packages/pdf/src/reader/lexer.js"() {
13138
13242
  init_budget();
13139
13243
  MAX_DEPTH4 = 256;
13140
13244
  MAX_ITEMS = 4e6;
@@ -13345,7 +13449,7 @@ var init_lexer = __esm({
13345
13449
  }
13346
13450
  });
13347
13451
 
13348
- // src/reader/filters.js
13452
+ // packages/pdf/src/reader/filters.js
13349
13453
  function sinkOf(budget) {
13350
13454
  const parts = [];
13351
13455
  let n = 0;
@@ -13601,7 +13705,7 @@ function decode(data, filters, parms, budget, resolve2) {
13601
13705
  }
13602
13706
  var PASS, CHUNK2, MAX_FILTERS, num2, clamp;
13603
13707
  var init_filters = __esm({
13604
- "src/reader/filters.js"() {
13708
+ "packages/pdf/src/reader/filters.js"() {
13605
13709
  init_browser();
13606
13710
  init_budget();
13607
13711
  PASS = /* @__PURE__ */ new Set(["DCTDecode", "DCT", "JPXDecode", "JBIG2Decode", "CCITTFaxDecode", "CCF"]);
@@ -13612,7 +13716,7 @@ var init_filters = __esm({
13612
13716
  }
13613
13717
  });
13614
13718
 
13615
- // src/reader/crypt.js
13719
+ // packages/pdf/src/reader/crypt.js
13616
13720
  function pad322(pw) {
13617
13721
  const b = [...pw].every((c) => (
13618
13722
  /** @type {number} */
@@ -13747,7 +13851,7 @@ async function openSecurity(E, id0, password, resolve2) {
13747
13851
  }
13748
13852
  var PERMS2, bytesOf, le32, eq2;
13749
13853
  var init_crypt = __esm({
13750
- "src/reader/crypt.js"() {
13854
+ "packages/pdf/src/reader/crypt.js"() {
13751
13855
  init_encrypt();
13752
13856
  init_crypto();
13753
13857
  init_lexer();
@@ -13763,7 +13867,7 @@ var init_crypt = __esm({
13763
13867
  }
13764
13868
  });
13765
13869
 
13766
- // src/reader/source.js
13870
+ // packages/pdf/src/reader/source.js
13767
13871
  async function openSource(bytes, budget, o = {}) {
13768
13872
  const size = bytes.length;
13769
13873
  let xref = /* @__PURE__ */ new Map();
@@ -14476,7 +14580,7 @@ function inRegion(regions, budget) {
14476
14580
  }
14477
14581
  var MAX_SECTIONS, MAX_RESOLVE, MAX_OBJSTM_N, OBJSTM_CACHE, OBJSTM_BYTES, CACHE_N, P48, P16, pack, unpack;
14478
14582
  var init_source = __esm({
14479
- "src/reader/source.js"() {
14583
+ "packages/pdf/src/reader/source.js"() {
14480
14584
  init_lexer();
14481
14585
  init_filters();
14482
14586
  init_budget();
@@ -14494,7 +14598,7 @@ var init_source = __esm({
14494
14598
  }
14495
14599
  });
14496
14600
 
14497
- // src/reader/text.js
14601
+ // packages/pdf/src/reader/text.js
14498
14602
  function decodeText(v) {
14499
14603
  if (!(v instanceof PdfString)) return typeof v === "string" ? v : v == null ? "" : String(v);
14500
14604
  const b = v.bytes;
@@ -14698,7 +14802,7 @@ function fontOf(src, font, held = (
14698
14802
  }
14699
14803
  for (let k = 0; k < L && i2 + k < b.length; k++) c = c * 256 + b[i2 + k];
14700
14804
  i2 += L;
14701
- emit(toU?.get(c) ?? fromFont(c) ?? NONE, W.get(c) ?? dw, false);
14805
+ emit(toU?.get(c) ?? fromFont(c) ?? (toU ? "" : NONE), W.get(c) ?? dw, false);
14702
14806
  }
14703
14807
  }
14704
14808
  };
@@ -14721,7 +14825,7 @@ function fontOf(src, font, held = (
14721
14825
  for (const x0 of d.slice(0, 4096)) {
14722
14826
  const x2 = R(x0);
14723
14827
  if (typeof x2 === "number") c = x2;
14724
- else if (typeof x2 === "string") diff.set(c++ & 255, x2 === ".notdef" ? "" : glyphText(x2) || NONE);
14828
+ else if (typeof x2 === "string") diff.set(c++ & 255, x2 === ".notdef" ? "" : glyphText(x2) || (toU ? "" : NONE));
14725
14829
  }
14726
14830
  }
14727
14831
  const symbolic = base3 === "Symbol" || base3 === "ZapfDingbats";
@@ -14741,7 +14845,7 @@ function fontOf(src, font, held = (
14741
14845
  if (t === void 0) t = diff.get(c);
14742
14846
  if (t === void 0) {
14743
14847
  const u = symMap ? symMap.get(c) : baseFn(c);
14744
- t = u === void 0 ? NONE : String.fromCodePoint(u);
14848
+ t = u === void 0 ? toU ? "" : NONE : String.fromCodePoint(u);
14745
14849
  }
14746
14850
  let w = Array.isArray(widths) && typeof fc === "number" && c >= fc && c - fc < widths.length ? R(widths[c - fc]) : std ? std.widths[c] : 500;
14747
14851
  if (typeof w !== "number" || !Number.isFinite(w)) w = 0;
@@ -14931,6 +15035,7 @@ function pageText(src, pageDict, resources, raw = false) {
14931
15035
  return;
14932
15036
  }
14933
15037
  const n = PT.length - 1;
15038
+ if (text3.includes("⁠")) text3 = text3.replaceAll("⁠", "");
14934
15039
  if (text3) add2(x2, y, end, size, text3, dir);
14935
15040
  else if (n >= 0 && PAE[n] < dir[1] && PD[n] === dir[3] && Math.abs(PC[n] - dir[2]) < 0.01) {
14936
15041
  PE[n] = end;
@@ -15125,7 +15230,7 @@ function pageText(src, pageDict, resources, raw = false) {
15125
15230
  }
15126
15231
  var MAX_FORMS, MAX_CMAP, MAX_MARKS, MAX_ACTUAL, MAX_TEXT_CHARS, MAX_DST, MAX_CMAP_CHARS, MAX_HELD, MAX_W, MAX_DO, TEXT_TIMEOUT_MS, DOC, WIN, MAC_HIGH, BASE, STD_HIGH, NAMES2, ACCENT, own, STD_ALIAS, NONE, stops, MAX_CMAP_FONTS, mul2, ID, matrixOf, RTL2, STRONG_L, NUM, rev2;
15127
15232
  var init_text2 = __esm({
15128
- "src/reader/text.js"() {
15233
+ "packages/pdf/src/reader/text.js"() {
15129
15234
  init_lexer();
15130
15235
  init_standard_metrics();
15131
15236
  init_budget();
@@ -15359,7 +15464,7 @@ var init_text2 = __esm({
15359
15464
  }
15360
15465
  });
15361
15466
 
15362
- // src/reader/policy.js
15467
+ // packages/pdf/src/reader/policy.js
15363
15468
  function attributesOnly(a, R) {
15364
15469
  const one = (x2) => {
15365
15470
  const d = R(x2);
@@ -15471,7 +15576,7 @@ function utf16be(s) {
15471
15576
  }
15472
15577
  var KEEP_ACTIONS, NAMED_ACTIONS, ACTION_TYPES, KEEP_ANNOTS, ACTION_KEYS, DANGEROUS_KEYS, NAME_KEYS, isAction, isAnnot, STRUCT_TYPES, isFilespec, REWRITTEN_NAME, sameObject, refuseFile;
15473
15578
  var init_policy = __esm({
15474
- "src/reader/policy.js"() {
15579
+ "packages/pdf/src/reader/policy.js"() {
15475
15580
  init_lexer();
15476
15581
  init_links();
15477
15582
  init_filename();
@@ -15555,7 +15660,7 @@ var init_policy = __esm({
15555
15660
  }
15556
15661
  });
15557
15662
 
15558
- // src/reader/copy.js
15663
+ // packages/pdf/src/reader/copy.js
15559
15664
  function nameText(s) {
15560
15665
  let o = "/";
15561
15666
  for (let i2 = 0; i2 < s.length; i2++) {
@@ -15861,7 +15966,7 @@ function createCopier(t) {
15861
15966
  if (t.dedupe && early === void 0 && !open && shareable(v)) {
15862
15967
  key = `${dict.length} ${fnv(dict)} ${raw ? `${raw.length} ${fnv(raw)}` : ""}`;
15863
15968
  const hit = seen.get(key);
15864
- if (hit && hit.dict === dict && same(hit.raw(), raw)) {
15969
+ if (hit && hit.dict === dict && same2(hit.raw(), raw)) {
15865
15970
  m.set(f.n, hit.n);
15866
15971
  continue;
15867
15972
  }
@@ -15879,7 +15984,7 @@ function createCopier(t) {
15879
15984
  m.set(f.n, n);
15880
15985
  }
15881
15986
  }
15882
- const same = (a, b) => {
15987
+ const same2 = (a, b) => {
15883
15988
  if (a === b) return true;
15884
15989
  if (!a || !b || a.length !== b.length) return false;
15885
15990
  for (let i2 = 0; i2 < a.length; i2++) if (a[i2] !== b[i2]) return false;
@@ -15969,7 +16074,7 @@ function createCopier(t) {
15969
16074
  }
15970
16075
  var SHARE, GRAY, HEXD, Raw, Foreign, OPEN_A, CLOSE_A, OPEN_D, CLOSE_D;
15971
16076
  var init_copy = __esm({
15972
- "src/reader/copy.js"() {
16077
+ "packages/pdf/src/reader/copy.js"() {
15973
16078
  init_lexer();
15974
16079
  init_pdf();
15975
16080
  init_policy();
@@ -15998,7 +16103,7 @@ var init_copy = __esm({
15998
16103
  }
15999
16104
  });
16000
16105
 
16001
- // src/reader/fill.js
16106
+ // packages/pdf/src/reader/fill.js
16002
16107
  function utf162(s) {
16003
16108
  const b = new Uint8Array(2 + s.length * 2);
16004
16109
  b[0] = 254;
@@ -16166,7 +16271,7 @@ async function fillReplacements(self, o) {
16166
16271
  }
16167
16272
  var ALIAS;
16168
16273
  var init_fill = __esm({
16169
- "src/reader/fill.js"() {
16274
+ "packages/pdf/src/reader/fill.js"() {
16170
16275
  init_index();
16171
16276
  init_standard();
16172
16277
  init_lexer();
@@ -16178,7 +16283,7 @@ var init_fill = __esm({
16178
16283
  }
16179
16284
  });
16180
16285
 
16181
- // src/reader/save.js
16286
+ // packages/pdf/src/reader/save.js
16182
16287
  var save_exports = {};
16183
16288
  __export(save_exports, {
16184
16289
  MAX_OPEN: () => MAX_OPEN,
@@ -16605,7 +16710,7 @@ function sameBytes(a, b) {
16605
16710
  }
16606
16711
  var MAX_OPEN, KEYS2, OWN;
16607
16712
  var init_save = __esm({
16608
- "src/reader/save.js"() {
16713
+ "packages/pdf/src/reader/save.js"() {
16609
16714
  init_index();
16610
16715
  init_page();
16611
16716
  init_annot();
@@ -16623,7 +16728,7 @@ var init_save = __esm({
16623
16728
  }
16624
16729
  });
16625
16730
 
16626
- // src/reader/active.js
16731
+ // packages/pdf/src/reader/active.js
16627
16732
  function findActive(self, each) {
16628
16733
  const found = /* @__PURE__ */ new Map();
16629
16734
  const audit = createCopier({
@@ -16649,12 +16754,12 @@ function findActive(self, each) {
16649
16754
  return [...found].map(([what, count]) => ({ what, count }));
16650
16755
  }
16651
16756
  var init_active = __esm({
16652
- "src/reader/active.js"() {
16757
+ "packages/pdf/src/reader/active.js"() {
16653
16758
  init_copy();
16654
16759
  }
16655
16760
  });
16656
16761
 
16657
- // src/reader/incremental.js
16762
+ // packages/pdf/src/reader/incremental.js
16658
16763
  var incremental_exports = {};
16659
16764
  __export(incremental_exports, {
16660
16765
  MAX_WIDGET_SHARE: () => MAX_WIDGET_SHARE,
@@ -16923,8 +17028,8 @@ ${xrefAt}
16923
17028
  const H = hasher(sig.hash);
16924
17029
  H.update(bytes.subarray(0, a));
16925
17030
  H.update(bytes.subarray(b));
16926
- const digest = await H.digest();
16927
- const cms = await Promise.resolve().then(() => sig.signer({ digest, hash: sig.hash, subFilter: sig.subFilter, date: sig.date, timestamp: sig.timestamp ?? void 0 }));
17031
+ const digest2 = await H.digest();
17032
+ const cms = await Promise.resolve().then(() => sig.signer({ digest: digest2, hash: sig.hash, subFilter: sig.subFilter, date: sig.date, timestamp: sig.timestamp ?? void 0 }));
16928
17033
  checkContentInfo(cms, size, `${who}: the signer's CMS`);
16929
17034
  if (sig.timestamp && !has(cms, TST_OID)) throw new Error(`${who}: a timestamp was asked for but the signer's CMS has no id-aa-timeStampToken`);
16930
17035
  bytes.set(latin1(hex(cms).padEnd(2 * size, "0")), a + 1);
@@ -17158,7 +17263,7 @@ function checkSigned(self, sig, o, objects, who) {
17158
17263
  }
17159
17264
  var SIGN_KEYS, MAX_WIDGET_SHARE, TRANSFORMS, isSigDict;
17160
17265
  var init_incremental = __esm({
17161
- "src/reader/incremental.js"() {
17266
+ "packages/pdf/src/reader/incremental.js"() {
17162
17267
  init_lexer();
17163
17268
  init_copy();
17164
17269
  init_active();
@@ -17178,7 +17283,7 @@ var init_incremental = __esm({
17178
17283
  }
17179
17284
  });
17180
17285
 
17181
- // src/reader/pdf.js
17286
+ // packages/pdf/src/reader/pdf.js
17182
17287
  function internal(v, who) {
17183
17288
  const d = v !== null && typeof v === "object" ? inside2.get(v) : void 0;
17184
17289
  if (!d) throw new TypeError(`${who}: not a document from loadPdf`);
@@ -17885,7 +17990,7 @@ function checkValue(f, v) {
17885
17990
  }
17886
17991
  var MAX_PAGES, MAX_OUTLINE, MAX_FIELDS2, MAX_NAMES2, inside2, ACTIVE_FT;
17887
17992
  var init_pdf = __esm({
17888
- "src/reader/pdf.js"() {
17993
+ "packages/pdf/src/reader/pdf.js"() {
17889
17994
  init_budget();
17890
17995
  init_source();
17891
17996
  init_lexer();
@@ -17900,7 +18005,7 @@ var init_pdf = __esm({
17900
18005
  }
17901
18006
  });
17902
18007
 
17903
- // src/index.js
18008
+ // packages/pdf/src/index.js
17904
18009
  async function mergePdfs(docs, o) {
17905
18010
  if (!Array.isArray(docs) || !docs.length) throw new TypeError("mergePdfs: an array of documents from loadPdf");
17906
18011
  return docs[0].fork().merge(docs.slice(1)).save(o);
@@ -18090,7 +18195,7 @@ async function toBytes2(build, options2) {
18090
18195
  return all;
18091
18196
  }
18092
18197
  var init_index = __esm({
18093
- "src/index.js"() {
18198
+ "packages/pdf/src/index.js"() {
18094
18199
  init_sink();
18095
18200
  init_document();
18096
18201
  init_brand();