js.documents 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +34 -28
  2. package/dist/codecs/registry.cjs +7 -0
  3. package/dist/codecs/registry.js +7 -0
  4. package/dist/convert/capability.cjs +5 -0
  5. package/dist/convert/capability.js +5 -0
  6. package/dist/convert/codec.cjs +20 -0
  7. package/dist/convert/codec.d.cts +5 -1
  8. package/dist/convert/codec.d.ts +5 -1
  9. package/dist/convert/codec.js +19 -3
  10. package/dist/convert/composition.cjs +32 -7
  11. package/dist/convert/composition.d.cts +9 -5
  12. package/dist/convert/composition.d.ts +9 -5
  13. package/dist/convert/composition.js +32 -7
  14. package/dist/convert/convert.cjs +32 -0
  15. package/dist/convert/convert.d.cts +18 -1
  16. package/dist/convert/convert.d.ts +18 -1
  17. package/dist/convert/convert.js +25 -1
  18. package/dist/convert/local.cjs +2 -0
  19. package/dist/convert/local.js +2 -0
  20. package/dist/convert/port.cjs +1 -0
  21. package/dist/convert/port.d.cts +3 -0
  22. package/dist/convert/port.d.ts +3 -0
  23. package/dist/convert/port.js +1 -0
  24. package/dist/csv/read.cjs +85 -0
  25. package/dist/csv/read.d.cts +10 -0
  26. package/dist/csv/read.d.ts +10 -0
  27. package/dist/csv/read.js +84 -0
  28. package/dist/csv/records.cjs +85 -0
  29. package/dist/csv/records.d.cts +10 -0
  30. package/dist/csv/records.d.ts +10 -0
  31. package/dist/csv/records.js +80 -0
  32. package/dist/csv/text.cjs +22 -0
  33. package/dist/csv/text.d.cts +8 -0
  34. package/dist/csv/text.d.ts +8 -0
  35. package/dist/csv/text.js +19 -0
  36. package/dist/csv/write.cjs +75 -0
  37. package/dist/csv/write.d.cts +22 -0
  38. package/dist/csv/write.d.ts +22 -0
  39. package/dist/csv/write.js +71 -0
  40. package/dist/index.cjs +27 -1
  41. package/dist/index.d.cts +9 -5
  42. package/dist/index.d.ts +9 -5
  43. package/dist/index.js +9 -5
  44. package/dist/layout/reconstruct.cjs +1 -1
  45. package/dist/layout/reconstruct.js +1 -1
  46. package/dist/metadata/write.cjs +1 -0
  47. package/dist/metadata/write.js +1 -0
  48. package/dist/model/bytes.cjs +2 -0
  49. package/dist/model/bytes.d.cts +2 -1
  50. package/dist/model/bytes.d.ts +2 -1
  51. package/dist/model/bytes.js +2 -1
  52. package/dist/odb/csv.cjs +3 -6
  53. package/dist/odb/csv.js +3 -6
  54. package/package.json +1 -1
@@ -15,6 +15,9 @@ import { readOdpContent } from "../odf/odp/read.js";
15
15
  import { readOdsContent } from "../odf/ods/read.js";
16
16
  import { readOdgContent } from "../odf/odg/read.js";
17
17
  import { decodeMarkdownText, encodeMarkdownText } from "../markdown/text.js";
18
+ import { decodeCsvText, encodeCsvText } from "../csv/text.js";
19
+ import { readCsvContent } from "../csv/read.js";
20
+ import { buildCsvText } from "../csv/write.js";
18
21
  import { convertWordprocessingToLayout } from "../layout/engine.js";
19
22
  import { convertPresentationToLayout } from "../layout/slides.js";
20
23
  import { throwIfAborted } from "../ports/abort.js";
@@ -38,8 +41,12 @@ const CONTENT_FORMATS = [
38
41
  "odp",
39
42
  "ods",
40
43
  "odg",
44
+ "csv",
41
45
  "markdown"
42
46
  ];
