@bendyline/squisq-formats 1.1.1 → 1.2.1

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 (69) hide show
  1. package/README.md +14 -0
  2. package/dist/__tests__/epub.test.d.ts +8 -0
  3. package/dist/__tests__/epub.test.d.ts.map +1 -0
  4. package/dist/__tests__/epub.test.js +472 -0
  5. package/dist/__tests__/epub.test.js.map +1 -0
  6. package/dist/chunk-2FPJKJ6I.js +621 -0
  7. package/dist/chunk-2FPJKJ6I.js.map +1 -0
  8. package/dist/{chunk-BHHEDPRB.js → chunk-7DEUGIOO.js} +6 -41
  9. package/dist/chunk-7DEUGIOO.js.map +1 -0
  10. package/dist/chunk-A3FHLTY5.js +42 -0
  11. package/dist/chunk-A3FHLTY5.js.map +1 -0
  12. package/dist/{chunk-6OVREALI.js → chunk-MEZF76JA.js} +168 -14
  13. package/dist/chunk-MEZF76JA.js.map +1 -0
  14. package/dist/{chunk-FIFCQN3W.js → chunk-NGWHV77G.js} +5 -3
  15. package/dist/{chunk-FIFCQN3W.js.map → chunk-NGWHV77G.js.map} +1 -1
  16. package/dist/{chunk-PP5N46YD.js → chunk-S3Y7H2BK.js} +129 -1
  17. package/dist/chunk-S3Y7H2BK.js.map +1 -0
  18. package/dist/chunk-U4MRIFKL.js +43 -0
  19. package/dist/chunk-U4MRIFKL.js.map +1 -0
  20. package/dist/{chunk-743COJWQ.js → chunk-UM5V2XZG.js} +7 -40
  21. package/dist/chunk-UM5V2XZG.js.map +1 -0
  22. package/dist/{chunk-KJ4NS4DX.js → chunk-YN5HFCEW.js} +2 -2
  23. package/dist/docx/export.d.ts +9 -0
  24. package/dist/docx/export.d.ts.map +1 -1
  25. package/dist/docx/export.js +120 -12
  26. package/dist/docx/export.js.map +1 -1
  27. package/dist/docx/import.d.ts +13 -0
  28. package/dist/docx/import.d.ts.map +1 -1
  29. package/dist/docx/import.js +102 -10
  30. package/dist/docx/import.js.map +1 -1
  31. package/dist/docx/index.d.ts +1 -1
  32. package/dist/docx/index.d.ts.map +1 -1
  33. package/dist/docx/index.js +1 -1
  34. package/dist/docx/index.js.map +1 -1
  35. package/dist/epub/export.d.ts +72 -0
  36. package/dist/epub/export.d.ts.map +1 -0
  37. package/dist/epub/export.js +674 -0
  38. package/dist/epub/export.js.map +1 -0
  39. package/dist/epub/index.d.ts +20 -0
  40. package/dist/epub/index.d.ts.map +1 -0
  41. package/dist/epub/index.js +19 -0
  42. package/dist/epub/index.js.map +1 -0
  43. package/dist/index.d.ts +2 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +2 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/pdf/import.d.ts +16 -0
  48. package/dist/pdf/import.d.ts.map +1 -1
  49. package/dist/pdf/import.js +177 -0
  50. package/dist/pdf/import.js.map +1 -1
  51. package/dist/pdf/index.d.ts +1 -1
  52. package/dist/pdf/index.d.ts.map +1 -1
  53. package/dist/pdf/index.js +1 -1
  54. package/dist/pdf/index.js.map +1 -1
  55. package/package.json +13 -7
  56. package/src/__tests__/epub.test.ts +548 -0
  57. package/src/docx/export.ts +147 -12
  58. package/src/docx/import.ts +127 -10
  59. package/src/docx/index.ts +1 -1
  60. package/src/epub/export.ts +891 -0
  61. package/src/epub/index.ts +20 -0
  62. package/src/index.ts +4 -0
  63. package/src/pdf/import.ts +228 -0
  64. package/src/pdf/index.ts +1 -1
  65. package/dist/chunk-6OVREALI.js.map +0 -1
  66. package/dist/chunk-743COJWQ.js.map +0 -1
  67. package/dist/chunk-BHHEDPRB.js.map +0 -1
  68. package/dist/chunk-PP5N46YD.js.map +0 -1
  69. /package/dist/{chunk-KJ4NS4DX.js.map → chunk-YN5HFCEW.js.map} +0 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * EPUB 3 Export
