wiki-graph-core 0.3.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 (576) hide show
  1. package/LICENSE +201 -0
  2. package/data/editor/clue_reviewer.jinja +410 -0
  3. package/data/editor/clue_reviewer_generator.jinja +428 -0
  4. package/data/editor/revision_feedback.jinja +5 -0
  5. package/data/editor/text_compressor.jinja +127 -0
  6. package/data/guaranteed/response_intent_classifier.jinja +8 -0
  7. package/data/help/commands/archive/next.jinja +29 -0
  8. package/data/help/commands/gc.jinja +38 -0
  9. package/data/help/commands/legacy/migrate.jinja +20 -0
  10. package/data/help/commands/legacy.jinja +19 -0
  11. package/data/help/commands/maintenance/chapter/add.jinja +41 -0
  12. package/data/help/commands/maintenance/chapter/list.jinja +33 -0
  13. package/data/help/commands/maintenance/chapter/move.jinja +36 -0
  14. package/data/help/commands/maintenance/chapter/remove.jinja +26 -0
  15. package/data/help/commands/maintenance/chapter/reset.jinja +29 -0
  16. package/data/help/commands/maintenance/chapter/set-source.jinja +34 -0
  17. package/data/help/commands/maintenance/chapter/set-summary.jinja +31 -0
  18. package/data/help/commands/maintenance/chapter/set-title.jinja +29 -0
  19. package/data/help/commands/maintenance/chapter/tree.jinja +58 -0
  20. package/data/help/commands/maintenance/chapter.jinja +59 -0
  21. package/data/help/commands/maintenance/cover.jinja +28 -0
  22. package/data/help/commands/maintenance/meta.jinja +55 -0
  23. package/data/help/commands/predicate.jinja +460 -0
  24. package/data/help/commands/root.jinja +83 -0
  25. package/data/help/commands/transform.jinja +34 -0
  26. package/data/help/commands/uri.jinja +274 -0
  27. package/data/help/topics/config.jinja +88 -0
  28. package/data/help/topics/format.jinja +72 -0
  29. package/data/help/topics/readiness.jinja +99 -0
  30. package/data/help/topics/recipe.jinja +151 -0
  31. package/data/help/topics/runtime.jinja +62 -0
  32. package/data/help/topics/uri.jinja +178 -0
  33. package/data/output/epub/cover.xhtml.jinja +13 -0
  34. package/data/output/epub/nav.xhtml.jinja +12 -0
  35. package/data/output/epub/package.opf.xml.jinja +39 -0
  36. package/data/output/epub/section.xhtml.jinja +12 -0
  37. package/data/topologization/book_coherence_extraction.jinja +223 -0
  38. package/data/topologization/chunk_extraction.jinja +233 -0
  39. package/data/topologization/evidence_choice.jinja +38 -0
  40. package/data/topologization/translate_chunks.jinja +138 -0
  41. package/data/topologization/user_focused_extraction.jinja +378 -0
  42. package/dist/archive/query/archive-view.d.ts +26 -0
  43. package/dist/archive/query/archive-view.js +4540 -0
  44. package/dist/archive/query/archive-view.js.map +1 -0
  45. package/dist/archive/query/continuation-cursor.d.ts +61 -0
  46. package/dist/archive/query/continuation-cursor.js +363 -0
  47. package/dist/archive/query/continuation-cursor.js.map +1 -0
  48. package/dist/archive/query/index.d.ts +29 -0
  49. package/dist/archive/query/index.js +63 -0
  50. package/dist/archive/query/index.js.map +1 -0
  51. package/dist/archive/query/lexical-search.d.ts +22 -0
  52. package/dist/archive/query/lexical-search.js +137 -0
  53. package/dist/archive/query/lexical-search.js.map +1 -0
  54. package/dist/archive/query/search-cache.d.ts +192 -0
  55. package/dist/archive/query/search-cache.js +1248 -0
  56. package/dist/archive/query/search-cache.js.map +1 -0
  57. package/dist/archive/search-index/index.d.ts +26 -0
  58. package/dist/archive/search-index/index.js +29 -0
  59. package/dist/archive/search-index/index.js.map +1 -0
  60. package/dist/archive/search-index/search-index.d.ts +26 -0
  61. package/dist/archive/search-index/search-index.js +555 -0
  62. package/dist/archive/search-index/search-index.js.map +1 -0
  63. package/dist/archive/search-index/search-tokenizer.d.ts +16 -0
  64. package/dist/archive/search-index/search-tokenizer.js +225 -0
  65. package/dist/archive/search-index/search-tokenizer.js.map +1 -0
  66. package/dist/common/cli-command.d.ts +4 -0
  67. package/dist/common/cli-command.js +7 -0
  68. package/dist/common/cli-command.js.map +1 -0
  69. package/dist/common/data-dir.d.ts +3 -0
  70. package/dist/common/data-dir.js +48 -0
  71. package/dist/common/data-dir.js.map +1 -0
  72. package/dist/common/language.d.ts +55 -0
  73. package/dist/common/language.js +208 -0
  74. package/dist/common/language.js.map +1 -0
  75. package/dist/common/llm-scope.d.ts +19 -0
  76. package/dist/common/llm-scope.js +31 -0
  77. package/dist/common/llm-scope.js.map +1 -0
  78. package/dist/common/logging.d.ts +22 -0
  79. package/dist/common/logging.js +141 -0
  80. package/dist/common/logging.js.map +1 -0
  81. package/dist/common/template.d.ts +8 -0
  82. package/dist/common/template.js +54 -0
  83. package/dist/common/template.js.map +1 -0
  84. package/dist/common/tinyld-language.d.ts +6 -0
  85. package/dist/common/tinyld-language.js +34 -0
  86. package/dist/common/tinyld-language.js.map +1 -0
  87. package/dist/common/wiki-graph-dir.d.ts +10 -0
  88. package/dist/common/wiki-graph-dir.js +41 -0
  89. package/dist/common/wiki-graph-dir.js.map +1 -0
  90. package/dist/common/wiki-graph-temp.d.ts +6 -0
  91. package/dist/common/wiki-graph-temp.js +21 -0
  92. package/dist/common/wiki-graph-temp.js.map +1 -0
  93. package/dist/common/wiki-graph-uri.d.ts +28 -0
  94. package/dist/common/wiki-graph-uri.js +171 -0
  95. package/dist/common/wiki-graph-uri.js.map +1 -0
  96. package/dist/context/index.d.ts +1 -0
  97. package/dist/context/index.js +13 -0
  98. package/dist/context/index.js.map +1 -0
  99. package/dist/context/task-context.d.ts +41 -0
  100. package/dist/context/task-context.js +111 -0
  101. package/dist/context/task-context.js.map +1 -0
  102. package/dist/document/database.d.ts +30 -0
  103. package/dist/document/database.js +273 -0
  104. package/dist/document/database.js.map +1 -0
  105. package/dist/document/document.d.ts +153 -0
  106. package/dist/document/document.js +615 -0
  107. package/dist/document/document.js.map +1 -0
  108. package/dist/document/fragments.d.ts +63 -0
  109. package/dist/document/fragments.js +371 -0
  110. package/dist/document/fragments.js.map +1 -0
  111. package/dist/document/index.d.ts +13 -0
  112. package/dist/document/index.js +62 -0
  113. package/dist/document/index.js.map +1 -0
  114. package/dist/document/schema.d.ts +8 -0
  115. package/dist/document/schema.js +472 -0
  116. package/dist/document/schema.js.map +1 -0
  117. package/dist/document/shared-state-database.d.ts +9 -0
  118. package/dist/document/shared-state-database.js +193 -0
  119. package/dist/document/shared-state-database.js.map +1 -0
  120. package/dist/document/stores.d.ts +203 -0
  121. package/dist/document/stores.js +1678 -0
  122. package/dist/document/stores.js.map +1 -0
  123. package/dist/document/text-streams.d.ts +86 -0
  124. package/dist/document/text-streams.js +515 -0
  125. package/dist/document/text-streams.js.map +1 -0
  126. package/dist/document/types.d.ts +148 -0
  127. package/dist/document/types.js +69 -0
  128. package/dist/document/types.js.map +1 -0
  129. package/dist/editor/clue.d.ts +27 -0
  130. package/dist/editor/clue.js +158 -0
  131. package/dist/editor/clue.js.map +1 -0
  132. package/dist/editor/compressor.d.ts +18 -0
  133. package/dist/editor/compressor.js +68 -0
  134. package/dist/editor/compressor.js.map +1 -0
  135. package/dist/editor/editor.d.ts +39 -0
  136. package/dist/editor/editor.js +253 -0
  137. package/dist/editor/editor.js.map +1 -0
  138. package/dist/editor/feedback.d.ts +16 -0
  139. package/dist/editor/feedback.js +104 -0
  140. package/dist/editor/feedback.js.map +1 -0
  141. package/dist/editor/index.d.ts +17 -0
  142. package/dist/editor/index.js +5 -0
  143. package/dist/editor/index.js.map +1 -0
  144. package/dist/editor/language-review.d.ts +14 -0
  145. package/dist/editor/language-review.js +35 -0
  146. package/dist/editor/language-review.js.map +1 -0
  147. package/dist/editor/log.d.ts +37 -0
  148. package/dist/editor/log.js +202 -0
  149. package/dist/editor/log.js.map +1 -0
  150. package/dist/editor/markup.d.ts +20 -0
  151. package/dist/editor/markup.js +294 -0
  152. package/dist/editor/markup.js.map +1 -0
  153. package/dist/editor/prompt-templates.d.ts +6 -0
  154. package/dist/editor/prompt-templates.js +11 -0
  155. package/dist/editor/prompt-templates.js.map +1 -0
  156. package/dist/editor/response.d.ts +5 -0
  157. package/dist/editor/response.js +31 -0
  158. package/dist/editor/response.js.map +1 -0
  159. package/dist/editor/review.d.ts +34 -0
  160. package/dist/editor/review.js +189 -0
  161. package/dist/editor/review.js.map +1 -0
  162. package/dist/editor/types.d.ts +31 -0
  163. package/dist/editor/types.js +21 -0
  164. package/dist/editor/types.js.map +1 -0
  165. package/dist/evidence-selection/anchor-resolver.d.ts +43 -0
  166. package/dist/evidence-selection/anchor-resolver.js +783 -0
  167. package/dist/evidence-selection/anchor-resolver.js.map +1 -0
  168. package/dist/evidence-selection/anchor-types.d.ts +27 -0
  169. package/dist/evidence-selection/anchor-types.js +1 -0
  170. package/dist/evidence-selection/anchor-types.js.map +1 -0
  171. package/dist/evidence-selection/index.d.ts +8 -0
  172. package/dist/evidence-selection/index.js +32 -0
  173. package/dist/evidence-selection/index.js.map +1 -0
  174. package/dist/evidence-selection/prompt.d.ts +18 -0
  175. package/dist/evidence-selection/prompt.js +54 -0
  176. package/dist/evidence-selection/prompt.js.map +1 -0
  177. package/dist/evidence-selection/quote-score.d.ts +29 -0
  178. package/dist/evidence-selection/quote-score.js +331 -0
  179. package/dist/evidence-selection/quote-score.js.map +1 -0
  180. package/dist/evidence-selection/selection-resolver.d.ts +19 -0
  181. package/dist/evidence-selection/selection-resolver.js +303 -0
  182. package/dist/evidence-selection/selection-resolver.js.map +1 -0
  183. package/dist/evidence-selection/text.d.ts +4 -0
  184. package/dist/evidence-selection/text.js +66 -0
  185. package/dist/evidence-selection/text.js.map +1 -0
  186. package/dist/evidence-selection/types.d.ts +36 -0
  187. package/dist/evidence-selection/types.js +1 -0
  188. package/dist/evidence-selection/types.js.map +1 -0
  189. package/dist/facade/app.d.ts +75 -0
  190. package/dist/facade/app.js +141 -0
  191. package/dist/facade/app.js.map +1 -0
  192. package/dist/facade/build-queue.d.ts +181 -0
  193. package/dist/facade/build-queue.js +1442 -0
  194. package/dist/facade/build-queue.js.map +1 -0
  195. package/dist/facade/chapter-build.d.ts +60 -0
  196. package/dist/facade/chapter-build.js +1020 -0
  197. package/dist/facade/chapter-build.js.map +1 -0
  198. package/dist/facade/chapter.d.ts +168 -0
  199. package/dist/facade/chapter.js +944 -0
  200. package/dist/facade/chapter.js.map +1 -0
  201. package/dist/facade/digest.d.ts +55 -0
  202. package/dist/facade/digest.js +168 -0
  203. package/dist/facade/digest.js.map +1 -0
  204. package/dist/facade/graph.d.ts +60 -0
  205. package/dist/facade/graph.js +203 -0
  206. package/dist/facade/graph.js.map +1 -0
  207. package/dist/facade/import.d.ts +49 -0
  208. package/dist/facade/import.js +262 -0
  209. package/dist/facade/import.js.map +1 -0
  210. package/dist/facade/index.d.ts +39 -0
  211. package/dist/facade/index.js +171 -0
  212. package/dist/facade/index.js.map +1 -0
  213. package/dist/facade/knowledge-graph-build.d.ts +75 -0
  214. package/dist/facade/knowledge-graph-build.js +897 -0
  215. package/dist/facade/knowledge-graph-build.js.map +1 -0
  216. package/dist/facade/llm-sampling.d.ts +11 -0
  217. package/dist/facade/llm-sampling.js +58 -0
  218. package/dist/facade/llm-sampling.js.map +1 -0
  219. package/dist/facade/types.d.ts +8 -0
  220. package/dist/facade/types.js +1 -0
  221. package/dist/facade/types.js.map +1 -0
  222. package/dist/facade/wiki-graph-archive.d.ts +41 -0
  223. package/dist/facade/wiki-graph-archive.js +130 -0
  224. package/dist/facade/wiki-graph-archive.js.map +1 -0
  225. package/dist/gc/files.d.ts +15 -0
  226. package/dist/gc/files.js +141 -0
  227. package/dist/gc/files.js.map +1 -0
  228. package/dist/gc/index.d.ts +2 -0
  229. package/dist/gc/index.js +5 -0
  230. package/dist/gc/index.js.map +1 -0
  231. package/dist/gc/lock.d.ts +3 -0
  232. package/dist/gc/lock.js +137 -0
  233. package/dist/gc/lock.js.map +1 -0
  234. package/dist/gc/runner.d.ts +9 -0
  235. package/dist/gc/runner.js +129 -0
  236. package/dist/gc/runner.js.map +1 -0
  237. package/dist/gc/tmp-gc.d.ts +5 -0
  238. package/dist/gc/tmp-gc.js +57 -0
  239. package/dist/gc/tmp-gc.js.map +1 -0
  240. package/dist/gc/types.d.ts +24 -0
  241. package/dist/gc/types.js +1 -0
  242. package/dist/gc/types.js.map +1 -0
  243. package/dist/gc.cjs +10041 -0
  244. package/dist/gc.cjs.map +1 -0
  245. package/dist/gc.d.cts +10 -0
  246. package/dist/gc.d.ts +2 -0
  247. package/dist/gc.js +5 -0
  248. package/dist/gc.js.map +1 -0
  249. package/dist/guaranteed/classifier.d.ts +10 -0
  250. package/dist/guaranteed/classifier.js +88 -0
  251. package/dist/guaranteed/classifier.js.map +1 -0
  252. package/dist/guaranteed/errors.d.ts +38 -0
  253. package/dist/guaranteed/errors.js +73 -0
  254. package/dist/guaranteed/errors.js.map +1 -0
  255. package/dist/guaranteed/index.d.ts +7 -0
  256. package/dist/guaranteed/index.js +21 -0
  257. package/dist/guaranteed/index.js.map +1 -0
  258. package/dist/guaranteed/request.d.ts +8 -0
  259. package/dist/guaranteed/request.js +206 -0
  260. package/dist/guaranteed/request.js.map +1 -0
  261. package/dist/guaranteed/response.d.ts +12 -0
  262. package/dist/guaranteed/response.js +98 -0
  263. package/dist/guaranteed/response.js.map +1 -0
  264. package/dist/guaranteed/types.d.ts +20 -0
  265. package/dist/guaranteed/types.js +1 -0
  266. package/dist/guaranteed/types.js.map +1 -0
  267. package/dist/index-B8NNnQ8P.d.ts +424 -0
  268. package/dist/index.cjs +34774 -0
  269. package/dist/index.cjs.map +1 -0
  270. package/dist/index.d.cts +2462 -0
  271. package/dist/index.d.ts +79 -0
  272. package/dist/index.js +168 -0
  273. package/dist/index.js.map +1 -0
  274. package/dist/legacy-sdpub/upgrade.d.ts +7 -0
  275. package/dist/legacy-sdpub/upgrade.js +795 -0
  276. package/dist/legacy-sdpub/upgrade.js.map +1 -0
  277. package/dist/llm/cache.d.ts +13 -0
  278. package/dist/llm/cache.js +35 -0
  279. package/dist/llm/cache.js.map +1 -0
  280. package/dist/llm/client.d.ts +26 -0
  281. package/dist/llm/client.js +572 -0
  282. package/dist/llm/client.js.map +1 -0
  283. package/dist/llm/context.d.ts +22 -0
  284. package/dist/llm/context.js +78 -0
  285. package/dist/llm/context.js.map +1 -0
  286. package/dist/llm/errors.d.ts +7 -0
  287. package/dist/llm/errors.js +12 -0
  288. package/dist/llm/errors.js.map +1 -0
  289. package/dist/llm/index.d.ts +7 -0
  290. package/dist/llm/index.js +17 -0
  291. package/dist/llm/index.js.map +1 -0
  292. package/dist/llm/request-log.d.ts +9 -0
  293. package/dist/llm/request-log.js +35 -0
  294. package/dist/llm/request-log.js.map +1 -0
  295. package/dist/llm/sampling.d.ts +11 -0
  296. package/dist/llm/sampling.js +67 -0
  297. package/dist/llm/sampling.js.map +1 -0
  298. package/dist/llm/types.d.ts +50 -0
  299. package/dist/llm/types.js +1 -0
  300. package/dist/llm/types.js.map +1 -0
  301. package/dist/output/epub/archive.d.ts +9 -0
  302. package/dist/output/epub/archive.js +81 -0
  303. package/dist/output/epub/archive.js.map +1 -0
  304. package/dist/output/epub/book.d.ts +15 -0
  305. package/dist/output/epub/book.js +76 -0
  306. package/dist/output/epub/book.js.map +1 -0
  307. package/dist/output/epub/content.d.ts +9 -0
  308. package/dist/output/epub/content.js +35 -0
  309. package/dist/output/epub/content.js.map +1 -0
  310. package/dist/output/epub/index.d.ts +20 -0
  311. package/dist/output/epub/index.js +14 -0
  312. package/dist/output/epub/index.js.map +1 -0
  313. package/dist/output/epub/model.d.ts +24 -0
  314. package/dist/output/epub/model.js +1 -0
  315. package/dist/output/epub/model.js.map +1 -0
  316. package/dist/output/epub/navigation.d.ts +10 -0
  317. package/dist/output/epub/navigation.js +39 -0
  318. package/dist/output/epub/navigation.js.map +1 -0
  319. package/dist/output/epub/package.d.ts +17 -0
  320. package/dist/output/epub/package.js +29 -0
  321. package/dist/output/epub/package.js.map +1 -0
  322. package/dist/output/epub/shared.d.ts +4 -0
  323. package/dist/output/epub/shared.js +12 -0
  324. package/dist/output/epub/shared.js.map +1 -0
  325. package/dist/output/epub/templates.d.ts +35 -0
  326. package/dist/output/epub/templates.js +26 -0
  327. package/dist/output/epub/templates.js.map +1 -0
  328. package/dist/output/index.d.ts +14 -0
  329. package/dist/output/index.js +11 -0
  330. package/dist/output/index.js.map +1 -0
  331. package/dist/output/plain-text.d.ts +18 -0
  332. package/dist/output/plain-text.js +56 -0
  333. package/dist/output/plain-text.js.map +1 -0
  334. package/dist/progress/index.d.ts +3 -0
  335. package/dist/progress/index.js +14 -0
  336. package/dist/progress/index.js.map +1 -0
  337. package/dist/progress/reporter.d.ts +10 -0
  338. package/dist/progress/reporter.js +79 -0
  339. package/dist/progress/reporter.js.map +1 -0
  340. package/dist/progress/tracker.d.ts +37 -0
  341. package/dist/progress/tracker.js +119 -0
  342. package/dist/progress/tracker.js.map +1 -0
  343. package/dist/progress/types.d.ts +28 -0
  344. package/dist/progress/types.js +1 -0
  345. package/dist/progress/types.js.map +1 -0
  346. package/dist/reader/attention/attention.d.ts +39 -0
  347. package/dist/reader/attention/attention.js +123 -0
  348. package/dist/reader/attention/attention.js.map +1 -0
  349. package/dist/reader/attention/index.d.ts +9 -0
  350. package/dist/reader/attention/index.js +5 -0
  351. package/dist/reader/attention/index.js.map +1 -0
  352. package/dist/reader/attention/wave-reflection.d.ts +21 -0
  353. package/dist/reader/attention/wave-reflection.js +153 -0
  354. package/dist/reader/attention/wave-reflection.js.map +1 -0
  355. package/dist/reader/attention/working-memory.d.ts +28 -0
  356. package/dist/reader/attention/working-memory.js +62 -0
  357. package/dist/reader/attention/working-memory.js.map +1 -0
  358. package/dist/reader/chunk-batch/extract.d.ts +13 -0
  359. package/dist/reader/chunk-batch/extract.js +14 -0
  360. package/dist/reader/chunk-batch/extract.js.map +1 -0
  361. package/dist/reader/chunk-batch/extractor.d.ts +17 -0
  362. package/dist/reader/chunk-batch/extractor.js +337 -0
  363. package/dist/reader/chunk-batch/extractor.js.map +1 -0
  364. package/dist/reader/chunk-batch/fragment-projection.d.ts +34 -0
  365. package/dist/reader/chunk-batch/fragment-projection.js +94 -0
  366. package/dist/reader/chunk-batch/fragment-projection.js.map +1 -0
  367. package/dist/reader/chunk-batch/index.d.ts +12 -0
  368. package/dist/reader/chunk-batch/index.js +13 -0
  369. package/dist/reader/chunk-batch/index.js.map +1 -0
  370. package/dist/reader/chunk-batch/language.d.ts +9 -0
  371. package/dist/reader/chunk-batch/language.js +23 -0
  372. package/dist/reader/chunk-batch/language.js.map +1 -0
  373. package/dist/reader/chunk-batch/parser.d.ts +94 -0
  374. package/dist/reader/chunk-batch/parser.js +640 -0
  375. package/dist/reader/chunk-batch/parser.js.map +1 -0
  376. package/dist/reader/chunk-batch/prompt-templates.d.ts +6 -0
  377. package/dist/reader/chunk-batch/prompt-templates.js +11 -0
  378. package/dist/reader/chunk-batch/prompt-templates.js.map +1 -0
  379. package/dist/reader/chunk-batch/types.d.ts +85 -0
  380. package/dist/reader/chunk-batch/types.js +1 -0
  381. package/dist/reader/chunk-batch/types.js.map +1 -0
  382. package/dist/reader/index.d.ts +13 -0
  383. package/dist/reader/index.js +7 -0
  384. package/dist/reader/index.js.map +1 -0
  385. package/dist/reader/reader.d.ts +37 -0
  386. package/dist/reader/reader.js +82 -0
  387. package/dist/reader/reader.js.map +1 -0
  388. package/dist/reader/segment/index.d.ts +2 -0
  389. package/dist/reader/segment/index.js +5 -0
  390. package/dist/reader/segment/index.js.map +1 -0
  391. package/dist/reader/segment/intl-segmenter.d.ts +5 -0
  392. package/dist/reader/segment/intl-segmenter.js +102 -0
  393. package/dist/reader/segment/intl-segmenter.js.map +1 -0
  394. package/dist/reader/segment/segment.d.ts +5 -0
  395. package/dist/reader/segment/segment.js +9 -0
  396. package/dist/reader/segment/segment.js.map +1 -0
  397. package/dist/reader/segment/types.d.ts +14 -0
  398. package/dist/reader/segment/types.js +1 -0
  399. package/dist/reader/segment/types.js.map +1 -0
  400. package/dist/reader/types.d.ts +29 -0
  401. package/dist/reader/types.js +1 -0
  402. package/dist/reader/types.js.map +1 -0
  403. package/dist/serial.d.ts +89 -0
  404. package/dist/serial.js +476 -0
  405. package/dist/serial.js.map +1 -0
  406. package/dist/source/adapter.d.ts +15 -0
  407. package/dist/source/adapter.js +1 -0
  408. package/dist/source/adapter.js.map +1 -0
  409. package/dist/source/epub/archive.d.ts +27 -0
  410. package/dist/source/epub/archive.js +189 -0
  411. package/dist/source/epub/archive.js.map +1 -0
  412. package/dist/source/epub/content.d.ts +22 -0
  413. package/dist/source/epub/content.js +183 -0
  414. package/dist/source/epub/content.js.map +1 -0
  415. package/dist/source/epub/document.d.ts +55 -0
  416. package/dist/source/epub/document.js +179 -0
  417. package/dist/source/epub/document.js.map +1 -0
  418. package/dist/source/epub/index.d.ts +10 -0
  419. package/dist/source/epub/index.js +6 -0
  420. package/dist/source/epub/index.js.map +1 -0
  421. package/dist/source/epub/navigation.d.ts +16 -0
  422. package/dist/source/epub/navigation.js +215 -0
  423. package/dist/source/epub/navigation.js.map +1 -0
  424. package/dist/source/epub/package.d.ts +33 -0
  425. package/dist/source/epub/package.js +237 -0
  426. package/dist/source/epub/package.js.map +1 -0
  427. package/dist/source/epub/xml.d.ts +16 -0
  428. package/dist/source/epub/xml.js +111 -0
  429. package/dist/source/epub/xml.js.map +1 -0
  430. package/dist/source/index.d.ts +12 -0
  431. package/dist/source/index.js +32 -0
  432. package/dist/source/index.js.map +1 -0
  433. package/dist/source/meta.d.ts +30 -0
  434. package/dist/source/meta.js +22 -0
  435. package/dist/source/meta.js.map +1 -0
  436. package/dist/source/plain-text.d.ts +16 -0
  437. package/dist/source/plain-text.js +86 -0
  438. package/dist/source/plain-text.js.map +1 -0
  439. package/dist/source/toc.d.ts +16 -0
  440. package/dist/source/toc.js +17 -0
  441. package/dist/source/toc.js.map +1 -0
  442. package/dist/source/types.d.ts +16 -0
  443. package/dist/source/types.js +1 -0
  444. package/dist/source/types.js.map +1 -0
  445. package/dist/topology/grouping.d.ts +15 -0
  446. package/dist/topology/grouping.js +18 -0
  447. package/dist/topology/grouping.js.map +1 -0
  448. package/dist/topology/index.d.ts +21 -0
  449. package/dist/topology/index.js +5 -0
  450. package/dist/topology/index.js.map +1 -0
  451. package/dist/topology/resource-segmentation.d.ts +13 -0
  452. package/dist/topology/resource-segmentation.js +111 -0
  453. package/dist/topology/resource-segmentation.js.map +1 -0
  454. package/dist/topology/segment-incision.d.ts +18 -0
  455. package/dist/topology/segment-incision.js +197 -0
  456. package/dist/topology/segment-incision.js.map +1 -0
  457. package/dist/topology/snake-detector.d.ts +13 -0
  458. package/dist/topology/snake-detector.js +520 -0
  459. package/dist/topology/snake-detector.js.map +1 -0
  460. package/dist/topology/snake-graph-builder.d.ts +14 -0
  461. package/dist/topology/snake-graph-builder.js +76 -0
  462. package/dist/topology/snake-graph-builder.js.map +1 -0
  463. package/dist/topology/topology.d.ts +29 -0
  464. package/dist/topology/topology.js +348 -0
  465. package/dist/topology/topology.js.map +1 -0
  466. package/dist/topology/weights.d.ts +10 -0
  467. package/dist/topology/weights.js +84 -0
  468. package/dist/topology/weights.js.map +1 -0
  469. package/dist/types-FVIqiLC9.d.cts +24 -0
  470. package/dist/utils/async-semaphore.d.ts +7 -0
  471. package/dist/utils/async-semaphore.js +40 -0
  472. package/dist/utils/async-semaphore.js.map +1 -0
  473. package/dist/utils/enum.d.ts +5 -0
  474. package/dist/utils/enum.js +18 -0
  475. package/dist/utils/enum.js.map +1 -0
  476. package/dist/utils/hash.d.ts +3 -0
  477. package/dist/utils/hash.js +132 -0
  478. package/dist/utils/hash.js.map +1 -0
  479. package/dist/utils/node-error.d.ts +4 -0
  480. package/dist/utils/node-error.js +59 -0
  481. package/dist/utils/node-error.js.map +1 -0
  482. package/dist/wikg/archive-uri.d.ts +1 -0
  483. package/dist/wikg/archive-uri.js +37 -0
  484. package/dist/wikg/archive-uri.js.map +1 -0
  485. package/dist/wikg/archive.d.ts +28 -0
  486. package/dist/wikg/archive.js +496 -0
  487. package/dist/wikg/archive.js.map +1 -0
  488. package/dist/wikg/index.d.ts +31 -0
  489. package/dist/wikg/index.js +60 -0
  490. package/dist/wikg/index.js.map +1 -0
  491. package/dist/wikg/wikg-coordinator.d.ts +45 -0
  492. package/dist/wikg/wikg-coordinator.js +1687 -0
  493. package/dist/wikg/wikg-coordinator.js.map +1 -0
  494. package/dist/wikg/wiki-graph-archive-file.d.ts +42 -0
  495. package/dist/wikg/wiki-graph-archive-file.js +78 -0
  496. package/dist/wikg/wiki-graph-archive-file.js.map +1 -0
  497. package/dist/wikilink/index.d.ts +10 -0
  498. package/dist/wikilink/index.js +7 -0
  499. package/dist/wikilink/index.js.map +1 -0
  500. package/dist/wikilink/relation-discovery.d.ts +31 -0
  501. package/dist/wikilink/relation-discovery.js +477 -0
  502. package/dist/wikilink/relation-discovery.js.map +1 -0
  503. package/dist/wikilink/types.d.ts +23 -0
  504. package/dist/wikilink/types.js +1 -0
  505. package/dist/wikilink/types.js.map +1 -0
  506. package/dist/wikilink/window.d.ts +7 -0
  507. package/dist/wikilink/window.js +53 -0
  508. package/dist/wikilink/window.js.map +1 -0
  509. package/dist/wikimatch/enrichment.d.ts +10 -0
  510. package/dist/wikimatch/enrichment.js +55 -0
  511. package/dist/wikimatch/enrichment.js.map +1 -0
  512. package/dist/wikimatch/index.d.ts +16 -0
  513. package/dist/wikimatch/index.js +66 -0
  514. package/dist/wikimatch/index.js.map +1 -0
  515. package/dist/wikimatch/option-narrowing.d.ts +17 -0
  516. package/dist/wikimatch/option-narrowing.js +208 -0
  517. package/dist/wikimatch/option-narrowing.js.map +1 -0
  518. package/dist/wikimatch/options.d.ts +14 -0
  519. package/dist/wikimatch/options.js +155 -0
  520. package/dist/wikimatch/options.js.map +1 -0
  521. package/dist/wikimatch/policy-judge.d.ts +17 -0
  522. package/dist/wikimatch/policy-judge.js +430 -0
  523. package/dist/wikimatch/policy-judge.js.map +1 -0
  524. package/dist/wikimatch/range-suppression.d.ts +9 -0
  525. package/dist/wikimatch/range-suppression.js +27 -0
  526. package/dist/wikimatch/range-suppression.js.map +1 -0
  527. package/dist/wikimatch/surface-screening.d.ts +16 -0
  528. package/dist/wikimatch/surface-screening.js +168 -0
  529. package/dist/wikimatch/surface-screening.js.map +1 -0
  530. package/dist/wikimatch/surface-window.d.ts +6 -0
  531. package/dist/wikimatch/surface-window.js +44 -0
  532. package/dist/wikimatch/surface-window.js.map +1 -0
  533. package/dist/wikimatch/types.d.ts +151 -0
  534. package/dist/wikimatch/types.js +1 -0
  535. package/dist/wikimatch/types.js.map +1 -0
  536. package/dist/wikimatch/wikispine.d.ts +43 -0
  537. package/dist/wikimatch/wikispine.js +399 -0
  538. package/dist/wikimatch/wikispine.js.map +1 -0
  539. package/dist/wikimatch/window.d.ts +6 -0
  540. package/dist/wikimatch/window.js +83 -0
  541. package/dist/wikimatch/window.js.map +1 -0
  542. package/dist/wikimatch/words.d.ts +16 -0
  543. package/dist/wikimatch/words.js +66 -0
  544. package/dist/wikimatch/words.js.map +1 -0
  545. package/dist/wikipage/cache.d.ts +18 -0
  546. package/dist/wikipage/cache.js +404 -0
  547. package/dist/wikipage/cache.js.map +1 -0
  548. package/dist/wikipage/fetch-log.d.ts +17 -0
  549. package/dist/wikipage/fetch-log.js +143 -0
  550. package/dist/wikipage/fetch-log.js.map +1 -0
  551. package/dist/wikipage/index.d.ts +14 -0
  552. package/dist/wikipage/index.js +17 -0
  553. package/dist/wikipage/index.js.map +1 -0
  554. package/dist/wikipage/normalizer.d.ts +14 -0
  555. package/dist/wikipage/normalizer.js +147 -0
  556. package/dist/wikipage/normalizer.js.map +1 -0
  557. package/dist/wikipage/rate-limiter.d.ts +13 -0
  558. package/dist/wikipage/rate-limiter.js +84 -0
  559. package/dist/wikipage/rate-limiter.js.map +1 -0
  560. package/dist/wikipage/resolver.d.ts +26 -0
  561. package/dist/wikipage/resolver.js +325 -0
  562. package/dist/wikipage/resolver.js.map +1 -0
  563. package/dist/wikipage/types.d.ts +96 -0
  564. package/dist/wikipage/types.js +1 -0
  565. package/dist/wikipage/types.js.map +1 -0
  566. package/dist/wikipage/wikimedia-client.d.ts +48 -0
  567. package/dist/wikipage/wikimedia-client.js +397 -0
  568. package/dist/wikipage/wikimedia-client.js.map +1 -0
  569. package/dist/worker-BgQ0Xl8T.d.cts +181 -0
  570. package/dist/worker.cjs +5259 -0
  571. package/dist/worker.cjs.map +1 -0
  572. package/dist/worker.d.cts +2 -0
  573. package/dist/worker.d.ts +2 -0
  574. package/dist/worker.js +5 -0
  575. package/dist/worker.js.map +1 -0
  576. package/package.json +78 -0
