@taloswork/ose-shared 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/package.json +3 -3
  2. package/skills/document/SKILL.md +135 -219
  3. package/skills/document/art-directions/base.css +27 -2
  4. package/skills/document/art-directions/cinematic-depth.css +3 -1
  5. package/skills/document/art-directions/collage-paper.css +5 -1
  6. package/skills/document/art-directions/editorial-cut.css +5 -1
  7. package/skills/document/art-directions/geometric-pop.css +6 -0
  8. package/skills/document/art-directions/gradient-mesh.css +5 -1
  9. package/skills/document/art-directions/illustrated-doodle.css +5 -0
  10. package/skills/document/art-directions/luxury-ornament.css +4 -1
  11. package/skills/document/art-directions/maximalist-blocks.css +6 -0
  12. package/skills/document/art-directions/technical-grid.css +4 -0
  13. package/skills/document/assets/fonts/fonts.json +2 -2
  14. package/skills/document/assets/pdf-fonts/NotoSansSC-PDF-Bold.ttf +0 -0
  15. package/skills/document/assets/pdf-fonts/NotoSansSC-PDF-Regular.ttf +0 -0
  16. package/skills/document/assets/pdf-fonts/OFL.txt +93 -0
  17. package/skills/document/assets/pdf-fonts/README.md +35 -0
  18. package/skills/document/assets/tessdata/LICENSE-Apache-2.0.txt +202 -0
  19. package/skills/document/assets/tessdata/README.md +21 -0
  20. package/skills/document/assets/tessdata/chi_sim.traineddata.gz +0 -0
  21. package/skills/document/assets/tessdata/eng.traineddata.gz +0 -0
  22. package/skills/document/bin/deck-build.cjs +12563 -83
  23. package/skills/document/bin/deck-chart.cjs +771 -0
  24. package/skills/document/bin/deck-plan.cjs +12414 -0
  25. package/skills/document/bin/deck-qa.cjs +1075 -266
  26. package/skills/document/bin/deck-scenario.cjs +1363 -0
  27. package/skills/document/bin/deck-styles.cjs +1604 -0
  28. package/skills/document/bin/doc-convert.cjs +308 -292
  29. package/skills/document/bin/doc-fill.cjs +73264 -192
  30. package/skills/document/bin/doc-gen.cjs +2491 -312
  31. package/skills/document/bin/doc-run.cjs +162 -24
  32. package/skills/document/bin/doc-scan.cjs +13 -0
  33. package/skills/document/bin/doc-text.cjs +13 -0
  34. package/skills/document/bin/doc-validate.cjs +838 -68
  35. package/skills/document/bin/doc-xml.cjs +9 -5
  36. package/skills/document/bin/docx-annotate.cjs +95 -19
  37. package/skills/document/bin/docx-defaults.cjs +9907 -0
  38. package/skills/document/bin/fontkit.cjs +1 -0
  39. package/skills/document/bin/html2pptx.cjs +36622 -31394
  40. package/skills/document/bin/ocr-worker.cjs +1 -0
  41. package/skills/document/bin/ocr.cjs +131 -40
  42. package/skills/document/bin/pdf-form.cjs +682 -177
  43. package/skills/document/bin/pdf-images.cjs +13 -0
  44. package/skills/document/bin/pdf-ops.cjs +642 -199
  45. package/skills/document/bin/pdf-render.cjs +19 -3
  46. package/skills/document/bin/pdf-tables.cjs +13 -0
  47. package/skills/document/bin/pptx-clone.cjs +3 -3
  48. package/skills/document/bin/pptx-notes.cjs +10038 -0
  49. package/skills/document/bin/pptx-slide.cjs +3 -3
  50. package/skills/document/bin/pptx-tokenize.cjs +19 -4
  51. package/skills/document/bin/template-skin.cjs +10910 -0
  52. package/skills/document/bin/xlsx-query.cjs +192 -61
  53. package/skills/document/bin-reference.md +61 -33
  54. package/skills/document/catalog.json +33 -32
  55. package/skills/document/content-pipeline.md +179 -257
  56. package/skills/document/deck-design.md +378 -638
  57. package/skills/document/generated-visuals.md +99 -0
  58. package/skills/document/layouts/MAINTAINERS.md +33 -0
  59. package/skills/document/layouts/README.md +49 -36
  60. package/skills/document/layouts/big-stat.tpl +1 -1
  61. package/skills/document/layouts/capacity.json +1 -0
  62. package/skills/document/layouts/cards-3.tpl +1 -1
  63. package/skills/document/layouts/chart-full.tpl +1 -1
  64. package/skills/document/layouts/chart-kpi.tpl +1 -1
  65. package/skills/document/layouts/comparison.tpl +1 -1
  66. package/skills/document/layouts/data-table.tpl +1 -1
  67. package/skills/document/layouts/funnel.tpl +1 -1
  68. package/skills/document/layouts/gantt.tpl +1 -1
  69. package/skills/document/layouts/hub-flow.tpl +4 -0
  70. package/skills/document/layouts/icon-row.tpl +1 -1
  71. package/skills/document/layouts/image-grid.tpl +1 -1
  72. package/skills/document/layouts/matrix-2x2.tpl +1 -1
  73. package/skills/document/layouts/mock-qa.tpl +4 -0
  74. package/skills/document/layouts/profiles.json +2 -2
  75. package/skills/document/layouts/pyramid.tpl +1 -1
  76. package/skills/document/layouts/radar.tpl +1 -1
  77. package/skills/document/layouts/ring-progress.tpl +1 -1
  78. package/skills/document/layouts/slots.json +1 -1
  79. package/skills/document/layouts/steps-vertical.tpl +1 -1
  80. package/skills/document/layouts/steps.tpl +1 -1
  81. package/skills/document/layouts/three-kpi.tpl +1 -1
  82. package/skills/document/layouts/timeline.tpl +1 -1
  83. package/skills/document/layouts/toc-panel.tpl +2 -2
  84. package/skills/document/layouts/two-kpi.tpl +2 -2
  85. package/skills/document/layouts/versus.tpl +1 -1
  86. package/skills/document/motion/README.md +3 -2
  87. package/skills/document/office.md +3 -3
  88. package/skills/document/packs/README.md +1 -1
  89. package/skills/document/packs/board-brief/backdrop.html +2 -0
  90. package/skills/document/packs/board-brief/pack.css +2 -1
  91. package/skills/document/packs/mckinsey-photo/backdrop.html +2 -0
  92. package/skills/document/packs/mckinsey-photo/pack.css +2 -1
  93. package/skills/document/packs/press-room/backdrop.html +2 -0
  94. package/skills/document/packs/press-room/pack.css +2 -1
  95. package/skills/document/packs/prismatic-3d/backdrop.html +2 -0
  96. package/skills/document/packs/prismatic-3d/pack.css +4 -1
  97. package/skills/document/pdf.md +60 -43
  98. package/skills/document/rewrite.md +257 -309
  99. package/skills/document/scenarios.json +1307 -0
  100. package/skills/document/scenarios.schema.json +104 -0
  101. package/skills/document/styles/README.md +15 -25
  102. package/skills/document/styles/_backdrops/rimlight.html +3 -2
  103. package/skills/document/styles/_contract-defaults.css +31 -2
  104. package/skills/document/styles/_samples/_groups/biz-premium.webp +0 -0
  105. package/skills/document/styles/_samples/mckinsey.webp +0 -0
  106. package/skills/document/styles/anthropic/skin.css +6 -3
  107. package/skills/document/styles/apple/skin.css +4 -3
  108. package/skills/document/styles/bistro-warm/backdrop.html +2 -0
  109. package/skills/document/styles/bistro-warm/skin.css +4 -1
  110. package/skills/document/styles/black-gold/skin.css +6 -5
  111. package/skills/document/styles/bold-clash/backdrop.html +2 -0
  112. package/skills/document/styles/bold-clash/skin.css +2 -1
  113. package/skills/document/styles/branding/skin.css +4 -4
  114. package/skills/document/styles/campus-teal/backdrop.html +2 -0
  115. package/skills/document/styles/campus-teal/skin.css +2 -1
  116. package/skills/document/styles/cinereel/skin.css +7 -3
  117. package/skills/document/styles/clinic-care/backdrop.html +2 -0
  118. package/skills/document/styles/clinic-care/skin.css +2 -1
  119. package/skills/document/styles/cool/skin.css +6 -5
  120. package/skills/document/styles/dark-glass/backdrop.html +2 -0
  121. package/skills/document/styles/dark-glass/skin.css +2 -1
  122. package/skills/document/styles/gov-brief/backdrop.html +2 -0
  123. package/skills/document/styles/gov-brief/skin.css +2 -1
  124. package/skills/document/styles/grid-tech/backdrop.html +2 -0
  125. package/skills/document/styles/grid-tech/skin.css +2 -1
  126. package/skills/document/styles/hand-drawn/skin.css +3 -3
  127. package/skills/document/styles/ivory-gold/skin.css +7 -6
  128. package/skills/document/styles/legal-slate/backdrop.html +2 -0
  129. package/skills/document/styles/legal-slate/skin.css +2 -1
  130. package/skills/document/styles/magazine-ink/skin.css +4 -3
  131. package/skills/document/styles/mckinsey/backdrop.html +7 -5
  132. package/skills/document/styles/mckinsey/skin.css +2 -1
  133. package/skills/document/styles/memphis/backdrop.html +2 -0
  134. package/skills/document/styles/memphis/skin.css +2 -1
  135. package/skills/document/styles/mono/skin.css +6 -2
  136. package/skills/document/styles/neon-cyber/backdrop.html +2 -0
  137. package/skills/document/styles/neon-cyber/skin.css +2 -1
  138. package/skills/document/styles/olive-gold/skin.css +7 -6
  139. package/skills/document/styles/organic-earth/backdrop.html +2 -0
  140. package/skills/document/styles/organic-earth/skin.css +2 -1
  141. package/skills/document/styles/pastel-saas/backdrop.html +2 -0
  142. package/skills/document/styles/pastel-saas/skin.css +2 -1
  143. package/skills/document/styles/portfolio-noir/backdrop.html +2 -0
  144. package/skills/document/styles/portfolio-noir/skin.css +2 -1
  145. package/skills/document/styles/retro-press/backdrop.html +2 -0
  146. package/skills/document/styles/retro-press/skin.css +2 -1
  147. package/skills/document/styles/sport-arena/backdrop.html +2 -0
  148. package/skills/document/styles/sport-arena/skin.css +4 -1
  149. package/skills/document/styles/swiss-grid/skin.css +10 -5
  150. package/skills/document/styles/wedding-blush/backdrop.html +2 -0
  151. package/skills/document/styles/wedding-blush/skin.css +4 -1
  152. package/skills/document/theme-system.md +85 -77
  153. package/skills/document/themes/README.md +7 -5
  154. package/skills/document/vision.md +8 -5
  155. package/skills/document/xlsx.md +15 -25
  156. package/skills/grill-me/SKILL.md +6 -0
  157. package/skills/grill-me/agents/openai.yaml +5 -0
  158. package/skills/grilling/SKILL.md +28 -0
  159. package/skills/grilling/agents/openai.yaml +3 -0