47
+ function isTextFormatNode(node) {
48
+ return !node.hasSourcePackage;
49
+ }
43
50
  const FORMAT_NODES = {
44
51
  docx: {
45
52
  variant: "wordprocessing",
@@ -115,6 +122,21 @@ const FORMAT_NODES = {
115
122
  build: (content) => buildMarkdownText(content),
116
123
  encode: (text) => encodeMarkdownText(text),
117
124
  hasSourcePackage: false
125
+ },
126
+ csv: {
127
+ variant: "spreadsheet",
128
+ family: "csv",
129
+ decode: (bytes) => decodeCsvText(bytes),
130
+ read: (text, options) => readCsvContent(text, {
131
+ delimiter: options?.delimiter,
132
+ onCellTypeInference: options?.onCellTypeInference
133
+ }),
134
+ build: (content, options) => buildCsvText(content, {
135
+ delimiter: options?.delimiter,
136
+ sheet: options?.sheet
137
+ }),
138
+ encode: (text) => encodeCsvText(text),
139
+ hasSourcePackage: false
118
140
  }
119
141
  };
120
142
  const LAYOUT_CAPABLE = /* @__PURE__ */ new Set([
@@ -161,7 +183,7 @@ function executeBridge(source, target, bytes, options) {
161
183
  const sourceNode = FORMAT_NODES[source];
162
184
  const targetNode = FORMAT_NODES[target];
163
185
  let content;
164
- if (sourceNode.family === "markdown") {
186
+ if (isTextFormatNode(sourceNode)) {
165
187
  const text = sourceNode.decode(bytes);
166
188
  content = sourceNode.read(text, options);
167
189
  } else {
@@ -181,8 +203,8 @@ function executeBridge(source, target, bytes, options) {
181
203
  formatVersion: DOCUMENT_PACKAGE_FORMAT_VERSION,
182
204
  content: buildContent
183
205
  });
184
- if (targetNode.family === "markdown") {
185
- const text = targetNode.build(buildContent);
206
+ if (isTextFormatNode(targetNode)) {
207
+ const text = targetNode.build(buildContent, options);
186
208
  return targetNode.encode(text);
187
209
  }
188
210
  const pkg = targetNode.build(buildContent, options);
@@ -193,7 +215,7 @@ function executeToPdf(format, bytes, options) {
193
215
  const node = FORMAT_NODES[format];
194
216
  let content;
195
217
  let fonts;
196
- if (node.family === "markdown") {
218
+ if (isTextFormatNode(node)) {
197
219
  throwIfAborted(options?.signal);
198
220
  const text = node.decode(bytes);
199
221
  const read = node.read(text, options);
@@ -294,7 +316,10 @@ function executeFromPdf(target, bytes, options) {
294
316
  signal: options?.signal,
295
317
  sink: options?.sink
296
318
  });
297
- const content = RECONSTRUCTORS[node.variant](layout, { signal: options?.signal });
319
+ const content = RECONSTRUCTORS[node.variant](layout, {
320
+ signal: options?.signal,
321
+ onCellTypeInference: options?.onCellTypeInference
322
+ });
298
323
  const pages = layout.pages.map((page) => ({
299
324
  widthPt: page.widthPt,
300
325
  heightPt: page.heightPt
@@ -304,8 +329,8 @@ function executeFromPdf(target, bytes, options) {
304
329
  content,
305
330
  pages
306
331
  });
307
- if (node.family === "markdown") {
308
- const text = node.build(content);
332
+ if (isTextFormatNode(node)) {
333
+ const text = node.build(content, options);
309
334
  return node.encode(text);
310
335
  }
311
336
  const pkg = node.build(content);
@@ -40,6 +40,9 @@ function odgToPdf(bytes, options) {
40
40
  function markdownToPdf(bytes, options) {
41
41
  return require_convert_composition.convertDocument("markdown", "pdf", bytes, options);
42
42
  }
43
+ function csvToPdf(bytes, options) {
44
+ return require_convert_composition.convertDocument("csv", "pdf", bytes, options);
45
+ }
43
46
  const STANDALONE_FORMULA_SIZE_PT = 18;
44
47
  const STANDALONE_FORMULA_MARGIN_PT = 72;
45
48
  function odfToPdf(bytes, options) {
@@ -113,6 +116,9 @@ function pdfToOds(bytes, options) {
113
116
  function pdfToMarkdown(bytes, options) {
114
117
  return require_convert_composition.convertDocument("pdf", "markdown", bytes, options);
115
118
  }
119
+ function pdfToCsv(bytes, options) {
120
+ return require_convert_composition.convertDocument("pdf", "csv", bytes, options);
121
+ }
116
122
  function odtToDocx(bytes, options) {
117
123
  return require_convert_composition.convertDocument("odt", "docx", bytes, options);
118
124
  }
@@ -143,6 +149,18 @@ function markdownToOdt(bytes, options) {
143
149
  function odtToMarkdown(bytes, options) {
144
150
  return require_convert_composition.convertDocument("odt", "markdown", bytes, options);
145
151
  }
152
+ function csvToXlsx(bytes, options) {
153
+ return require_convert_composition.convertDocument("csv", "xlsx", bytes, options);
154
+ }
155
+ function xlsxToCsv(bytes, options) {
156
+ return require_convert_composition.convertDocument("xlsx", "csv", bytes, options);
157
+ }
158
+ function csvToOds(bytes, options) {
159
+ return require_convert_composition.convertDocument("csv", "ods", bytes, options);
160
+ }
161
+ function odsToCsv(bytes, options) {
162
+ return require_convert_composition.convertDocument("ods", "csv", bytes, options);
163
+ }
146
164
  function docxToPptx(bytes, options) {
147
165
  return require_convert_composition.convertDocument("docx", "pptx", bytes, options);
148
166
  }
@@ -167,6 +185,12 @@ function xlsxToMarkdown(bytes, options) {
167
185
  function markdownToXlsx(bytes, options) {
168
186
  return require_convert_composition.convertDocument("markdown", "xlsx", bytes, options);
169
187
  }
188
+ function csvToMarkdown(bytes, options) {
189
+ return require_convert_composition.convertDocument("csv", "markdown", bytes, options);
190
+ }
191
+ function markdownToCsv(bytes, options) {
192
+ return require_convert_composition.convertDocument("markdown", "csv", bytes, options);
193
+ }
170
194
  var OdmUnresolvedSectionError = class extends Error {
171
195
  hrefs;
172
196
  constructor(hrefs) {
@@ -312,11 +336,16 @@ function odbReportToPdf(content, options) {
312
336
  }
313
337
  //#endregion
314
338
  exports.OdmUnresolvedSectionError = OdmUnresolvedSectionError;
339
+ exports.csvToMarkdown = csvToMarkdown;
340
+ exports.csvToOds = csvToOds;
341
+ exports.csvToPdf = csvToPdf;
342
+ exports.csvToXlsx = csvToXlsx;
315
343
  exports.docxToMarkdown = docxToMarkdown;
316
344
  exports.docxToOdt = docxToOdt;
317
345
  exports.docxToPdf = docxToPdf;
318
346
  exports.docxToPptx = docxToPptx;
319
347
  exports.inlineOdmSectionToContentSection = inlineOdmSectionToContentSection;
348
+ exports.markdownToCsv = markdownToCsv;
320
349
  exports.markdownToDocx = markdownToDocx;
321
350
  exports.markdownToOdt = markdownToOdt;
322
351
  exports.markdownToPdf = markdownToPdf;
@@ -332,12 +361,14 @@ exports.odmToPdf = odmToPdf;
332
361
  exports.odpToOdt = odpToOdt;
333
362
  exports.odpToPdf = odpToPdf;
334
363
  exports.odpToPptx = odpToPptx;
364
+ exports.odsToCsv = odsToCsv;
335
365
  exports.odsToPdf = odsToPdf;
336
366
  exports.odsToXlsx = odsToXlsx;
337
367
  exports.odtToDocx = odtToDocx;
338
368
  exports.odtToMarkdown = odtToMarkdown;
339
369
  exports.odtToOdp = odtToOdp;
340
370
  exports.odtToPdf = odtToPdf;
371
+ exports.pdfToCsv = pdfToCsv;
341
372
  exports.pdfToDocx = pdfToDocx;
342
373
  exports.pdfToMarkdown = pdfToMarkdown;
343
374
  exports.pdfToOdg = pdfToOdg;
@@ -349,6 +380,7 @@ exports.pdfToXlsx = pdfToXlsx;
349
380
  exports.pptxToDocx = pptxToDocx;
350
381
  exports.pptxToOdp = pptxToOdp;
351
382
  exports.pptxToPdf = pptxToPdf;
383
+ exports.xlsxToCsv = xlsxToCsv;
352
384
  exports.xlsxToMarkdown = xlsxToMarkdown;
353
385
  exports.xlsxToOds = xlsxToOds;
354
386
  exports.xlsxToPdf = xlsxToPdf;
@@ -1,4 +1,5 @@
1
1
  import { t as ClockPort } from "../clock-C7SUuYN0.cjs";
2
+ import { CellTypeInferenceSink } from "../layout/cell-typing.cjs";
2
3
  import { t as OmmlDiagnostic } from "../shared-DLZ3IQUl.cjs";
3
4
  import { HsqldbDecodeOptions } from "../hsqldb/rowformat.cjs";
4
5
  import { DocumentFontRegistryOptions } from "../fonts/registry.cjs";
@@ -26,6 +27,15 @@ declare function odpToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPd
26
27
  declare function odsToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
27
28
  declare function odgToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
28
29
  declare function markdownToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
30
+ interface CsvReadOptions {
31
+ readonly delimiter?: string;
32
+ readonly onCellTypeInference?: CellTypeInferenceSink;
33
+ }
34
+ interface CsvWriteOptions {
35
+ readonly delimiter?: string;
36
+ readonly sheet?: string;
37
+ }
38
+ declare function csvToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
29
39
  declare function odfToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
30
40
  interface PdfToDocumentOptions {
31
41
  readonly signal?: AbortSignal;
@@ -39,6 +49,7 @@ declare function pdfToOdp(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumen
39
49
  declare function pdfToOdg(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
40
50
  declare function pdfToOds(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
41
51
  declare function pdfToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
52
+ declare function pdfToCsv(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
42
53
  interface DocumentBridgeOptions {
43
54
  readonly signal?: AbortSignal;
44
55
  readonly onDocument?: (pkg: DocumentPackage) => void;
@@ -67,6 +78,10 @@ declare function markdownToDocx(bytes: Uint8Array<ArrayBuffer>, options?: Docume
67
78
  declare function docxToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
68
79
  declare function markdownToOdt(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
69
80
  declare function odtToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
81
+ declare function csvToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
82
+ declare function xlsxToCsv(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
83
+ declare function csvToOds(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
84
+ declare function odsToCsv(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
70
85
  declare function docxToPptx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
71
86
  declare function pptxToDocx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
72
87
  declare function odtToOdp(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
@@ -75,6 +90,8 @@ declare function xlsxToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToP
75
90
  declare function pdfToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
76
91
  declare function xlsxToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions): Uint8Array<ArrayBuffer>;
77
92
  declare function markdownToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions): Uint8Array<ArrayBuffer>;
93
+ declare function csvToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
94
+ declare function markdownToCsv(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
78
95
  interface OdmToPdfOptions extends DocumentToPdfOptions {
79
96
  readonly resolveSubDocument?: (href: string) => Uint8Array<ArrayBuffer> | undefined;
80
97
  }
@@ -103,4 +120,4 @@ interface OdbReportToOdtOptions {
103
120
  declare function odbReportToOdt(content: ContentDocument, options?: OdbReportToOdtOptions): Uint8Array<ArrayBuffer>;
104
121
  declare function odbReportToPdf(content: ContentDocument, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
105
122
  //#endregion
106
- export { ComposedDocumentOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, PdfToDocumentOptions, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
123
+ export { ComposedDocumentOptions, CsvReadOptions, CsvWriteOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, PdfToDocumentOptions, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
@@ -1,4 +1,5 @@
1
1
  import { t as ClockPort } from "../clock-C7SUuYN0.js";
2
+ import { CellTypeInferenceSink } from "../layout/cell-typing.js";
2
3
  import { t as OmmlDiagnostic } from "../shared-DUOzjwcL.js";
3
4
  import { HsqldbDecodeOptions } from "../hsqldb/rowformat.js";
4
5
  import { DocumentFontRegistryOptions } from "../fonts/registry.js";
@@ -26,6 +27,15 @@ declare function odpToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPd
26
27
  declare function odsToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
27
28
  declare function odgToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
28
29
  declare function markdownToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
30
+ interface CsvReadOptions {
31
+ readonly delimiter?: string;
32
+ readonly onCellTypeInference?: CellTypeInferenceSink;
33
+ }
34
+ interface CsvWriteOptions {
35
+ readonly delimiter?: string;
36
+ readonly sheet?: string;
37
+ }
38
+ declare function csvToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
29
39
  declare function odfToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
30
40
  interface PdfToDocumentOptions {
31
41
  readonly signal?: AbortSignal;
@@ -39,6 +49,7 @@ declare function pdfToOdp(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumen
39
49
  declare function pdfToOdg(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
40
50
  declare function pdfToOds(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
41
51
  declare function pdfToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
52
+ declare function pdfToCsv(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
42
53
  interface DocumentBridgeOptions {
43
54
  readonly signal?: AbortSignal;
44
55
  readonly onDocument?: (pkg: DocumentPackage) => void;
@@ -67,6 +78,10 @@ declare function markdownToDocx(bytes: Uint8Array<ArrayBuffer>, options?: Docume
67
78
  declare function docxToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
68
79
  declare function markdownToOdt(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
69
80
  declare function odtToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
81
+ declare function csvToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
82
+ declare function xlsxToCsv(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
83
+ declare function csvToOds(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
84
+ declare function odsToCsv(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
70
85
  declare function docxToPptx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
71
86
  declare function pptxToDocx(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
72
87
  declare function odtToOdp(bytes: Uint8Array<ArrayBuffer>, options?: DocumentBridgeOptions): Uint8Array<ArrayBuffer>;
@@ -75,6 +90,8 @@ declare function xlsxToPdf(bytes: Uint8Array<ArrayBuffer>, options?: DocumentToP
75
90
  declare function pdfToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: PdfToDocumentOptions): Uint8Array<ArrayBuffer>;
76
91
  declare function xlsxToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions): Uint8Array<ArrayBuffer>;
77
92
  declare function markdownToXlsx(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions): Uint8Array<ArrayBuffer>;
93
+ declare function csvToMarkdown(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions & CsvReadOptions): Uint8Array<ArrayBuffer>;
94
+ declare function markdownToCsv(bytes: Uint8Array<ArrayBuffer>, options?: ComposedDocumentOptions & CsvWriteOptions): Uint8Array<ArrayBuffer>;
78
95
  interface OdmToPdfOptions extends DocumentToPdfOptions {
79
96
  readonly resolveSubDocument?: (href: string) => Uint8Array<ArrayBuffer> | undefined;
80
97
  }
@@ -103,4 +120,4 @@ interface OdbReportToOdtOptions {
103
120
  declare function odbReportToOdt(content: ContentDocument, options?: OdbReportToOdtOptions): Uint8Array<ArrayBuffer>;
104
121
  declare function odbReportToPdf(content: ContentDocument, options?: DocumentToPdfOptions): Uint8Array<ArrayBuffer>;
105
122
  //#endregion
106
- export { ComposedDocumentOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, PdfToDocumentOptions, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
123
+ export { ComposedDocumentOptions, CsvReadOptions, CsvWriteOptions, DocumentBridgeOptions, DocumentToPdfOptions, OdbConversionOptions, OdbReportToDocxOptions, OdbReportToOdtOptions, OdbToCsvOptions, OdmToPdfOptions, OdmUnresolvedSectionError, PdfToDocumentOptions, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
@@ -39,6 +39,9 @@ function odgToPdf(bytes, options) {
39
39
  function markdownToPdf(bytes, options) {
40
40
  return convertDocument("markdown", "pdf", bytes, options);
41
41
  }
42
+ function csvToPdf(bytes, options) {
43
+ return convertDocument("csv", "pdf", bytes, options);
44
+ }
42
45
  const STANDALONE_FORMULA_SIZE_PT = 18;
43
46
  const STANDALONE_FORMULA_MARGIN_PT = 72;
44
47
  function odfToPdf(bytes, options) {
@@ -112,6 +115,9 @@ function pdfToOds(bytes, options) {
112
115
  function pdfToMarkdown(bytes, options) {
113
116
  return convertDocument("pdf", "markdown", bytes, options);
114
117
  }
118
+ function pdfToCsv(bytes, options) {
119
+ return convertDocument("pdf", "csv", bytes, options);
120
+ }
115
121
  function odtToDocx(bytes, options) {
116
122
  return convertDocument("odt", "docx", bytes, options);
117
123
  }
@@ -142,6 +148,18 @@ function markdownToOdt(bytes, options) {
142
148
  function odtToMarkdown(bytes, options) {
143
149
  return convertDocument("odt", "markdown", bytes, options);
144
150
  }
151
+ function csvToXlsx(bytes, options) {
152
+ return convertDocument("csv", "xlsx", bytes, options);
153
+ }
154
+ function xlsxToCsv(bytes, options) {
155
+ return convertDocument("xlsx", "csv", bytes, options);
156
+ }
157
+ function csvToOds(bytes, options) {
158
+ return convertDocument("csv", "ods", bytes, options);
159
+ }
160
+ function odsToCsv(bytes, options) {
161
+ return convertDocument("ods", "csv", bytes, options);
162
+ }
145
163
  function docxToPptx(bytes, options) {
146
164
  return convertDocument("docx", "pptx", bytes, options);
147
165
  }
@@ -166,6 +184,12 @@ function xlsxToMarkdown(bytes, options) {
166
184
  function markdownToXlsx(bytes, options) {
167
185
  return convertDocument("markdown", "xlsx", bytes, options);
168
186
  }
187
+ function csvToMarkdown(bytes, options) {
188
+ return convertDocument("csv", "markdown", bytes, options);
189
+ }
190
+ function markdownToCsv(bytes, options) {
191
+ return convertDocument("markdown", "csv", bytes, options);
192
+ }
169
193
  var OdmUnresolvedSectionError = class extends Error {
170
194
  hrefs;
171
195
  constructor(hrefs) {
@@ -310,4 +334,4 @@ function odbReportToPdf(content, options) {
310
334
  });
311
335
  }
312
336
  //#endregion
313
- export { OdmUnresolvedSectionError, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
337
+ export { OdmUnresolvedSectionError, csvToMarkdown, csvToOds, csvToPdf, csvToXlsx, docxToMarkdown, docxToOdt, docxToPdf, docxToPptx, inlineOdmSectionToContentSection, markdownToCsv, markdownToDocx, markdownToOdt, markdownToPdf, markdownToXlsx, odbReportToDocx, odbReportToOdt, odbReportToPdf, odbToCsv, odbToXlsx, odfToPdf, odgToPdf, odmToPdf, odpToOdt, odpToPdf, odpToPptx, odsToCsv, odsToPdf, odsToXlsx, odtToDocx, odtToMarkdown, odtToOdp, odtToPdf, pdfToCsv, pdfToDocx, pdfToMarkdown, pdfToOdg, pdfToOdp, pdfToOds, pdfToOdt, pdfToPptx, pdfToXlsx, pptxToDocx, pptxToOdp, pptxToPdf, xlsxToCsv, xlsxToMarkdown, xlsxToOds, xlsxToPdf };
@@ -83,6 +83,8 @@ function createLocalDocumentConverter() {
83
83
  onSubstitution: (s, c) => diagnostics.push(substitutionDiagnostic(s, c)),
84
84
  sink: (d) => diagnostics.push(fromPdfDiagnostic(d)),
85
85
  images: options.images,
86
+ delimiter: options.delimiter,
87
+ sheet: options.sheet,
86
88
  clock: options.clock,
87
89
  onDocument
88
90
  });
@@ -82,6 +82,8 @@ function createLocalDocumentConverter() {
82
82
  onSubstitution: (s, c) => diagnostics.push(substitutionDiagnostic(s, c)),
83
83
  sink: (d) => diagnostics.push(fromPdfDiagnostic(d)),
84
84
  images: options.images,
85
+ delimiter: options.delimiter,
86
+ sheet: options.sheet,
85
87
  clock: options.clock,
86
88
  onDocument
87
89
  });
@@ -9,6 +9,7 @@ const DocumentFormatSchema = require("zod").z.enum([
9
9
  "ods",
10
10
  "odg",
11
11
  "odf",
12
+ "csv",
12
13
  "markdown",
13
14
  "pdf"
14
15
  ]);
@@ -12,6 +12,7 @@ declare const DocumentFormatSchema: z.ZodEnum<{
12
12
  ods: "ods";
13
13
  odg: "odg";
14
14
  odf: "odf";
15
+ csv: "csv";
15
16
  markdown: "markdown";
16
17
  pdf: "pdf";
17
18
  }>;
@@ -41,6 +42,8 @@ interface ConversionOptions {
41
42
  readonly fonts?: readonly ProvidedFont[];
42
43
  readonly onFontSubstitution?: (substitution: FontSubstitution) => void;
43
44
  readonly images?: MarkdownImageResolver;
45
+ readonly delimiter?: string;
46
+ readonly sheet?: string;
44
47
  readonly clock?: ClockPort;
45
48
  }
46
49
  interface DocumentConverter {
@@ -12,6 +12,7 @@ declare const DocumentFormatSchema: z.ZodEnum<{
12
12
  ods: "ods";
13
13
  odg: "odg";
14
14
  odf: "odf";
15
+ csv: "csv";
15
16
  markdown: "markdown";
16
17
  pdf: "pdf";
17
18
  }>;
@@ -41,6 +42,8 @@ interface ConversionOptions {
41
42
  readonly fonts?: readonly ProvidedFont[];
42
43
  readonly onFontSubstitution?: (substitution: FontSubstitution) => void;
43
44
  readonly images?: MarkdownImageResolver;
45
+ readonly delimiter?: string;
46
+ readonly sheet?: string;
44
47
  readonly clock?: ClockPort;
45
48
  }
46
49
  interface DocumentConverter {
@@ -9,6 +9,7 @@ const DocumentFormatSchema = z.enum([
9
9
  "ods",
10
10
  "odg",
11
11
  "odf",
12
+ "csv",
12
13
  "markdown",
13
14
  "pdf"
14
15
  ]);
@@ -0,0 +1,85 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_layout_cell_typing = require("../layout/cell-typing.cjs");
3
+ const require_csv_records = require("./records.cjs");
4
+ let document_schema_js = require("document-schema.js");
5
+ //#region src/csv/read.ts
6
+ const HEADER_ROW_INDEX = 0;
7
+ const SHEET_NAME = "Sheet1";
8
+ const COLUMN_WIDTH_PT = 64;
9
+ const ROW_HEIGHT_PT = 15;
10
+ const MARGIN_PT = 56.69291338582677;
11
+ const DEFAULT_PRINT_SETTINGS = {
12
+ pageSize: document_schema_js.PAGE_SIZE_A4,
13
+ margins: {
14
+ topPt: MARGIN_PT,
15
+ rightPt: MARGIN_PT,
16
+ bottomPt: MARGIN_PT,
17
+ leftPt: MARGIN_PT
18
+ },
19
+ gridlines: true,
20
+ headers: true,
21
+ pageOrder: "downThenOver"
22
+ };
23
+ function dataCell(rowIndex, columnIndex, field, onCellTypeInference) {
24
+ const inference = field === "" ? void 0 : require_layout_cell_typing.inferCellValue(field);
25
+ if (inference !== void 0) onCellTypeInference?.({
26
+ sheetIndex: 0,
27
+ row: rowIndex,
28
+ column: columnIndex,
29
+ displayText: field,
30
+ ...inference
31
+ });
32
+ return {
33
+ row: rowIndex,
34
+ column: columnIndex,
35
+ value: field === "" ? { kind: "empty" } : inference?.outcome === "retyped" ? inference.value : {
36
+ kind: "string",
37
+ value: field
38
+ },
39
+ displayText: field
40
+ };
41
+ }
42
+ function readCsvContent(text, options) {
43
+ const records = require_csv_records.parseCsvRecords(text, options?.delimiter ?? ",");
44
+ const onCellTypeInference = options?.onCellTypeInference;
45
+ const columnCount = records.reduce((max, record) => Math.max(max, record.length), 0);
46
+ const cells = [];
47
+ records.forEach((record, rowIndex) => {
48
+ for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
49
+ const field = record[columnIndex] ?? "";
50
+ if (rowIndex === HEADER_ROW_INDEX) cells.push({
51
+ row: rowIndex,
52
+ column: columnIndex,
53
+ value: {
54
+ kind: "string",
55
+ value: field
56
+ },
57
+ displayText: field
58
+ });
59
+ else cells.push(dataCell(rowIndex, columnIndex, field, onCellTypeInference));
60
+ }
61
+ });
62
+ const columns = Array.from({ length: columnCount }, (_unused, index) => ({
63
+ index,
64
+ widthPt: COLUMN_WIDTH_PT
65
+ }));
66
+ const rows = Array.from({ length: records.length }, (_unused, index) => ({
67
+ index,
68
+ heightPt: ROW_HEIGHT_PT
69
+ }));
70
+ return {
71
+ kind: "spreadsheet",
72
+ formatVersion: document_schema_js.CONTENT_FORMAT_VERSION,
73
+ metadata: {},
74
+ sheets: [{
75
+ name: SHEET_NAME,
76
+ cells,
77
+ columns,
78
+ rows,
79
+ images: [],
80
+ printSettings: DEFAULT_PRINT_SETTINGS
81
+ }]
82
+ };
83
+ }
84
+ //#endregion
85
+ exports.readCsvContent = readCsvContent;
@@ -0,0 +1,10 @@
1
+ import { CellTypeInferenceSink } from "../layout/cell-typing.cjs";
2
+ import { ContentDocument } from "document-schema.js";
3
+ //#region src/csv/read.d.ts
4
+ interface ReadCsvContentOptions {
5
+ readonly delimiter?: string;
6
+ readonly onCellTypeInference?: CellTypeInferenceSink;
7
+ }
8
+ declare function readCsvContent(text: string, options?: ReadCsvContentOptions): ContentDocument;
9
+ //#endregion
10
+ export { ReadCsvContentOptions, readCsvContent };
@@ -0,0 +1,10 @@
1
+ import { CellTypeInferenceSink } from "../layout/cell-typing.js";
2
+ import { ContentDocument } from "document-schema.js";
3
+ //#region src/csv/read.d.ts
4
+ interface ReadCsvContentOptions {
5
+ readonly delimiter?: string;
6
+ readonly onCellTypeInference?: CellTypeInferenceSink;
7
+ }
8
+ declare function readCsvContent(text: string, options?: ReadCsvContentOptions): ContentDocument;
9
+ //#endregion
10
+ export { ReadCsvContentOptions, readCsvContent };
@@ -0,0 +1,84 @@
1
+ import { inferCellValue } from "../layout/cell-typing.js";
2
+ import { parseCsvRecords } from "./records.js";
3
+ import { CONTENT_FORMAT_VERSION, PAGE_SIZE_A4 } from "document-schema.js";
4
+ //#region src/csv/read.ts
5
+ const HEADER_ROW_INDEX = 0;
6
+ const SHEET_NAME = "Sheet1";
7
+ const COLUMN_WIDTH_PT = 64;
8
+ const ROW_HEIGHT_PT = 15;
9
+ const MARGIN_PT = 56.69291338582677;
10
+ const DEFAULT_PRINT_SETTINGS = {
11
+ pageSize: PAGE_SIZE_A4,
12
+ margins: {
13
+ topPt: MARGIN_PT,
14
+ rightPt: MARGIN_PT,
15
+ bottomPt: MARGIN_PT,
16
+ leftPt: MARGIN_PT
17
+ },
18
+ gridlines: true,
19
+ headers: true,
20
+ pageOrder: "downThenOver"
21
+ };
22
+ function dataCell(rowIndex, columnIndex, field, onCellTypeInference) {
23
+ const inference = field === "" ? void 0 : inferCellValue(field);
24
+ if (inference !== void 0) onCellTypeInference?.({
25
+ sheetIndex: 0,
26
+ row: rowIndex,
27
+ column: columnIndex,
28
+ displayText: field,
29
+ ...inference
30
+ });
31
+ return {
32
+ row: rowIndex,
33
+ column: columnIndex,
34
+ value: field === "" ? { kind: "empty" } : inference?.outcome === "retyped" ? inference.value : {
35
+ kind: "string",
36
+ value: field
37
+ },
38
+ displayText: field
39
+ };
40
+ }
41
+ function readCsvContent(text, options) {
42
+ const records = parseCsvRecords(text, options?.delimiter ?? ",");
43
+ const onCellTypeInference = options?.onCellTypeInference;
44
+ const columnCount = records.reduce((max, record) => Math.max(max, record.length), 0);
45
+ const cells = [];
46
+ records.forEach((record, rowIndex) => {
47
+ for (let columnIndex = 0; columnIndex < columnCount; columnIndex++) {
48
+ const field = record[columnIndex] ?? "";
49
+ if (rowIndex === HEADER_ROW_INDEX) cells.push({
50
+ row: rowIndex,
51
+ column: columnIndex,
52
+ value: {
53
+ kind: "string",
54
+ value: field
55
+ },
56
+ displayText: field
57
+ });
58
+ else cells.push(dataCell(rowIndex, columnIndex, field, onCellTypeInference));
59
+ }
60
+ });
61
+ const columns = Array.from({ length: columnCount }, (_unused, index) => ({
62
+ index,
63
+ widthPt: COLUMN_WIDTH_PT
64
+ }));
65
+ const rows = Array.from({ length: records.length }, (_unused, index) => ({
66
+ index,
67
+ heightPt: ROW_HEIGHT_PT
68
+ }));
69
+ return {
70
+ kind: "spreadsheet",
71
+ formatVersion: CONTENT_FORMAT_VERSION,
72
+ metadata: {},
73
+ sheets: [{
74
+ name: SHEET_NAME,
75
+ cells,
76
+ columns,
77
+ rows,
78
+ images: [],
79
+ printSettings: DEFAULT_PRINT_SETTINGS
80
+ }]
81
+ };
82
+ }
83
+ //#endregion
84
+ export { readCsvContent };