@bendyline/squisq-formats 2.1.0 → 2.3.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 (195) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE.md +19 -0
  3. package/README.md +2 -2
  4. package/dist/{chunk-NNHKUXKA.js → chunk-26ISNJ7Y.js} +85 -65
  5. package/dist/{chunk-NKAJPJ4G.js → chunk-2JJ5RFDZ.js} +0 -1
  6. package/dist/{chunk-KURGXM4I.js → chunk-4V3KCHAP.js} +3 -4
  7. package/dist/{chunk-MLX2BOJC.js → chunk-6RQOV3B3.js} +1 -2
  8. package/dist/{chunk-EW54IRRS.js → chunk-6S6GU3ZG.js} +5 -6
  9. package/dist/{chunk-FE6OJV6O.js → chunk-7AWFHP5U.js} +1 -1
  10. package/dist/{chunk-RFAPOKHJ.js → chunk-AD2WT564.js} +59 -9
  11. package/dist/{chunk-O3GVVND4.js → chunk-AONELFLA.js} +0 -1
  12. package/dist/{chunk-SC67HYQJ.js → chunk-EJTNGKEA.js} +5 -8
  13. package/dist/{chunk-WQSHGBLN.js → chunk-G6J326JW.js} +193 -42
  14. package/dist/chunk-GX7RAUME.js +121 -0
  15. package/dist/{chunk-GVS2XXV6.js → chunk-GYIVES2E.js} +485 -59
  16. package/dist/{chunk-SSUPBUF5.js → chunk-IIQYS2YH.js} +0 -1
  17. package/dist/{chunk-RLU7UFYU.js → chunk-IPN56VLW.js} +83 -58
  18. package/dist/{chunk-DTDF6QDP.js → chunk-JE6LSIHE.js} +81 -20
  19. package/dist/{chunk-U4MRIFKL.js → chunk-JU2RHXUB.js} +0 -1
  20. package/dist/{chunk-4VUWTSGM.js → chunk-K6XRMVPW.js} +64 -31
  21. package/dist/{chunk-ODL3SSPT.js → chunk-KXOZMWBS.js} +0 -1
  22. package/dist/chunk-OGS5VCGJ.js +446 -0
  23. package/dist/{chunk-74GO3FVS.js → chunk-PU7REGWV.js} +5 -8
  24. package/dist/{chunk-PN52A5AA.js → chunk-SBUW7NHR.js} +0 -1
  25. package/dist/{chunk-QFLDYKCR.js → chunk-TAAENIRB.js} +5 -8
  26. package/dist/{chunk-7ARKUCQT.js → chunk-X2DEAXNK.js} +54 -2
  27. package/dist/container/index.js +1 -2
  28. package/dist/csv/index.d.ts +27 -2
  29. package/dist/csv/index.js +1 -2
  30. package/dist/docx/index.d.ts +5 -1
  31. package/dist/docx/index.js +9 -11
  32. package/dist/epub/index.d.ts +2 -0
  33. package/dist/epub/index.js +5 -6
  34. package/dist/{export-D2NkylDT.d.ts → export-D9msROJS.d.ts} +18 -6
  35. package/dist/extract-MN7LA3NL.js +13 -0
  36. package/dist/html/index.d.ts +11 -4
  37. package/dist/html/index.js +3 -4
  38. package/dist/images-ESPQKVTW.js +6 -0
  39. package/dist/{import-K8mfc0fz.d.ts → import-C3htUTss.d.ts} +5 -1
  40. package/dist/{import-DTkDxHmZ.d.ts → import-C8whCC7_.d.ts} +6 -0
  41. package/dist/index.d.ts +7 -7
  42. package/dist/index.js +28 -26
  43. package/dist/infer/index.d.ts +3 -3
  44. package/dist/infer/index.js +7 -9
  45. package/dist/{layouts-BHrgZ5FS.d.ts → layouts-CTdPlB-u.d.ts} +1 -1
  46. package/dist/layouts-DRWZGSPD.js +10 -0
  47. package/dist/{mapTheme-IR27S6IV.js → mapTheme-4TWH25FT.js} +1 -2
  48. package/dist/ooxml/index.d.ts +3 -3
  49. package/dist/ooxml/index.js +14 -13
  50. package/dist/pdf/index.d.ts +18 -0
  51. package/dist/pdf/index.js +2 -3
  52. package/dist/pptx/index.d.ts +4 -4
  53. package/dist/pptx/index.js +11 -13
  54. package/dist/{reader-B9L8Ucbj.d.ts → reader-B_m1aKZC.d.ts} +30 -1
  55. package/dist/registry/index.d.ts +21 -5
  56. package/dist/registry/index.js +9 -6
  57. package/dist/{themeReader-DJKErl_j.d.ts → themeReader-DCtwC83Q.d.ts} +1 -1
  58. package/dist/xlsx/index.d.ts +3 -3
  59. package/dist/xlsx/index.js +6 -7
  60. package/package.json +10 -4
  61. package/dist/chunk-4VUWTSGM.js.map +0 -1
  62. package/dist/chunk-6M7Z25LA.js +0 -46
  63. package/dist/chunk-6M7Z25LA.js.map +0 -1
  64. package/dist/chunk-74GO3FVS.js.map +0 -1
  65. package/dist/chunk-7ARKUCQT.js.map +0 -1
  66. package/dist/chunk-DTDF6QDP.js.map +0 -1
  67. package/dist/chunk-EW54IRRS.js.map +0 -1
  68. package/dist/chunk-FE6OJV6O.js.map +0 -1
  69. package/dist/chunk-GVS2XXV6.js.map +0 -1
  70. package/dist/chunk-KURGXM4I.js.map +0 -1
  71. package/dist/chunk-MLX2BOJC.js.map +0 -1
  72. package/dist/chunk-NKAJPJ4G.js.map +0 -1
  73. package/dist/chunk-NNHKUXKA.js.map +0 -1
  74. package/dist/chunk-O3GVVND4.js.map +0 -1
  75. package/dist/chunk-ODL3SSPT.js.map +0 -1
  76. package/dist/chunk-PN52A5AA.js.map +0 -1
  77. package/dist/chunk-QFLDYKCR.js.map +0 -1
  78. package/dist/chunk-RFAPOKHJ.js.map +0 -1
  79. package/dist/chunk-RLU7UFYU.js.map +0 -1
  80. package/dist/chunk-SC67HYQJ.js.map +0 -1
  81. package/dist/chunk-SSUPBUF5.js.map +0 -1
  82. package/dist/chunk-U4MRIFKL.js.map +0 -1
  83. package/dist/chunk-UGYF5AZE.js +0 -275
  84. package/dist/chunk-UGYF5AZE.js.map +0 -1
  85. package/dist/chunk-WQSHGBLN.js.map +0 -1
  86. package/dist/chunk-YRT7GQ5Y.js +0 -28
  87. package/dist/chunk-YRT7GQ5Y.js.map +0 -1
  88. package/dist/container/index.js.map +0 -1
  89. package/dist/csv/index.js.map +0 -1
  90. package/dist/docx/index.js.map +0 -1
  91. package/dist/epub/index.js.map +0 -1
  92. package/dist/extract-OJ7ZQV6P.js +0 -15
  93. package/dist/extract-OJ7ZQV6P.js.map +0 -1
  94. package/dist/html/index.js.map +0 -1
  95. package/dist/images-7FBWPKE3.js +0 -7
  96. package/dist/images-7FBWPKE3.js.map +0 -1
  97. package/dist/index.js.map +0 -1
  98. package/dist/infer/index.js.map +0 -1
  99. package/dist/layouts-5VDIRPIJ.js +0 -12
  100. package/dist/layouts-5VDIRPIJ.js.map +0 -1
  101. package/dist/mapTheme-IR27S6IV.js.map +0 -1
  102. package/dist/ooxml/index.js.map +0 -1
  103. package/dist/pdf/index.js.map +0 -1
  104. package/dist/pptx/index.js.map +0 -1
  105. package/dist/registry/index.js.map +0 -1
  106. package/dist/xlsx/index.js.map +0 -1
  107. package/src/__tests__/container.test.ts +0 -230
  108. package/src/__tests__/convert.test.ts +0 -495
  109. package/src/__tests__/csvImport.test.ts +0 -84
  110. package/src/__tests__/docxExport.test.ts +0 -491
  111. package/src/__tests__/docxImport.test.ts +0 -531
  112. package/src/__tests__/epub.test.ts +0 -649
  113. package/src/__tests__/exportThemeReconciliation.test.ts +0 -87
  114. package/src/__tests__/formatRegistry.test.ts +0 -174
  115. package/src/__tests__/html.test.ts +0 -439
  116. package/src/__tests__/htmlImport.test.ts +0 -57
  117. package/src/__tests__/inferTheme.test.ts +0 -135
  118. package/src/__tests__/lossyWarnings.test.ts +0 -146
  119. package/src/__tests__/ooxml.test.ts +0 -271
  120. package/src/__tests__/ooxmlCancellation.test.ts +0 -113
  121. package/src/__tests__/ooxmlThemeReader.test.ts +0 -92
  122. package/src/__tests__/pdfExport.test.ts +0 -322
  123. package/src/__tests__/pdfImport.test.ts +0 -384
  124. package/src/__tests__/plainHtml.test.ts +0 -417
  125. package/src/__tests__/plainHtmlBundle.test.ts +0 -253
  126. package/src/__tests__/pptxExport.test.ts +0 -138
  127. package/src/__tests__/pptxImport.test.ts +0 -145
  128. package/src/__tests__/pptxInferFixtures.ts +0 -314
  129. package/src/__tests__/pptxLayoutInfer.test.ts +0 -395
  130. package/src/__tests__/roundTrip.test.ts +0 -201
  131. package/src/__tests__/roundTripAssets.test.ts +0 -50
  132. package/src/__tests__/roundTripMatrix.fixtures.ts +0 -86
  133. package/src/__tests__/roundTripMatrix.helpers.ts +0 -154
  134. package/src/__tests__/roundTripMatrix.test.ts +0 -142
  135. package/src/__tests__/sharedContainer.test.ts +0 -41
  136. package/src/__tests__/sharedImages.test.ts +0 -61
  137. package/src/__tests__/xlsxExport.test.ts +0 -164
  138. package/src/__tests__/xlsxImport.test.ts +0 -80
  139. package/src/__tests__/zipSafety.test.ts +0 -317
  140. package/src/container/index.ts +0 -94
  141. package/src/csv/index.ts +0 -188
  142. package/src/docx/export.ts +0 -1375
  143. package/src/docx/import.ts +0 -1250
  144. package/src/docx/index.ts +0 -26
  145. package/src/docx/styles.ts +0 -145
  146. package/src/epub/export.ts +0 -968
  147. package/src/epub/index.ts +0 -20
  148. package/src/html/docsHtmlBundle.ts +0 -373
  149. package/src/html/htmlTemplate.ts +0 -385
  150. package/src/html/imageUtils.ts +0 -61
  151. package/src/html/import.ts +0 -297
  152. package/src/html/index.ts +0 -212
  153. package/src/html/plainHtml.ts +0 -790
  154. package/src/html/plainHtmlBundle.ts +0 -421
  155. package/src/index.ts +0 -109
  156. package/src/infer/extract.ts +0 -127
  157. package/src/infer/index.ts +0 -199
  158. package/src/infer/mapTheme.ts +0 -176
  159. package/src/infer/types.ts +0 -27
  160. package/src/ooxml/index.ts +0 -111
  161. package/src/ooxml/namespaces.ts +0 -217
  162. package/src/ooxml/readUtils.ts +0 -44
  163. package/src/ooxml/reader.ts +0 -318
  164. package/src/ooxml/themeReader.ts +0 -197
  165. package/src/ooxml/types.ts +0 -103
  166. package/src/ooxml/writer.ts +0 -339
  167. package/src/ooxml/xmlUtils.ts +0 -123
  168. package/src/pdf/export.ts +0 -1084
  169. package/src/pdf/import.ts +0 -1164
  170. package/src/pdf/index.ts +0 -29
  171. package/src/pdf/styles.ts +0 -180
  172. package/src/pptx/export.ts +0 -1184
  173. package/src/pptx/import.ts +0 -455
  174. package/src/pptx/index.ts +0 -52
  175. package/src/pptx/layouts.ts +0 -1222
  176. package/src/pptx/styles.ts +0 -96
  177. package/src/pptx/templates.ts +0 -187
  178. package/src/registry/convert.ts +0 -433
  179. package/src/registry/defaultFormats.ts +0 -413
  180. package/src/registry/errors.ts +0 -46
  181. package/src/registry/index.ts +0 -43
  182. package/src/registry/registry.ts +0 -48
  183. package/src/registry/types.ts +0 -170
  184. package/src/shared/boundedZipArchive.ts +0 -383
  185. package/src/shared/container.ts +0 -28
  186. package/src/shared/fidelity.ts +0 -130
  187. package/src/shared/images.ts +0 -44
  188. package/src/shared/inlineRuns.ts +0 -99
  189. package/src/shared/text.ts +0 -41
  190. package/src/shared/zipEntryCount.ts +0 -151
  191. package/src/shared/zipLimits.ts +0 -296
  192. package/src/shared/zipSafety.ts +0 -19
  193. package/src/xlsx/export.ts +0 -253
  194. package/src/xlsx/import.ts +0 -160
  195. package/src/xlsx/index.ts +0 -35
