documents.js 4.4.0 → 4.4.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/README.md CHANGED
@@ -238,7 +238,7 @@ const docxBytesAgain = encodeDocumentPackage('docx', pkg);
238
238
  const odbPkg = decodeOdbPackage(odbBytes);
239
239
  ```
240
240
 
241
- `readDocumentMetadata`/`setDocumentMetadata` read or patch metadata across any `DocumentFormat`. `setDocumentMetadata` patches in place (source/target formats must match); `odf` is rejected in both directions, and `csv` is rejected in both directions too (RFC 4180 text has no metadata container) — `readDocumentMetadata('csv', ...)` answers an empty `LayoutMetadata` for the same reason. `svg` reads its root `<title>` as `metadata.title` and is rejected as a `setDocumentMetadata` source/target for the mirror-image reason: `<title>` is svg's whole metadata surface, so any other override would be silently dropped by the rebuild. `readDocumentMetadata('xlsx', ...)` is a named exception: it renders via `xlsxToPdf` and reads the PDF's metadata, because a direct read and the PDF-preview path genuinely disagree on `createdIso`/`modifiedIso`/`producer`.
241
+ `readDocumentMetadata`/`setDocumentMetadata` read or patch metadata across any `DocumentFormat`. `setDocumentMetadata` patches in place (source/target formats must match); `odf` is rejected in both directions, and `csv` is rejected in both directions too (RFC 4180 text has no metadata container) — `readDocumentMetadata('csv', ...)` answers an empty `LayoutMetadata` for the same reason. `svg` reads its root `<title>` as `metadata.title` and is rejected as a `setDocumentMetadata` source/target for the mirror-image reason: `<title>` is svg's whole metadata surface, so any other override would be silently dropped by the rebuild. `readDocumentMetadata('xlsx', ...)` reads the workbook's own `docProps` like every other content format — `createdIso`/`modifiedIso` from `docProps/core.xml` when the file declares them, `docProps/app.xml`'s Application as `creator`, and `producer` unset (a PDF-only concept no semantic reader sets). It previously rendered a `xlsxToPdf` preview and read that PDF's metadata instead, which for a file carrying no timestamps of its own reported facts about the render rather than the workbook: timestamps stamped at the render moment and a producer naming the preview PDF's writer.
242
242
 
243
243
  ```ts
244
244
  import { readDocumentMetadata, setDocumentMetadata } from 'documents.js';
@@ -260,7 +260,7 @@ One subpath is a declared entry point in its own right: **`documents.js/read`**
260
260
  import { pdfToMarkdown } from 'documents.js/read';