3
+ *
4
+ * Converts a MarkdownDocument (or Doc) to an EPUB 3 file (.epub).
5
+ *
6
+ * An EPUB is a ZIP archive containing XHTML chapter files, images,
7
+ * a package manifest (content.opf), and a navigation document (toc.xhtml).
8
+ * Content is split into chapters at H1/H2 heading boundaries.
9
+ *
10
+ * Uses JSZip for packaging (already a dependency), escapeXml from the
11
+ * OOXML utils, and image utilities from the HTML exporter.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * import { markdownDocToEpub } from '@bendyline/squisq-formats/epub';
16
+ *
17
+ * const epub = await markdownDocToEpub(markdownDoc, {
18
+ * title: 'My Book',
19
+ * author: 'Jane Doe',
20
+ * });
21
+ * ```
22
+ */
23
+ import type { Doc, AudioSegment } from '@bendyline/squisq/schemas';
24
+ import type { MarkdownDocument } from '@bendyline/squisq/markdown';
25
+ export interface EpubExportOptions {
26
+ /** Book title (default: 'Untitled') */
27
+ title?: string;
28
+ /** Author name */
29
+ author?: string;
30
+ /** Book description / summary */
31
+ description?: string;
32
+ /** BCP-47 language code (default: 'en') */
33
+ language?: string;
34
+ /** Publisher name */
35
+ publisher?: string;
36
+ /** Squisq theme ID for CSS styling */
37
+ themeId?: string;
38
+ /** Pre-resolved image data keyed by relative path as it appears in the markdown */
39
+ images?: Map<string, ArrayBuffer>;
40
+ /** Cover image data (JPEG or PNG) */
41
+ coverImage?: ArrayBuffer;
42
+ /**
43
+ * Audio narration data keyed by segment src/name.
44
+ * When provided alongside audioSegments, EPUB 3 Media Overlays (SMIL)
45
+ * are generated for synchronized audio playback.
46
+ */
47
+ audio?: Map<string, ArrayBuffer>;
48
+ /**
49
+ * Audio segment metadata (from Doc.audio.segments).
50
+ * Required together with `audio` to generate Media Overlays.
51
+ * Each segment's duration and startTime are used to build SMIL timing.
52
+ */
53
+ audioSegments?: AudioSegment[];
54
+ /** Total document duration in seconds (used for Media Overlay metadata) */
55
+ totalDuration?: number;
56
+ }
57
+ /**
58
+ * Convert a MarkdownDocument to an EPUB 3 file.
59
+ *
60
+ * Chapters are split at H1/H2 heading boundaries. All referenced images
61
+ * (provided via `options.images`) are embedded in the archive.
62
+ */
63
+ export declare function markdownDocToEpub(doc: MarkdownDocument, options?: EpubExportOptions): Promise<ArrayBuffer>;
64
+ /**
65
+ * Convert a squisq Doc to an EPUB 3 file.
66
+ *
67
+ * Convenience wrapper: Doc → MarkdownDocument → EPUB.
68
+ * When the Doc has audio segments and `options.audio` is provided,
69
+ * EPUB 3 Media Overlays are generated for narrated playback.
70
+ */
71
+ export declare function docToEpub(doc: Doc, options?: EpubExportOptions): Promise<ArrayBuffer>;
72
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/epub/export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEnE,OAAO,KAAK,EACV,gBAAgB,EASjB,MAAM,4BAA4B,CAAC;AAMpC,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,qCAAqC;IACrC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACjC;;;;OAIG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,gBAAgB,EACrB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAmLtB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAc/F"}