@@ -0,0 +1,111 @@
1
+ import { SaxesParser } from "saxes";
2
+ function parseXml(content) {
3
+ const parser = new SaxesParser({ xmlns: false });
4
+ const stack = [];
5
+ let root;
6
+ parser.on("opentag", (tag) => {
7
+ const element = {
8
+ name: tag.name,
9
+ attributes: Object.fromEntries(
10
+ Object.entries(tag.attributes).map(([name, value]) => [
11
+ name,
12
+ String(value)
13
+ ])
14
+ ),
15
+ children: [],
16
+ text: ""
17
+ };
18
+ const parent = stack[stack.length - 1];
19
+ if (parent === void 0) {
20
+ root = element;
21
+ } else {
22
+ parent.children.push(element);
23
+ }
24
+ stack.push(element);
25
+ });
26
+ parser.on("text", (text) => {
27
+ const current = stack[stack.length - 1];
28
+ if (current !== void 0) {
29
+ current.text += text;
30
+ }
31
+ });
32
+ parser.on("cdata", (text) => {
33
+ const current = stack[stack.length - 1];
34
+ if (current !== void 0) {
35
+ current.text += text;
36
+ }
37
+ });
38
+ parser.on("closetag", () => {
39
+ stack.pop();
40
+ });
41
+ parser.write(content).close();
42
+ if (root === void 0) {
43
+ throw new Error("XML document is empty");
44
+ }
45
+ return freezeXmlElement(root);
46
+ }
47
+ function findChild(element, localName) {
48
+ return element.children.find(
49
+ (child) => getLocalName(child.name) === localName
50
+ );
51
+ }
52
+ function findChildren(element, localName) {
53
+ return element.children.filter(
54
+ (child) => getLocalName(child.name) === localName
55
+ );
56
+ }
57
+ function findDescendant(element, localName) {
58
+ for (const child of element.children) {
59
+ if (getLocalName(child.name) === localName) {
60
+ return child;
61
+ }
62
+ const descendant = findDescendant(child, localName);
63
+ if (descendant !== void 0) {
64
+ return descendant;
65
+ }
66
+ }
67
+ return void 0;
68
+ }
69
+ function findDescendants(element, localName) {
70
+ const descendants = [];
71
+ for (const child of element.children) {
72
+ if (getLocalName(child.name) === localName) {
73
+ descendants.push(child);
74
+ }
75
+ descendants.push(...findDescendants(child, localName));
76
+ }
77
+ return descendants;
78
+ }
79
+ function getAttribute(element, name) {
80
+ return element.attributes[name];
81
+ }
82
+ function getDescendantText(element) {
83
+ let text = element.text;
84
+ for (const child of element.children) {
85
+ text += getDescendantText(child);
86
+ }
87
+ return text;
88
+ }
89
+ function getLocalName(name) {
90
+ const index = name.indexOf(":");
91
+ return index === -1 ? name : name.slice(index + 1);
92
+ }
93
+ function freezeXmlElement(element) {
94
+ return {
95
+ name: element.name,
96
+ attributes: Object.freeze({ ...element.attributes }),
97
+ children: Object.freeze(element.children.map(freezeXmlElement)),
98
+ text: element.text
99
+ };
100
+ }
101
+ export {
102
+ findChild,
103
+ findChildren,
104
+ findDescendant,
105
+ findDescendants,
106
+ getAttribute,
107
+ getDescendantText,
108
+ getLocalName,
109
+ parseXml
110
+ };
111
+ //# sourceMappingURL=xml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/source/epub/xml.ts"],"sourcesContent":["import { SaxesParser, type SaxesTagPlain } from \"saxes\";\n\nexport interface XmlElement {\n readonly name: string;\n readonly attributes: Readonly<Record<string, string>>;\n readonly children: readonly XmlElement[];\n readonly text: string;\n}\n\ninterface MutableXmlElement {\n readonly name: string;\n readonly attributes: Record<string, string>;\n readonly children: MutableXmlElement[];\n text: string;\n}\n\nexport function parseXml(content: string): XmlElement {\n const parser = new SaxesParser({ xmlns: false });\n const stack: MutableXmlElement[] = [];\n let root: MutableXmlElement | undefined;\n\n parser.on(\"opentag\", (tag: SaxesTagPlain) => {\n const element: MutableXmlElement = {\n name: tag.name,\n attributes: Object.fromEntries(\n Object.entries(tag.attributes).map(([name, value]) => [\n name,\n String(value),\n ]),\n ),\n children: [],\n text: \"\",\n };\n\n const parent = stack[stack.length - 1];\n if (parent === undefined) {\n root = element;\n } else {\n parent.children.push(element);\n }\n\n stack.push(element);\n });\n\n parser.on(\"text\", (text: string) => {\n const current = stack[stack.length - 1];\n if (current !== undefined) {\n current.text += text;\n }\n });\n\n parser.on(\"cdata\", (text: string) => {\n const current = stack[stack.length - 1];\n if (current !== undefined) {\n current.text += text;\n }\n });\n\n parser.on(\"closetag\", () => {\n stack.pop();\n });\n\n parser.write(content).close();\n\n if (root === undefined) {\n throw new Error(\"XML document is empty\");\n }\n\n return freezeXmlElement(root);\n}\n\nexport function findChild(\n element: XmlElement,\n localName: string,\n): XmlElement | undefined {\n return element.children.find(\n (child) => getLocalName(child.name) === localName,\n );\n}\n\nexport function findChildren(\n element: XmlElement,\n localName: string,\n): readonly XmlElement[] {\n return element.children.filter(\n (child) => getLocalName(child.name) === localName,\n );\n}\n\nexport function findDescendant(\n element: XmlElement,\n localName: string,\n): XmlElement | undefined {\n for (const child of element.children) {\n if (getLocalName(child.name) === localName) {\n return child;\n }\n\n const descendant = findDescendant(child, localName);\n if (descendant !== undefined) {\n return descendant;\n }\n }\n\n return undefined;\n}\n\nexport function findDescendants(\n element: XmlElement,\n localName: string,\n): readonly XmlElement[] {\n const descendants: XmlElement[] = [];\n\n for (const child of element.children) {\n if (getLocalName(child.name) === localName) {\n descendants.push(child);\n }\n\n descendants.push(...findDescendants(child, localName));\n }\n\n return descendants;\n}\n\nexport function getAttribute(\n element: XmlElement,\n name: string,\n): string | undefined {\n return element.attributes[name];\n}\n\nexport function getDescendantText(element: XmlElement): string {\n let text = element.text;\n\n for (const child of element.children) {\n text += getDescendantText(child);\n }\n\n return text;\n}\n\nexport function getLocalName(name: string): string {\n const index = name.indexOf(\":\");\n\n return index === -1 ? name : name.slice(index + 1);\n}\n\nfunction freezeXmlElement(element: MutableXmlElement): XmlElement {\n return {\n name: element.name,\n attributes: Object.freeze({ ...element.attributes }),\n children: Object.freeze(element.children.map(freezeXmlElement)),\n text: element.text,\n };\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,12 @@
1
+ export { BOOK_META_VERSION, BookMeta, SOURCE_FORMATS, SourceFormat, bookMetaSchema, sourceFormatSchema } from './meta.js';
2
+ export { SourceAdapter, SourceDocument } from './adapter.js';
3
+ export { EPUB_SOURCE_ADAPTER, EpubSourceAdapter } from './epub/document.js';
4
+ export { MARKDOWN_SOURCE_ADAPTER, PlainTextSourceAdapter, TXT_SOURCE_ADAPTER } from './plain-text.js';
5
+ export { TOC_FILE_VERSION, TocFile, TocItem, tocFileSchema, tocItemSchema } from './toc.js';
6
+ export { SourceAsset, SourceSection, SourceTextStream } from './types.js';
7
+ import 'zod';
8
+ import './epub/archive.js';
9
+ import 'stream';
10
+ import 'yauzl';
11
+ import './epub/content.js';
12
+ import './epub/package.js';
@@ -0,0 +1,32 @@
1
+ import {
2
+ BOOK_META_VERSION,
3
+ SOURCE_FORMATS,
4
+ bookMetaSchema,
5
+ sourceFormatSchema
6
+ } from "./meta.js";
7
+ import { EpubSourceAdapter, EPUB_SOURCE_ADAPTER } from "./epub/index.js";
8
+ import {
9
+ MARKDOWN_SOURCE_ADAPTER,
10
+ PlainTextSourceAdapter,
11
+ TXT_SOURCE_ADAPTER
12
+ } from "./plain-text.js";
13
+ import {
14
+ TOC_FILE_VERSION,
15
+ tocFileSchema,
16
+ tocItemSchema
17
+ } from "./toc.js";
18
+ export {
19
+ BOOK_META_VERSION,
20
+ EPUB_SOURCE_ADAPTER,
21
+ EpubSourceAdapter,
22
+ MARKDOWN_SOURCE_ADAPTER,
23
+ PlainTextSourceAdapter,
24
+ SOURCE_FORMATS,
25
+ TOC_FILE_VERSION,
26
+ TXT_SOURCE_ADAPTER,
27
+ bookMetaSchema,
28
+ sourceFormatSchema,
29
+ tocFileSchema,
30
+ tocItemSchema
31
+ };
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/source/index.ts"],"sourcesContent":["export {\n BOOK_META_VERSION,\n SOURCE_FORMATS,\n bookMetaSchema,\n sourceFormatSchema,\n type BookMeta,\n type SourceFormat,\n} from \"./meta.js\";\nexport type { SourceAdapter, SourceDocument } from \"./adapter.js\";\nexport { EpubSourceAdapter, EPUB_SOURCE_ADAPTER } from \"./epub/index.js\";\nexport {\n MARKDOWN_SOURCE_ADAPTER,\n PlainTextSourceAdapter,\n TXT_SOURCE_ADAPTER,\n} from \"./plain-text.js\";\nexport {\n TOC_FILE_VERSION,\n tocFileSchema,\n tocItemSchema,\n type TocFile,\n type TocItem,\n} from \"./toc.js\";\nexport type { SourceAsset, SourceSection, SourceTextStream } from \"./types.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAEP,SAAS,mBAAmB,2BAA2B;AACvD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;","names":[]}
@@ -0,0 +1,30 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const SOURCE_FORMATS: readonly ["epub", "pdf", "txt", "markdown"];
4
+ declare const BOOK_META_VERSION = 1;
5
+ declare const sourceFormatSchema: z.ZodEnum<{
6
+ epub: "epub";
7
+ pdf: "pdf";
8
+ txt: "txt";
9
+ markdown: "markdown";
10
+ }>;
11
+ declare const bookMetaSchema: z.ZodObject<{
12
+ version: z.ZodLiteral<1>;
13
+ sourceFormat: z.ZodEnum<{
14
+ epub: "epub";
15
+ pdf: "pdf";
16
+ txt: "txt";
17
+ markdown: "markdown";
18
+ }>;
19
+ title: z.ZodNullable<z.ZodString>;
20
+ authors: z.ZodArray<z.ZodString>;
21
+ language: z.ZodNullable<z.ZodString>;
22
+ identifier: z.ZodNullable<z.ZodString>;
23
+ publisher: z.ZodNullable<z.ZodString>;
24
+ publishedAt: z.ZodNullable<z.ZodString>;
25
+ description: z.ZodNullable<z.ZodString>;
26
+ }, z.core.$strip>;
27
+ type SourceFormat = z.infer<typeof sourceFormatSchema>;
28
+ type BookMeta = z.infer<typeof bookMetaSchema>;
29
+
30
+ export { BOOK_META_VERSION, type BookMeta, SOURCE_FORMATS, type SourceFormat, bookMetaSchema, sourceFormatSchema };
@@ -0,0 +1,22 @@
1
+ import { z } from "zod";
2
+ const SOURCE_FORMATS = ["epub", "pdf", "txt", "markdown"];
3
+ const BOOK_META_VERSION = 1;
4
+ const sourceFormatSchema = z.enum(SOURCE_FORMATS);
5
+ const bookMetaSchema = z.object({
6
+ version: z.literal(BOOK_META_VERSION),
7
+ sourceFormat: sourceFormatSchema,
8
+ title: z.string().min(1).nullable(),
9
+ authors: z.array(z.string().min(1)),
10
+ language: z.string().min(1).nullable(),
11
+ identifier: z.string().min(1).nullable(),
12
+ publisher: z.string().min(1).nullable(),
13
+ publishedAt: z.string().min(1).nullable(),
14
+ description: z.string().min(1).nullable()
15
+ });
16
+ export {
17
+ BOOK_META_VERSION,
18
+ SOURCE_FORMATS,
19
+ bookMetaSchema,
20
+ sourceFormatSchema
21
+ };
22
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/source/meta.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const SOURCE_FORMATS = [\"epub\", \"pdf\", \"txt\", \"markdown\"] as const;\nexport const BOOK_META_VERSION = 1;\n\nexport const sourceFormatSchema = z.enum(SOURCE_FORMATS);\n\nexport const bookMetaSchema = z.object({\n version: z.literal(BOOK_META_VERSION),\n sourceFormat: sourceFormatSchema,\n title: z.string().min(1).nullable(),\n authors: z.array(z.string().min(1)),\n language: z.string().min(1).nullable(),\n identifier: z.string().min(1).nullable(),\n publisher: z.string().min(1).nullable(),\n publishedAt: z.string().min(1).nullable(),\n description: z.string().min(1).nullable(),\n});\n\nexport type SourceFormat = z.infer<typeof sourceFormatSchema>;\nexport type BookMeta = z.infer<typeof bookMetaSchema>;\n"],"mappings":"AAAA,SAAS,SAAS;AAEX,MAAM,iBAAiB,CAAC,QAAQ,OAAO,OAAO,UAAU;AACxD,MAAM,oBAAoB;AAE1B,MAAM,qBAAqB,EAAE,KAAK,cAAc;AAEhD,MAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,SAAS,EAAE,QAAQ,iBAAiB;AAAA,EACpC,cAAc;AAAA,EACd,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EAClC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAAA,EAClC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACrC,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACvC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACtC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAAA,EACxC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS;AAC1C,CAAC;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { SourceAdapter, SourceDocument } from './adapter.js';
2
+ import './meta.js';
3
+ import 'zod';
4
+ import './types.js';
5
+
6
+ type PlainTextSourceFormat = "markdown" | "txt";
7
+ declare class PlainTextSourceAdapter implements SourceAdapter {
8
+ #private;
9
+ constructor(format: PlainTextSourceFormat);
10
+ get format(): PlainTextSourceFormat;
11
+ openSession<T>(path: string, operation: (document: SourceDocument) => Promise<T>): Promise<T>;
12
+ }
13
+ declare const TXT_SOURCE_ADAPTER: PlainTextSourceAdapter;
14
+ declare const MARKDOWN_SOURCE_ADAPTER: PlainTextSourceAdapter;
15
+
16
+ export { MARKDOWN_SOURCE_ADAPTER, PlainTextSourceAdapter, TXT_SOURCE_ADAPTER };
@@ -0,0 +1,86 @@
1
+ import { createReadStream } from "fs";
2
+ import { stat } from "fs/promises";
3
+ import { basename, extname, resolve } from "path";
4
+ import { BOOK_META_VERSION } from "./meta.js";
5
+ const ROOT_SECTION_ID = "root";
6
+ class PlainTextSection {
7
+ #path;
8
+ #id;
9
+ constructor(path, id = ROOT_SECTION_ID) {
10
+ this.#path = resolve(path);
11
+ this.#id = id;
12
+ }
13
+ get id() {
14
+ return this.#id;
15
+ }
16
+ get hasContent() {
17
+ return true;
18
+ }
19
+ get title() {
20
+ return void 0;
21
+ }
22
+ get children() {
23
+ return [];
24
+ }
25
+ open() {
26
+ return Promise.resolve(createReadStream(this.#path, { encoding: "utf8" }));
27
+ }
28
+ }
29
+ class PlainTextDocument {
30
+ #path;
31
+ #format;
32
+ #section;
33
+ constructor(path, format) {
34
+ this.#path = resolve(path);
35
+ this.#format = format;
36
+ this.#section = new PlainTextSection(this.#path);
37
+ }
38
+ readMeta() {
39
+ return Promise.resolve({
40
+ version: BOOK_META_VERSION,
41
+ sourceFormat: this.#format,
42
+ title: getFileStem(this.#path),
43
+ authors: [],
44
+ language: null,
45
+ identifier: null,
46
+ publisher: null,
47
+ publishedAt: null,
48
+ description: null
49
+ });
50
+ }
51
+ readCover() {
52
+ return Promise.resolve(void 0);
53
+ }
54
+ readSections() {
55
+ return Promise.resolve([this.#section]);
56
+ }
57
+ }
58
+ class PlainTextSourceAdapter {
59
+ #format;
60
+ constructor(format) {
61
+ this.#format = format;
62
+ }
63
+ get format() {
64
+ return this.#format;
65
+ }
66
+ async openSession(path, operation) {
67
+ const resolvedPath = resolve(path);
68
+ const fileStat = await stat(resolvedPath);
69
+ if (!fileStat.isFile()) {
70
+ throw new Error(`Source file is not a regular file: ${resolvedPath}`);
71
+ }
72
+ return await operation(new PlainTextDocument(resolvedPath, this.#format));
73
+ }
74
+ }
75
+ const TXT_SOURCE_ADAPTER = new PlainTextSourceAdapter("txt");
76
+ const MARKDOWN_SOURCE_ADAPTER = new PlainTextSourceAdapter("markdown");
77
+ function getFileStem(path) {
78
+ const stem = basename(path, extname(path)).trim();
79
+ return stem === "" ? null : stem;
80
+ }
81
+ export {
82
+ MARKDOWN_SOURCE_ADAPTER,
83
+ PlainTextSourceAdapter,
84
+ TXT_SOURCE_ADAPTER
85
+ };
86
+ //# sourceMappingURL=plain-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/source/plain-text.ts"],"sourcesContent":["import { createReadStream } from \"fs\";\nimport { stat } from \"fs/promises\";\nimport { basename, extname, resolve } from \"path\";\n\nimport { BOOK_META_VERSION, type BookMeta } from \"./meta.js\";\nimport type { SourceAdapter, SourceDocument } from \"./adapter.js\";\nimport type { SourceAsset, SourceSection, SourceTextStream } from \"./types.js\";\n\ntype PlainTextSourceFormat = \"markdown\" | \"txt\";\n\nconst ROOT_SECTION_ID = \"root\";\n\nclass PlainTextSection implements SourceSection {\n readonly #path: string;\n readonly #id: string;\n\n public constructor(path: string, id = ROOT_SECTION_ID) {\n this.#path = resolve(path);\n this.#id = id;\n }\n\n public get id(): string {\n return this.#id;\n }\n\n public get hasContent(): boolean {\n return true;\n }\n\n public get title(): string | undefined {\n return undefined;\n }\n\n public get children(): readonly SourceSection[] {\n return [];\n }\n\n public open(): Promise<SourceTextStream> {\n return Promise.resolve(createReadStream(this.#path, { encoding: \"utf8\" }));\n }\n}\n\nclass PlainTextDocument implements SourceDocument {\n readonly #path: string;\n readonly #format: PlainTextSourceFormat;\n readonly #section: PlainTextSection;\n\n public constructor(path: string, format: PlainTextSourceFormat) {\n this.#path = resolve(path);\n this.#format = format;\n this.#section = new PlainTextSection(this.#path);\n }\n\n public readMeta(): Promise<BookMeta> {\n return Promise.resolve({\n version: BOOK_META_VERSION,\n sourceFormat: this.#format,\n title: getFileStem(this.#path),\n authors: [],\n language: null,\n identifier: null,\n publisher: null,\n publishedAt: null,\n description: null,\n });\n }\n\n public readCover(): Promise<SourceAsset | undefined> {\n return Promise.resolve(undefined);\n }\n\n public readSections(): Promise<readonly SourceSection[]> {\n return Promise.resolve([this.#section]);\n }\n}\n\nexport class PlainTextSourceAdapter implements SourceAdapter {\n readonly #format: PlainTextSourceFormat;\n\n public constructor(format: PlainTextSourceFormat) {\n this.#format = format;\n }\n\n public get format(): PlainTextSourceFormat {\n return this.#format;\n }\n\n public async openSession<T>(\n path: string,\n operation: (document: SourceDocument) => Promise<T>,\n ): Promise<T> {\n const resolvedPath = resolve(path);\n const fileStat = await stat(resolvedPath);\n\n if (!fileStat.isFile()) {\n throw new Error(`Source file is not a regular file: ${resolvedPath}`);\n }\n\n return await operation(new PlainTextDocument(resolvedPath, this.#format));\n }\n}\n\nexport const TXT_SOURCE_ADAPTER = new PlainTextSourceAdapter(\"txt\");\nexport const MARKDOWN_SOURCE_ADAPTER = new PlainTextSourceAdapter(\"markdown\");\n\nfunction getFileStem(path: string): string | null {\n const stem = basename(path, extname(path)).trim();\n\n return stem === \"\" ? null : stem;\n}\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,YAAY;AACrB,SAAS,UAAU,SAAS,eAAe;AAE3C,SAAS,yBAAwC;AAMjD,MAAM,kBAAkB;AAExB,MAAM,iBAA0C;AAAA,EACrC;AAAA,EACA;AAAA,EAEF,YAAY,MAAc,KAAK,iBAAiB;AACrD,SAAK,QAAQ,QAAQ,IAAI;AACzB,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,IAAW,KAAa;AACtB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,aAAsB;AAC/B,WAAO;AAAA,EACT;AAAA,EAEA,IAAW,QAA4B;AACrC,WAAO;AAAA,EACT;AAAA,EAEA,IAAW,WAAqC;AAC9C,WAAO,CAAC;AAAA,EACV;AAAA,EAEO,OAAkC;AACvC,WAAO,QAAQ,QAAQ,iBAAiB,KAAK,OAAO,EAAE,UAAU,OAAO,CAAC,CAAC;AAAA,EAC3E;AACF;AAEA,MAAM,kBAA4C;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EAEF,YAAY,MAAc,QAA+B;AAC9D,SAAK,QAAQ,QAAQ,IAAI;AACzB,SAAK,UAAU;AACf,SAAK,WAAW,IAAI,iBAAiB,KAAK,KAAK;AAAA,EACjD;AAAA,EAEO,WAA8B;AACnC,WAAO,QAAQ,QAAQ;AAAA,MACrB,SAAS;AAAA,MACT,cAAc,KAAK;AAAA,MACnB,OAAO,YAAY,KAAK,KAAK;AAAA,MAC7B,SAAS,CAAC;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,aAAa;AAAA,MACb,aAAa;AAAA,IACf,CAAC;AAAA,EACH;AAAA,EAEO,YAA8C;AACnD,WAAO,QAAQ,QAAQ,MAAS;AAAA,EAClC;AAAA,EAEO,eAAkD;AACvD,WAAO,QAAQ,QAAQ,CAAC,KAAK,QAAQ,CAAC;AAAA,EACxC;AACF;AAEO,MAAM,uBAAgD;AAAA,EAClD;AAAA,EAEF,YAAY,QAA+B;AAChD,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,IAAW,SAAgC;AACzC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAa,YACX,MACA,WACY;AACZ,UAAM,eAAe,QAAQ,IAAI;AACjC,UAAM,WAAW,MAAM,KAAK,YAAY;AAExC,QAAI,CAAC,SAAS,OAAO,GAAG;AACtB,YAAM,IAAI,MAAM,sCAAsC,YAAY,EAAE;AAAA,IACtE;AAEA,WAAO,MAAM,UAAU,IAAI,kBAAkB,cAAc,KAAK,OAAO,CAAC;AAAA,EAC1E;AACF;AAEO,MAAM,qBAAqB,IAAI,uBAAuB,KAAK;AAC3D,MAAM,0BAA0B,IAAI,uBAAuB,UAAU;AAE5E,SAAS,YAAY,MAA6B;AAChD,QAAM,OAAO,SAAS,MAAM,QAAQ,IAAI,CAAC,EAAE,KAAK;AAEhD,SAAO,SAAS,KAAK,OAAO;AAC9B;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const TOC_FILE_VERSION = 1;
4
+ interface TocItem {
5
+ readonly title?: string | null | undefined;
6
+ readonly serialId?: number | undefined;
7
+ readonly children: readonly TocItem[];
8
+ }
9
+ declare const tocItemSchema: z.ZodType<TocItem>;
10
+ declare const tocFileSchema: z.ZodObject<{
11
+ version: z.ZodLiteral<1>;
12
+ items: z.ZodArray<z.ZodType<TocItem, unknown, z.core.$ZodTypeInternals<TocItem, unknown>>>;
13
+ }, z.core.$strip>;
14
+ type TocFile = z.infer<typeof tocFileSchema>;
15
+
16
+ export { TOC_FILE_VERSION, type TocFile, type TocItem, tocFileSchema, tocItemSchema };
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ const TOC_FILE_VERSION = 1;
3
+ const tocItemSchema = z.object({
4
+ title: z.string().min(1).nullable().optional(),
5
+ serialId: z.number().int().nonnegative().optional(),
6
+ children: z.lazy(() => z.array(tocItemSchema))
7
+ });
8
+ const tocFileSchema = z.object({
9
+ version: z.literal(TOC_FILE_VERSION),
10
+ items: z.array(tocItemSchema)
11
+ });
12
+ export {
13
+ TOC_FILE_VERSION,
14
+ tocFileSchema,
15
+ tocItemSchema
16
+ };
17
+ //# sourceMappingURL=toc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/source/toc.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const TOC_FILE_VERSION = 1;\n\nexport interface TocItem {\n readonly title?: string | null | undefined;\n readonly serialId?: number | undefined;\n readonly children: readonly TocItem[];\n}\n\nexport const tocItemSchema: z.ZodType<TocItem> = z.object({\n title: z.string().min(1).nullable().optional(),\n serialId: z.number().int().nonnegative().optional(),\n children: z.lazy(() => z.array(tocItemSchema)),\n});\n\nexport const tocFileSchema = z.object({\n version: z.literal(TOC_FILE_VERSION),\n items: z.array(tocItemSchema),\n});\n\nexport type TocFile = z.infer<typeof tocFileSchema>;\n"],"mappings":"AAAA,SAAS,SAAS;AAEX,MAAM,mBAAmB;AAQzB,MAAM,gBAAoC,EAAE,OAAO;AAAA,EACxD,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS;AAAA,EAC7C,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS;AAAA,EAClD,UAAU,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,CAAC;AAEM,MAAM,gBAAgB,EAAE,OAAO;AAAA,EACpC,SAAS,EAAE,QAAQ,gBAAgB;AAAA,EACnC,OAAO,EAAE,MAAM,aAAa;AAC9B,CAAC;","names":[]}
@@ -0,0 +1,16 @@
1
+ type SourceTextStream = AsyncIterable<string> | Iterable<string>;
2
+ interface SourceAsset {
3
+ readonly path: string;
4
+ readonly mediaType: string;
5
+ readonly data: Uint8Array;
6
+ }
7
+ interface SourceSection {
8
+ readonly hasContent: boolean;
9
+ readonly id: string;
10
+ readonly title?: string | undefined;
11
+ readonly wordsCount?: number | undefined;
12
+ readonly children: readonly SourceSection[];
13
+ open(): Promise<SourceTextStream>;
14
+ }
15
+
16
+ export type { SourceAsset, SourceSection, SourceTextStream };
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,15 @@
1
+ import { SentenceGroupRecord } from '../document/types.js';
2
+ import { computeNormalizedSegmentIncisions } from './segment-incision.js';
3
+ import '../document/text-streams.js';
4
+ import '../document/database.js';
5
+ import 'sqlite3';
6
+
7
+ declare function groupSegments(input: {
8
+ edges: Parameters<typeof computeNormalizedSegmentIncisions>[0]["edges"];
9
+ fragments: Parameters<typeof computeNormalizedSegmentIncisions>[0]["fragments"];
10
+ groupWordsCount: number;
11
+ chunks: Parameters<typeof computeNormalizedSegmentIncisions>[0]["chunks"];
12
+ serialId: number;
13
+ }): Promise<SentenceGroupRecord[]>;
14
+
15
+ export { groupSegments };
@@ -0,0 +1,18 @@
1
+ import { computeNormalizedSegmentIncisions } from "./segment-incision.js";
2
+ import { createSegmentGroups } from "./resource-segmentation.js";
3
+ async function groupSegments(input) {
4
+ const segmentInfos = await computeNormalizedSegmentIncisions({
5
+ chunks: input.chunks,
6
+ edges: input.edges,
7
+ fragments: input.fragments
8
+ });
9
+ return createSegmentGroups({
10
+ segmentInfos,
11
+ groupWordsCount: input.groupWordsCount,
12
+ serialId: input.serialId
13
+ });
14
+ }
15
+ export {
16
+ groupSegments
17
+ };
18
+ //# sourceMappingURL=grouping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/topology/grouping.ts"],"sourcesContent":["import type { SentenceGroupRecord } from \"../document/index.js\";\nimport { computeNormalizedSegmentIncisions } from \"./segment-incision.js\";\nimport { createSegmentGroups } from \"./resource-segmentation.js\";\n\nexport async function groupSegments(input: {\n edges: Parameters<typeof computeNormalizedSegmentIncisions>[0][\"edges\"];\n fragments: Parameters<\n typeof computeNormalizedSegmentIncisions\n >[0][\"fragments\"];\n groupWordsCount: number;\n chunks: Parameters<typeof computeNormalizedSegmentIncisions>[0][\"chunks\"];\n serialId: number;\n}): Promise<SentenceGroupRecord[]> {\n const segmentInfos = await computeNormalizedSegmentIncisions({\n chunks: input.chunks,\n edges: input.edges,\n fragments: input.fragments,\n });\n\n return createSegmentGroups({\n segmentInfos,\n groupWordsCount: input.groupWordsCount,\n serialId: input.serialId,\n });\n}\n"],"mappings":"AACA,SAAS,yCAAyC;AAClD,SAAS,2BAA2B;AAEpC,eAAsB,cAAc,OAQD;AACjC,QAAM,eAAe,MAAM,kCAAkC;AAAA,IAC3D,QAAQ,MAAM;AAAA,IACd,OAAO,MAAM;AAAA,IACb,WAAW,MAAM;AAAA,EACnB,CAAC;AAED,SAAO,oBAAoB;AAAA,IACzB;AAAA,IACA,iBAAiB,MAAM;AAAA,IACvB,UAAU,MAAM;AAAA,EAClB,CAAC;AACH;","names":[]}
@@ -0,0 +1,21 @@
1
+ export { Topology } from './topology.js';
2
+ import '../document/document.js';
3
+ import '../source/meta.js';
4
+ import 'zod';
5
+ import '../source/toc.js';
6
+ import '../source/types.js';
7
+ import '../document/database.js';
8
+ import 'sqlite3';
9
+ import '../document/text-streams.js';
10
+ import '../document/types.js';
11
+ import '../document/stores.js';
12
+ import '../reader/types.js';
13
+ import '../reader/attention/attention.js';
14
+ import '../reader/chunk-batch/types.js';
15
+ import '../common/language.js';
16
+ import '../llm/client.js';
17
+ import '../llm/context.js';
18
+ import '../llm/cache.js';
19
+ import '../llm/types.js';
20
+ import 'ai';
21
+ import '../reader/segment/types.js';
@@ -0,0 +1,5 @@
1
+ import { Topology } from "./topology.js";
2
+ export {
3
+ Topology
4
+ };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/topology/index.ts"],"sourcesContent":["export { Topology } from \"./topology.js\";\n"],"mappings":"AAAA,SAAS,gBAAgB;","names":[]}
@@ -0,0 +1,13 @@
1
+ import { SentenceGroupRecord } from '../document/types.js';
2
+ import { SegmentInfo } from './segment-incision.js';
3
+ import '../document/text-streams.js';
4
+ import '../document/database.js';
5
+ import 'sqlite3';
6
+
7
+ declare function createSegmentGroups(input: {
8
+ segmentInfos: readonly SegmentInfo[];
9
+ groupWordsCount: number;
10
+ serialId: number;
11
+ }): SentenceGroupRecord[];
12
+
13
+ export { createSegmentGroups };
@@ -0,0 +1,111 @@
1
+ function createSegmentGroups(input) {
2
+ if (input.segmentInfos.length === 0) {
3
+ return [];
4
+ }
5
+ const resources = input.segmentInfos.map(
6
+ (segmentInfo) => ({
7
+ count: segmentInfo.wordsCount,
8
+ endIncision: segmentInfo.endIncision,
9
+ startSentenceIndex: segmentInfo.startSentenceIndex,
10
+ startIncision: segmentInfo.startIncision
11
+ })
12
+ );
13
+ const groups = allocateSegmentGroups(resources, input.groupWordsCount);
14
+ return groups.map((startSentenceIndexes, groupId) => ({
15
+ endSentenceIndex: Math.max(...startSentenceIndexes),
16
+ groupId,
17
+ serialId: input.serialId,
18
+ startSentenceIndex: Math.min(...startSentenceIndexes)
19
+ }));
20
+ }
21
+ function allocateSegmentGroups(resources, maxCount) {
22
+ return splitResources(resources, maxCount).map(
23
+ (group) => group.map((resource) => resource.startSentenceIndex)
24
+ );
25
+ }
26
+ function splitResources(resources, maxCount) {
27
+ if (resources.length === 0) {
28
+ return [];
29
+ }
30
+ if (maxCount <= 0) {
31
+ return resources.map((resource) => [resource]);
32
+ }
33
+ const totalCount = resources.reduce((total, resource) => {
34
+ return total + resource.count;
35
+ }, 0);
36
+ if (resources.length === 1 || totalCount <= maxCount) {
37
+ return [[...resources]];
38
+ }
39
+ const splitIndex = findPreferredSplitIndex(resources, maxCount);
40
+ if (splitIndex === void 0) {
41
+ return splitGreedily(resources, maxCount);
42
+ }
43
+ const left = resources.slice(0, splitIndex + 1);
44
+ const right = resources.slice(splitIndex + 1);
45
+ if (left.length === 0 || right.length === 0 || left.length === resources.length || right.length === resources.length) {
46
+ return splitGreedily(resources, maxCount);
47
+ }
48
+ return [
49
+ ...splitResources(left, maxCount),
50
+ ...splitResources(right, maxCount)
51
+ ];
52
+ }
53
+ function findPreferredSplitIndex(resources, maxCount) {
54
+ const totalCount = resources.reduce((total, resource) => {
55
+ return total + resource.count;
56
+ }, 0);
57
+ let leftCount = 0;
58
+ let bestIndex;
59
+ let bestBoundary = 0;
60
+ let bestOversizedSides = Number.POSITIVE_INFINITY;
61
+ let bestOverflow = Number.POSITIVE_INFINITY;
62
+ for (let index = 0; index < resources.length - 1; index += 1) {
63
+ const current = resources[index];
64
+ const next = resources[index + 1];
65
+ if (current === void 0 || next === void 0) {
66
+ continue;
67
+ }
68
+ leftCount += current.count;
69
+ const rightCount = totalCount - leftCount;
70
+ const boundary = current.endIncision + next.startIncision;
71
+ if (boundary <= 0) {
72
+ continue;
73
+ }
74
+ const oversizedSides = Number(leftCount > maxCount) + Number(rightCount > maxCount);
75
+ const overflow = Math.max(0, leftCount - maxCount) + Math.max(0, rightCount - maxCount);
76
+ if (oversizedSides < bestOversizedSides || oversizedSides === bestOversizedSides && boundary > bestBoundary || oversizedSides === bestOversizedSides && boundary === bestBoundary && overflow < bestOverflow) {
77
+ bestBoundary = boundary;
78
+ bestIndex = index;
79
+ bestOversizedSides = oversizedSides;
80
+ bestOverflow = overflow;
81
+ }
82
+ }
83
+ return bestIndex;
84
+ }
85
+ function splitGreedily(resources, maxCount) {
86
+ const groups = [];
87
+ let currentGroup = [];
88
+ let currentCount = 0;
89
+ for (const resource of resources) {
90
+ if (currentGroup.length > 0 && currentCount + resource.count > maxCount) {
91
+ groups.push(currentGroup);
92
+ currentGroup = [];
93
+ currentCount = 0;
94
+ }
95
+ currentGroup.push(resource);
96
+ currentCount += resource.count;
97
+ if (currentCount >= maxCount) {
98
+ groups.push(currentGroup);
99
+ currentGroup = [];
100
+ currentCount = 0;
101
+ }
102
+ }
103
+ if (currentGroup.length > 0) {
104
+ groups.push(currentGroup);
105
+ }
106
+ return groups;
107
+ }
108
+ export {
109
+ createSegmentGroups
110
+ };
111
+ //# sourceMappingURL=resource-segmentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/topology/resource-segmentation.ts"],"sourcesContent":["import type { SentenceGroupRecord } from \"../document/index.js\";\nimport type { SegmentInfo } from \"./segment-incision.js\";\n\ninterface SegmentResource {\n readonly count: number;\n readonly startIncision: number;\n readonly endIncision: number;\n readonly startSentenceIndex: number;\n}\n\nexport function createSegmentGroups(input: {\n segmentInfos: readonly SegmentInfo[];\n groupWordsCount: number;\n serialId: number;\n}): SentenceGroupRecord[] {\n if (input.segmentInfos.length === 0) {\n return [];\n }\n\n const resources = input.segmentInfos.map(\n (segmentInfo): SegmentResource => ({\n count: segmentInfo.wordsCount,\n endIncision: segmentInfo.endIncision,\n startSentenceIndex: segmentInfo.startSentenceIndex,\n startIncision: segmentInfo.startIncision,\n }),\n );\n const groups = allocateSegmentGroups(resources, input.groupWordsCount);\n\n return groups.map((startSentenceIndexes, groupId) => ({\n endSentenceIndex: Math.max(...startSentenceIndexes),\n groupId,\n serialId: input.serialId,\n startSentenceIndex: Math.min(...startSentenceIndexes),\n }));\n}\n\nfunction allocateSegmentGroups(\n resources: readonly SegmentResource[],\n maxCount: number,\n): number[][] {\n return splitResources(resources, maxCount).map((group) =>\n group.map((resource) => resource.startSentenceIndex),\n );\n}\n\nfunction splitResources(\n resources: readonly SegmentResource[],\n maxCount: number,\n): SegmentResource[][] {\n if (resources.length === 0) {\n return [];\n }\n\n if (maxCount <= 0) {\n return resources.map((resource) => [resource]);\n }\n\n const totalCount = resources.reduce((total, resource) => {\n return total + resource.count;\n }, 0);\n\n if (resources.length === 1 || totalCount <= maxCount) {\n return [[...resources]];\n }\n\n const splitIndex = findPreferredSplitIndex(resources, maxCount);\n\n if (splitIndex === undefined) {\n return splitGreedily(resources, maxCount);\n }\n\n const left = resources.slice(0, splitIndex + 1);\n const right = resources.slice(splitIndex + 1);\n\n if (\n left.length === 0 ||\n right.length === 0 ||\n left.length === resources.length ||\n right.length === resources.length\n ) {\n return splitGreedily(resources, maxCount);\n }\n\n return [\n ...splitResources(left, maxCount),\n ...splitResources(right, maxCount),\n ];\n}\n\nfunction findPreferredSplitIndex(\n resources: readonly SegmentResource[],\n maxCount: number,\n): number | undefined {\n const totalCount = resources.reduce((total, resource) => {\n return total + resource.count;\n }, 0);\n let leftCount = 0;\n let bestIndex: number | undefined;\n let bestBoundary = 0;\n let bestOversizedSides = Number.POSITIVE_INFINITY;\n let bestOverflow = Number.POSITIVE_INFINITY;\n\n for (let index = 0; index < resources.length - 1; index += 1) {\n const current = resources[index];\n const next = resources[index + 1];\n\n if (current === undefined || next === undefined) {\n continue;\n }\n\n leftCount += current.count;\n const rightCount = totalCount - leftCount;\n const boundary = current.endIncision + next.startIncision;\n\n if (boundary <= 0) {\n continue;\n }\n\n const oversizedSides =\n Number(leftCount > maxCount) + Number(rightCount > maxCount);\n const overflow =\n Math.max(0, leftCount - maxCount) + Math.max(0, rightCount - maxCount);\n\n if (\n oversizedSides < bestOversizedSides ||\n (oversizedSides === bestOversizedSides && boundary > bestBoundary) ||\n (oversizedSides === bestOversizedSides &&\n boundary === bestBoundary &&\n overflow < bestOverflow)\n ) {\n bestBoundary = boundary;\n bestIndex = index;\n bestOversizedSides = oversizedSides;\n bestOverflow = overflow;\n }\n }\n\n return bestIndex;\n}\n\nfunction splitGreedily(\n resources: readonly SegmentResource[],\n maxCount: number,\n): SegmentResource[][] {\n const groups: SegmentResource[][] = [];\n let currentGroup: SegmentResource[] = [];\n let currentCount = 0;\n\n for (const resource of resources) {\n if (currentGroup.length > 0 && currentCount + resource.count > maxCount) {\n groups.push(currentGroup);\n currentGroup = [];\n currentCount = 0;\n }\n\n currentGroup.push(resource);\n currentCount += resource.count;\n\n if (currentCount >= maxCount) {\n groups.push(currentGroup);\n currentGroup = [];\n currentCount = 0;\n }\n }\n\n if (currentGroup.length > 0) {\n groups.push(currentGroup);\n }\n\n return groups;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,18 @@
1
+ import { ReadonlySerialTextStream } from '../document/text-streams.js';
2
+ import { ChunkRecord, ReadingEdgeRecord } from '../document/types.js';
3
+ import '../document/database.js';
4
+ import 'sqlite3';
5
+
6
+ interface SegmentInfo {
7
+ readonly startSentenceIndex: number;
8
+ readonly wordsCount: number;
9
+ readonly startIncision: number;
10
+ readonly endIncision: number;
11
+ }
12
+ declare function computeNormalizedSegmentIncisions(input: {
13
+ chunks: readonly ChunkRecord[];
14
+ edges: readonly ReadingEdgeRecord[];
15
+ fragments: ReadonlySerialTextStream;
16
+ }): Promise<SegmentInfo[]>;
17
+
18
+ export { type SegmentInfo, computeNormalizedSegmentIncisions };