@@ -9790,9 +9790,9 @@ var require_load = __commonJS({
9790
9790
  var require_lib3 = __commonJS({
9791
9791
  "node_modules/jszip/lib/index.js"(exports2, module2) {
9792
9792
  "use strict";
9793
- function JSZip2() {
9794
- if (!(this instanceof JSZip2)) {
9795
- return new JSZip2();
9793
+ function JSZip3() {
9794
+ if (!(this instanceof JSZip3)) {
9795
+ return new JSZip3();
9796
9796
  }
9797
9797
  if (arguments.length) {
9798
9798
  throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
@@ -9801,7 +9801,7 @@ var require_lib3 = __commonJS({
9801
9801
  this.comment = null;
9802
9802
  this.root = "";
9803
9803
  this.clone = function() {
9804
- var newObj = new JSZip2();
9804
+ var newObj = new JSZip3();
9805
9805
  for (var i in this) {
9806
9806
  if (typeof this[i] !== "function") {
9807
9807
  newObj[i] = this[i];
@@ -9810,16 +9810,16 @@ var require_lib3 = __commonJS({
9810
9810
  return newObj;
9811
9811
  };
9812
9812
  }
9813
- JSZip2.prototype = require_object();
9814
- JSZip2.prototype.loadAsync = require_load();
9815
- JSZip2.support = require_support();
9816
- JSZip2.defaults = require_defaults();
9817
- JSZip2.version = "3.10.1";
9818
- JSZip2.loadAsync = function(content, options) {
9819
- return new JSZip2().loadAsync(content, options);
9813
+ JSZip3.prototype = require_object();
9814
+ JSZip3.prototype.loadAsync = require_load();
9815
+ JSZip3.support = require_support();
9816
+ JSZip3.defaults = require_defaults();
9817
+ JSZip3.version = "3.10.1";
9818
+ JSZip3.loadAsync = function(content, options) {
9819
+ return new JSZip3().loadAsync(content, options);
9820
9820
  };
9821
- JSZip2.external = require_external();
9822
- module2.exports = JSZip2;
9821
+ JSZip3.external = require_external();
9822
+ module2.exports = JSZip3;
9823
9823
  }
9824
9824
  });
9825
9825
 
@@ -9827,11 +9827,11 @@ var require_lib3 = __commonJS({
9827
9827
  var require_pptxgen_cjs = __commonJS({
9828
9828
  "node_modules/pptxgenjs/dist/pptxgen.cjs.js"(exports2, module2) {
9829
9829
  "use strict";
9830
- var JSZip2 = require_lib3();
9830
+ var JSZip3 = require_lib3();
9831
9831
  function _interopDefaultLegacy(e) {
9832
9832
  return e && typeof e === "object" && "default" in e ? e : { "default": e };
9833
9833
  }
9834
- var JSZip__default = /* @__PURE__ */ _interopDefaultLegacy(JSZip2);
9834
+ var JSZip__default = /* @__PURE__ */ _interopDefaultLegacy(JSZip3);
9835
9835
  var __assign2 = function() {
9836
9836
  __assign2 = Object.assign || function __assign3(t) {
9837
9837
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -85256,7 +85256,7 @@ var require_browser_buffer_encode = __commonJS({
85256
85256
  var require_zip_stream = __commonJS({
85257
85257
  "node_modules/exceljs/lib/utils/zip-stream.js"(exports2, module2) {
85258
85258
  var events = require("events");
85259
- var JSZip2 = require_lib3();
85259
+ var JSZip3 = require_lib3();
85260
85260
  var StreamBuf = require_stream_buf();
85261
85261
  var { stringToBuffer } = require_browser_buffer_encode();
85262
85262
  var ZipWriter = class extends events.EventEmitter {
@@ -85269,7 +85269,7 @@ var require_zip_stream = __commonJS({
85269
85269
  },
85270
85270
  options
85271
85271
  );
85272
- this.zip = new JSZip2();
85272
+ this.zip = new JSZip3();
85273
85273
  this.stream = new StreamBuf();
85274
85274
  }
85275
85275
  append(data, options) {
@@ -96949,7 +96949,7 @@ var require_theme1 = __commonJS({
96949
96949
  var require_xlsx2 = __commonJS({
96950
96950
  "node_modules/exceljs/lib/xlsx/xlsx.js"(exports2, module2) {
96951
96951
  var fs = require("fs");
96952
- var JSZip2 = require_lib3();
96952
+ var JSZip3 = require_lib3();
96953
96953
  var { PassThrough } = require_readable2();
96954
96954
  var ZipStream = require_zip_stream();
96955
96955
  var StreamBuf = require_stream_buf();
@@ -97188,7 +97188,7 @@ var require_xlsx2 = __commonJS({
97188
97188
  tables: {},
97189
97189
  vmlDrawings: {}
97190
97190
  };
97191
- const zip2 = await JSZip2.loadAsync(buffer);
97191
+ const zip2 = await JSZip3.loadAsync(buffer);
97192
97192
  for (const entry of Object.values(zip2.files)) {
97193
97193
  if (!entry.dir) {
97194
97194
  let entryName = entry.name;
@@ -105437,8 +105437,8 @@ var require_graceful_fs = __commonJS({
105437
105437
  }
105438
105438
  }
105439
105439
  var fs$writeFile = fs2.writeFile;
105440
- fs2.writeFile = writeFile;
105441
- function writeFile(path, data, options, cb) {
105440
+ fs2.writeFile = writeFile2;
105441
+ function writeFile2(path, data, options, cb) {
105442
105442
  if (typeof options === "function")
105443
105443
  cb = options, options = null;
105444
105444
  return go$writeFile(path, data, options, cb);
@@ -141451,7 +141451,7 @@ var require_excel = __commonJS({
141451
141451
  var import_node_module = __toESM(require("node:module"), 1);
141452
141452
  var import_node_path = require("node:path");
141453
141453
  var import_pptxgenjs = __toESM(require_pptxgen_cjs(), 1);
141454
- var import_jszip = __toESM(require_lib3(), 1);
141454
+ var import_jszip2 = __toESM(require_lib3(), 1);
141455
141455
  var import_pizzip = __toESM(require_js(), 1);
141456
141456
  var pdfLib = __toESM(require_cjs(), 1);
141457
141457
 
@@ -192429,9 +192429,147 @@ for (const pluginName of Object.getOwnPropertyNames(plugin_exports)) {
192429
192429
 
192430
192430
  // apps/admin/data/skills.lib/document/bin-src/doc-run.mjs
192431
192431
  var import_exceljs = __toESM(require_excel(), 1);
192432
+
192433
+ // packages/core/dist/document/pptx-finalize.js
192434
+ var import_jszip = __toESM(require_lib3(), 1);
192435
+ var import_promises = require("node:fs/promises");
192436
+ async function finalizePptx(bytes) {
192437
+ return stripDanglingOverrides(await dedupeParagraphProps(await normalizeChartParts(bytes)));
192438
+ }
192439
+ function dedupeParagraphPropsXml(xml) {
192440
+ return xml.replace(/<a:p>([\s\S]*?)<\/a:p>/g, (para, inner) => {
192441
+ const first2 = inner.search(/<a:(?:r|br|fld)\b/);
192442
+ if (first2 < 0)
192443
+ return para;
192444
+ const tail = inner.slice(first2).replace(/<a:pPr\b[^>]*\/>|<a:pPr\b[^>]*>[\s\S]*?<\/a:pPr>/g, "");
192445
+ return `<a:p>${inner.slice(0, first2)}${tail}</a:p>`;
192446
+ });
192447
+ }
192448
+ async function dedupeParagraphProps(bytes) {
192449
+ const zip2 = await import_jszip.default.loadAsync(Buffer.from(bytes));
192450
+ let changed = false;
192451
+ for (const name of Object.keys(zip2.files).filter((n) => /^ppt\/slides\/slide\d+\.xml$/.test(n))) {
192452
+ const xml = await zip2.file(name).async("string");
192453
+ const next = dedupeParagraphPropsXml(xml);
192454
+ if (next !== xml) {
192455
+ zip2.file(name, next);
192456
+ changed = true;
192457
+ }
192458
+ }
192459
+ if (!changed)
192460
+ return bytes;
192461
+ return new Uint8Array(await zip2.generateAsync({ type: "nodebuffer", compression: "DEFLATE" }));
192462
+ }
192463
+ async function normalizeChartParts(bytes) {
192464
+ const zip2 = await import_jszip.default.loadAsync(Buffer.from(bytes));
192465
+ const pres = zip2.file("ppt/presentation.xml");
192466
+ if (pres) {
192467
+ let xml = await pres.async("string");
192468
+ const notes = xml.match(/<p:notesMasterIdLst>[\s\S]*?<\/p:notesMasterIdLst>/);
192469
+ const sldIdx = xml.indexOf("<p:sldIdLst>");
192470
+ if (notes && sldIdx >= 0 && xml.indexOf(notes[0]) > sldIdx) {
192471
+ xml = xml.replace(notes[0], "");
192472
+ xml = xml.replace("<p:sldIdLst>", `${notes[0]}<p:sldIdLst>`);
192473
+ zip2.file("ppt/presentation.xml", xml);
192474
+ }
192475
+ }
192476
+ const parts = Object.keys(zip2.files).filter((n) => /^(ppt|word|xl)\/charts\/chart\d+\.xml$/.test(n));
192477
+ if (!parts.length && !pres)
192478
+ return bytes;
192479
+ for (const name of parts) {
192480
+ let xml = await zip2.file(name).async("string");
192481
+ const isLineArea = /<c:(line|area)Chart>/.test(xml);
192482
+ for (const ct of ["lineChart", "areaChart"]) {
192483
+ xml = xml.replace(new RegExp(`<c:${ct}>(?!\\s*<c:grouping)`, "g"), `<c:${ct}><c:grouping val="standard"/>`);
192484
+ }
192485
+ if (isLineArea) {
192486
+ xml = xml.replace(/<c:invertIfNegative[^>]*\/>/g, "");
192487
+ xml = xml.replace(/<c:ser>[\s\S]*?<\/c:ser>/g, (ser) => {
192488
+ const m = ser.match(/<c:marker>[\s\S]*?<\/c:marker>|<c:marker\s*\/>/);
192489
+ const dpos = ser.indexOf("<c:dLbls");
192490
+ if (!m || dpos < 0 || ser.indexOf(m[0]) < dpos)
192491
+ return ser;
192492
+ const without = ser.replace(m[0], "");
192493
+ const at = without.indexOf("<c:dLbls");
192494
+ return without.slice(0, at) + m[0] + without.slice(at);
192495
+ });
192496
+ }
192497
+ xml = xml.replace(/<c:ser>[\s\S]*?<\/c:ser>/g, (ser) => {
192498
+ const dPts = ser.match(/<c:dPt>[\s\S]*?<\/c:dPt>/g);
192499
+ if (!dPts)
192500
+ return ser;
192501
+ const stripped = ser.replace(/<c:dPt>[\s\S]*?<\/c:dPt>/g, "");
192502
+ for (const anchor of ["<c:dLbls", "<c:trendline", "<c:errBars", "<c:cat>", "<c:val>", "</c:ser>"]) {
192503
+ const pos = stripped.indexOf(anchor);
192504
+ if (pos >= 0)
192505
+ return stripped.slice(0, pos) + dPts.join("") + stripped.slice(pos);
192506
+ }
192507
+ return ser;
192508
+ });
192509
+ const declared = new Set([...xml.matchAll(/<c:(?:catAx|valAx|serAx|dateAx)>\s*<c:axId val="(\d+)"\/>/g)].map((m) => m[1]));
192510
+ xml = xml.replace(/<c:axId val="(\d+)"\/>/g, (m, id) => declared.has(id) ? m : "");
192511
+ zip2.file(name, xml);
192512
+ }
192513
+ const out = await zip2.generateAsync({ type: "nodebuffer", compression: "DEFLATE" });
192514
+ return new Uint8Array(out);
192515
+ }
192516
+ async function stripDanglingOverrides(bytes) {
192517
+ const zip2 = await import_jszip.default.loadAsync(Buffer.from(bytes));
192518
+ const ctFile = zip2.file("[Content_Types].xml");
192519
+ if (!ctFile)
192520
+ return bytes;
192521
+ const ct = await ctFile.async("string");
192522
+ const cleaned = ct.replace(/<Override\b[^>]*PartName="\/([^"]+)"[^>]*\/>/g, (m, part) => zip2.file(part) ? m : "");
192523
+ if (cleaned === ct)
192524
+ return bytes;
192525
+ zip2.file("[Content_Types].xml", cleaned);
192526
+ return new Uint8Array(await zip2.generateAsync({ type: "nodebuffer", compression: "DEFLATE" }));
192527
+ }
192528
+ var JSZIP_OUTPUT_TYPES = /* @__PURE__ */ new Set(["nodebuffer", "uint8array", "arraybuffer", "base64", "binarystring", "string", "array", "blob"]);
192529
+ function finalizingPptxGenJS(Base) {
192530
+ const finalized = async (self2, compression) => {
192531
+ const raw = await Base.prototype.write.call(self2, { outputType: "nodebuffer", compression });
192532
+ return finalizePptx(new Uint8Array(raw));
192533
+ };
192534
+ const Finalizing = class extends Base {
192535
+ async write(props) {
192536
+ const p = props;
192537
+ const outputType = typeof p === "object" && p?.outputType ? p.outputType : typeof p === "string" && p ? p : null;
192538
+ const compression = typeof p === "object" && p?.compression ? true : false;
192539
+ if (outputType === "STREAM")
192540
+ return this.stream({ compression });
192541
+ const bytes = await finalized(this, compression);
192542
+ const type = outputType ?? "blob";
192543
+ if (!JSZIP_OUTPUT_TYPES.has(type))
192544
+ return Base.prototype.write.call(this, props);
192545
+ if (type === "nodebuffer")
192546
+ return Buffer.from(bytes);
192547
+ if (type === "uint8array")
192548
+ return bytes;
192549
+ const zip2 = await import_jszip.default.loadAsync(Buffer.from(bytes));
192550
+ return zip2.generateAsync({ type, compression: compression ? "DEFLATE" : "STORE" });
192551
+ }
192552
+ async stream(props) {
192553
+ return Buffer.from(await finalized(this, Boolean(props?.compression)));
192554
+ }
192555
+ async writeFile(props) {
192556
+ if (typeof props === "string")
192557
+ console.log("Warning: `writeFile(filename)` is deprecated - please use `WriteFileProps` argument (v3.5.0)");
192558
+ const name = typeof props === "object" && props?.fileName ? props.fileName : typeof props === "string" ? props : "";
192559
+ const fileName = name ? String(name).toLowerCase().endsWith(".pptx") ? String(name) : `${name}.pptx` : "Presentation.pptx";
192560
+ const compression = typeof props === "object" && props?.compression ? true : false;
192561
+ await (0, import_promises.writeFile)(fileName, await finalized(this, compression));
192562
+ return fileName;
192563
+ }
192564
+ };
192565
+ Object.defineProperty(Finalizing, "name", { value: Base.name || "PptxGenJS" });
192566
+ return Finalizing;
192567
+ }
192568
+
192569
+ // apps/admin/data/skills.lib/document/bin-src/doc-run.mjs
192432
192570
  var REGISTRY = {
192433
- pptxgenjs: import_pptxgenjs.default,
192434
- jszip: import_jszip.default,
192571
+ pptxgenjs: finalizingPptxGenJS(import_pptxgenjs.default),
192572
+ jszip: import_jszip2.default,
192435
192573
  pizzip: import_pizzip.default,
192436
192574
  "pdf-lib": pdfLib,
192437
192575
  docx: dist_exports,
@@ -8,6 +8,17 @@ var import_node_path2 = require("node:path");
8
8
  // packages/core/dist/document/pdf-extract.js
9
9
  var import_node_path = require("node:path");
10
10
  var import_node_url = require("node:url");
11
+
12
+ // packages/core/dist/document/pdf-encrypted.js
13
+ var ENCRYPTED_PDF_MESSAGE = "PDF is password-protected (encrypted); decrypt first: pdf-ops decrypt <in> <password> <out>";
14
+ var PdfEncryptedError = class extends Error {
15
+ constructor() {
16
+ super(ENCRYPTED_PDF_MESSAGE);
17
+ this.name = "PdfEncryptedError";
18
+ }
19
+ };
20
+
21
+ // packages/core/dist/document/pdf-extract.js
11
22
  var _mupdf = null;
12
23
  function loadMupdf() {
13
24
  if (!_mupdf) {
@@ -33,6 +44,8 @@ function textTableHint(text) {
33
44
  async function openDoc(bytes) {
34
45
  const mupdf = await loadMupdf();
35
46
  const doc = mupdf.Document.openDocument(bytes, "application/pdf");
47
+ if (doc.needsPassword())
48
+ throw new PdfEncryptedError();
36
49
  if (doc.countPages() === 0) {
37
50
  throw new Error("PDF has no readable pages (corrupt, encrypted, or empty)");
38
51
  }
@@ -8,6 +8,17 @@ var import_node_path2 = require("node:path");
8
8
  // packages/core/dist/document/pdf-extract.js
9
9
  var import_node_path = require("node:path");
10
10
  var import_node_url = require("node:url");
11
+
12
+ // packages/core/dist/document/pdf-encrypted.js
13
+ var ENCRYPTED_PDF_MESSAGE = "PDF is password-protected (encrypted); decrypt first: pdf-ops decrypt <in> <password> <out>";
14
+ var PdfEncryptedError = class extends Error {
15
+ constructor() {
16
+ super(ENCRYPTED_PDF_MESSAGE);
17
+ this.name = "PdfEncryptedError";
18
+ }
19
+ };
20
+
21
+ // packages/core/dist/document/pdf-extract.js
11
22
  var _mupdf = null;
12
23
  function loadMupdf() {
13
24
  if (!_mupdf) {
@@ -33,6 +44,8 @@ function textTableHint(text) {
33
44
  async function openDoc(bytes) {
34
45
  const mupdf = await loadMupdf();
35
46
  const doc = mupdf.Document.openDocument(bytes, "application/pdf");
47
+ if (doc.needsPassword())
48
+ throw new PdfEncryptedError();
36
49
  if (doc.countPages() === 0) {
37
50
  throw new Error("PDF has no readable pages (corrupt, encrypted, or empty)");
38
51
  }