@bendyline/squisq 0.1.1 → 1.0.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 (329) hide show
  1. package/README.md +85 -0
  2. package/dist/{themeLibrary-DySHPcgj.d.ts → Doc-1hmT1LZl.d.ts} +1 -42
  3. package/dist/__tests__/animationUtils.test.d.ts +2 -0
  4. package/dist/__tests__/animationUtils.test.d.ts.map +1 -0
  5. package/dist/__tests__/animationUtils.test.js +60 -0
  6. package/dist/__tests__/animationUtils.test.js.map +1 -0
  7. package/dist/__tests__/contentExtractor.test.d.ts +2 -0
  8. package/dist/__tests__/contentExtractor.test.d.ts.map +1 -0
  9. package/dist/__tests__/contentExtractor.test.js +151 -0
  10. package/dist/__tests__/contentExtractor.test.js.map +1 -0
  11. package/dist/__tests__/geohash.test.d.ts +2 -0
  12. package/dist/__tests__/geohash.test.d.ts.map +1 -0
  13. package/dist/__tests__/geohash.test.js +87 -0
  14. package/dist/__tests__/geohash.test.js.map +1 -0
  15. package/dist/__tests__/getLayers.test.d.ts +2 -0
  16. package/dist/__tests__/getLayers.test.d.ts.map +1 -0
  17. package/dist/__tests__/getLayers.test.js +167 -0
  18. package/dist/__tests__/getLayers.test.js.map +1 -0
  19. package/dist/__tests__/haversine.test.d.ts +2 -0
  20. package/dist/__tests__/haversine.test.d.ts.map +1 -0
  21. package/dist/__tests__/haversine.test.js +56 -0
  22. package/dist/__tests__/haversine.test.js.map +1 -0
  23. package/dist/__tests__/localForageAdapter.test.d.ts +8 -0
  24. package/dist/__tests__/localForageAdapter.test.d.ts.map +1 -0
  25. package/dist/__tests__/localForageAdapter.test.js +130 -0
  26. package/dist/__tests__/localForageAdapter.test.js.map +1 -0
  27. package/dist/__tests__/markdown.test.d.ts +2 -0
  28. package/dist/__tests__/markdown.test.d.ts.map +1 -0
  29. package/dist/__tests__/markdown.test.js +654 -0
  30. package/dist/__tests__/markdown.test.js.map +1 -0
  31. package/dist/__tests__/markdownToDoc.test.d.ts +2 -0
  32. package/dist/__tests__/markdownToDoc.test.d.ts.map +1 -0
  33. package/dist/__tests__/markdownToDoc.test.js +313 -0
  34. package/dist/__tests__/markdownToDoc.test.js.map +1 -0
  35. package/dist/__tests__/seededRandom.test.d.ts +2 -0
  36. package/dist/__tests__/seededRandom.test.d.ts.map +1 -0
  37. package/dist/__tests__/seededRandom.test.js +125 -0
  38. package/dist/__tests__/seededRandom.test.js.map +1 -0
  39. package/dist/__tests__/slideshowGenerator.test.d.ts +2 -0
  40. package/dist/__tests__/slideshowGenerator.test.d.ts.map +1 -0
  41. package/dist/__tests__/slideshowGenerator.test.js +114 -0
  42. package/dist/__tests__/slideshowGenerator.test.js.map +1 -0
  43. package/dist/__tests__/storage.test.d.ts +2 -0
  44. package/dist/__tests__/storage.test.d.ts.map +1 -0
  45. package/dist/__tests__/storage.test.js +51 -0
  46. package/dist/__tests__/storage.test.js.map +1 -0
  47. package/dist/__tests__/templates.test.d.ts +2 -0
  48. package/dist/__tests__/templates.test.d.ts.map +1 -0
  49. package/dist/__tests__/templates.test.js +217 -0
  50. package/dist/__tests__/templates.test.js.map +1 -0
  51. package/dist/__tests__/timing.test.d.ts +2 -0
  52. package/dist/__tests__/timing.test.d.ts.map +1 -0
  53. package/dist/__tests__/timing.test.js +131 -0
  54. package/dist/__tests__/timing.test.js.map +1 -0
  55. package/dist/chunk-3E5F2XMR.js +129 -0
  56. package/dist/chunk-3E5F2XMR.js.map +1 -0
  57. package/dist/chunk-6YJPI6VI.js +35 -0
  58. package/dist/chunk-6YJPI6VI.js.map +1 -0
  59. package/dist/chunk-FVTQSNR7.js +100 -0
  60. package/dist/chunk-FVTQSNR7.js.map +1 -0
  61. package/dist/chunk-V543AI2F.js +1 -0
  62. package/dist/chunk-V543AI2F.js.map +1 -0
  63. package/dist/chunk-VP5SZTZ2.js +792 -0
  64. package/dist/chunk-VP5SZTZ2.js.map +1 -0
  65. package/dist/doc/docToMarkdown.d.ts +41 -0
  66. package/dist/doc/docToMarkdown.d.ts.map +1 -0
  67. package/dist/doc/docToMarkdown.js +88 -0
  68. package/dist/doc/docToMarkdown.js.map +1 -0
  69. package/dist/doc/getLayers.d.ts +65 -0
  70. package/dist/doc/getLayers.d.ts.map +1 -0
  71. package/dist/doc/getLayers.js +103 -0
  72. package/dist/doc/getLayers.js.map +1 -0
  73. package/dist/doc/index.d.ts +9 -3
  74. package/dist/doc/index.d.ts.map +1 -0
  75. package/dist/doc/index.js +6 -125
  76. package/dist/doc/index.js.map +1 -1
  77. package/dist/doc/markdownToDoc.d.ts +68 -0
  78. package/dist/doc/markdownToDoc.d.ts.map +1 -0
  79. package/dist/doc/markdownToDoc.js +225 -0
  80. package/dist/doc/markdownToDoc.js.map +1 -0
  81. package/dist/doc/templates/accentImage.d.ts +59 -0
  82. package/dist/doc/templates/accentImage.d.ts.map +1 -0
  83. package/dist/doc/templates/accentImage.js +275 -0
  84. package/dist/doc/templates/accentImage.js.map +1 -0
  85. package/dist/doc/templates/captionUtils.d.ts +20 -0
  86. package/dist/doc/templates/captionUtils.d.ts.map +1 -0
  87. package/dist/doc/templates/captionUtils.js +29 -0
  88. package/dist/doc/templates/captionUtils.js.map +1 -0
  89. package/dist/doc/templates/comparisonBar.d.ts +13 -0
  90. package/dist/doc/templates/comparisonBar.d.ts.map +1 -0
  91. package/dist/doc/templates/comparisonBar.js +127 -0
  92. package/dist/doc/templates/comparisonBar.js.map +1 -0
  93. package/dist/doc/templates/coverBlock.d.ts +51 -0
  94. package/dist/doc/templates/coverBlock.d.ts.map +1 -0
  95. package/dist/doc/templates/coverBlock.js +125 -0
  96. package/dist/doc/templates/coverBlock.js.map +1 -0
  97. package/dist/doc/templates/dateEvent.d.ts +15 -0
  98. package/dist/doc/templates/dateEvent.d.ts.map +1 -0
  99. package/dist/doc/templates/dateEvent.js +110 -0
  100. package/dist/doc/templates/dateEvent.js.map +1 -0
  101. package/dist/doc/templates/definitionCard.d.ts +13 -0
  102. package/dist/doc/templates/definitionCard.d.ts.map +1 -0
  103. package/dist/doc/templates/definitionCard.js +114 -0
  104. package/dist/doc/templates/definitionCard.js.map +1 -0
  105. package/dist/doc/templates/factCard.d.ts +15 -0
  106. package/dist/doc/templates/factCard.d.ts.map +1 -0
  107. package/dist/doc/templates/factCard.js +100 -0
  108. package/dist/doc/templates/factCard.js.map +1 -0
  109. package/dist/doc/templates/fullBleedQuote.d.ts +13 -0
  110. package/dist/doc/templates/fullBleedQuote.d.ts.map +1 -0
  111. package/dist/doc/templates/fullBleedQuote.js +54 -0
  112. package/dist/doc/templates/fullBleedQuote.js.map +1 -0
  113. package/dist/doc/templates/imageWithCaption.d.ts +13 -0
  114. package/dist/doc/templates/imageWithCaption.d.ts.map +1 -0
  115. package/dist/doc/templates/imageWithCaption.js +142 -0
  116. package/dist/doc/templates/imageWithCaption.js.map +1 -0
  117. package/dist/doc/templates/index.d.ts +104 -0
  118. package/dist/doc/templates/index.d.ts.map +1 -0
  119. package/dist/doc/templates/index.js +442 -0
  120. package/dist/doc/templates/index.js.map +1 -0
  121. package/dist/doc/templates/listBlock.d.ts +13 -0
  122. package/dist/doc/templates/listBlock.d.ts.map +1 -0
  123. package/dist/doc/templates/listBlock.js +89 -0
  124. package/dist/doc/templates/listBlock.js.map +1 -0
  125. package/dist/doc/templates/mapBlock.d.ts +17 -0
  126. package/dist/doc/templates/mapBlock.d.ts.map +1 -0
  127. package/dist/doc/templates/mapBlock.js +112 -0
  128. package/dist/doc/templates/mapBlock.js.map +1 -0
  129. package/dist/doc/templates/persistentLayers.d.ts +39 -0
  130. package/dist/doc/templates/persistentLayers.d.ts.map +1 -0
  131. package/dist/doc/templates/persistentLayers.js +447 -0
  132. package/dist/doc/templates/persistentLayers.js.map +1 -0
  133. package/dist/doc/templates/photoGrid.d.ts +20 -0
  134. package/dist/doc/templates/photoGrid.d.ts.map +1 -0
  135. package/dist/doc/templates/photoGrid.js +172 -0
  136. package/dist/doc/templates/photoGrid.js.map +1 -0
  137. package/dist/doc/templates/pullQuote.d.ts +13 -0
  138. package/dist/doc/templates/pullQuote.d.ts.map +1 -0
  139. package/dist/doc/templates/pullQuote.js +109 -0
  140. package/dist/doc/templates/pullQuote.js.map +1 -0
  141. package/dist/doc/templates/quoteBlock.d.ts +15 -0
  142. package/dist/doc/templates/quoteBlock.d.ts.map +1 -0
  143. package/dist/doc/templates/quoteBlock.js +97 -0
  144. package/dist/doc/templates/quoteBlock.js.map +1 -0
  145. package/dist/doc/templates/sectionHeader.d.ts +14 -0
  146. package/dist/doc/templates/sectionHeader.d.ts.map +1 -0
  147. package/dist/doc/templates/sectionHeader.js +96 -0
  148. package/dist/doc/templates/sectionHeader.js.map +1 -0
  149. package/dist/doc/templates/statHighlight.d.ts +15 -0
  150. package/dist/doc/templates/statHighlight.d.ts.map +1 -0
  151. package/dist/doc/templates/statHighlight.js +99 -0
  152. package/dist/doc/templates/statHighlight.js.map +1 -0
  153. package/dist/doc/templates/titleBlock.d.ts +13 -0
  154. package/dist/doc/templates/titleBlock.d.ts.map +1 -0
  155. package/dist/doc/templates/titleBlock.js +92 -0
  156. package/dist/doc/templates/titleBlock.js.map +1 -0
  157. package/dist/doc/templates/twoColumn.d.ts +15 -0
  158. package/dist/doc/templates/twoColumn.d.ts.map +1 -0
  159. package/dist/doc/templates/twoColumn.js +219 -0
  160. package/dist/doc/templates/twoColumn.js.map +1 -0
  161. package/dist/doc/templates/videoPullQuote.d.ts +20 -0
  162. package/dist/doc/templates/videoPullQuote.d.ts.map +1 -0
  163. package/dist/doc/templates/videoPullQuote.js +118 -0
  164. package/dist/doc/templates/videoPullQuote.js.map +1 -0
  165. package/dist/doc/templates/videoWithCaption.d.ts +20 -0
  166. package/dist/doc/templates/videoWithCaption.d.ts.map +1 -0
  167. package/dist/doc/templates/videoWithCaption.js +104 -0
  168. package/dist/doc/templates/videoWithCaption.js.map +1 -0
  169. package/dist/doc/utils/animationUtils.d.ts +34 -0
  170. package/dist/doc/utils/animationUtils.d.ts.map +1 -0
  171. package/dist/doc/utils/animationUtils.js +110 -0
  172. package/dist/doc/utils/animationUtils.js.map +1 -0
  173. package/dist/doc/utils/themeUtils.d.ts +55 -0
  174. package/dist/doc/utils/themeUtils.d.ts.map +1 -0
  175. package/dist/doc/utils/themeUtils.js +109 -0
  176. package/dist/doc/utils/themeUtils.js.map +1 -0
  177. package/dist/generate/contentExtractor.d.ts +112 -0
  178. package/dist/generate/contentExtractor.d.ts.map +1 -0
  179. package/dist/generate/contentExtractor.js +638 -0
  180. package/dist/generate/contentExtractor.js.map +1 -0
  181. package/dist/generate/index.d.ts +7 -0
  182. package/dist/generate/index.d.ts.map +1 -0
  183. package/dist/generate/index.js +4 -0
  184. package/dist/generate/index.js.map +1 -0
  185. package/dist/generate/slideshowGenerator.d.ts +72 -0
  186. package/dist/generate/slideshowGenerator.d.ts.map +1 -0
  187. package/dist/generate/slideshowGenerator.js +159 -0
  188. package/dist/generate/slideshowGenerator.js.map +1 -0
  189. package/dist/generate/templateMapper.d.ts +23 -0
  190. package/dist/generate/templateMapper.d.ts.map +1 -0
  191. package/dist/generate/templateMapper.js +114 -0
  192. package/dist/generate/templateMapper.js.map +1 -0
  193. package/dist/index.d.ts +9 -8
  194. package/dist/index.d.ts.map +1 -0
  195. package/dist/index.js +8 -216
  196. package/dist/index.js.map +1 -1
  197. package/dist/markdown/convert.d.ts +71 -0
  198. package/dist/markdown/convert.d.ts.map +1 -0
  199. package/dist/markdown/convert.js +746 -0
  200. package/dist/markdown/convert.js.map +1 -0
  201. package/dist/markdown/htmlParse.d.ts +26 -0
  202. package/dist/markdown/htmlParse.d.ts.map +1 -0
  203. package/dist/markdown/htmlParse.js +195 -0
  204. package/dist/markdown/htmlParse.js.map +1 -0
  205. package/dist/markdown/index.d.ts +19 -225
  206. package/dist/markdown/index.d.ts.map +1 -0
  207. package/dist/markdown/index.js +33 -32
  208. package/dist/markdown/index.js.map +1 -1
  209. package/dist/markdown/parse.d.ts +27 -0
  210. package/dist/markdown/parse.d.ts.map +1 -0
  211. package/dist/markdown/parse.js +90 -0
  212. package/dist/markdown/parse.js.map +1 -0
  213. package/dist/markdown/stringify.d.ts +32 -0
  214. package/dist/markdown/stringify.d.ts.map +1 -0
  215. package/dist/markdown/stringify.js +108 -0
  216. package/dist/markdown/stringify.js.map +1 -0
  217. package/dist/markdown/types.d.ts +496 -0
  218. package/dist/markdown/types.d.ts.map +1 -0
  219. package/dist/markdown/types.js +17 -0
  220. package/dist/markdown/types.js.map +1 -0
  221. package/dist/markdown/utils.d.ts +78 -0
  222. package/dist/markdown/utils.d.ts.map +1 -0
  223. package/dist/markdown/utils.js +149 -0
  224. package/dist/markdown/utils.js.map +1 -0
  225. package/dist/random/SeededRandom.d.ts +50 -0
  226. package/dist/random/SeededRandom.d.ts.map +1 -0
  227. package/dist/random/SeededRandom.js +115 -0
  228. package/dist/random/SeededRandom.js.map +1 -0
  229. package/dist/random/index.d.ts +2 -0
  230. package/dist/random/index.d.ts.map +1 -0
  231. package/dist/random/index.js +2 -0
  232. package/dist/random/index.js.map +1 -0
  233. package/dist/schemas/BlockTemplates.d.ts +583 -0
  234. package/dist/schemas/BlockTemplates.d.ts.map +1 -0
  235. package/dist/schemas/BlockTemplates.js +72 -0
  236. package/dist/schemas/BlockTemplates.js.map +1 -0
  237. package/dist/schemas/Doc.d.ts +411 -0
  238. package/dist/schemas/Doc.d.ts.map +1 -0
  239. package/dist/schemas/Doc.js +90 -0
  240. package/dist/schemas/Doc.js.map +1 -0
  241. package/dist/schemas/LayoutStrategy.d.ts +84 -0
  242. package/dist/schemas/LayoutStrategy.d.ts.map +1 -0
  243. package/dist/schemas/LayoutStrategy.js +123 -0
  244. package/dist/schemas/LayoutStrategy.js.map +1 -0
  245. package/dist/schemas/MediaProvider.d.ts +65 -0
  246. package/dist/schemas/MediaProvider.d.ts.map +1 -0
  247. package/dist/schemas/MediaProvider.js +13 -0
  248. package/dist/schemas/MediaProvider.js.map +1 -0
  249. package/dist/schemas/Theme.d.ts +163 -0
  250. package/dist/schemas/Theme.d.ts.map +1 -0
  251. package/dist/schemas/Theme.js +62 -0
  252. package/dist/schemas/Theme.js.map +1 -0
  253. package/dist/schemas/Types.d.ts +14 -0
  254. package/dist/schemas/Types.d.ts.map +1 -0
  255. package/dist/schemas/Types.js +5 -0
  256. package/dist/schemas/Types.js.map +1 -0
  257. package/dist/schemas/Viewport.d.ts +74 -0
  258. package/dist/schemas/Viewport.d.ts.map +1 -0
  259. package/dist/schemas/Viewport.js +63 -0
  260. package/dist/schemas/Viewport.js.map +1 -0
  261. package/dist/schemas/index.d.ts +10 -70
  262. package/dist/schemas/index.d.ts.map +1 -0
  263. package/dist/schemas/index.js +7 -60
  264. package/dist/schemas/index.js.map +1 -1
  265. package/dist/schemas/themeLibrary.d.ts +41 -0
  266. package/dist/schemas/themeLibrary.d.ts.map +1 -0
  267. package/dist/schemas/themeLibrary.js +466 -0
  268. package/dist/schemas/themeLibrary.js.map +1 -0
  269. package/dist/spatial/Geohash.d.ts +85 -0
  270. package/dist/spatial/Geohash.d.ts.map +1 -0
  271. package/dist/spatial/Geohash.js +142 -0
  272. package/dist/spatial/Geohash.js.map +1 -0
  273. package/dist/spatial/Haversine.d.ts +24 -0
  274. package/dist/spatial/Haversine.d.ts.map +1 -0
  275. package/dist/spatial/Haversine.js +48 -0
  276. package/dist/spatial/Haversine.js.map +1 -0
  277. package/dist/spatial/index.d.ts +3 -111
  278. package/dist/spatial/index.d.ts.map +1 -0
  279. package/dist/spatial/index.js +2 -24
  280. package/dist/spatial/index.js.map +1 -1
  281. package/dist/storage/LocalForageAdapter.d.ts +36 -0
  282. package/dist/storage/LocalForageAdapter.d.ts.map +1 -0
  283. package/dist/storage/LocalForageAdapter.js +82 -0
  284. package/dist/storage/LocalForageAdapter.js.map +1 -0
  285. package/dist/storage/LocalStorageAdapter.d.ts +16 -0
  286. package/dist/storage/LocalStorageAdapter.d.ts.map +1 -0
  287. package/dist/storage/LocalStorageAdapter.js +50 -0
  288. package/dist/storage/LocalStorageAdapter.js.map +1 -0
  289. package/dist/storage/MemoryStorageAdapter.d.ts +15 -0
  290. package/dist/storage/MemoryStorageAdapter.d.ts.map +1 -0
  291. package/dist/storage/MemoryStorageAdapter.js +34 -0
  292. package/dist/storage/MemoryStorageAdapter.js.map +1 -0
  293. package/dist/storage/Storage.d.ts +23 -0
  294. package/dist/storage/Storage.d.ts.map +1 -0
  295. package/dist/storage/Storage.js +9 -0
  296. package/dist/storage/Storage.js.map +1 -0
  297. package/dist/storage/index.d.ts +6 -91
  298. package/dist/storage/index.d.ts.map +1 -0
  299. package/dist/storage/index.js +3 -10
  300. package/dist/storage/index.js.map +1 -1
  301. package/dist/story/index.d.ts +3 -2
  302. package/dist/themeLibrary-DR1VRo-8.d.ts +44 -0
  303. package/dist/timing/index.d.ts +4 -0
  304. package/dist/timing/index.d.ts.map +1 -0
  305. package/dist/timing/index.js +3 -0
  306. package/dist/timing/index.js.map +1 -0
  307. package/dist/timing/narrationTiming.d.ts +54 -0
  308. package/dist/timing/narrationTiming.d.ts.map +1 -0
  309. package/dist/timing/narrationTiming.js +190 -0
  310. package/dist/timing/narrationTiming.js.map +1 -0
  311. package/dist/timing/readingTime.d.ts +54 -0
  312. package/dist/timing/readingTime.d.ts.map +1 -0
  313. package/dist/timing/readingTime.js +49 -0
  314. package/dist/timing/readingTime.js.map +1 -0
  315. package/package.json +19 -5
  316. package/src/__tests__/contentExtractor.test.ts +183 -0
  317. package/src/__tests__/seededRandom.test.ts +142 -0
  318. package/src/__tests__/slideshowGenerator.test.ts +128 -0
  319. package/src/__tests__/timing.test.ts +167 -0
  320. package/src/generate/contentExtractor.ts +808 -0
  321. package/src/generate/index.ts +21 -0
  322. package/src/generate/slideshowGenerator.ts +273 -0
  323. package/src/generate/templateMapper.ts +170 -0
  324. package/src/index.ts +3 -0
  325. package/src/random/SeededRandom.ts +127 -0
  326. package/src/random/index.ts +1 -0
  327. package/src/timing/index.ts +17 -0
  328. package/src/timing/narrationTiming.ts +220 -0
  329. package/src/timing/readingTime.ts +94 -0
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Markdown Tree Utilities
3
+ *
4
+ * Helper functions for traversing and querying the MarkdownDocument tree.
5
+ * All functions are pure and operate on the JSON node interfaces.
6
+ */
7
+ /**
8
+ * Get the children of any markdown node, if it has children.
9
+ * Returns an empty array for leaf nodes (text, code, break, etc.).
10
+ *
11
+ * This is useful for generic tree walking where you don't want to
12
+ * check the specific node type.
13
+ */
14
+ export function getChildren(node) {
15
+ if ('children' in node && Array.isArray(node.children)) {
16
+ return node.children;
17
+ }
18
+ return [];
19
+ }
20
+ /**
21
+ * Walk the markdown tree depth-first, calling the visitor for each node.
22
+ *
23
+ * The visitor receives the current node and its parent. Return `true`
24
+ * from the visitor to skip the node's children (prune).
25
+ *
26
+ * @param node - The root node to start walking from
27
+ * @param visitor - Called for each node; return true to skip children
28
+ * @param parent - (internal) Parent node
29
+ */
30
+ export function walkMarkdownTree(node, visitor, parent) {
31
+ const skip = visitor(node, parent);
32
+ if (skip === true)
33
+ return;
34
+ const children = getChildren(node);
35
+ for (const child of children) {
36
+ walkMarkdownTree(child, visitor, node);
37
+ }
38
+ }
39
+ /**
40
+ * Find all nodes of a specific type in the tree.
41
+ *
42
+ * @param root - The document or node to search within
43
+ * @param type - The node type to find (e.g., 'heading', 'link', 'text')
44
+ * @returns Array of matching nodes
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const headings = findNodesByType(doc, 'heading');
49
+ * const links = findNodesByType(doc, 'link');
50
+ * ```
51
+ */
52
+ export function findNodesByType(root, type) {
53
+ const results = [];
54
+ walkMarkdownTree(root, (node) => {
55
+ if (node.type === type) {
56
+ results.push(node);
57
+ }
58
+ });
59
+ return results;
60
+ }
61
+ /**
62
+ * Extract all plain text content from a node and its descendants.
63
+ * Concatenates text values, ignoring formatting, links, etc.
64
+ *
65
+ * @param node - The node to extract text from
66
+ * @returns Plain text content
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * const heading = doc.children[0]; // { type: 'heading', children: [{ type: 'text', value: 'Hello' }] }
71
+ * extractPlainText(heading); // 'Hello'
72
+ * ```
73
+ */
74
+ export function extractPlainText(node) {
75
+ if ('value' in node && typeof node.value === 'string') {
76
+ return node.value;
77
+ }
78
+ const children = getChildren(node);
79
+ return children.map(extractPlainText).join('');
80
+ }
81
+ /**
82
+ * Count the total number of nodes in the tree.
83
+ *
84
+ * @param node - The root node
85
+ * @returns Total node count (including the root)
86
+ */
87
+ export function countNodes(node) {
88
+ let count = 1;
89
+ const children = getChildren(node);
90
+ for (const child of children) {
91
+ count += countNodes(child);
92
+ }
93
+ return count;
94
+ }
95
+ /**
96
+ * Parse a YAML frontmatter string into a key-value record.
97
+ *
98
+ * Handles simple `key: value` pairs common in markdown frontmatter.
99
+ * Values are trimmed; quoted strings have their quotes removed.
100
+ * Returns `null` if parsing fails or the input is empty.
101
+ *
102
+ * @param yaml - The raw YAML string (without the `---` delimiters)
103
+ * @returns A record of string keys to parsed values, or null
104
+ */
105
+ export function parseFrontmatter(yaml) {
106
+ if (!yaml || !yaml.trim())
107
+ return null;
108
+ const result = {};
109
+ for (const line of yaml.split('\n')) {
110
+ const trimmed = line.trim();
111
+ if (!trimmed || trimmed.startsWith('#'))
112
+ continue;
113
+ const colonIdx = trimmed.indexOf(':');
114
+ if (colonIdx < 1)
115
+ continue;
116
+ const key = trimmed.slice(0, colonIdx).trim();
117
+ let value = trimmed.slice(colonIdx + 1).trim();
118
+ // Remove surrounding quotes
119
+ if ((value.startsWith('"') && value.endsWith('"')) ||
120
+ (value.startsWith("'") && value.endsWith("'"))) {
121
+ value = value.slice(1, -1);
122
+ }
123
+ // Parse booleans and numbers
124
+ if (value === 'true') {
125
+ result[key] = true;
126
+ }
127
+ else if (value === 'false') {
128
+ result[key] = false;
129
+ }
130
+ else if (value !== '' && !isNaN(Number(value))) {
131
+ result[key] = Number(value);
132
+ }
133
+ else {
134
+ result[key] = value;
135
+ }
136
+ }
137
+ return Object.keys(result).length > 0 ? result : null;
138
+ }
139
+ /**
140
+ * Create a minimal MarkdownDocument from a list of block nodes.
141
+ * Convenience function for programmatic document construction.
142
+ */
143
+ export function createDocument(...children) {
144
+ return {
145
+ type: 'document',
146
+ children,
147
+ };
148
+ }
149
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/markdown/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Seeded pseudo-random number generator (Mulberry32 algorithm).
3
+ *
4
+ * Provides deterministic, reproducible randomness from an integer seed.
5
+ * Useful for consistent slideshow generation, shuffling, and selection.
6
+ *
7
+ * ```ts
8
+ * const rng = new SeededRandom(42);
9
+ * rng.next(); // 0.0–1.0
10
+ * rng.nextInt(10); // 0–9
11
+ * rng.pick(['a', 'b']); // 'a' or 'b'
12
+ * ```
13
+ */
14
+ export declare class SeededRandom {
15
+ private state;
16
+ constructor(seed: number);
17
+ /** Random float in [0, 1). */
18
+ next(): number;
19
+ /** Random integer in [0, max). */
20
+ nextInt(max: number): number;
21
+ /** Random integer in [min, max). */
22
+ nextIntRange(min: number, max: number): number;
23
+ /** Random boolean with given probability of `true` (default 0.5). */
24
+ nextBool(probability?: number): boolean;
25
+ /** Pick a random element, or `undefined` if array is empty. */
26
+ pick<T>(array: T[]): T | undefined;
27
+ /** Pick a random element; throws if empty. */
28
+ pickRequired<T>(array: T[]): T;
29
+ /** Pick `count` unique random elements (fewer if array is smaller). */
30
+ pickMultiple<T>(array: T[], count: number): T[];
31
+ /** Fisher-Yates shuffle **in place**. Returns the same array. */
32
+ shuffle<T>(array: T[]): T[];
33
+ /** Return a **new** shuffled copy. */
34
+ shuffled<T>(array: readonly T[]): T[];
35
+ /** Weighted random selection. Returns `undefined` if items is empty. */
36
+ pickWeighted<T>(items: {
37
+ item: T;
38
+ weight: number;
39
+ }[]): T | undefined;
40
+ /** Current internal state (for debugging / serialization). */
41
+ getState(): number;
42
+ /** Create an independent sub-stream keyed by a modifier. */
43
+ derive(modifier: string | number): SeededRandom;
44
+ }
45
+ /**
46
+ * Simple string → 32-bit hash (djb2 algorithm).
47
+ * Useful for turning a document ID into a numeric seed.
48
+ */
49
+ export declare function hashString(str: string): number;
50
+ //# sourceMappingURL=SeededRandom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeededRandom.d.ts","sourceRoot":"","sources":["../../src/random/SeededRandom.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,EAAE,MAAM;IAOxB,8BAA8B;IAC9B,IAAI,IAAI,MAAM;IAOd,kCAAkC;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI5B,oCAAoC;IACpC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAI9C,qEAAqE;IACrE,QAAQ,CAAC,WAAW,GAAE,MAAY,GAAG,OAAO;IAI5C,+DAA+D;IAC/D,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS;IAKlC,8CAA8C;IAC9C,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC;IAO9B,uEAAuE;IACvE,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE;IAc/C,iEAAiE;IACjE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IAQ3B,sCAAsC;IACtC,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE;IAIrC,wEAAwE;IACxE,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,CAAC,GAAG,SAAS;IAcpE,8DAA8D;IAC9D,QAAQ,IAAI,MAAM;IAIlB,4DAA4D;IAC5D,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY;CAIhD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9C"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Seeded pseudo-random number generator (Mulberry32 algorithm).
3
+ *
4
+ * Provides deterministic, reproducible randomness from an integer seed.
5
+ * Useful for consistent slideshow generation, shuffling, and selection.
6
+ *
7
+ * ```ts
8
+ * const rng = new SeededRandom(42);
9
+ * rng.next(); // 0.0–1.0
10
+ * rng.nextInt(10); // 0–9
11
+ * rng.pick(['a', 'b']); // 'a' or 'b'
12
+ * ```
13
+ */
14
+ export class SeededRandom {
15
+ constructor(seed) {
16
+ this.state = seed >>> 0;
17
+ if (this.state === 0) {
18
+ this.state = 0xdeadbeef;
19
+ }
20
+ }
21
+ /** Random float in [0, 1). */
22
+ next() {
23
+ let t = (this.state += 0x6d2b79f5);
24
+ t = Math.imul(t ^ (t >>> 15), t | 1);
25
+ t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
26
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
27
+ }
28
+ /** Random integer in [0, max). */
29
+ nextInt(max) {
30
+ return Math.floor(this.next() * max);
31
+ }
32
+ /** Random integer in [min, max). */
33
+ nextIntRange(min, max) {
34
+ return min + Math.floor(this.next() * (max - min));
35
+ }
36
+ /** Random boolean with given probability of `true` (default 0.5). */
37
+ nextBool(probability = 0.5) {
38
+ return this.next() < probability;
39
+ }
40
+ /** Pick a random element, or `undefined` if array is empty. */
41
+ pick(array) {
42
+ if (array.length === 0)
43
+ return undefined;
44
+ return array[this.nextInt(array.length)];
45
+ }
46
+ /** Pick a random element; throws if empty. */
47
+ pickRequired(array) {
48
+ if (array.length === 0) {
49
+ throw new Error('Cannot pick from empty array');
50
+ }
51
+ return array[this.nextInt(array.length)];
52
+ }
53
+ /** Pick `count` unique random elements (fewer if array is smaller). */
54
+ pickMultiple(array, count) {
55
+ if (count >= array.length) {
56
+ return this.shuffle([...array]);
57
+ }
58
+ const result = [];
59
+ const available = [...array];
60
+ for (let i = 0; i < count && available.length > 0; i++) {
61
+ const index = this.nextInt(available.length);
62
+ result.push(available[index]);
63
+ available.splice(index, 1);
64
+ }
65
+ return result;
66
+ }
67
+ /** Fisher-Yates shuffle **in place**. Returns the same array. */
68
+ shuffle(array) {
69
+ for (let i = array.length - 1; i > 0; i--) {
70
+ const j = this.nextInt(i + 1);
71
+ [array[i], array[j]] = [array[j], array[i]];
72
+ }
73
+ return array;
74
+ }
75
+ /** Return a **new** shuffled copy. */
76
+ shuffled(array) {
77
+ return this.shuffle([...array]);
78
+ }
79
+ /** Weighted random selection. Returns `undefined` if items is empty. */
80
+ pickWeighted(items) {
81
+ if (items.length === 0)
82
+ return undefined;
83
+ const totalWeight = items.reduce((sum, { weight }) => sum + weight, 0);
84
+ if (totalWeight <= 0)
85
+ return items[0]?.item;
86
+ let random = this.next() * totalWeight;
87
+ for (const { item, weight } of items) {
88
+ random -= weight;
89
+ if (random <= 0)
90
+ return item;
91
+ }
92
+ return items[items.length - 1]?.item;
93
+ }
94
+ /** Current internal state (for debugging / serialization). */
95
+ getState() {
96
+ return this.state;
97
+ }
98
+ /** Create an independent sub-stream keyed by a modifier. */
99
+ derive(modifier) {
100
+ const hash = typeof modifier === 'string' ? hashString(modifier) : modifier >>> 0;
101
+ return new SeededRandom(this.state ^ hash);
102
+ }
103
+ }
104
+ /**
105
+ * Simple string → 32-bit hash (djb2 algorithm).
106
+ * Useful for turning a document ID into a numeric seed.
107
+ */
108
+ export function hashString(str) {
109
+ let hash = 5381;
110
+ for (let i = 0; i < str.length; i++) {
111
+ hash = ((hash << 5) + hash) ^ str.charCodeAt(i);
112
+ }
113
+ return hash >>> 0;
114
+ }
115
+ //# sourceMappingURL=SeededRandom.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeededRandom.js","sourceRoot":"","sources":["../../src/random/SeededRandom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { SeededRandom, hashString } from './SeededRandom.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/random/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { SeededRandom, hashString } from './SeededRandom.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/random/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}