261
261
  ```
262
262
 
263
- It carries the ten `pdfTo*` conversions and `PdfToDocumentOptions` — identical functions to the root barrel's (the same forwarders, run through the composition engine's read half), never a forked behaviour; `convertDocument` and every X-to-PDF direction stay on the root barrel. `src/read-graph.test.ts` walks the entry's static import graph, follows `pdf-codec` specifiers through that package's real `exports` map into its source, and fails the build if the write path or any font asset becomes reachable.
263
+ It carries the ten `pdfTo*` conversions, `PdfToDocumentOptions`, and `readDocumentMetadata` (with `ReadDocumentMetadataOptions`) — identical functions to the root barrel's (the same forwarders, run through the composition engine's read half, and the same metadata reader dispatched through the read-only codec half `src/codecs/read.ts`), never a forked behaviour; `convertDocument` and every X-to-PDF direction stay on the root barrel. `src/read-graph.test.ts` walks the entry's static import graph, follows `pdf-codec` specifiers through that package's real `exports` map into its source, and fails the build if the write path or any font asset becomes reachable.
264
264
 
265
265
  ### Reading and building xlsx content directly
266
266
 
@@ -0,0 +1,66 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_model_bytes = require("../model/bytes.cjs");
3
+ const require_markdown_read = require("../markdown/read.cjs");
4
+ const require_ooxml_docx_read = require("../ooxml/docx/read.cjs");
5
+ const require_ooxml_pptx_read = require("../ooxml/pptx/read.cjs");
6
+ const require_odf_formula_read = require("../odf/formula/read.cjs");
7
+ const require_odf_odt_read = require("../odf/odt/read.cjs");
8
+ const require_odf_odp_read = require("../odf/odp/read.cjs");
9
+ const require_odf_ods_read = require("../odf/ods/read.cjs");
10
+ const require_odf_odg_read = require("../odf/odg/read.cjs");
11
+ const require_markdown_text = require("../markdown/text.cjs");
12
+ const require_csv_text = require("../csv/text.cjs");
13
+ const require_csv_read = require("../csv/read.cjs");
14
+ const require_svg_text = require("../svg/text.cjs");
15
+ const require_svg_read = require("../svg/read.cjs");
16
+ const require_ports_abort = require("../ports/abort.cjs");
17
+ const require_package_codec = require("../package-codec.cjs");
18
+ let ooxml_js = require("ooxml.js");
19
+ let pdf_codec_read = require("pdf-codec/read");
20
+ //#region src/codecs/read.ts
21
+ const CONTENT_READERS = {
22
+ docx: (bytes, options) => {
23
+ require_ports_abort.throwIfAborted(options?.signal);
24
+ return require_ooxml_docx_read.readDocxContent(require_package_codec.decodeDocumentPackage("docx", require_model_bytes.requireArrayBufferBytes(bytes)));
25
+ },
26
+ pptx: (bytes, options) => {
27
+ require_ports_abort.throwIfAborted(options?.signal);
28
+ return require_ooxml_pptx_read.readPptxContent(require_package_codec.decodeDocumentPackage("pptx", require_model_bytes.requireArrayBufferBytes(bytes)));
29
+ },
30
+ odt: (bytes, options) => {
31
+ require_ports_abort.throwIfAborted(options?.signal);
32
+ return require_odf_odt_read.readOdtContent(require_package_codec.decodeDocumentPackage("odt", require_model_bytes.requireArrayBufferBytes(bytes)));
33
+ },
34
+ odp: (bytes, options) => {
35
+ require_ports_abort.throwIfAborted(options?.signal);
36
+ return require_odf_odp_read.readOdpContent(require_package_codec.decodeDocumentPackage("odp", require_model_bytes.requireArrayBufferBytes(bytes)));
37
+ },
38
+ ods: (bytes, options) => {
39
+ require_ports_abort.throwIfAborted(options?.signal);
40
+ return require_odf_ods_read.readOdsContent(require_package_codec.decodeDocumentPackage("ods", require_model_bytes.requireArrayBufferBytes(bytes)));
41
+ },
42
+ odg: (bytes, options) => {
43
+ require_ports_abort.throwIfAborted(options?.signal);
44
+ return require_odf_odg_read.readOdgContent(require_package_codec.decodeDocumentPackage("odg", require_model_bytes.requireArrayBufferBytes(bytes)));
45
+ },
46
+ odf: (bytes, options) => {
47
+ require_ports_abort.throwIfAborted(options?.signal);
48
+ return require_odf_formula_read.readOdfFormulaContent(require_package_codec.decodeDocumentPackage("odf", require_model_bytes.requireArrayBufferBytes(bytes)));
49
+ },
50
+ markdown: (bytes, options) => require_markdown_read.readMarkdownContent(require_markdown_text.decodeMarkdownText(bytes), {
51
+ signal: options?.signal,
52
+ images: options?.images
53
+ }),
54
+ csv: (bytes) => require_csv_read.readCsvContent(require_csv_text.decodeCsvText(bytes)),
55
+ svg: (bytes) => require_svg_read.readSvgContent(require_svg_text.decodeSvgText(bytes)),
56
+ xlsx: (bytes, options) => {
57
+ require_ports_abort.throwIfAborted(options?.signal);
58
+ return (0, ooxml_js.readXlsxContent)(require_package_codec.decodeDocumentPackage("xlsx", require_model_bytes.requireArrayBufferBytes(bytes)));
59
+ }
60
+ };
61
+ function readDocumentLayout(bytes, options) {
62
+ return (0, pdf_codec_read.readPdf)(require_model_bytes.requireArrayBufferBytes(bytes), { signal: options?.signal });
63
+ }
64
+ //#endregion
65
+ exports.CONTENT_READERS = CONTENT_READERS;
66
+ exports.readDocumentLayout = readDocumentLayout;
@@ -0,0 +1,15 @@
1
+ import { DocumentFormat } from "../convert/port.cjs";
2
+ import { ContentDocument } from "document-schema.js";
3
+ import { LayoutDocument } from "pdf-codec";
4
+ import { MarkdownImageResolver } from "markdown-codec";
5
+ //#region src/codecs/read.d.ts
6
+ interface DocumentCodecOptions {
7
+ readonly signal?: AbortSignal;
8
+ readonly images?: MarkdownImageResolver;
9
+ }
10
+ type ReadContentFormat = Exclude<DocumentFormat, 'pdf'>;
11
+ type ContentReader = (bytes: Uint8Array, options?: DocumentCodecOptions) => ContentDocument;
12
+ declare const CONTENT_READERS: Readonly<Record<ReadContentFormat, ContentReader>>;
13
+ declare function readDocumentLayout(bytes: Uint8Array, options?: DocumentCodecOptions): LayoutDocument;
14
+ //#endregion
15
+ export { CONTENT_READERS, ContentReader, DocumentCodecOptions, ReadContentFormat, readDocumentLayout };
@@ -0,0 +1,15 @@
1
+ import { DocumentFormat } from "../convert/port.js";
2
+ import { ContentDocument } from "document-schema.js";
3
+ import { LayoutDocument } from "pdf-codec";
4
+ import { MarkdownImageResolver } from "markdown-codec";
5
+ //#region src/codecs/read.d.ts
6
+ interface DocumentCodecOptions {
7
+ readonly signal?: AbortSignal;
8
+ readonly images?: MarkdownImageResolver;
9
+ }
10
+ type ReadContentFormat = Exclude<DocumentFormat, 'pdf'>;
11
+ type ContentReader = (bytes: Uint8Array, options?: DocumentCodecOptions) => ContentDocument;
12
+ declare const CONTENT_READERS: Readonly<Record<ReadContentFormat, ContentReader>>;
13
+ declare function readDocumentLayout(bytes: Uint8Array, options?: DocumentCodecOptions): LayoutDocument;
14
+ //#endregion
15
+ export { CONTENT_READERS, ContentReader, DocumentCodecOptions, ReadContentFormat, readDocumentLayout };
@@ -0,0 +1,64 @@
1
+ import { requireArrayBufferBytes } from "../model/bytes.js";
2
+ import { readMarkdownContent } from "../markdown/read.js";
3
+ import { readDocxContent as readDocxContent$1 } from "../ooxml/docx/read.js";
4
+ import { readPptxContent as readPptxContent$1 } from "../ooxml/pptx/read.js";
5
+ import { readOdfFormulaContent } from "../odf/formula/read.js";
6
+ import { readOdtContent } from "../odf/odt/read.js";
7
+ import { readOdpContent } from "../odf/odp/read.js";
8
+ import { readOdsContent } from "../odf/ods/read.js";
9
+ import { readOdgContent } from "../odf/odg/read.js";
10
+ import { decodeMarkdownText } from "../markdown/text.js";
11
+ import { decodeCsvText } from "../csv/text.js";
12
+ import { readCsvContent } from "../csv/read.js";
13
+ import { decodeSvgText } from "../svg/text.js";
14
+ import { readSvgContent } from "../svg/read.js";
15
+ import { throwIfAborted } from "../ports/abort.js";
16
+ import { decodeDocumentPackage } from "../package-codec.js";
17
+ import { readXlsxContent } from "ooxml.js";
18
+ import { readPdf } from "pdf-codec/read";
19
+ //#region src/codecs/read.ts
20
+ const CONTENT_READERS = {
21
+ docx: (bytes, options) => {
22
+ throwIfAborted(options?.signal);
23
+ return readDocxContent$1(decodeDocumentPackage("docx", requireArrayBufferBytes(bytes)));
24
+ },
25
+ pptx: (bytes, options) => {
26
+ throwIfAborted(options?.signal);
27
+ return readPptxContent$1(decodeDocumentPackage("pptx", requireArrayBufferBytes(bytes)));
28
+ },
29
+ odt: (bytes, options) => {
30
+ throwIfAborted(options?.signal);
31
+ return readOdtContent(decodeDocumentPackage("odt", requireArrayBufferBytes(bytes)));
32
+ },
33
+ odp: (bytes, options) => {
34
+ throwIfAborted(options?.signal);
35
+ return readOdpContent(decodeDocumentPackage("odp", requireArrayBufferBytes(bytes)));
36
+ },
37
+ ods: (bytes, options) => {
38
+ throwIfAborted(options?.signal);
39
+ return readOdsContent(decodeDocumentPackage("ods", requireArrayBufferBytes(bytes)));
40
+ },
41
+ odg: (bytes, options) => {
42
+ throwIfAborted(options?.signal);
43
+ return readOdgContent(decodeDocumentPackage("odg", requireArrayBufferBytes(bytes)));
44
+ },
45
+ odf: (bytes, options) => {
46
+ throwIfAborted(options?.signal);
47
+ return readOdfFormulaContent(decodeDocumentPackage("odf", requireArrayBufferBytes(bytes)));
48
+ },
49
+ markdown: (bytes, options) => readMarkdownContent(decodeMarkdownText(bytes), {
50
+ signal: options?.signal,
51
+ images: options?.images
52
+ }),
53
+ csv: (bytes) => readCsvContent(decodeCsvText(bytes)),
54
+ svg: (bytes) => readSvgContent(decodeSvgText(bytes)),
55
+ xlsx: (bytes, options) => {
56
+ throwIfAborted(options?.signal);
57
+ return readXlsxContent(decodeDocumentPackage("xlsx", requireArrayBufferBytes(bytes)));
58
+ }
59
+ };
60
+ function readDocumentLayout(bytes, options) {
61
+ return readPdf(requireArrayBufferBytes(bytes), { signal: options?.signal });
62
+ }
63
+ //#endregion
64
+ export { CONTENT_READERS, readDocumentLayout };
@@ -6,108 +6,62 @@ const require_edit_odp_content = require("../edit/odp/content.cjs");
6
6
  const require_edit_ods_content = require("../edit/ods/content.cjs");
7
7
  const require_edit_odg_content = require("../edit/odg/content.cjs");
8
8
  const require_markdown_write = require("../markdown/write.cjs");
9
- const require_markdown_read = require("../markdown/read.cjs");
10
- const require_ooxml_docx_read = require("../ooxml/docx/read.cjs");
11
- const require_ooxml_pptx_read = require("../ooxml/pptx/read.cjs");
12
- const require_odf_formula_read = require("../odf/formula/read.cjs");
13
- const require_odf_odt_read = require("../odf/odt/read.cjs");
14
- const require_odf_odp_read = require("../odf/odp/read.cjs");
15
- const require_odf_ods_read = require("../odf/ods/read.cjs");
16
- const require_odf_odg_read = require("../odf/odg/read.cjs");
17
9
  const require_markdown_text = require("../markdown/text.cjs");
18
10
  const require_csv_text = require("../csv/text.cjs");
19
- const require_csv_read = require("../csv/read.cjs");
20
11
  const require_csv_write = require("../csv/write.cjs");
21
12
  const require_svg_text = require("../svg/text.cjs");
22
- const require_svg_read = require("../svg/read.cjs");
23
13
  const require_svg_write = require("../svg/write.cjs");
24
- const require_ports_abort = require("../ports/abort.cjs");
25
14
  const require_package_codec = require("../package-codec.cjs");
15
+ const require_codecs_read = require("./read.cjs");
26
16
  let ooxml_js = require("ooxml.js");
27
17
  let pdf_codec = require("pdf-codec");
28
18
  //#region src/codecs/registry.ts
29
- function isArrayBufferBacked(bytes) {
30
- return bytes.buffer instanceof ArrayBuffer;
31
- }
32
- function requireArrayBufferBytes(bytes) {
33
- if (!isArrayBufferBacked(bytes)) throw new TypeError("expected an ArrayBuffer-backed Uint8Array, received one backed by a SharedArrayBuffer");
34
- return bytes;
35
- }
36
19
  const DOCUMENT_FORMAT_CODECS = {
37
20
  docx: { content: {
38
- read: (bytes, options) => {
39
- require_ports_abort.throwIfAborted(options?.signal);
40
- return require_ooxml_docx_read.readDocxContent(require_package_codec.decodeDocumentPackage("docx", requireArrayBufferBytes(bytes)));
41
- },
21
+ read: require_codecs_read.CONTENT_READERS.docx,
42
22
  write: (content) => require_package_codec.encodeDocumentPackage("docx", require_edit_docx_content.buildDocxPackage(content))
43
23
  } },
44
24
  pptx: { content: {
45
- read: (bytes, options) => {
46
- require_ports_abort.throwIfAborted(options?.signal);
47
- return require_ooxml_pptx_read.readPptxContent(require_package_codec.decodeDocumentPackage("pptx", requireArrayBufferBytes(bytes)));
48
- },
25
+ read: require_codecs_read.CONTENT_READERS.pptx,
49
26
  write: (content) => require_package_codec.encodeDocumentPackage("pptx", require_edit_pptx_content.buildPptxPackage(content))
50
27
  } },
51
28
  odt: { content: {
52
- read: (bytes, options) => {
53
- require_ports_abort.throwIfAborted(options?.signal);
54
- return require_odf_odt_read.readOdtContent(require_package_codec.decodeDocumentPackage("odt", requireArrayBufferBytes(bytes)));
55
- },
29
+ read: require_codecs_read.CONTENT_READERS.odt,
56
30
  write: (content) => require_package_codec.encodeDocumentPackage("odt", require_edit_odt_content.buildOdtPackage(content))
57
31
  } },
58
32
  odp: { content: {
59
- read: (bytes, options) => {
60
- require_ports_abort.throwIfAborted(options?.signal);
61
- return require_odf_odp_read.readOdpContent(require_package_codec.decodeDocumentPackage("odp", requireArrayBufferBytes(bytes)));
62
- },
33
+ read: require_codecs_read.CONTENT_READERS.odp,
63
34
  write: (content) => require_package_codec.encodeDocumentPackage("odp", require_edit_odp_content.buildOdpPackage(content))
64
35
  } },
65
36
  ods: { content: {
66
- read: (bytes, options) => {
67
- require_ports_abort.throwIfAborted(options?.signal);
68
- return require_odf_ods_read.readOdsContent(require_package_codec.decodeDocumentPackage("ods", requireArrayBufferBytes(bytes)));
69
- },
37
+ read: require_codecs_read.CONTENT_READERS.ods,
70
38
  write: (content) => require_package_codec.encodeDocumentPackage("ods", require_edit_ods_content.buildOdsPackage(content))
71
39
  } },
72
40
  odg: { content: {
73
- read: (bytes, options) => {
74
- require_ports_abort.throwIfAborted(options?.signal);
75
- return require_odf_odg_read.readOdgContent(require_package_codec.decodeDocumentPackage("odg", requireArrayBufferBytes(bytes)));
76
- },
41
+ read: require_codecs_read.CONTENT_READERS.odg,
77
42
  write: (content) => require_package_codec.encodeDocumentPackage("odg", require_edit_odg_content.buildOdgPackage(content))
78
43
  } },
79
- odf: { content: { read: (bytes, options) => {
80
- require_ports_abort.throwIfAborted(options?.signal);
81
- return require_odf_formula_read.readOdfFormulaContent(require_package_codec.decodeDocumentPackage("odf", requireArrayBufferBytes(bytes)));
82
- } } },
44
+ odf: { content: { read: require_codecs_read.CONTENT_READERS.odf } },
83
45
  markdown: { content: {
84
- read: (bytes, options) => require_markdown_read.readMarkdownContent(require_markdown_text.decodeMarkdownText(bytes), {
85
- signal: options?.signal,
86
- images: options?.images
87
- }),
46
+ read: require_codecs_read.CONTENT_READERS.markdown,
88
47
  write: (content) => require_markdown_text.encodeMarkdownText(require_markdown_write.buildMarkdownText(content))
89
48
  } },
90
49
  csv: { content: {
91
- read: (bytes) => require_csv_read.readCsvContent(require_csv_text.decodeCsvText(bytes)),
50
+ read: require_codecs_read.CONTENT_READERS.csv,
92
51
  write: (content) => require_csv_text.encodeCsvText(require_csv_write.buildCsvText(content))
93
52
  } },
94
53
  svg: { content: {
95
- read: (bytes) => require_svg_read.readSvgContent(require_svg_text.decodeSvgText(bytes)),
54
+ read: require_codecs_read.CONTENT_READERS.svg,
96
55
  write: (content) => require_svg_text.encodeSvgText(require_svg_write.buildSvgText(content))
97
56
  } },
98
57
  pdf: { layout: {
99
- read: (bytes, options) => (0, pdf_codec.readPdf)(requireArrayBufferBytes(bytes), { signal: options?.signal }),
58
+ read: require_codecs_read.readDocumentLayout,
100
59
  write: (layout, options) => (0, pdf_codec.writePdf)(layout, { signal: options?.signal })
101
60
  } },
102
61
  xlsx: { content: {
103
- read: (bytes, options) => {
104
- require_ports_abort.throwIfAborted(options?.signal);
105
- return (0, ooxml_js.readXlsxContent)(require_package_codec.decodeDocumentPackage("xlsx", requireArrayBufferBytes(bytes)));
106
- },
62
+ read: require_codecs_read.CONTENT_READERS.xlsx,
107
63
  write: (content) => require_package_codec.encodeDocumentPackage("xlsx", (0, ooxml_js.buildXlsxPackageFromContent)(content))
108
64
  } }
109
65
  };
110
66
  //#endregion
111
67
  exports.DOCUMENT_FORMAT_CODECS = DOCUMENT_FORMAT_CODECS;
112
- exports.isArrayBufferBacked = isArrayBufferBacked;
113
- exports.requireArrayBufferBytes = requireArrayBufferBytes;
@@ -1,14 +1,8 @@
1
1
  import { DocumentFormat } from "../convert/port.cjs";
2
+ import { DocumentCodecOptions } from "./read.cjs";
2
3
  import { ContentCodec } from "document-schema.js";
3
4
  import { LayoutDocument } from "pdf-codec";
4
- import { MarkdownImageResolver } from "markdown-codec";
5
5
  //#region src/codecs/registry.d.ts
6
- declare function isArrayBufferBacked(bytes: Uint8Array): bytes is Uint8Array<ArrayBuffer>;
7
- declare function requireArrayBufferBytes(bytes: Uint8Array): Uint8Array<ArrayBuffer>;
8
- interface DocumentCodecOptions {
9
- readonly signal?: AbortSignal;
10
- readonly images?: MarkdownImageResolver;
11
- }
12
6
  interface LayoutEntryCodec {
13
7
  read(bytes: Uint8Array, options?: DocumentCodecOptions): LayoutDocument;
14
8
  write(layout: LayoutDocument, options?: DocumentCodecOptions): Uint8Array;
@@ -19,4 +13,4 @@ interface DocumentFormatCodecs {
19
13
  }
20
14
  declare const DOCUMENT_FORMAT_CODECS: Readonly<Record<DocumentFormat, DocumentFormatCodecs>>;
21
15
  //#endregion
22
- export { DOCUMENT_FORMAT_CODECS, DocumentCodecOptions, DocumentFormatCodecs, LayoutEntryCodec, isArrayBufferBacked, requireArrayBufferBytes };
16
+ export { DOCUMENT_FORMAT_CODECS, DocumentFormatCodecs, LayoutEntryCodec };
@@ -1,14 +1,8 @@
1
1
  import { DocumentFormat } from "../convert/port.js";
2
+ import { DocumentCodecOptions } from "./read.js";
2
3
  import { ContentCodec } from "document-schema.js";
3
4
  import { LayoutDocument } from "pdf-codec";
4
- import { MarkdownImageResolver } from "markdown-codec";
5
5
  //#region src/codecs/registry.d.ts
6
- declare function isArrayBufferBacked(bytes: Uint8Array): bytes is Uint8Array<ArrayBuffer>;
7
- declare function requireArrayBufferBytes(bytes: Uint8Array): Uint8Array<ArrayBuffer>;
8
- interface DocumentCodecOptions {
9
- readonly signal?: AbortSignal;
10
- readonly images?: MarkdownImageResolver;
11
- }
12
6
  interface LayoutEntryCodec {
13
7
  read(bytes: Uint8Array, options?: DocumentCodecOptions): LayoutDocument;
14
8
  write(layout: LayoutDocument, options?: DocumentCodecOptions): Uint8Array;
@@ -19,4 +13,4 @@ interface DocumentFormatCodecs {
19
13
  }
20
14
  declare const DOCUMENT_FORMAT_CODECS: Readonly<Record<DocumentFormat, DocumentFormatCodecs>>;
21
15
  //#endregion
22
- export { DOCUMENT_FORMAT_CODECS, DocumentCodecOptions, DocumentFormatCodecs, LayoutEntryCodec, isArrayBufferBacked, requireArrayBufferBytes };
16
+ export { DOCUMENT_FORMAT_CODECS, DocumentFormatCodecs, LayoutEntryCodec };
@@ -5,106 +5,62 @@ import { buildOdpPackage } from "../edit/odp/content.js";
5
5
  import { buildOdsPackage } from "../edit/ods/content.js";
6
6
  import { buildOdgPackage } from "../edit/odg/content.js";
7
7
  import { buildMarkdownText } from "../markdown/write.js";
8
- import { readMarkdownContent } from "../markdown/read.js";
9
- import { readDocxContent as readDocxContent$1 } from "../ooxml/docx/read.js";
10
- import { readPptxContent as readPptxContent$1 } from "../ooxml/pptx/read.js";
11
- import { readOdfFormulaContent } from "../odf/formula/read.js";
12
- import { readOdtContent } from "../odf/odt/read.js";
13
- import { readOdpContent } from "../odf/odp/read.js";
14
- import { readOdsContent } from "../odf/ods/read.js";
15
- import { readOdgContent } from "../odf/odg/read.js";
16
- import { decodeMarkdownText, encodeMarkdownText } from "../markdown/text.js";
17
- import { decodeCsvText, encodeCsvText } from "../csv/text.js";
18
- import { readCsvContent } from "../csv/read.js";
8
+ import { encodeMarkdownText } from "../markdown/text.js";
9
+ import { encodeCsvText } from "../csv/text.js";
19
10
  import { buildCsvText } from "../csv/write.js";
20
- import { decodeSvgText, encodeSvgText } from "../svg/text.js";
21
- import { readSvgContent } from "../svg/read.js";
11
+ import { encodeSvgText } from "../svg/text.js";
22
12
  import { buildSvgText } from "../svg/write.js";
23
- import { throwIfAborted } from "../ports/abort.js";
24
- import { decodeDocumentPackage, encodeDocumentPackage } from "../package-codec.js";
25
- import { buildXlsxPackageFromContent, readXlsxContent } from "ooxml.js";
26
- import { readPdf, writePdf } from "pdf-codec";
13
+ import { encodeDocumentPackage } from "../package-codec.js";
14
+ import { CONTENT_READERS, readDocumentLayout } from "./read.js";
15
+ import { buildXlsxPackageFromContent } from "ooxml.js";
16
+ import { writePdf } from "pdf-codec";
27
17
  //#region src/codecs/registry.ts
28
- function isArrayBufferBacked(bytes) {
29
- return bytes.buffer instanceof ArrayBuffer;
30
- }
31
- function requireArrayBufferBytes(bytes) {
32
- if (!isArrayBufferBacked(bytes)) throw new TypeError("expected an ArrayBuffer-backed Uint8Array, received one backed by a SharedArrayBuffer");
33
- return bytes;
34
- }
35
18
  const DOCUMENT_FORMAT_CODECS = {
36
19
  docx: { content: {
37
- read: (bytes, options) => {
38
- throwIfAborted(options?.signal);
39
- return readDocxContent$1(decodeDocumentPackage("docx", requireArrayBufferBytes(bytes)));
40
- },
20
+ read: CONTENT_READERS.docx,
41
21
  write: (content) => encodeDocumentPackage("docx", buildDocxPackage(content))
42
22
  } },
43
23
  pptx: { content: {
44
- read: (bytes, options) => {
45
- throwIfAborted(options?.signal);
46
- return readPptxContent$1(decodeDocumentPackage("pptx", requireArrayBufferBytes(bytes)));
47
- },
24
+ read: CONTENT_READERS.pptx,
48
25
  write: (content) => encodeDocumentPackage("pptx", buildPptxPackage(content))
49
26
  } },
50
27
  odt: { content: {
51
- read: (bytes, options) => {
52
- throwIfAborted(options?.signal);
53
- return readOdtContent(decodeDocumentPackage("odt", requireArrayBufferBytes(bytes)));
54
- },
28
+ read: CONTENT_READERS.odt,
55
29
  write: (content) => encodeDocumentPackage("odt", buildOdtPackage(content))
56
30
  } },
57
31
  odp: { content: {
58
- read: (bytes, options) => {
59
- throwIfAborted(options?.signal);
60
- return readOdpContent(decodeDocumentPackage("odp", requireArrayBufferBytes(bytes)));
61
- },
32
+ read: CONTENT_READERS.odp,
62
33
  write: (content) => encodeDocumentPackage("odp", buildOdpPackage(content))
63
34
  } },
64
35
  ods: { content: {
65
- read: (bytes, options) => {
66
- throwIfAborted(options?.signal);
67
- return readOdsContent(decodeDocumentPackage("ods", requireArrayBufferBytes(bytes)));
68
- },
36
+ read: CONTENT_READERS.ods,
69
37
  write: (content) => encodeDocumentPackage("ods", buildOdsPackage(content))
70
38
  } },
71
39
  odg: { content: {
72
- read: (bytes, options) => {
73
- throwIfAborted(options?.signal);
74
- return readOdgContent(decodeDocumentPackage("odg", requireArrayBufferBytes(bytes)));
75
- },
40
+ read: CONTENT_READERS.odg,
76
41
  write: (content) => encodeDocumentPackage("odg", buildOdgPackage(content))
77
42
  } },
78
- odf: { content: { read: (bytes, options) => {
79
- throwIfAborted(options?.signal);
80
- return readOdfFormulaContent(decodeDocumentPackage("odf", requireArrayBufferBytes(bytes)));
81
- } } },
43
+ odf: { content: { read: CONTENT_READERS.odf } },
82
44
  markdown: { content: {
83
- read: (bytes, options) => readMarkdownContent(decodeMarkdownText(bytes), {
84
- signal: options?.signal,
85
- images: options?.images
86
- }),
45
+ read: CONTENT_READERS.markdown,
87
46
  write: (content) => encodeMarkdownText(buildMarkdownText(content))
88
47
  } },
89
48
  csv: { content: {
90
- read: (bytes) => readCsvContent(decodeCsvText(bytes)),
49
+ read: CONTENT_READERS.csv,
91
50
  write: (content) => encodeCsvText(buildCsvText(content))
92
51
  } },
93
52
  svg: { content: {
94
- read: (bytes) => readSvgContent(decodeSvgText(bytes)),
53
+ read: CONTENT_READERS.svg,
95
54
  write: (content) => encodeSvgText(buildSvgText(content))
96
55
  } },
97
56
  pdf: { layout: {
98
- read: (bytes, options) => readPdf(requireArrayBufferBytes(bytes), { signal: options?.signal }),
57
+ read: readDocumentLayout,
99
58
  write: (layout, options) => writePdf(layout, { signal: options?.signal })
100
59
  } },
101
60
  xlsx: { content: {
102
- read: (bytes, options) => {
103
- throwIfAborted(options?.signal);
104
- return readXlsxContent(decodeDocumentPackage("xlsx", requireArrayBufferBytes(bytes)));
105
- },
61
+ read: CONTENT_READERS.xlsx,
106
62
  write: (content) => encodeDocumentPackage("xlsx", buildXlsxPackageFromContent(content))
107
63
  } }
108
64
  };
109
65
  //#endregion
110
- export { DOCUMENT_FORMAT_CODECS, isArrayBufferBacked, requireArrayBufferBytes };
66
+ export { DOCUMENT_FORMAT_CODECS };
@@ -1,5 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_model_geometry = require("../model/geometry.cjs");
3
+ const require_model_bytes = require("../model/bytes.cjs");
3
4
  const require_layout_shared = require("../layout/shared.cjs");
4
5
  require("../layout/sheets.cjs");
5
6
  const require_layout_drawing = require("../layout/drawing.cjs");
@@ -15,7 +16,7 @@ function buildDocumentBytes(pkg, target) {
15
16
  if (target === "odf") throw new Error("'odf' (a standalone formula document) cannot be built from a DocumentPackage -- there is no ContentDocument-to-odf builder");
16
17
  const content = require_codecs_registry.DOCUMENT_FORMAT_CODECS[target].content;
17
18
  if (!content?.write) throw new Error(`DocumentFormat '${target}' has no content.write codec in DOCUMENT_FORMAT_CODECS, and is not 'pdf'/'odf' -- this is an internal invariant violation, not a caller error`);
18
- return require_codecs_registry.requireArrayBufferBytes(content.write((0, document_schema_js.flattenPackage)(pkg)));
19
+ return require_model_bytes.requireArrayBufferBytes(content.write((0, document_schema_js.flattenPackage)(pkg)));
19
20
  }
20
21
  function pageOfFrame(state, frame) {
21
22
  return state.pages[frame.pageIndex];
@@ -1,8 +1,9 @@
1
1
  import { flipY } from "../model/geometry.js";
2
+ import { requireArrayBufferBytes } from "../model/bytes.js";
2
3
  import { pushCellBorderLines, registerImage, runFont } from "../layout/shared.js";
3
4
  import "../layout/sheets.js";
4
5
  import { convertVector } from "../layout/drawing.js";
5
- import { DOCUMENT_FORMAT_CODECS, requireArrayBufferBytes } from "../codecs/registry.js";
6
+ import { DOCUMENT_FORMAT_CODECS } from "../codecs/registry.js";
6
7
  import { COLOR_BLACK, DEFAULT_LAYOUT_FONT, flattenPackage } from "document-schema.js";
7
8
  import { LAYOUT_FORMAT_VERSION, writePdf } from "pdf-codec";
8
9
  //#region src/convert/from-package.ts
@@ -1,6 +1,11 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_convert_composition = require("./composition.cjs");
3
+ const require_codecs_read = require("../codecs/read.cjs");
3
4
  //#region src/convert/from-pdf.ts
5
+ function readDocumentMetadata(format, bytes, options) {
6
+ if (format === "pdf") return require_codecs_read.readDocumentLayout(bytes, { signal: options?.signal }).metadata;
7
+ return require_codecs_read.CONTENT_READERS[format](bytes, { signal: options?.signal }).metadata;
8
+ }
4
9
  function pdfToDocx(bytes, options) {
5
10
  return require_convert_composition.convertDocumentFromPdf("docx", bytes, options);
6
11
  }
@@ -42,3 +47,4 @@ exports.pdfToOdt = pdfToOdt;
42
47
  exports.pdfToPptx = pdfToPptx;
43
48
  exports.pdfToSvg = pdfToSvg;
44
49
  exports.pdfToXlsx = pdfToXlsx;
50
+ exports.readDocumentMetadata = readDocumentMetadata;
@@ -1,7 +1,12 @@
1
+ import { DocumentFormat } from "./port.cjs";
1
2
  import { CsvWriteOptions, SvgWriteOptions } from "./convert.cjs";
2
- import { DocumentPackage } from "document-schema.js";
3
+ import { DocumentPackage, LayoutMetadata } from "document-schema.js";
3
4
  import { PdfDiagnosticSink } from "pdf-codec";
4
5
  //#region src/convert/from-pdf.d.ts
6
+ interface ReadDocumentMetadataOptions {
7
+ readonly signal?: AbortSignal;
8
+ }
9
+ declare function readDocumentMetadata(format: DocumentFormat, bytes: Uint8Array<ArrayBuffer>, options?: ReadDocumentMetadataOptions): LayoutMetadata;
5
10
  interface PdfToDocumentOptions {
6
11
  readonly signal?: AbortSignal;
7
12
  readonly sink?: PdfDiagnosticSink;
@@ -18,4 +23,4 @@ declare function pdfToCsv(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumen
18
23
  declare function pdfToSvg(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions & SvgWriteOptions): Uint8Array<ArrayBuffer>;
19
24
  declare function pdfToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
20
25
  //#endregion
21
- export { PdfToDocumentOptions, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx };
26
+ export { PdfToDocumentOptions, ReadDocumentMetadataOptions, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx, readDocumentMetadata };
@@ -1,7 +1,12 @@
1
+ import { DocumentFormat } from "./port.js";
1
2
  import { CsvWriteOptions, SvgWriteOptions } from "./convert.js";
2
- import { DocumentPackage } from "document-schema.js";
3
+ import { DocumentPackage, LayoutMetadata } from "document-schema.js";
3
4
  import { PdfDiagnosticSink } from "pdf-codec";
4
5
  //#region src/convert/from-pdf.d.ts
6
+ interface ReadDocumentMetadataOptions {
7
+ readonly signal?: AbortSignal;
8
+ }
9
+ declare function readDocumentMetadata(format: DocumentFormat, bytes: Uint8Array<ArrayBuffer>, options?: ReadDocumentMetadataOptions): LayoutMetadata;
5
10
  interface PdfToDocumentOptions {
6
11
  readonly signal?: AbortSignal;
7
12
  readonly sink?: PdfDiagnosticSink;
@@ -18,4 +23,4 @@ declare function pdfToCsv(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumen
18
23
  declare function pdfToSvg(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions & SvgWriteOptions): Uint8Array<ArrayBuffer>;
19
24
  declare function pdfToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
20
25
  //#endregion
21
- export { PdfToDocumentOptions, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx };
26
+ export { PdfToDocumentOptions, ReadDocumentMetadataOptions, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx, readDocumentMetadata };
@@ -1,5 +1,10 @@
1
1
  import { convertDocumentFromPdf } from "./composition.js";
2
+ import { CONTENT_READERS, readDocumentLayout } from "../codecs/read.js";
2
3
  //#region src/convert/from-pdf.ts
4
+ function readDocumentMetadata(format, bytes, options) {
5
+ if (format === "pdf") return readDocumentLayout(bytes, { signal: options?.signal }).metadata;
6
+ return CONTENT_READERS[format](bytes, { signal: options?.signal }).metadata;
7
+ }
3
8
  function pdfToDocx(bytes, options) {
4
9
  return convertDocumentFromPdf("docx", bytes, options);
5
10
  }
@@ -31,4 +36,4 @@ function pdfToXlsx(bytes, options) {
31
36
  return convertDocumentFromPdf("xlsx", bytes, options);
32
37
  }
33
38
  //#endregion
34
- export { pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx };
39
+ export { pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx, readDocumentMetadata };
@@ -12,9 +12,9 @@ declare const DocumentFormatSchema: z.ZodEnum<{
12
12
  ods: "ods";
13
13
  odg: "odg";
14
14
  svg: "svg";
15
+ odf: "odf";
15
16
  csv: "csv";
16
17
  markdown: "markdown";
17
- odf: "odf";
18
18
  pdf: "pdf";
19
19
  }>;
20
20
  type DocumentFormat = z.infer<typeof DocumentFormatSchema>;
@@ -12,9 +12,9 @@ declare const DocumentFormatSchema: z.ZodEnum<{
12
12
  ods: "ods";
13
13
  odg: "odg";
14
14
  svg: "svg";
15
+ odf: "odf";
15
16
  csv: "csv";
16
17
  markdown: "markdown";
17
- odf: "odf";
18
18
  pdf: "pdf";
19
19
  }>;
20
20
  type DocumentFormat = z.infer<typeof DocumentFormatSchema>;
package/dist/index.cjs CHANGED
@@ -99,6 +99,7 @@ const require_convert_port = require("./convert/port.cjs");
99
99
  const require_convert_composition = require("./convert/composition.cjs");
100
100
  const require_convert_composition_to_pdf = require("./convert/composition-to-pdf.cjs");
101
101
  const require_convert_convert = require("./convert/convert.cjs");
102
+ const require_package_codec = require("./package-codec.cjs");
102
103
  const require_convert_from_pdf = require("./convert/from-pdf.cjs");
103
104
  const require_convert_codec = require("./convert/codec.cjs");
104
105
  const require_odb_components = require("./odb/components.cjs");
@@ -114,10 +115,8 @@ const require_odb_report_render = require("./odb/report/render.cjs");
114
115
  const require_odb_report_source = require("./odb/report/source.cjs");
115
116
  const require_odb_report_content = require("./odb/report/content.cjs");
116
117
  const require_convert_local = require("./convert/local.cjs");
117
- const require_package_codec = require("./package-codec.cjs");
118
118
  const require_convert_from_package = require("./convert/from-package.cjs");
119
119
  const require_convert_document_fonts = require("./convert/document-fonts.cjs");
120
- const require_metadata_read = require("./metadata/read.cjs");
121
120
  const require_metadata_write = require("./metadata/write.cjs");
122
121
  let ooxml_js = require("ooxml.js");
123
122
  let document_schema_js = require("document-schema.js");
@@ -961,7 +960,7 @@ Object.defineProperty(exports, "rangeReference", {
961
960
  }
962
961
  });
963
962
  exports.readCsvContent = require_csv_read.readCsvContent;
964
- exports.readDocumentMetadata = require_metadata_read.readDocumentMetadata;
963
+ exports.readDocumentMetadata = require_convert_from_pdf.readDocumentMetadata;
965
964
  exports.readDocxContent = require_ooxml_docx_read.readDocxContent;
966
965
  exports.readDocxExtras = require_ooxml_docx_extras.readDocxExtras;
967
966
  exports.readFirebirdBackup = require_firebird_backup.readFirebirdBackup;
package/dist/index.d.cts CHANGED
@@ -12,7 +12,7 @@ import { i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFon
12
12
  import { CsvReadOptions, CsvWriteOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, SvgReadOptions, SvgWriteOptions, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odgToSvg, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pptxToDocx, pptxToOdp, pptxToPdf, svgToOdg, svgToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf } from "./convert/convert.cjs";
13
13
  import { UnsupportedFontSourceFormatError, extractSourceFontsForFormat } from "./convert/document-fonts.cjs";
14
14
  import { buildDocumentBytes, layoutDocumentFromPackage } from "./convert/from-package.cjs";
15
- import { PdfToDocumentOptions, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx } from "./convert/from-pdf.cjs";
15
+ import { PdfToDocumentOptions, ReadDocumentMetadataOptions, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx, readDocumentMetadata } from "./convert/from-pdf.cjs";
16
16
  import { createLocalDocumentConverter } from "./convert/local.cjs";
17
17
  import { ReadCsvContentOptions, readCsvContent } from "./csv/read.cjs";
18
18
  import { CsvParseError } from "./csv/records.cjs";
@@ -123,7 +123,6 @@ import { OdbReportContentOptions, OdbReportNotSpecifiedError, readOdbReportConte
123
123
  import { renderOdbReportContent } from "./odb/report/render.cjs";
124
124
  import { OdbReportDataSourceError, odbReportCommandSql, resolveOdbReportRows } from "./odb/report/source.cjs";
125
125
  import { UnsupportedPackageFormatError, decodeDocumentPackage, decodeOdbPackage, encodeDocumentPackage } from "./package-codec.cjs";
126
- import { ReadDocumentMetadataOptions, readDocumentMetadata } from "./metadata/read.cjs";
127
126
  import { MetadataOverrides, SetDocumentMetadataOptions, setDocumentMetadata } from "./metadata/write.cjs";
128
127
  import { throwIfAborted } from "./ports/abort.cjs";
129
128
  import { Alignment, Box, COLOR_BLACK, CellPosition, CellRange, Color as LayoutColor, ContentBlock, ContentBlockSchema, ContentCellValue, ContentCellValueSchema, ContentDocument, ContentDocumentJson, ContentDocumentSchema, ContentDrawPage, ContentDrawPageSchema, ContentImageBlock, ContentImageBlockSchema, ContentListMembership, ContentPageBreak, ContentPageBreakSchema, ContentParagraph, ContentParagraphSchema, ContentPathPoint, ContentPathPointSchema, ContentPathSegment, ContentPathSegmentSchema, ContentRun, ContentRunSchema, ContentSection, ContentSectionSchema, ContentShape, ContentShapeSchema, ContentSheet, ContentSheetCell, ContentSheetCellSchema, ContentSheetColumn, ContentSheetColumnSchema, ContentSheetImage, ContentSheetPrintRange, ContentSheetPrintRangeSchema, ContentSheetPrintSettings, ContentSheetPrintSettingsSchema, ContentSheetRepeatRange, ContentSheetRepeatRangeSchema, ContentSheetRow, ContentSheetRowSchema, ContentSheetSchema, ContentSlide, ContentSlideSchema, ContentStroke, ContentStrokeSchema, ContentSubpath, ContentSubpathSchema, ContentTable, ContentTableCell, ContentTableCellSchema, ContentTableRow, ContentTableRowSchema, ContentTableSchema, ContentVector, ContentVectorSchema, DEFAULT_LAYOUT_FONT, DocumentJsonResult, DocumentPackage, DocumentPackageJson, DocumentPackageSchema, DocumentSchemaKind, FontFace, LayoutFont, LayoutMetadata, Margins, MathAssembledGlyphs, MathBox, MathColor, MathFontMetrics, MathGlyphMetrics, MathGlyphPlacement, MathGlyphRun, MathLayoutItem, MathRule, MathStretchAxis, MathStretchGlyph, MathStretchResult, MathStroke, PAGE_SIZE_A4, PAGE_SIZE_LETTER, PageSize, PositionedFormula, SLIDE_SIZE_STANDARD, SLIDE_SIZE_WIDESCREEN, UnrecognizedDocumentSchemaError, cellReference, columnIndexToLetters, columnLettersToIndex, contentDocumentWithSchema, documentFromJson, documentPackageWithSchema, documentSchemaKindOf, isContentBlock, parseCellReference, parseRangeReference, rangeReference, rgbHexToColor, schemaUriFor } from "document-schema.js";
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ import { i as extractSourceFonts, n as FontSourcePackage, r as createDocumentFon
12
12
  import { CsvReadOptions, CsvWriteOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, SvgReadOptions, SvgWriteOptions, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odgToSvg, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pptxToDocx, pptxToOdp, pptxToPdf, svgToOdg, svgToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf } from "./convert/convert.js";
13
13
  import { UnsupportedFontSourceFormatError, extractSourceFontsForFormat } from "./convert/document-fonts.js";
14
14
  import { buildDocumentBytes, layoutDocumentFromPackage } from "./convert/from-package.js";
15
- import { PdfToDocumentOptions, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx } from "./convert/from-pdf.js";
15
+ import { PdfToDocumentOptions, ReadDocumentMetadataOptions, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx, readDocumentMetadata } from "./convert/from-pdf.js";
16
16
  import { createLocalDocumentConverter } from "./convert/local.js";
17
17
  import { ReadCsvContentOptions, readCsvContent } from "./csv/read.js";
18
18
  import { CsvParseError } from "./csv/records.js";
@@ -123,7 +123,6 @@ import { OdbReportContentOptions, OdbReportNotSpecifiedError, readOdbReportConte
123
123
  import { renderOdbReportContent } from "./odb/report/render.js";
124
124
  import { OdbReportDataSourceError, odbReportCommandSql, resolveOdbReportRows } from "./odb/report/source.js";
125
125
  import { UnsupportedPackageFormatError, decodeDocumentPackage, decodeOdbPackage, encodeDocumentPackage } from "./package-codec.js";
126
- import { ReadDocumentMetadataOptions, readDocumentMetadata } from "./metadata/read.js";
127
126
  import { MetadataOverrides, SetDocumentMetadataOptions, setDocumentMetadata } from "./metadata/write.js";
128
127
  import { throwIfAborted } from "./ports/abort.js";
129
128
  import { Attribute, AttributeSchema, BinaryPart, BinaryPartSchema, Comment, CommentSchema, CompactAttrPairs, CompactPackage, CompactPackageSchema, CompactPart, CompactPartSchema, CompactXmlNode, CompactXmlNodeSchema, DefinedName, DefinedNameSchema, Footnote, FootnoteSchema, NumberingDefinition, NumberingDefinitionSchema, NumberingDefinitions, NumberingLevel, NumberingLevelSchema, Package, PackageSchema, Part, PartSchema, Relationship, XmlCdata, XmlCdataSchema, XmlComment, XmlCommentSchema, XmlDeclaration, XmlDeclarationSchema, XmlElement, XmlElementSchema, XmlNode, XmlNodeSchema, XmlPart, XmlPartSchema, XmlPi, XmlPiSchema, XmlText, XmlTextSchema, attr, base64ToBytes, buildXlsxPackageFromContent as buildXlsxPackage, buildXml, bytesToBase64, childrenWithTag, compactCodec, compactPackageCodec, decodeCompactPackage, decodeEntities, decodePackage, elementsWithTag, encodeCompactPackage, encodePackage, fromCompact, isCompactXmlNode, isXmlNode, packageCodec, parsePackage, parseXml, readXlsxContent, resolveRelationships, rootElement, serializePackage, textContent as textContent$1, toCompact, unzipPackage, walk, xmlCodec, zipPackage } from "ooxml.js";
package/dist/index.js CHANGED
@@ -98,7 +98,8 @@ import { DOCUMENT_FORMATS, DocumentFormatSchema } from "./convert/port.js";
98
98
  import { resolveCompositionPlan } from "./convert/composition.js";
99
99
  import { convertDocument } from "./convert/composition-to-pdf.js";
100
100
  import { OdmUnresolvedSectionError, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odgToSvg, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pptxToDocx, pptxToOdp, pptxToPdf, svgToOdg, svgToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf } from "./convert/convert.js";
101
- import { pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx } from "./convert/from-pdf.js";
101
+ import { UnsupportedPackageFormatError, decodeDocumentPackage, decodeOdbPackage, encodeDocumentPackage } from "./package-codec.js";
102
+ import { pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToSvg, pdfToXlsx, readDocumentMetadata } from "./convert/from-pdf.js";
102
103
  import { csvMarkdownCodec, csvPdfCodec, docxPdfCodec, markdownDocxCodec, markdownOdtCodec, markdownPdfCodec, odgPdfCodec, odgSvgCodec, odpPdfCodec, odpPptxCodec, odsCsvCodec, odsPdfCodec, odsXlsxCodec, odtDocxCodec, odtPdfCodec, pptxPdfCodec, svgPdfCodec, xlsxCsvCodec, xlsxMarkdownCodec, xlsxPdfCodec } from "./convert/codec.js";
103
104
  import { readOdbForms, readOdbReports } from "./odb/components.js";
104
105
  import { HsqldbSqlEvaluationError, HsqldbSqlParseError, HsqldbSqlUnsupportedError } from "./odb/sql/errors.js";
@@ -113,10 +114,8 @@ import { renderOdbReportContent } from "./odb/report/render.js";
113
114
  import { OdbReportDataSourceError, odbReportCommandSql, resolveOdbReportRows } from "./odb/report/source.js";
114
115
  import { OdbReportNotSpecifiedError, readOdbReportContent } from "./odb/report/content.js";
115
116
  import { createLocalDocumentConverter } from "./convert/local.js";
116
- import { UnsupportedPackageFormatError, decodeDocumentPackage, decodeOdbPackage, encodeDocumentPackage } from "./package-codec.js";
117
117
  import { buildDocumentBytes, layoutDocumentFromPackage } from "./convert/from-package.js";
118
118
  import { UnsupportedFontSourceFormatError, extractSourceFontsForFormat } from "./convert/document-fonts.js";
119
- import { readDocumentMetadata } from "./metadata/read.js";
120
119
  import { setDocumentMetadata } from "./metadata/write.js";
121
120
  import { AttributeSchema, BinaryPartSchema, CommentSchema, CompactPackageSchema, CompactPartSchema, CompactXmlNodeSchema, DefinedNameSchema, FootnoteSchema, NumberingDefinitionSchema, NumberingLevelSchema, PackageSchema, PartSchema, XmlCdataSchema, XmlCommentSchema, XmlDeclarationSchema, XmlElementSchema, XmlNodeSchema, XmlPartSchema, XmlPiSchema, XmlTextSchema, attr, base64ToBytes, buildXlsxPackageFromContent as buildXlsxPackage, buildXml, bytesToBase64, childrenWithTag, compactCodec, compactPackageCodec, decodeCompactPackage, decodeEntities, decodePackage, elementsWithTag, encodeCompactPackage, encodePackage, fromCompact, isCompactXmlNode, isXmlNode, packageCodec, parsePackage, parseXml, readXlsxContent, resolveRelationships, rootElement, serializePackage, textContent as textContent$1, toCompact, unzipPackage, walk, xmlCodec, zipPackage } from "ooxml.js";
122
121
  import { COLOR_BLACK, ContentBlockSchema, ContentCellValueSchema, ContentDocumentSchema, ContentDrawPageSchema, ContentImageBlockSchema, ContentPageBreakSchema, ContentParagraphSchema, ContentPathPointSchema, ContentPathSegmentSchema, ContentRunSchema, ContentSectionSchema, ContentShapeSchema, ContentSheetCellSchema, ContentSheetColumnSchema, ContentSheetPrintRangeSchema, ContentSheetPrintSettingsSchema, ContentSheetRepeatRangeSchema, ContentSheetRowSchema, ContentSheetSchema, ContentSlideSchema, ContentStrokeSchema, ContentSubpathSchema, ContentTableCellSchema, ContentTableRowSchema, ContentTableSchema, ContentVectorSchema, DEFAULT_LAYOUT_FONT, DocumentPackageSchema, PAGE_SIZE_A4, PAGE_SIZE_LETTER, SLIDE_SIZE_STANDARD, SLIDE_SIZE_WIDESCREEN, UnrecognizedDocumentSchemaError, cellReference, columnIndexToLetters, columnLettersToIndex, contentDocumentWithSchema, documentFromJson, documentPackageWithSchema, documentSchemaKindOf, isContentBlock, parseCellReference, parseRangeReference, rangeReference, rgbHexToColor, schemaUriFor } from "document-schema.js";
@@ -1,4 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_model_bytes = require("../model/bytes.cjs");
2
3
  const require_ports_abort = require("../ports/abort.cjs");
3
4
  const require_codecs_registry = require("../codecs/registry.cjs");
4
5
  let pdf_codec = require("pdf-codec");
@@ -24,7 +25,7 @@ function readContentForFormat(format, bytes, options) {
24
25
  function buildBytesForRebuildFormat(format, content) {
25
26
  const codec = require_codecs_registry.DOCUMENT_FORMAT_CODECS[format].content;
26
27
  if (!codec?.write) throw new Error(`RebuildFormat '${format}' has no content.write codec in DOCUMENT_FORMAT_CODECS -- this is an internal invariant violation, not a caller error`);
27
- return require_codecs_registry.requireArrayBufferBytes(codec.write(content));
28
+ return require_model_bytes.requireArrayBufferBytes(codec.write(content));
28
29
  }
29
30
  function mergeMetadata(current, overrides) {
30
31
  return {
@@ -1,5 +1,6 @@
1
+ import { requireArrayBufferBytes } from "../model/bytes.js";
1
2
  import { throwIfAborted } from "../ports/abort.js";
2
- import { DOCUMENT_FORMAT_CODECS, requireArrayBufferBytes } from "../codecs/registry.js";
3
+ import { DOCUMENT_FORMAT_CODECS } from "../codecs/registry.js";
3
4
  import { readPdf, writePdf } from "pdf-codec";
4
5
  //#region src/metadata/write.ts
5
6
  const REBUILD_FORMATS = {
@@ -94,6 +94,13 @@ const SvgBytesSchema = zod.z.instanceof(Uint8Array).refine((bytes) => {
94
94
  if (!isWellFormedUtf8Text(bytes)) return false;
95
95
  return new TextDecoder().decode(bytes).toLowerCase().includes("<svg");
96
96
  }, { message: "not a valid SVG file: not well-formed UTF-8 text containing an <svg root element" });
97
+ function isArrayBufferBacked(bytes) {
98
+ return bytes.buffer instanceof ArrayBuffer;
99
+ }
100
+ function requireArrayBufferBytes(bytes) {
101
+ if (!isArrayBufferBacked(bytes)) throw new TypeError("expected an ArrayBuffer-backed Uint8Array, received one backed by a SharedArrayBuffer");
102
+ return bytes;
103
+ }
97
104
  //#endregion
98
105
  exports.CsvBytesSchema = CsvBytesSchema;
99
106
  exports.DocxBytesSchema = DocxBytesSchema;
@@ -106,3 +113,4 @@ exports.PdfBytesSchema = PdfBytesSchema;
106
113
  exports.PptxBytesSchema = PptxBytesSchema;
107
114
  exports.SvgBytesSchema = SvgBytesSchema;
108
115
  exports.XlsxBytesSchema = XlsxBytesSchema;
116
+ exports.requireArrayBufferBytes = requireArrayBufferBytes;
@@ -11,5 +11,6 @@ declare const OdgBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<Ar
11
11
  declare const MarkdownBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
12
12
  declare const CsvBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
13
13
  declare const SvgBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
14
+ declare function requireArrayBufferBytes(bytes: Uint8Array): Uint8Array<ArrayBuffer>;
14
15
  //#endregion
15
- export { CsvBytesSchema, DocxBytesSchema, MarkdownBytesSchema, OdgBytesSchema, OdpBytesSchema, OdsBytesSchema, OdtBytesSchema, PdfBytesSchema, PptxBytesSchema, SvgBytesSchema, XlsxBytesSchema };
16
+ export { CsvBytesSchema, DocxBytesSchema, MarkdownBytesSchema, OdgBytesSchema, OdpBytesSchema, OdsBytesSchema, OdtBytesSchema, PdfBytesSchema, PptxBytesSchema, SvgBytesSchema, XlsxBytesSchema, requireArrayBufferBytes };
@@ -11,5 +11,6 @@ declare const OdgBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<Ar
11
11
  declare const MarkdownBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
12
12
  declare const CsvBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
13
13
  declare const SvgBytesSchema: z.ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>;
14
+ declare function requireArrayBufferBytes(bytes: Uint8Array): Uint8Array<ArrayBuffer>;
14
15
  //#endregion
15
- export { CsvBytesSchema, DocxBytesSchema, MarkdownBytesSchema, OdgBytesSchema, OdpBytesSchema, OdsBytesSchema, OdtBytesSchema, PdfBytesSchema, PptxBytesSchema, SvgBytesSchema, XlsxBytesSchema };
16
+ export { CsvBytesSchema, DocxBytesSchema, MarkdownBytesSchema, OdgBytesSchema, OdpBytesSchema, OdsBytesSchema, OdtBytesSchema, PdfBytesSchema, PptxBytesSchema, SvgBytesSchema, XlsxBytesSchema, requireArrayBufferBytes };
@@ -93,5 +93,12 @@ const SvgBytesSchema = z.instanceof(Uint8Array).refine((bytes) => {
93
93
  if (!isWellFormedUtf8Text(bytes)) return false;
94
94
  return new TextDecoder().decode(bytes).toLowerCase().includes("<svg");
95
95
  }, { message: "not a valid SVG file: not well-formed UTF-8 text containing an <svg root element" });
96
+ function isArrayBufferBacked(bytes) {
97
+ return bytes.buffer instanceof ArrayBuffer;
98
+ }
99
+ function requireArrayBufferBytes(bytes) {
100
+ if (!isArrayBufferBacked(bytes)) throw new TypeError("expected an ArrayBuffer-backed Uint8Array, received one backed by a SharedArrayBuffer");
101
+ return bytes;
102
+ }
96
103
  //#endregion
97
- export { CsvBytesSchema, DocxBytesSchema, MarkdownBytesSchema, OdgBytesSchema, OdpBytesSchema, OdsBytesSchema, OdtBytesSchema, PdfBytesSchema, PptxBytesSchema, SvgBytesSchema, XlsxBytesSchema };
104
+ export { CsvBytesSchema, DocxBytesSchema, MarkdownBytesSchema, OdgBytesSchema, OdpBytesSchema, OdsBytesSchema, OdtBytesSchema, PdfBytesSchema, PptxBytesSchema, SvgBytesSchema, XlsxBytesSchema, requireArrayBufferBytes };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "documents.js",
3
- "version": "4.4.0",
3
+ "version": "4.4.2",
4
4
  "description": "Bidirectional docx/pptx <-> PDF conversion and a read+write editable OOXML document model, built on ooxml.js and Zod 4 codecs.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -104,8 +104,8 @@
104
104
  "document-schema.js": "^4.8.0",
105
105
  "fflate": "^0.8.3",
106
106
  "markdown-codec": "^4.1.0",
107
- "odf.js": "^5.1.1",
108
- "ooxml.js": "^4.4.2",
107
+ "odf.js": "^5.1.2",
108
+ "ooxml.js": "^4.4.4",
109
109
  "pdf-codec": "^3.2.0",
110
110
  "temml": "0.13.4",
111
111
  "zod": "^4.4.3"
@@ -1,15 +0,0 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_convert_convert = require("../convert/convert.cjs");
3
- const require_codecs_registry = require("../codecs/registry.cjs");
4
- let pdf_codec = require("pdf-codec");
5
- //#region src/metadata/read.ts
6
- function readDocumentMetadata(format, bytes, options) {
7
- const signal = options?.signal;
8
- if (format === "xlsx") return (0, pdf_codec.readPdf)(require_convert_convert.xlsxToPdf(bytes, { signal }), { signal }).metadata;
9
- const codecs = require_codecs_registry.DOCUMENT_FORMAT_CODECS[format];
10
- if (codecs.content) return codecs.content.read(bytes, { signal }).metadata;
11
- if (codecs.layout) return codecs.layout.read(bytes, { signal }).metadata;
12
- throw new Error(`DocumentFormat '${format}' has neither a content nor a layout codec in DOCUMENT_FORMAT_CODECS, and is not 'xlsx' -- this is an internal invariant violation, not a caller error`);
13
- }
14
- //#endregion
15
- exports.readDocumentMetadata = readDocumentMetadata;
@@ -1,9 +0,0 @@
1
- import { DocumentFormat } from "../convert/port.cjs";
2
- import { LayoutMetadata } from "document-schema.js";
3
- //#region src/metadata/read.d.ts
4
- interface ReadDocumentMetadataOptions {
5
- readonly signal?: AbortSignal;
6
- }
7
- declare function readDocumentMetadata(format: DocumentFormat, bytes: Uint8Array<ArrayBuffer>, options?: ReadDocumentMetadataOptions): LayoutMetadata;
8
- //#endregion
9
- export { ReadDocumentMetadataOptions, readDocumentMetadata };
@@ -1,9 +0,0 @@
1
- import { DocumentFormat } from "../convert/port.js";
2
- import { LayoutMetadata } from "document-schema.js";
3
- //#region src/metadata/read.d.ts
4
- interface ReadDocumentMetadataOptions {
5
- readonly signal?: AbortSignal;
6
- }
7
- declare function readDocumentMetadata(format: DocumentFormat, bytes: Uint8Array<ArrayBuffer>, options?: ReadDocumentMetadataOptions): LayoutMetadata;
8
- //#endregion
9
- export { ReadDocumentMetadataOptions, readDocumentMetadata };
@@ -1,14 +0,0 @@
1
- import { xlsxToPdf } from "../convert/convert.js";
2
- import { DOCUMENT_FORMAT_CODECS } from "../codecs/registry.js";
3
- import { readPdf } from "pdf-codec";
4
- //#region src/metadata/read.ts
5
- function readDocumentMetadata(format, bytes, options) {
6
- const signal = options?.signal;
7
- if (format === "xlsx") return readPdf(xlsxToPdf(bytes, { signal }), { signal }).metadata;
8
- const codecs = DOCUMENT_FORMAT_CODECS[format];
9
- if (codecs.content) return codecs.content.read(bytes, { signal }).metadata;
10
- if (codecs.layout) return codecs.layout.read(bytes, { signal }).metadata;
11
- throw new Error(`DocumentFormat '${format}' has neither a content nor a layout codec in DOCUMENT_FORMAT_CODECS, and is not 'xlsx' -- this is an internal invariant violation, not a caller error`);
12
- }
13
- //#endregion
14
- export { readDocumentMetadata };