package/src/pdf/index.ts DELETED
@@ -1,29 +0,0 @@
1
- /**
2
- * @bendyline/squisq-formats PDF Module
3
- *
4
- * Import and export squisq documents (MarkdownDocument / Doc)
5
- * to/from PDF files.
6
- *
7
- * - **Export** uses pdf-lib (zero dependencies, standard fonts, pure JS).
8
- * - **Import** uses pdfjs-dist (Mozilla pdf.js) with heuristic structure detection.
9
- *
10
- * All operations run in the browser — no server required.
11
- *
12
- * @example
13
- * ```ts
14
- * import {
15
- * markdownDocToPdf,
16
- * docToPdf,
17
- * pdfToMarkdownDoc,
18
- * pdfToDoc,
19
- * } from '@bendyline/squisq-formats/pdf';
20
- * ```
21
- */
22
-
23
- // Export
24
- export { markdownDocToPdf, docToPdf } from './export.js';
25
- export type { PdfExportOptions } from './export.js';
26
-
27
- // Import
28
- export { pdfToMarkdownDoc, pdfToDoc, pdfToContainer, configurePdfWorker } from './import.js';
29
- export type { PdfImportOptions } from './import.js';
package/src/pdf/styles.ts DELETED
@@ -1,180 +0,0 @@
1
- /**
2
- * PDF Style / Layout Constants
3
- *
4
- * Shared constants used by both PDF export and import. Defines page
5
- * dimensions, margins, font sizes, colours, and spacing for rendering
6
- * MarkdownDocument content as a paginated PDF.
7
- */
8
-
9
- // ============================================
10
- // Page Layout
11
- // ============================================
12
-
13
- /** Standard US Letter page width in points (8.5 in × 72 pt/in). */
14
- export const PAGE_WIDTH_LETTER = 612;
15
-
16
- /** Standard US Letter page height in points (11 in × 72 pt/in). */
17
- export const PAGE_HEIGHT_LETTER = 792;
18
-
19
- /** A4 page width in points (210 mm ≈ 595 pt). */
20
- export const PAGE_WIDTH_A4 = 595.28;
21
-
22
- /** A4 page height in points (297 mm ≈ 842 pt). */
23
- export const PAGE_HEIGHT_A4 = 841.89;
24
-
25
- /** Default page margins in points (1 inch = 72 pt). */
26
- export const DEFAULT_MARGIN = 72;
27
-
28
- // ============================================
29
- // Fonts — pdf-lib standard font names
30
- // ============================================
31
-
32
- export const FONT_REGULAR = 'Helvetica';
33
- export const FONT_BOLD = 'Helvetica-Bold';
34
- export const FONT_ITALIC = 'Helvetica-Oblique';
35
- export const FONT_BOLD_ITALIC = 'Helvetica-BoldOblique';
36
- export const FONT_MONO = 'Courier';
37
- export const FONT_MONO_BOLD = 'Courier-Bold';
38
-
39
- // ============================================
40
- // Font Sizes
41
- // ============================================
42
-
43
- /** Default body font size in points. */
44
- export const DEFAULT_FONT_SIZE = 11;
45
-
46
- /** Heading font sizes indexed by depth (1-based). */
47
- export const HEADING_SIZES: Record<number, number> = {
48
- 1: 24,
49
- 2: 20,
50
- 3: 16,
51
- 4: 14,
52
- 5: 13,
53
- 6: 12,
54
- };
55
-
56
- /** Font size used for code blocks and inline code. */
57
- export const CODE_FONT_SIZE = 10;
58
-
59
- // ============================================
60
- // Spacing (in points)
61
- // ============================================
62
-
63
- /** Line height multiplier (leading). */
64
- export const LINE_HEIGHT_FACTOR = 1.4;
65
-
66
- /** Space above a heading. */
67
- export const HEADING_SPACE_BEFORE = 18;
68
-
69
- /** Space below a heading. */
70
- export const HEADING_SPACE_AFTER = 6;
71
-
72
- /** Space between paragraphs. */
73
- export const PARAGRAPH_SPACING = 8;
74
-
75
- /** Extra indent per list nesting level. */
76
- export const LIST_INDENT = 24;
77
-
78
- /** Bullet character for unordered lists. */
79
- export const BULLET_CHAR = '\u2022'; // •
80
-
81
- /** Indent for blockquotes. */
82
- export const BLOCKQUOTE_INDENT = 24;
83
-
84
- /** Width of the blockquote left bar. */
85
- export const BLOCKQUOTE_BAR_WIDTH = 3;
86
-
87
- // ============================================
88
- // Colours (RGB 0-1)
89
- // ============================================
90
-
91
- export const COLOR_TEXT = { r: 0.12, g: 0.12, b: 0.14 };
92
- export const COLOR_HEADING = { r: 0.08, g: 0.08, b: 0.1 };
93
- export const COLOR_LINK = { r: 0.05, g: 0.27, b: 0.73 };
94
- export const COLOR_CODE_BG = { r: 0.95, g: 0.95, b: 0.97 };
95
- export const COLOR_CODE_TEXT = { r: 0.2, g: 0.2, b: 0.22 };
96
- export const COLOR_BLOCKQUOTE_BAR = { r: 0.75, g: 0.75, b: 0.78 };
97
- export const COLOR_BLOCKQUOTE_TEXT = { r: 0.35, g: 0.35, b: 0.38 };
98
- export const COLOR_THEMATIC_BREAK = { r: 0.78, g: 0.78, b: 0.8 };
99
- export const COLOR_TABLE_BORDER = { r: 0.75, g: 0.75, b: 0.78 };
100
- export const COLOR_TABLE_HEADER_BG = { r: 0.93, g: 0.93, b: 0.95 };
101
-
102
- // ============================================
103
- // Table Constants
104
- // ============================================
105
-
106
- /** Table cell horizontal padding in points. */
107
- export const TABLE_CELL_PAD_X = 6;
108
-
109
- /** Table cell vertical padding in points. */
110
- export const TABLE_CELL_PAD_Y = 4;
111
-
112
- /** Table border line width. */
113
- export const TABLE_BORDER_WIDTH = 0.5;
114
-
115
- // ============================================
116
- // Import Heuristic Thresholds
117
- // ============================================
118
-
119
- /**
120
- * Minimum font size (in PDF points) to consider as a heading.
121
- * Anything ≥ this and larger than the detected body size is a heading.
122
- */
123
- export const IMPORT_HEADING_MIN_SIZE = 13;
124
-
125
- /**
126
- * Font size ranges mapped to heading depth for import heuristics.
127
- * Applied when a text item's font size exceeds the body size.
128
- */
129
- export const IMPORT_HEADING_SIZE_RANGES: Array<{ min: number; depth: number }> = [
130
- { min: 22, depth: 1 },
131
- { min: 18, depth: 2 },
132
- { min: 15, depth: 3 },
133
- { min: 13.5, depth: 4 },
134
- { min: 12.5, depth: 5 },
135
- { min: 12, depth: 6 },
136
- ];
137
-
138
- /**
139
- * Y-distance (in points) between lines that implies a paragraph break
140
- * rather than a continuation of the same paragraph.
141
- */
142
- export const IMPORT_PARAGRAPH_GAP = 4;
143
-
144
- /**
145
- * Characters that indicate an unordered list bullet at the start of a line.
146
- */
147
- export const IMPORT_BULLET_CHARS = new Set([
148
- '\u2022',
149
- '\u2023',
150
- '\u25E6',
151
- '\u2043',
152
- '-',
153
- '*',
154
- '\u2013',
155
- '\u2014',
156
- '\u25AA',
157
- '\u25AB',
158
- ]);
159
-
160
- /**
161
- * Regex to detect an ordered list prefix (e.g. "1.", "2)", "iv.").
162
- */
163
- export const IMPORT_ORDERED_PREFIX = /^(\d+|[a-z]+|[ivxlcdm]+)[.)]\s/i;
164
-
165
- /**
166
- * Column alignment tolerance — text items whose x-positions differ by
167
- * less than this are considered to be in the same column (for table detection).
168
- */
169
- export const IMPORT_COLUMN_TOLERANCE = 8;
170
-
171
- /**
172
- * Minimum number of consecutive rows with the same column count to
173
- * consider them a table.
174
- */
175
- export const IMPORT_TABLE_MIN_ROWS = 2;
176
-
177
- /**
178
- * URL pattern for detecting links in extracted text.
179
- */
180
- export const IMPORT_URL_PATTERN = /https?:\/\/[^\s)>\]]+/g;