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.
- package/LICENSE +201 -0
- package/data/editor/clue_reviewer.jinja +410 -0
- package/data/editor/clue_reviewer_generator.jinja +428 -0
- package/data/editor/revision_feedback.jinja +5 -0
- package/data/editor/text_compressor.jinja +127 -0
- package/data/guaranteed/response_intent_classifier.jinja +8 -0
- package/data/help/commands/archive/next.jinja +29 -0
- package/data/help/commands/gc.jinja +38 -0
- package/data/help/commands/legacy/migrate.jinja +20 -0
- package/data/help/commands/legacy.jinja +19 -0
- package/data/help/commands/maintenance/chapter/add.jinja +41 -0
- package/data/help/commands/maintenance/chapter/list.jinja +33 -0
- package/data/help/commands/maintenance/chapter/move.jinja +36 -0
- package/data/help/commands/maintenance/chapter/remove.jinja +26 -0
- package/data/help/commands/maintenance/chapter/reset.jinja +29 -0
- package/data/help/commands/maintenance/chapter/set-source.jinja +34 -0
- package/data/help/commands/maintenance/chapter/set-summary.jinja +31 -0
- package/data/help/commands/maintenance/chapter/set-title.jinja +29 -0
- package/data/help/commands/maintenance/chapter/tree.jinja +58 -0
- package/data/help/commands/maintenance/chapter.jinja +59 -0
- package/data/help/commands/maintenance/cover.jinja +28 -0
- package/data/help/commands/maintenance/meta.jinja +55 -0
- package/data/help/commands/predicate.jinja +460 -0
- package/data/help/commands/root.jinja +83 -0
- package/data/help/commands/transform.jinja +34 -0
- package/data/help/commands/uri.jinja +274 -0
- package/data/help/topics/config.jinja +88 -0
- package/data/help/topics/format.jinja +72 -0
- package/data/help/topics/readiness.jinja +99 -0
- package/data/help/topics/recipe.jinja +151 -0
- package/data/help/topics/runtime.jinja +62 -0
- package/data/help/topics/uri.jinja +178 -0
- package/data/output/epub/cover.xhtml.jinja +13 -0
- package/data/output/epub/nav.xhtml.jinja +12 -0
- package/data/output/epub/package.opf.xml.jinja +39 -0
- package/data/output/epub/section.xhtml.jinja +12 -0
- package/data/topologization/book_coherence_extraction.jinja +223 -0
- package/data/topologization/chunk_extraction.jinja +233 -0
- package/data/topologization/evidence_choice.jinja +38 -0
- package/data/topologization/translate_chunks.jinja +138 -0
- package/data/topologization/user_focused_extraction.jinja +378 -0
- package/dist/archive/query/archive-view.d.ts +26 -0
- package/dist/archive/query/archive-view.js +4540 -0
- package/dist/archive/query/archive-view.js.map +1 -0
- package/dist/archive/query/continuation-cursor.d.ts +61 -0
- package/dist/archive/query/continuation-cursor.js +363 -0
- package/dist/archive/query/continuation-cursor.js.map +1 -0
- package/dist/archive/query/index.d.ts +29 -0
- package/dist/archive/query/index.js +63 -0
- package/dist/archive/query/index.js.map +1 -0
- package/dist/archive/query/lexical-search.d.ts +22 -0
- package/dist/archive/query/lexical-search.js +137 -0
- package/dist/archive/query/lexical-search.js.map +1 -0
- package/dist/archive/query/search-cache.d.ts +192 -0
- package/dist/archive/query/search-cache.js +1248 -0
- package/dist/archive/query/search-cache.js.map +1 -0
- package/dist/archive/search-index/index.d.ts +26 -0
- package/dist/archive/search-index/index.js +29 -0
- package/dist/archive/search-index/index.js.map +1 -0
- package/dist/archive/search-index/search-index.d.ts +26 -0
- package/dist/archive/search-index/search-index.js +555 -0
- package/dist/archive/search-index/search-index.js.map +1 -0
- package/dist/archive/search-index/search-tokenizer.d.ts +16 -0
- package/dist/archive/search-index/search-tokenizer.js +225 -0
- package/dist/archive/search-index/search-tokenizer.js.map +1 -0
- package/dist/common/cli-command.d.ts +4 -0
- package/dist/common/cli-command.js +7 -0
- package/dist/common/cli-command.js.map +1 -0
- package/dist/common/data-dir.d.ts +3 -0
- package/dist/common/data-dir.js +48 -0
- package/dist/common/data-dir.js.map +1 -0
- package/dist/common/language.d.ts +55 -0
- package/dist/common/language.js +208 -0
- package/dist/common/language.js.map +1 -0
- package/dist/common/llm-scope.d.ts +19 -0
- package/dist/common/llm-scope.js +31 -0
- package/dist/common/llm-scope.js.map +1 -0
- package/dist/common/logging.d.ts +22 -0
- package/dist/common/logging.js +141 -0
- package/dist/common/logging.js.map +1 -0
- package/dist/common/template.d.ts +8 -0
- package/dist/common/template.js +54 -0
- package/dist/common/template.js.map +1 -0
- package/dist/common/tinyld-language.d.ts +6 -0
- package/dist/common/tinyld-language.js +34 -0
- package/dist/common/tinyld-language.js.map +1 -0
- package/dist/common/wiki-graph-dir.d.ts +10 -0
- package/dist/common/wiki-graph-dir.js +41 -0
- package/dist/common/wiki-graph-dir.js.map +1 -0
- package/dist/common/wiki-graph-temp.d.ts +6 -0
- package/dist/common/wiki-graph-temp.js +21 -0
- package/dist/common/wiki-graph-temp.js.map +1 -0
- package/dist/common/wiki-graph-uri.d.ts +28 -0
- package/dist/common/wiki-graph-uri.js +171 -0
- package/dist/common/wiki-graph-uri.js.map +1 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.js +13 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/task-context.d.ts +41 -0
- package/dist/context/task-context.js +111 -0
- package/dist/context/task-context.js.map +1 -0
- package/dist/document/database.d.ts +30 -0
- package/dist/document/database.js +273 -0
- package/dist/document/database.js.map +1 -0
- package/dist/document/document.d.ts +153 -0
- package/dist/document/document.js +615 -0
- package/dist/document/document.js.map +1 -0
- package/dist/document/fragments.d.ts +63 -0
- package/dist/document/fragments.js +371 -0
- package/dist/document/fragments.js.map +1 -0
- package/dist/document/index.d.ts +13 -0
- package/dist/document/index.js +62 -0
- package/dist/document/index.js.map +1 -0
- package/dist/document/schema.d.ts +8 -0
- package/dist/document/schema.js +472 -0
- package/dist/document/schema.js.map +1 -0
- package/dist/document/shared-state-database.d.ts +9 -0
- package/dist/document/shared-state-database.js +193 -0
- package/dist/document/shared-state-database.js.map +1 -0
- package/dist/document/stores.d.ts +203 -0
- package/dist/document/stores.js +1678 -0
- package/dist/document/stores.js.map +1 -0
- package/dist/document/text-streams.d.ts +86 -0
- package/dist/document/text-streams.js +515 -0
- package/dist/document/text-streams.js.map +1 -0
- package/dist/document/types.d.ts +148 -0
- package/dist/document/types.js +69 -0
- package/dist/document/types.js.map +1 -0
- package/dist/editor/clue.d.ts +27 -0
- package/dist/editor/clue.js +158 -0
- package/dist/editor/clue.js.map +1 -0
- package/dist/editor/compressor.d.ts +18 -0
- package/dist/editor/compressor.js +68 -0
- package/dist/editor/compressor.js.map +1 -0
- package/dist/editor/editor.d.ts +39 -0
- package/dist/editor/editor.js +253 -0
- package/dist/editor/editor.js.map +1 -0
- package/dist/editor/feedback.d.ts +16 -0
- package/dist/editor/feedback.js +104 -0
- package/dist/editor/feedback.js.map +1 -0
- package/dist/editor/index.d.ts +17 -0
- package/dist/editor/index.js +5 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/language-review.d.ts +14 -0
- package/dist/editor/language-review.js +35 -0
- package/dist/editor/language-review.js.map +1 -0
- package/dist/editor/log.d.ts +37 -0
- package/dist/editor/log.js +202 -0
- package/dist/editor/log.js.map +1 -0
- package/dist/editor/markup.d.ts +20 -0
- package/dist/editor/markup.js +294 -0
- package/dist/editor/markup.js.map +1 -0
- package/dist/editor/prompt-templates.d.ts +6 -0
- package/dist/editor/prompt-templates.js +11 -0
- package/dist/editor/prompt-templates.js.map +1 -0
- package/dist/editor/response.d.ts +5 -0
- package/dist/editor/response.js +31 -0
- package/dist/editor/response.js.map +1 -0
- package/dist/editor/review.d.ts +34 -0
- package/dist/editor/review.js +189 -0
- package/dist/editor/review.js.map +1 -0
- package/dist/editor/types.d.ts +31 -0
- package/dist/editor/types.js +21 -0
- package/dist/editor/types.js.map +1 -0
- package/dist/evidence-selection/anchor-resolver.d.ts +43 -0
- package/dist/evidence-selection/anchor-resolver.js +783 -0
- package/dist/evidence-selection/anchor-resolver.js.map +1 -0
- package/dist/evidence-selection/anchor-types.d.ts +27 -0
- package/dist/evidence-selection/anchor-types.js +1 -0
- package/dist/evidence-selection/anchor-types.js.map +1 -0
- package/dist/evidence-selection/index.d.ts +8 -0
- package/dist/evidence-selection/index.js +32 -0
- package/dist/evidence-selection/index.js.map +1 -0
- package/dist/evidence-selection/prompt.d.ts +18 -0
- package/dist/evidence-selection/prompt.js +54 -0
- package/dist/evidence-selection/prompt.js.map +1 -0
- package/dist/evidence-selection/quote-score.d.ts +29 -0
- package/dist/evidence-selection/quote-score.js +331 -0
- package/dist/evidence-selection/quote-score.js.map +1 -0
- package/dist/evidence-selection/selection-resolver.d.ts +19 -0
- package/dist/evidence-selection/selection-resolver.js +303 -0
- package/dist/evidence-selection/selection-resolver.js.map +1 -0
- package/dist/evidence-selection/text.d.ts +4 -0
- package/dist/evidence-selection/text.js +66 -0
- package/dist/evidence-selection/text.js.map +1 -0
- package/dist/evidence-selection/types.d.ts +36 -0
- package/dist/evidence-selection/types.js +1 -0
- package/dist/evidence-selection/types.js.map +1 -0
- package/dist/facade/app.d.ts +75 -0
- package/dist/facade/app.js +141 -0
- package/dist/facade/app.js.map +1 -0
- package/dist/facade/build-queue.d.ts +181 -0
- package/dist/facade/build-queue.js +1442 -0
- package/dist/facade/build-queue.js.map +1 -0
- package/dist/facade/chapter-build.d.ts +60 -0
- package/dist/facade/chapter-build.js +1020 -0
- package/dist/facade/chapter-build.js.map +1 -0
- package/dist/facade/chapter.d.ts +168 -0
- package/dist/facade/chapter.js +944 -0
- package/dist/facade/chapter.js.map +1 -0
- package/dist/facade/digest.d.ts +55 -0
- package/dist/facade/digest.js +168 -0
- package/dist/facade/digest.js.map +1 -0
- package/dist/facade/graph.d.ts +60 -0
- package/dist/facade/graph.js +203 -0
- package/dist/facade/graph.js.map +1 -0
- package/dist/facade/import.d.ts +49 -0
- package/dist/facade/import.js +262 -0
- package/dist/facade/import.js.map +1 -0
- package/dist/facade/index.d.ts +39 -0
- package/dist/facade/index.js +171 -0
- package/dist/facade/index.js.map +1 -0
- package/dist/facade/knowledge-graph-build.d.ts +75 -0
- package/dist/facade/knowledge-graph-build.js +897 -0
- package/dist/facade/knowledge-graph-build.js.map +1 -0
- package/dist/facade/llm-sampling.d.ts +11 -0
- package/dist/facade/llm-sampling.js +58 -0
- package/dist/facade/llm-sampling.js.map +1 -0
- package/dist/facade/types.d.ts +8 -0
- package/dist/facade/types.js +1 -0
- package/dist/facade/types.js.map +1 -0
- package/dist/facade/wiki-graph-archive.d.ts +41 -0
- package/dist/facade/wiki-graph-archive.js +130 -0
- package/dist/facade/wiki-graph-archive.js.map +1 -0
- package/dist/gc/files.d.ts +15 -0
- package/dist/gc/files.js +141 -0
- package/dist/gc/files.js.map +1 -0
- package/dist/gc/index.d.ts +2 -0
- package/dist/gc/index.js +5 -0
- package/dist/gc/index.js.map +1 -0
- package/dist/gc/lock.d.ts +3 -0
- package/dist/gc/lock.js +137 -0
- package/dist/gc/lock.js.map +1 -0
- package/dist/gc/runner.d.ts +9 -0
- package/dist/gc/runner.js +129 -0
- package/dist/gc/runner.js.map +1 -0
- package/dist/gc/tmp-gc.d.ts +5 -0
- package/dist/gc/tmp-gc.js +57 -0
- package/dist/gc/tmp-gc.js.map +1 -0
- package/dist/gc/types.d.ts +24 -0
- package/dist/gc/types.js +1 -0
- package/dist/gc/types.js.map +1 -0
- package/dist/gc.cjs +10041 -0
- package/dist/gc.cjs.map +1 -0
- package/dist/gc.d.cts +10 -0
- package/dist/gc.d.ts +2 -0
- package/dist/gc.js +5 -0
- package/dist/gc.js.map +1 -0
- package/dist/guaranteed/classifier.d.ts +10 -0
- package/dist/guaranteed/classifier.js +88 -0
- package/dist/guaranteed/classifier.js.map +1 -0
- package/dist/guaranteed/errors.d.ts +38 -0
- package/dist/guaranteed/errors.js +73 -0
- package/dist/guaranteed/errors.js.map +1 -0
- package/dist/guaranteed/index.d.ts +7 -0
- package/dist/guaranteed/index.js +21 -0
- package/dist/guaranteed/index.js.map +1 -0
- package/dist/guaranteed/request.d.ts +8 -0
- package/dist/guaranteed/request.js +206 -0
- package/dist/guaranteed/request.js.map +1 -0
- package/dist/guaranteed/response.d.ts +12 -0
- package/dist/guaranteed/response.js +98 -0
- package/dist/guaranteed/response.js.map +1 -0
- package/dist/guaranteed/types.d.ts +20 -0
- package/dist/guaranteed/types.js +1 -0
- package/dist/guaranteed/types.js.map +1 -0
- package/dist/index-B8NNnQ8P.d.ts +424 -0
- package/dist/index.cjs +34774 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2462 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.js +168 -0
- package/dist/index.js.map +1 -0
- package/dist/legacy-sdpub/upgrade.d.ts +7 -0
- package/dist/legacy-sdpub/upgrade.js +795 -0
- package/dist/legacy-sdpub/upgrade.js.map +1 -0
- package/dist/llm/cache.d.ts +13 -0
- package/dist/llm/cache.js +35 -0
- package/dist/llm/cache.js.map +1 -0
- package/dist/llm/client.d.ts +26 -0
- package/dist/llm/client.js +572 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/context.d.ts +22 -0
- package/dist/llm/context.js +78 -0
- package/dist/llm/context.js.map +1 -0
- package/dist/llm/errors.d.ts +7 -0
- package/dist/llm/errors.js +12 -0
- package/dist/llm/errors.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.js +17 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/request-log.d.ts +9 -0
- package/dist/llm/request-log.js +35 -0
- package/dist/llm/request-log.js.map +1 -0
- package/dist/llm/sampling.d.ts +11 -0
- package/dist/llm/sampling.js +67 -0
- package/dist/llm/sampling.js.map +1 -0
- package/dist/llm/types.d.ts +50 -0
- package/dist/llm/types.js +1 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/output/epub/archive.d.ts +9 -0
- package/dist/output/epub/archive.js +81 -0
- package/dist/output/epub/archive.js.map +1 -0
- package/dist/output/epub/book.d.ts +15 -0
- package/dist/output/epub/book.js +76 -0
- package/dist/output/epub/book.js.map +1 -0
- package/dist/output/epub/content.d.ts +9 -0
- package/dist/output/epub/content.js +35 -0
- package/dist/output/epub/content.js.map +1 -0
- package/dist/output/epub/index.d.ts +20 -0
- package/dist/output/epub/index.js +14 -0
- package/dist/output/epub/index.js.map +1 -0
- package/dist/output/epub/model.d.ts +24 -0
- package/dist/output/epub/model.js +1 -0
- package/dist/output/epub/model.js.map +1 -0
- package/dist/output/epub/navigation.d.ts +10 -0
- package/dist/output/epub/navigation.js +39 -0
- package/dist/output/epub/navigation.js.map +1 -0
- package/dist/output/epub/package.d.ts +17 -0
- package/dist/output/epub/package.js +29 -0
- package/dist/output/epub/package.js.map +1 -0
- package/dist/output/epub/shared.d.ts +4 -0
- package/dist/output/epub/shared.js +12 -0
- package/dist/output/epub/shared.js.map +1 -0
- package/dist/output/epub/templates.d.ts +35 -0
- package/dist/output/epub/templates.js +26 -0
- package/dist/output/epub/templates.js.map +1 -0
- package/dist/output/index.d.ts +14 -0
- package/dist/output/index.js +11 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/plain-text.d.ts +18 -0
- package/dist/output/plain-text.js +56 -0
- package/dist/output/plain-text.js.map +1 -0
- package/dist/progress/index.d.ts +3 -0
- package/dist/progress/index.js +14 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/progress/reporter.d.ts +10 -0
- package/dist/progress/reporter.js +79 -0
- package/dist/progress/reporter.js.map +1 -0
- package/dist/progress/tracker.d.ts +37 -0
- package/dist/progress/tracker.js +119 -0
- package/dist/progress/tracker.js.map +1 -0
- package/dist/progress/types.d.ts +28 -0
- package/dist/progress/types.js +1 -0
- package/dist/progress/types.js.map +1 -0
- package/dist/reader/attention/attention.d.ts +39 -0
- package/dist/reader/attention/attention.js +123 -0
- package/dist/reader/attention/attention.js.map +1 -0
- package/dist/reader/attention/index.d.ts +9 -0
- package/dist/reader/attention/index.js +5 -0
- package/dist/reader/attention/index.js.map +1 -0
- package/dist/reader/attention/wave-reflection.d.ts +21 -0
- package/dist/reader/attention/wave-reflection.js +153 -0
- package/dist/reader/attention/wave-reflection.js.map +1 -0
- package/dist/reader/attention/working-memory.d.ts +28 -0
- package/dist/reader/attention/working-memory.js +62 -0
- package/dist/reader/attention/working-memory.js.map +1 -0
- package/dist/reader/chunk-batch/extract.d.ts +13 -0
- package/dist/reader/chunk-batch/extract.js +14 -0
- package/dist/reader/chunk-batch/extract.js.map +1 -0
- package/dist/reader/chunk-batch/extractor.d.ts +17 -0
- package/dist/reader/chunk-batch/extractor.js +337 -0
- package/dist/reader/chunk-batch/extractor.js.map +1 -0
- package/dist/reader/chunk-batch/fragment-projection.d.ts +34 -0
- package/dist/reader/chunk-batch/fragment-projection.js +94 -0
- package/dist/reader/chunk-batch/fragment-projection.js.map +1 -0
- package/dist/reader/chunk-batch/index.d.ts +12 -0
- package/dist/reader/chunk-batch/index.js +13 -0
- package/dist/reader/chunk-batch/index.js.map +1 -0
- package/dist/reader/chunk-batch/language.d.ts +9 -0
- package/dist/reader/chunk-batch/language.js +23 -0
- package/dist/reader/chunk-batch/language.js.map +1 -0
- package/dist/reader/chunk-batch/parser.d.ts +94 -0
- package/dist/reader/chunk-batch/parser.js +640 -0
- package/dist/reader/chunk-batch/parser.js.map +1 -0
- package/dist/reader/chunk-batch/prompt-templates.d.ts +6 -0
- package/dist/reader/chunk-batch/prompt-templates.js +11 -0
- package/dist/reader/chunk-batch/prompt-templates.js.map +1 -0
- package/dist/reader/chunk-batch/types.d.ts +85 -0
- package/dist/reader/chunk-batch/types.js +1 -0
- package/dist/reader/chunk-batch/types.js.map +1 -0
- package/dist/reader/index.d.ts +13 -0
- package/dist/reader/index.js +7 -0
- package/dist/reader/index.js.map +1 -0
- package/dist/reader/reader.d.ts +37 -0
- package/dist/reader/reader.js +82 -0
- package/dist/reader/reader.js.map +1 -0
- package/dist/reader/segment/index.d.ts +2 -0
- package/dist/reader/segment/index.js +5 -0
- package/dist/reader/segment/index.js.map +1 -0
- package/dist/reader/segment/intl-segmenter.d.ts +5 -0
- package/dist/reader/segment/intl-segmenter.js +102 -0
- package/dist/reader/segment/intl-segmenter.js.map +1 -0
- package/dist/reader/segment/segment.d.ts +5 -0
- package/dist/reader/segment/segment.js +9 -0
- package/dist/reader/segment/segment.js.map +1 -0
- package/dist/reader/segment/types.d.ts +14 -0
- package/dist/reader/segment/types.js +1 -0
- package/dist/reader/segment/types.js.map +1 -0
- package/dist/reader/types.d.ts +29 -0
- package/dist/reader/types.js +1 -0
- package/dist/reader/types.js.map +1 -0
- package/dist/serial.d.ts +89 -0
- package/dist/serial.js +476 -0
- package/dist/serial.js.map +1 -0
- package/dist/source/adapter.d.ts +15 -0
- package/dist/source/adapter.js +1 -0
- package/dist/source/adapter.js.map +1 -0
- package/dist/source/epub/archive.d.ts +27 -0
- package/dist/source/epub/archive.js +189 -0
- package/dist/source/epub/archive.js.map +1 -0
- package/dist/source/epub/content.d.ts +22 -0
- package/dist/source/epub/content.js +183 -0
- package/dist/source/epub/content.js.map +1 -0
- package/dist/source/epub/document.d.ts +55 -0
- package/dist/source/epub/document.js +179 -0
- package/dist/source/epub/document.js.map +1 -0
- package/dist/source/epub/index.d.ts +10 -0
- package/dist/source/epub/index.js +6 -0
- package/dist/source/epub/index.js.map +1 -0
- package/dist/source/epub/navigation.d.ts +16 -0
- package/dist/source/epub/navigation.js +215 -0
- package/dist/source/epub/navigation.js.map +1 -0
- package/dist/source/epub/package.d.ts +33 -0
- package/dist/source/epub/package.js +237 -0
- package/dist/source/epub/package.js.map +1 -0
- package/dist/source/epub/xml.d.ts +16 -0
- package/dist/source/epub/xml.js +111 -0
- package/dist/source/epub/xml.js.map +1 -0
- package/dist/source/index.d.ts +12 -0
- package/dist/source/index.js +32 -0
- package/dist/source/index.js.map +1 -0
- package/dist/source/meta.d.ts +30 -0
- package/dist/source/meta.js +22 -0
- package/dist/source/meta.js.map +1 -0
- package/dist/source/plain-text.d.ts +16 -0
- package/dist/source/plain-text.js +86 -0
- package/dist/source/plain-text.js.map +1 -0
- package/dist/source/toc.d.ts +16 -0
- package/dist/source/toc.js +17 -0
- package/dist/source/toc.js.map +1 -0
- package/dist/source/types.d.ts +16 -0
- package/dist/source/types.js +1 -0
- package/dist/source/types.js.map +1 -0
- package/dist/topology/grouping.d.ts +15 -0
- package/dist/topology/grouping.js +18 -0
- package/dist/topology/grouping.js.map +1 -0
- package/dist/topology/index.d.ts +21 -0
- package/dist/topology/index.js +5 -0
- package/dist/topology/index.js.map +1 -0
- package/dist/topology/resource-segmentation.d.ts +13 -0
- package/dist/topology/resource-segmentation.js +111 -0
- package/dist/topology/resource-segmentation.js.map +1 -0
- package/dist/topology/segment-incision.d.ts +18 -0
- package/dist/topology/segment-incision.js +197 -0
- package/dist/topology/segment-incision.js.map +1 -0
- package/dist/topology/snake-detector.d.ts +13 -0
- package/dist/topology/snake-detector.js +520 -0
- package/dist/topology/snake-detector.js.map +1 -0
- package/dist/topology/snake-graph-builder.d.ts +14 -0
- package/dist/topology/snake-graph-builder.js +76 -0
- package/dist/topology/snake-graph-builder.js.map +1 -0
- package/dist/topology/topology.d.ts +29 -0
- package/dist/topology/topology.js +348 -0
- package/dist/topology/topology.js.map +1 -0
- package/dist/topology/weights.d.ts +10 -0
- package/dist/topology/weights.js +84 -0
- package/dist/topology/weights.js.map +1 -0
- package/dist/types-FVIqiLC9.d.cts +24 -0
- package/dist/utils/async-semaphore.d.ts +7 -0
- package/dist/utils/async-semaphore.js +40 -0
- package/dist/utils/async-semaphore.js.map +1 -0
- package/dist/utils/enum.d.ts +5 -0
- package/dist/utils/enum.js +18 -0
- package/dist/utils/enum.js.map +1 -0
- package/dist/utils/hash.d.ts +3 -0
- package/dist/utils/hash.js +132 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/node-error.d.ts +4 -0
- package/dist/utils/node-error.js +59 -0
- package/dist/utils/node-error.js.map +1 -0
- package/dist/wikg/archive-uri.d.ts +1 -0
- package/dist/wikg/archive-uri.js +37 -0
- package/dist/wikg/archive-uri.js.map +1 -0
- package/dist/wikg/archive.d.ts +28 -0
- package/dist/wikg/archive.js +496 -0
- package/dist/wikg/archive.js.map +1 -0
- package/dist/wikg/index.d.ts +31 -0
- package/dist/wikg/index.js +60 -0
- package/dist/wikg/index.js.map +1 -0
- package/dist/wikg/wikg-coordinator.d.ts +45 -0
- package/dist/wikg/wikg-coordinator.js +1687 -0
- package/dist/wikg/wikg-coordinator.js.map +1 -0
- package/dist/wikg/wiki-graph-archive-file.d.ts +42 -0
- package/dist/wikg/wiki-graph-archive-file.js +78 -0
- package/dist/wikg/wiki-graph-archive-file.js.map +1 -0
- package/dist/wikilink/index.d.ts +10 -0
- package/dist/wikilink/index.js +7 -0
- package/dist/wikilink/index.js.map +1 -0
- package/dist/wikilink/relation-discovery.d.ts +31 -0
- package/dist/wikilink/relation-discovery.js +477 -0
- package/dist/wikilink/relation-discovery.js.map +1 -0
- package/dist/wikilink/types.d.ts +23 -0
- package/dist/wikilink/types.js +1 -0
- package/dist/wikilink/types.js.map +1 -0
- package/dist/wikilink/window.d.ts +7 -0
- package/dist/wikilink/window.js +53 -0
- package/dist/wikilink/window.js.map +1 -0
- package/dist/wikimatch/enrichment.d.ts +10 -0
- package/dist/wikimatch/enrichment.js +55 -0
- package/dist/wikimatch/enrichment.js.map +1 -0
- package/dist/wikimatch/index.d.ts +16 -0
- package/dist/wikimatch/index.js +66 -0
- package/dist/wikimatch/index.js.map +1 -0
- package/dist/wikimatch/option-narrowing.d.ts +17 -0
- package/dist/wikimatch/option-narrowing.js +208 -0
- package/dist/wikimatch/option-narrowing.js.map +1 -0
- package/dist/wikimatch/options.d.ts +14 -0
- package/dist/wikimatch/options.js +155 -0
- package/dist/wikimatch/options.js.map +1 -0
- package/dist/wikimatch/policy-judge.d.ts +17 -0
- package/dist/wikimatch/policy-judge.js +430 -0
- package/dist/wikimatch/policy-judge.js.map +1 -0
- package/dist/wikimatch/range-suppression.d.ts +9 -0
- package/dist/wikimatch/range-suppression.js +27 -0
- package/dist/wikimatch/range-suppression.js.map +1 -0
- package/dist/wikimatch/surface-screening.d.ts +16 -0
- package/dist/wikimatch/surface-screening.js +168 -0
- package/dist/wikimatch/surface-screening.js.map +1 -0
- package/dist/wikimatch/surface-window.d.ts +6 -0
- package/dist/wikimatch/surface-window.js +44 -0
- package/dist/wikimatch/surface-window.js.map +1 -0
- package/dist/wikimatch/types.d.ts +151 -0
- package/dist/wikimatch/types.js +1 -0
- package/dist/wikimatch/types.js.map +1 -0
- package/dist/wikimatch/wikispine.d.ts +43 -0
- package/dist/wikimatch/wikispine.js +399 -0
- package/dist/wikimatch/wikispine.js.map +1 -0
- package/dist/wikimatch/window.d.ts +6 -0
- package/dist/wikimatch/window.js +83 -0
- package/dist/wikimatch/window.js.map +1 -0
- package/dist/wikimatch/words.d.ts +16 -0
- package/dist/wikimatch/words.js +66 -0
- package/dist/wikimatch/words.js.map +1 -0
- package/dist/wikipage/cache.d.ts +18 -0
- package/dist/wikipage/cache.js +404 -0
- package/dist/wikipage/cache.js.map +1 -0
- package/dist/wikipage/fetch-log.d.ts +17 -0
- package/dist/wikipage/fetch-log.js +143 -0
- package/dist/wikipage/fetch-log.js.map +1 -0
- package/dist/wikipage/index.d.ts +14 -0
- package/dist/wikipage/index.js +17 -0
- package/dist/wikipage/index.js.map +1 -0
- package/dist/wikipage/normalizer.d.ts +14 -0
- package/dist/wikipage/normalizer.js +147 -0
- package/dist/wikipage/normalizer.js.map +1 -0
- package/dist/wikipage/rate-limiter.d.ts +13 -0
- package/dist/wikipage/rate-limiter.js +84 -0
- package/dist/wikipage/rate-limiter.js.map +1 -0
- package/dist/wikipage/resolver.d.ts +26 -0
- package/dist/wikipage/resolver.js +325 -0
- package/dist/wikipage/resolver.js.map +1 -0
- package/dist/wikipage/types.d.ts +96 -0
- package/dist/wikipage/types.js +1 -0
- package/dist/wikipage/types.js.map +1 -0
- package/dist/wikipage/wikimedia-client.d.ts +48 -0
- package/dist/wikipage/wikimedia-client.js +397 -0
- package/dist/wikipage/wikimedia-client.js.map +1 -0
- package/dist/worker-BgQ0Xl8T.d.cts +181 -0
- package/dist/worker.cjs +5259 -0
- package/dist/worker.cjs.map +1 -0
- package/dist/worker.d.cts +2 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.js +5 -0
- package/dist/worker.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { BookMeta } from '../../source/meta.js';
|
|
2
|
+
import { SourceAsset } from '../../source/types.js';
|
|
3
|
+
import 'zod';
|
|
4
|
+
|
|
5
|
+
interface EpubBook {
|
|
6
|
+
readonly cover: SourceAsset | undefined;
|
|
7
|
+
readonly meta: BookMeta;
|
|
8
|
+
readonly navXhtml: string;
|
|
9
|
+
readonly packageOpf: string;
|
|
10
|
+
readonly sections: readonly EpubSection[];
|
|
11
|
+
}
|
|
12
|
+
interface EpubNavItem {
|
|
13
|
+
readonly children: readonly EpubNavItem[];
|
|
14
|
+
readonly href: string | undefined;
|
|
15
|
+
readonly title: string;
|
|
16
|
+
}
|
|
17
|
+
interface EpubSection {
|
|
18
|
+
readonly href: string;
|
|
19
|
+
readonly id: string;
|
|
20
|
+
readonly title: string;
|
|
21
|
+
readonly xhtml: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export type { EpubBook, EpubNavItem, EpubSection };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BookMeta } from '../../source/meta.js';
|
|
2
|
+
import { TocItem } from '../../source/toc.js';
|
|
3
|
+
import { EpubSection, EpubNavItem } from './model.js';
|
|
4
|
+
import 'zod';
|
|
5
|
+
import '../../source/types.js';
|
|
6
|
+
|
|
7
|
+
declare function buildNavItems(items: readonly TocItem[], sectionMap: ReadonlyMap<number, EpubSection>): EpubNavItem[];
|
|
8
|
+
declare function createNavDocument(meta: BookMeta, language: string, items: readonly EpubNavItem[]): string;
|
|
9
|
+
|
|
10
|
+
export { buildNavItems, createNavDocument };
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { escapeXml } from "./shared.js";
|
|
2
|
+
import { renderNavDocument } from "./templates.js";
|
|
3
|
+
function buildNavItems(items, sectionMap) {
|
|
4
|
+
return items.map((item) => ({
|
|
5
|
+
children: buildNavItems(item.children, sectionMap),
|
|
6
|
+
href: item.serialId === void 0 ? void 0 : sectionMap.get(item.serialId)?.href,
|
|
7
|
+
title: item.title?.trim() || `Section ${item.serialId ?? 1}`
|
|
8
|
+
}));
|
|
9
|
+
}
|
|
10
|
+
function createNavDocument(meta, language, items) {
|
|
11
|
+
const title = meta.title?.trim() || "Untitled";
|
|
12
|
+
return renderNavDocument({
|
|
13
|
+
itemsMarkup: renderNavItems(items),
|
|
14
|
+
language,
|
|
15
|
+
title
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
function renderNavItems(items) {
|
|
19
|
+
if (items.length === 0) {
|
|
20
|
+
return "<ol></ol>";
|
|
21
|
+
}
|
|
22
|
+
return `<ol>
|
|
23
|
+
${items.map((item) => renderNavItem(item, 1)).join("\n")}
|
|
24
|
+
</ol>`;
|
|
25
|
+
}
|
|
26
|
+
function renderNavItem(item, depth) {
|
|
27
|
+
const indent = " ".repeat(depth);
|
|
28
|
+
const label = item.href === void 0 ? `<span>${escapeXml(item.title)}</span>` : `<a href="${escapeXml(item.href)}">${escapeXml(item.title)}</a>`;
|
|
29
|
+
const children = item.children.length === 0 ? "" : `
|
|
30
|
+
${indent} <ol>
|
|
31
|
+
${item.children.map((child) => renderNavItem(child, depth + 2)).join("\n")}
|
|
32
|
+
${indent} </ol>`;
|
|
33
|
+
return `${indent}<li>${label}${children}</li>`;
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
buildNavItems,
|
|
37
|
+
createNavDocument
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/output/epub/navigation.ts"],"sourcesContent":["import type { BookMeta, TocItem } from \"../../source/index.js\";\n\nimport type { EpubNavItem, EpubSection } from \"./model.js\";\nimport { escapeXml } from \"./shared.js\";\nimport { renderNavDocument } from \"./templates.js\";\n\nexport function buildNavItems(\n items: readonly TocItem[],\n sectionMap: ReadonlyMap<number, EpubSection>,\n): EpubNavItem[] {\n return items.map((item) => ({\n children: buildNavItems(item.children, sectionMap),\n href:\n item.serialId === undefined\n ? undefined\n : sectionMap.get(item.serialId)?.href,\n title: item.title?.trim() || `Section ${item.serialId ?? 1}`,\n }));\n}\n\nexport function createNavDocument(\n meta: BookMeta,\n language: string,\n items: readonly EpubNavItem[],\n): string {\n const title = meta.title?.trim() || \"Untitled\";\n\n return renderNavDocument({\n itemsMarkup: renderNavItems(items),\n language,\n title,\n });\n}\n\nfunction renderNavItems(items: readonly EpubNavItem[]): string {\n if (items.length === 0) {\n return \"<ol></ol>\";\n }\n\n return `<ol>\\n${items.map((item) => renderNavItem(item, 1)).join(\"\\n\")}\\n</ol>`;\n}\n\nfunction renderNavItem(item: EpubNavItem, depth: number): string {\n const indent = \" \".repeat(depth);\n const label =\n item.href === undefined\n ? `<span>${escapeXml(item.title)}</span>`\n : `<a href=\"${escapeXml(item.href)}\">${escapeXml(item.title)}</a>`;\n const children =\n item.children.length === 0\n ? \"\"\n : `\\n${indent} <ol>\\n${item.children\n .map((child) => renderNavItem(child, depth + 2))\n .join(\"\\n\")}\\n${indent} </ol>`;\n\n return `${indent}<li>${label}${children}</li>`;\n}\n"],"mappings":"AAGA,SAAS,iBAAiB;AAC1B,SAAS,yBAAyB;AAE3B,SAAS,cACd,OACA,YACe;AACf,SAAO,MAAM,IAAI,CAAC,UAAU;AAAA,IAC1B,UAAU,cAAc,KAAK,UAAU,UAAU;AAAA,IACjD,MACE,KAAK,aAAa,SACd,SACA,WAAW,IAAI,KAAK,QAAQ,GAAG;AAAA,IACrC,OAAO,KAAK,OAAO,KAAK,KAAK,WAAW,KAAK,YAAY,CAAC;AAAA,EAC5D,EAAE;AACJ;AAEO,SAAS,kBACd,MACA,UACA,OACQ;AACR,QAAM,QAAQ,KAAK,OAAO,KAAK,KAAK;AAEpC,SAAO,kBAAkB;AAAA,IACvB,aAAa,eAAe,KAAK;AAAA,IACjC;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,eAAe,OAAuC;AAC7D,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,EAAS,MAAM,IAAI,CAAC,SAAS,cAAc,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC;AAAA;AACxE;AAEA,SAAS,cAAc,MAAmB,OAAuB;AAC/D,QAAM,SAAS,KAAK,OAAO,KAAK;AAChC,QAAM,QACJ,KAAK,SAAS,SACV,SAAS,UAAU,KAAK,KAAK,CAAC,YAC9B,YAAY,UAAU,KAAK,IAAI,CAAC,KAAK,UAAU,KAAK,KAAK,CAAC;AAChE,QAAM,WACJ,KAAK,SAAS,WAAW,IACrB,KACA;AAAA,EAAK,MAAM;AAAA,EAAW,KAAK,SACxB,IAAI,CAAC,UAAU,cAAc,OAAO,QAAQ,CAAC,CAAC,EAC9C,KAAK,IAAI,CAAC;AAAA,EAAK,MAAM;AAE9B,SAAO,GAAG,MAAM,OAAO,KAAK,GAAG,QAAQ;AACzC;","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BookMeta } from '../../source/meta.js';
|
|
2
|
+
import { EpubSection } from './model.js';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import '../../source/types.js';
|
|
5
|
+
|
|
6
|
+
declare const EPUB_OUTPUT_VERSION = "3.0";
|
|
7
|
+
declare function createPackageOpf(input: {
|
|
8
|
+
readonly coverImageHref: string | undefined;
|
|
9
|
+
readonly coverMediaType: string | undefined;
|
|
10
|
+
readonly coverPageHref: string | undefined;
|
|
11
|
+
readonly language: string;
|
|
12
|
+
readonly meta: BookMeta;
|
|
13
|
+
readonly modifiedAt: string;
|
|
14
|
+
readonly sections: readonly EpubSection[];
|
|
15
|
+
}): string;
|
|
16
|
+
|
|
17
|
+
export { EPUB_OUTPUT_VERSION, createPackageOpf };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { renderPackageOpf } from "./templates.js";
|
|
2
|
+
const EPUB_OUTPUT_VERSION = "3.0";
|
|
3
|
+
function createPackageOpf(input) {
|
|
4
|
+
const identifier = input.meta.identifier?.trim() || `urn:uuid:${crypto.randomUUID()}`;
|
|
5
|
+
const title = input.meta.title?.trim() || "Untitled";
|
|
6
|
+
return renderPackageOpf({
|
|
7
|
+
authors: input.meta.authors,
|
|
8
|
+
coverImageHref: input.coverImageHref,
|
|
9
|
+
coverMediaType: input.coverMediaType,
|
|
10
|
+
coverPageHref: input.coverPageHref,
|
|
11
|
+
description: input.meta.description,
|
|
12
|
+
identifier,
|
|
13
|
+
language: input.language,
|
|
14
|
+
modifiedAt: input.modifiedAt,
|
|
15
|
+
publishedAt: input.meta.publishedAt,
|
|
16
|
+
publisher: input.meta.publisher,
|
|
17
|
+
sections: input.sections.map((section) => ({
|
|
18
|
+
href: section.href,
|
|
19
|
+
id: section.id
|
|
20
|
+
})),
|
|
21
|
+
title,
|
|
22
|
+
version: EPUB_OUTPUT_VERSION
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
EPUB_OUTPUT_VERSION,
|
|
27
|
+
createPackageOpf
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/output/epub/package.ts"],"sourcesContent":["import type { BookMeta } from \"../../source/index.js\";\n\nimport type { EpubSection } from \"./model.js\";\nimport { renderPackageOpf } from \"./templates.js\";\n\nexport const EPUB_OUTPUT_VERSION = \"3.0\";\n\nexport function createPackageOpf(input: {\n readonly coverImageHref: string | undefined;\n readonly coverMediaType: string | undefined;\n readonly coverPageHref: string | undefined;\n readonly language: string;\n readonly meta: BookMeta;\n readonly modifiedAt: string;\n readonly sections: readonly EpubSection[];\n}): string {\n const identifier =\n input.meta.identifier?.trim() || `urn:uuid:${crypto.randomUUID()}`;\n const title = input.meta.title?.trim() || \"Untitled\";\n\n return renderPackageOpf({\n authors: input.meta.authors,\n coverImageHref: input.coverImageHref,\n coverMediaType: input.coverMediaType,\n coverPageHref: input.coverPageHref,\n description: input.meta.description,\n identifier,\n language: input.language,\n modifiedAt: input.modifiedAt,\n publishedAt: input.meta.publishedAt,\n publisher: input.meta.publisher,\n sections: input.sections.map((section) => ({\n href: section.href,\n id: section.id,\n })),\n title,\n version: EPUB_OUTPUT_VERSION,\n });\n}\n"],"mappings":"AAGA,SAAS,wBAAwB;AAE1B,MAAM,sBAAsB;AAE5B,SAAS,iBAAiB,OAQtB;AACT,QAAM,aACJ,MAAM,KAAK,YAAY,KAAK,KAAK,YAAY,OAAO,WAAW,CAAC;AAClE,QAAM,QAAQ,MAAM,KAAK,OAAO,KAAK,KAAK;AAE1C,SAAO,iBAAiB;AAAA,IACtB,SAAS,MAAM,KAAK;AAAA,IACpB,gBAAgB,MAAM;AAAA,IACtB,gBAAgB,MAAM;AAAA,IACtB,eAAe,MAAM;AAAA,IACrB,aAAa,MAAM,KAAK;AAAA,IACxB;AAAA,IACA,UAAU,MAAM;AAAA,IAChB,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM,KAAK;AAAA,IACxB,WAAW,MAAM,KAAK;AAAA,IACtB,UAAU,MAAM,SAAS,IAAI,CAAC,aAAa;AAAA,MACzC,MAAM,QAAQ;AAAA,MACd,IAAI,QAAQ;AAAA,IACd,EAAE;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AACH;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
function escapeXml(value) {
|
|
2
|
+
return value.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">").replaceAll('"', """).replaceAll("'", "'");
|
|
3
|
+
}
|
|
4
|
+
function normalizeLanguage(language) {
|
|
5
|
+
const normalized = language?.trim();
|
|
6
|
+
return normalized === void 0 || normalized === "" ? "und" : normalized;
|
|
7
|
+
}
|
|
8
|
+
export {
|
|
9
|
+
escapeXml,
|
|
10
|
+
normalizeLanguage
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/output/epub/shared.ts"],"sourcesContent":["export function escapeXml(value: string): string {\n return value\n .replaceAll(\"&\", \"&\")\n .replaceAll(\"<\", \"<\")\n .replaceAll(\">\", \">\")\n .replaceAll('\"', \""\")\n .replaceAll(\"'\", \"'\");\n}\n\nexport function normalizeLanguage(language: string | null): string {\n const normalized = language?.trim();\n\n return normalized === undefined || normalized === \"\" ? \"und\" : normalized;\n}\n"],"mappings":"AAAO,SAAS,UAAU,OAAuB;AAC/C,SAAO,MACJ,WAAW,KAAK,OAAO,EACvB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,MAAM,EACtB,WAAW,KAAK,QAAQ,EACxB,WAAW,KAAK,QAAQ;AAC7B;AAEO,SAAS,kBAAkB,UAAiC;AACjE,QAAM,aAAa,UAAU,KAAK;AAElC,SAAO,eAAe,UAAa,eAAe,KAAK,QAAQ;AACjE;","names":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
declare function renderCoverPage(input: {
|
|
2
|
+
readonly coverImageHref: string;
|
|
3
|
+
readonly language: string;
|
|
4
|
+
readonly title: string;
|
|
5
|
+
}): string;
|
|
6
|
+
declare function renderNavDocument(input: {
|
|
7
|
+
readonly itemsMarkup: string;
|
|
8
|
+
readonly language: string;
|
|
9
|
+
readonly title: string;
|
|
10
|
+
}): string;
|
|
11
|
+
declare function renderPackageOpf(input: {
|
|
12
|
+
readonly authors: readonly string[];
|
|
13
|
+
readonly coverImageHref: string | undefined;
|
|
14
|
+
readonly coverMediaType: string | undefined;
|
|
15
|
+
readonly coverPageHref: string | undefined;
|
|
16
|
+
readonly description: string | null;
|
|
17
|
+
readonly identifier: string;
|
|
18
|
+
readonly language: string;
|
|
19
|
+
readonly modifiedAt: string;
|
|
20
|
+
readonly publishedAt: string | null;
|
|
21
|
+
readonly publisher: string | null;
|
|
22
|
+
readonly sections: readonly {
|
|
23
|
+
readonly href: string;
|
|
24
|
+
readonly id: string;
|
|
25
|
+
}[];
|
|
26
|
+
readonly title: string;
|
|
27
|
+
readonly version: string;
|
|
28
|
+
}): string;
|
|
29
|
+
declare function renderSectionDocument(input: {
|
|
30
|
+
readonly language: string;
|
|
31
|
+
readonly paragraphs: readonly string[];
|
|
32
|
+
readonly title: string;
|
|
33
|
+
}): string;
|
|
34
|
+
|
|
35
|
+
export { renderCoverPage, renderNavDocument, renderPackageOpf, renderSectionDocument };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { resolveDataDirPath } from "../../common/data-dir.js";
|
|
2
|
+
import { createEnv } from "../../common/template.js";
|
|
3
|
+
let templateEnvironment;
|
|
4
|
+
function getTemplateEnvironment() {
|
|
5
|
+
templateEnvironment ??= createEnv(resolveDataDirPath());
|
|
6
|
+
return templateEnvironment;
|
|
7
|
+
}
|
|
8
|
+
function renderCoverPage(input) {
|
|
9
|
+
return getTemplateEnvironment().render("output/epub/cover.xhtml", input);
|
|
10
|
+
}
|
|
11
|
+
function renderNavDocument(input) {
|
|
12
|
+
return getTemplateEnvironment().render("output/epub/nav.xhtml", input);
|
|
13
|
+
}
|
|
14
|
+
function renderPackageOpf(input) {
|
|
15
|
+
return getTemplateEnvironment().render("output/epub/package.opf.xml", input);
|
|
16
|
+
}
|
|
17
|
+
function renderSectionDocument(input) {
|
|
18
|
+
return getTemplateEnvironment().render("output/epub/section.xhtml", input);
|
|
19
|
+
}
|
|
20
|
+
export {
|
|
21
|
+
renderCoverPage,
|
|
22
|
+
renderNavDocument,
|
|
23
|
+
renderPackageOpf,
|
|
24
|
+
renderSectionDocument
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/output/epub/templates.ts"],"sourcesContent":["import { resolveDataDirPath } from \"../../common/data-dir.js\";\nimport { createEnv } from \"../../common/template.js\";\n\nlet templateEnvironment: ReturnType<typeof createEnv> | undefined;\n\nfunction getTemplateEnvironment(): ReturnType<typeof createEnv> {\n templateEnvironment ??= createEnv(resolveDataDirPath());\n\n return templateEnvironment;\n}\n\nexport function renderCoverPage(input: {\n readonly coverImageHref: string;\n readonly language: string;\n readonly title: string;\n}): string {\n return getTemplateEnvironment().render(\"output/epub/cover.xhtml\", input);\n}\n\nexport function renderNavDocument(input: {\n readonly itemsMarkup: string;\n readonly language: string;\n readonly title: string;\n}): string {\n return getTemplateEnvironment().render(\"output/epub/nav.xhtml\", input);\n}\n\nexport function renderPackageOpf(input: {\n readonly authors: readonly string[];\n readonly coverImageHref: string | undefined;\n readonly coverMediaType: string | undefined;\n readonly coverPageHref: string | undefined;\n readonly description: string | null;\n readonly identifier: string;\n readonly language: string;\n readonly modifiedAt: string;\n readonly publishedAt: string | null;\n readonly publisher: string | null;\n readonly sections: readonly {\n readonly href: string;\n readonly id: string;\n }[];\n readonly title: string;\n readonly version: string;\n}): string {\n return getTemplateEnvironment().render(\"output/epub/package.opf.xml\", input);\n}\n\nexport function renderSectionDocument(input: {\n readonly language: string;\n readonly paragraphs: readonly string[];\n readonly title: string;\n}): string {\n return getTemplateEnvironment().render(\"output/epub/section.xhtml\", input);\n}\n"],"mappings":"AAAA,SAAS,0BAA0B;AACnC,SAAS,iBAAiB;AAE1B,IAAI;AAEJ,SAAS,yBAAuD;AAC9D,0BAAwB,UAAU,mBAAmB,CAAC;AAEtD,SAAO;AACT;AAEO,SAAS,gBAAgB,OAIrB;AACT,SAAO,uBAAuB,EAAE,OAAO,2BAA2B,KAAK;AACzE;AAEO,SAAS,kBAAkB,OAIvB;AACT,SAAO,uBAAuB,EAAE,OAAO,yBAAyB,KAAK;AACvE;AAEO,SAAS,iBAAiB,OAiBtB;AACT,SAAO,uBAAuB,EAAE,OAAO,+BAA+B,KAAK;AAC7E;AAEO,SAAS,sBAAsB,OAI3B;AACT,SAAO,uBAAuB,EAAE,OAAO,6BAA6B,KAAK;AAC3E;","names":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { WritePlainTextOptions, writePlainText } from './plain-text.js';
|
|
2
|
+
export { WriteEpubOptions, writeEpub } from './epub/index.js';
|
|
3
|
+
export { EPUB_OUTPUT_VERSION } from './epub/package.js';
|
|
4
|
+
import '../document/document.js';
|
|
5
|
+
import '../source/meta.js';
|
|
6
|
+
import 'zod';
|
|
7
|
+
import '../source/toc.js';
|
|
8
|
+
import '../source/types.js';
|
|
9
|
+
import '../document/database.js';
|
|
10
|
+
import 'sqlite3';
|
|
11
|
+
import '../document/text-streams.js';
|
|
12
|
+
import '../document/types.js';
|
|
13
|
+
import '../document/stores.js';
|
|
14
|
+
import './epub/model.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/output/index.ts"],"sourcesContent":["export { writePlainText, type WritePlainTextOptions } from \"./plain-text.js\";\nexport {\n EPUB_OUTPUT_VERSION,\n writeEpub,\n type WriteEpubOptions,\n} from \"./epub/index.js\";\n"],"mappings":"AAAA,SAAS,sBAAkD;AAC3D;AAAA,EACE;AAAA,EACA;AAAA,OAEK;","names":[]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ReadonlyDocument } from '../document/document.js';
|
|
2
|
+
import '../source/meta.js';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import '../source/toc.js';
|
|
5
|
+
import '../source/types.js';
|
|
6
|
+
import '../document/database.js';
|
|
7
|
+
import 'sqlite3';
|
|
8
|
+
import '../document/text-streams.js';
|
|
9
|
+
import '../document/types.js';
|
|
10
|
+
import '../document/stores.js';
|
|
11
|
+
|
|
12
|
+
interface WritePlainTextOptions {
|
|
13
|
+
readonly document: ReadonlyDocument;
|
|
14
|
+
readonly path: string;
|
|
15
|
+
}
|
|
16
|
+
declare function writePlainText(options: WritePlainTextOptions): Promise<void>;
|
|
17
|
+
|
|
18
|
+
export { type WritePlainTextOptions, writePlainText };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { mkdir, writeFile } from "fs/promises";
|
|
2
|
+
import { dirname } from "path";
|
|
3
|
+
async function writePlainText(options) {
|
|
4
|
+
const text = await options.document.openSession(
|
|
5
|
+
async (document) => await buildPlainText(document)
|
|
6
|
+
);
|
|
7
|
+
await mkdir(dirname(options.path), { recursive: true });
|
|
8
|
+
await writeFile(options.path, text, "utf8");
|
|
9
|
+
}
|
|
10
|
+
async function buildPlainText(document) {
|
|
11
|
+
const toc = await document.readToc();
|
|
12
|
+
if (toc === void 0) {
|
|
13
|
+
throw new Error("Document TOC is missing");
|
|
14
|
+
}
|
|
15
|
+
const blocks = await renderTocItems(document, toc.items);
|
|
16
|
+
if (blocks.length === 0) {
|
|
17
|
+
return "";
|
|
18
|
+
}
|
|
19
|
+
return `${blocks.join("\n\n")}
|
|
20
|
+
`;
|
|
21
|
+
}
|
|
22
|
+
async function renderTocItems(document, items) {
|
|
23
|
+
const blocks = [];
|
|
24
|
+
for (const item of items) {
|
|
25
|
+
const block = await renderTocItem(document, item);
|
|
26
|
+
if (block !== void 0) {
|
|
27
|
+
blocks.push(block);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return blocks;
|
|
31
|
+
}
|
|
32
|
+
async function renderTocItem(document, item) {
|
|
33
|
+
const parts = [item.title?.trim()].filter(
|
|
34
|
+
(value) => value !== void 0 && value !== ""
|
|
35
|
+
);
|
|
36
|
+
if (item.serialId !== void 0) {
|
|
37
|
+
const summary = await document.readSummary(item.serialId);
|
|
38
|
+
if (summary === void 0) {
|
|
39
|
+
throw new Error(
|
|
40
|
+
`Chapter ${item.serialId} summary is missing. Run \`wg wikg://local/job add --input <chapter-uri> --task reading-summary --accept-cost\` before export, or inspect the archive with \`wg <archive-uri>/chapter/tree get\`.`
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
if (summary.trim() !== "") {
|
|
44
|
+
parts.push(summary.trim());
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const childBlocks = await renderTocItems(document, item.children);
|
|
48
|
+
if (parts.length === 0 && childBlocks.length === 0) {
|
|
49
|
+
return void 0;
|
|
50
|
+
}
|
|
51
|
+
return [...parts, ...childBlocks].join("\n\n");
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
writePlainText
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=plain-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/output/plain-text.ts"],"sourcesContent":["import { mkdir, writeFile } from \"fs/promises\";\nimport { dirname } from \"path\";\n\nimport type { ReadonlyDocument } from \"../document/index.js\";\nimport type { TocItem } from \"../source/index.js\";\n\nexport interface WritePlainTextOptions {\n readonly document: ReadonlyDocument;\n readonly path: string;\n}\n\nexport async function writePlainText(\n options: WritePlainTextOptions,\n): Promise<void> {\n const text = await options.document.openSession(\n async (document) => await buildPlainText(document),\n );\n\n await mkdir(dirname(options.path), { recursive: true });\n await writeFile(options.path, text, \"utf8\");\n}\n\nasync function buildPlainText(document: ReadonlyDocument): Promise<string> {\n const toc = await document.readToc();\n\n if (toc === undefined) {\n throw new Error(\"Document TOC is missing\");\n }\n\n const blocks = await renderTocItems(document, toc.items);\n\n if (blocks.length === 0) {\n return \"\";\n }\n\n return `${blocks.join(\"\\n\\n\")}\\n`;\n}\n\nasync function renderTocItems(\n document: ReadonlyDocument,\n items: readonly TocItem[],\n): Promise<string[]> {\n const blocks: string[] = [];\n\n for (const item of items) {\n const block = await renderTocItem(document, item);\n\n if (block !== undefined) {\n blocks.push(block);\n }\n }\n\n return blocks;\n}\n\nasync function renderTocItem(\n document: ReadonlyDocument,\n item: TocItem,\n): Promise<string | undefined> {\n const parts = [item.title?.trim()].filter(\n (value): value is string => value !== undefined && value !== \"\",\n );\n\n if (item.serialId !== undefined) {\n const summary = await document.readSummary(item.serialId);\n\n if (summary === undefined) {\n throw new Error(\n `Chapter ${item.serialId} summary is missing. Run \\`wg wikg://local/job add --input <chapter-uri> --task reading-summary --accept-cost\\` before export, or inspect the archive with \\`wg <archive-uri>/chapter/tree get\\`.`,\n );\n }\n if (summary.trim() !== \"\") {\n parts.push(summary.trim());\n }\n }\n\n const childBlocks = await renderTocItems(document, item.children);\n\n if (parts.length === 0 && childBlocks.length === 0) {\n return undefined;\n }\n\n return [...parts, ...childBlocks].join(\"\\n\\n\");\n}\n"],"mappings":"AAAA,SAAS,OAAO,iBAAiB;AACjC,SAAS,eAAe;AAUxB,eAAsB,eACpB,SACe;AACf,QAAM,OAAO,MAAM,QAAQ,SAAS;AAAA,IAClC,OAAO,aAAa,MAAM,eAAe,QAAQ;AAAA,EACnD;AAEA,QAAM,MAAM,QAAQ,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AACtD,QAAM,UAAU,QAAQ,MAAM,MAAM,MAAM;AAC5C;AAEA,eAAe,eAAe,UAA6C;AACzE,QAAM,MAAM,MAAM,SAAS,QAAQ;AAEnC,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,QAAM,SAAS,MAAM,eAAe,UAAU,IAAI,KAAK;AAEvD,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,SAAO,GAAG,OAAO,KAAK,MAAM,CAAC;AAAA;AAC/B;AAEA,eAAe,eACb,UACA,OACmB;AACnB,QAAM,SAAmB,CAAC;AAE1B,aAAW,QAAQ,OAAO;AACxB,UAAM,QAAQ,MAAM,cAAc,UAAU,IAAI;AAEhD,QAAI,UAAU,QAAW;AACvB,aAAO,KAAK,KAAK;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,cACb,UACA,MAC6B;AAC7B,QAAM,QAAQ,CAAC,KAAK,OAAO,KAAK,CAAC,EAAE;AAAA,IACjC,CAAC,UAA2B,UAAU,UAAa,UAAU;AAAA,EAC/D;AAEA,MAAI,KAAK,aAAa,QAAW;AAC/B,UAAM,UAAU,MAAM,SAAS,YAAY,KAAK,QAAQ;AAExD,QAAI,YAAY,QAAW;AACzB,YAAM,IAAI;AAAA,QACR,WAAW,KAAK,QAAQ;AAAA,MAC1B;AAAA,IACF;AACA,QAAI,QAAQ,KAAK,MAAM,IAAI;AACzB,YAAM,KAAK,QAAQ,KAAK,CAAC;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM,cAAc,MAAM,eAAe,UAAU,KAAK,QAAQ;AAEhE,MAAI,MAAM,WAAW,KAAK,YAAY,WAAW,GAAG;AAClD,WAAO;AAAA,EACT;AAEA,SAAO,CAAC,GAAG,OAAO,GAAG,WAAW,EAAE,KAAK,MAAM;AAC/C;","names":[]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { CreateDigestProgressTrackerOptions, DigestProgressTracker, SerialProgressTracker, createDigestProgressTracker } from './tracker.js';
|
|
2
|
+
export { ProgressReporter, createProgressReporter } from './reporter.js';
|
|
3
|
+
export { DigestProgressEvent, SerialDiscoveryItem, SerialProgressEvent, SerialsDiscoveredEvent, WikiGraphOperation, WikiGraphProgressCallback, WikiGraphProgressEvent, WikiGraphProgressEventType } from './types.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createDigestProgressTracker,
|
|
3
|
+
DigestProgressTracker,
|
|
4
|
+
SerialProgressTracker
|
|
5
|
+
} from "./tracker.js";
|
|
6
|
+
import { createProgressReporter, ProgressReporter } from "./reporter.js";
|
|
7
|
+
export {
|
|
8
|
+
DigestProgressTracker,
|
|
9
|
+
ProgressReporter,
|
|
10
|
+
SerialProgressTracker,
|
|
11
|
+
createDigestProgressTracker,
|
|
12
|
+
createProgressReporter
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/progress/index.ts"],"sourcesContent":["export {\n createDigestProgressTracker,\n DigestProgressTracker,\n SerialProgressTracker,\n type CreateDigestProgressTrackerOptions,\n} from \"./tracker.js\";\nexport { createProgressReporter, ProgressReporter } from \"./reporter.js\";\nexport type {\n DigestProgressEvent,\n SerialDiscoveryItem,\n SerialsDiscoveredEvent,\n SerialProgressEvent,\n WikiGraphOperation,\n WikiGraphProgressCallback,\n WikiGraphProgressEvent,\n WikiGraphProgressEventType,\n} from \"./types.js\";\n"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,wBAAwB,wBAAwB;","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { WikiGraphOperation, WikiGraphProgressCallback, WikiGraphProgressEvent } from './types.js';
|
|
2
|
+
|
|
3
|
+
declare class ProgressReporter {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(operation: WikiGraphOperation, callback?: WikiGraphProgressCallback);
|
|
6
|
+
emit(event: WikiGraphProgressEvent): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
declare function createProgressReporter(operation: WikiGraphOperation, callback?: WikiGraphProgressCallback): ProgressReporter;
|
|
9
|
+
|
|
10
|
+
export { ProgressReporter, createProgressReporter };
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { getLogger } from "../common/logging.js";
|
|
2
|
+
class ProgressReporter {
|
|
3
|
+
#callback;
|
|
4
|
+
#operation;
|
|
5
|
+
constructor(operation, callback) {
|
|
6
|
+
this.#callback = callback;
|
|
7
|
+
this.#operation = operation;
|
|
8
|
+
}
|
|
9
|
+
async emit(event) {
|
|
10
|
+
getLogger({
|
|
11
|
+
component: "progress",
|
|
12
|
+
eventType: event.type,
|
|
13
|
+
operation: this.#operation,
|
|
14
|
+
...buildLogBindings(event)
|
|
15
|
+
}).info(buildLogMessage(event));
|
|
16
|
+
if (this.#callback === void 0) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
await this.#callback(event);
|
|
21
|
+
} catch (error) {
|
|
22
|
+
getLogger({
|
|
23
|
+
component: "progress",
|
|
24
|
+
operation: this.#operation
|
|
25
|
+
}).warn(
|
|
26
|
+
{
|
|
27
|
+
error: error instanceof Error ? { message: error.message, name: error.name } : String(error)
|
|
28
|
+
},
|
|
29
|
+
"Progress callback failed"
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function createProgressReporter(operation, callback) {
|
|
35
|
+
return new ProgressReporter(operation, callback);
|
|
36
|
+
}
|
|
37
|
+
function buildLogBindings(event) {
|
|
38
|
+
switch (event.type) {
|
|
39
|
+
case "serials-discovered":
|
|
40
|
+
return {
|
|
41
|
+
available: Number(event.available),
|
|
42
|
+
serials: event.serials.length,
|
|
43
|
+
totalFragments: event.serials.reduce(
|
|
44
|
+
(sum, serial) => sum + (serial.fragments ?? 0),
|
|
45
|
+
0
|
|
46
|
+
),
|
|
47
|
+
totalWords: event.serials.reduce(
|
|
48
|
+
(sum, serial) => sum + serial.words,
|
|
49
|
+
0
|
|
50
|
+
)
|
|
51
|
+
};
|
|
52
|
+
case "serial-progress":
|
|
53
|
+
return {
|
|
54
|
+
completedFragments: event.completedFragments,
|
|
55
|
+
completedWords: event.completedWords,
|
|
56
|
+
id: event.id
|
|
57
|
+
};
|
|
58
|
+
case "digest-progress":
|
|
59
|
+
return {
|
|
60
|
+
completedWords: event.completedWords,
|
|
61
|
+
totalWords: event.totalWords
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function buildLogMessage(event) {
|
|
66
|
+
switch (event.type) {
|
|
67
|
+
case "serials-discovered":
|
|
68
|
+
return event.available ? `Discovered ${event.serials.length} serials` : "Serial discovery unavailable";
|
|
69
|
+
case "serial-progress":
|
|
70
|
+
return `Serial ${event.id} progressed`;
|
|
71
|
+
case "digest-progress":
|
|
72
|
+
return "Digest progressed";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
ProgressReporter,
|
|
77
|
+
createProgressReporter
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/progress/reporter.ts"],"sourcesContent":["import { getLogger } from \"../common/logging.js\";\n\nimport type {\n DigestProgressEvent,\n SerialProgressEvent,\n WikiGraphOperation,\n WikiGraphProgressCallback,\n WikiGraphProgressEvent,\n} from \"./types.js\";\n\nexport class ProgressReporter {\n readonly #callback: WikiGraphProgressCallback | undefined;\n readonly #operation: WikiGraphOperation;\n\n public constructor(\n operation: WikiGraphOperation,\n callback?: WikiGraphProgressCallback,\n ) {\n this.#callback = callback;\n this.#operation = operation;\n }\n\n public async emit(event: WikiGraphProgressEvent): Promise<void> {\n getLogger({\n component: \"progress\",\n eventType: event.type,\n operation: this.#operation,\n ...buildLogBindings(event),\n }).info(buildLogMessage(event));\n\n if (this.#callback === undefined) {\n return;\n }\n\n try {\n await this.#callback(event);\n } catch (error) {\n getLogger({\n component: \"progress\",\n operation: this.#operation,\n }).warn(\n {\n error:\n error instanceof Error\n ? { message: error.message, name: error.name }\n : String(error),\n },\n \"Progress callback failed\",\n );\n }\n }\n}\n\nexport function createProgressReporter(\n operation: WikiGraphOperation,\n callback?: WikiGraphProgressCallback,\n): ProgressReporter {\n return new ProgressReporter(operation, callback);\n}\n\nfunction buildLogBindings(\n event: WikiGraphProgressEvent,\n): Record<string, number> {\n switch (event.type) {\n case \"serials-discovered\":\n return {\n available: Number(event.available),\n serials: event.serials.length,\n totalFragments: event.serials.reduce(\n (sum, serial) => sum + (serial.fragments ?? 0),\n 0,\n ),\n totalWords: event.serials.reduce(\n (sum, serial) => sum + serial.words,\n 0,\n ),\n } satisfies Record<string, number>;\n case \"serial-progress\":\n return {\n completedFragments: event.completedFragments,\n completedWords: event.completedWords,\n id: event.id,\n } satisfies Record<keyof Omit<SerialProgressEvent, \"type\">, number>;\n case \"digest-progress\":\n return {\n completedWords: event.completedWords,\n totalWords: event.totalWords,\n } satisfies Record<keyof Omit<DigestProgressEvent, \"type\">, number>;\n }\n}\n\nfunction buildLogMessage(event: WikiGraphProgressEvent): string {\n switch (event.type) {\n case \"serials-discovered\":\n return event.available\n ? `Discovered ${event.serials.length} serials`\n : \"Serial discovery unavailable\";\n case \"serial-progress\":\n return `Serial ${event.id} progressed`;\n case \"digest-progress\":\n return \"Digest progressed\";\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAUnB,MAAM,iBAAiB;AAAA,EACnB;AAAA,EACA;AAAA,EAEF,YACL,WACA,UACA;AACA,SAAK,YAAY;AACjB,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAa,KAAK,OAA8C;AAC9D,cAAU;AAAA,MACR,WAAW;AAAA,MACX,WAAW,MAAM;AAAA,MACjB,WAAW,KAAK;AAAA,MAChB,GAAG,iBAAiB,KAAK;AAAA,IAC3B,CAAC,EAAE,KAAK,gBAAgB,KAAK,CAAC;AAE9B,QAAI,KAAK,cAAc,QAAW;AAChC;AAAA,IACF;AAEA,QAAI;AACF,YAAM,KAAK,UAAU,KAAK;AAAA,IAC5B,SAAS,OAAO;AACd,gBAAU;AAAA,QACR,WAAW;AAAA,QACX,WAAW,KAAK;AAAA,MAClB,CAAC,EAAE;AAAA,QACD;AAAA,UACE,OACE,iBAAiB,QACb,EAAE,SAAS,MAAM,SAAS,MAAM,MAAM,KAAK,IAC3C,OAAO,KAAK;AAAA,QACpB;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,uBACd,WACA,UACkB;AAClB,SAAO,IAAI,iBAAiB,WAAW,QAAQ;AACjD;AAEA,SAAS,iBACP,OACwB;AACxB,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACH,aAAO;AAAA,QACL,WAAW,OAAO,MAAM,SAAS;AAAA,QACjC,SAAS,MAAM,QAAQ;AAAA,QACvB,gBAAgB,MAAM,QAAQ;AAAA,UAC5B,CAAC,KAAK,WAAW,OAAO,OAAO,aAAa;AAAA,UAC5C;AAAA,QACF;AAAA,QACA,YAAY,MAAM,QAAQ;AAAA,UACxB,CAAC,KAAK,WAAW,MAAM,OAAO;AAAA,UAC9B;AAAA,QACF;AAAA,MACF;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,oBAAoB,MAAM;AAAA,QAC1B,gBAAgB,MAAM;AAAA,QACtB,IAAI,MAAM;AAAA,MACZ;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,gBAAgB,MAAM;AAAA,QACtB,YAAY,MAAM;AAAA,MACpB;AAAA,EACJ;AACF;AAEA,SAAS,gBAAgB,OAAuC;AAC9D,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACH,aAAO,MAAM,YACT,cAAc,MAAM,QAAQ,MAAM,aAClC;AAAA,IACN,KAAK;AACH,aAAO,UAAU,MAAM,EAAE;AAAA,IAC3B,KAAK;AACH,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { WikiGraphProgressCallback, WikiGraphOperation, SerialDiscoveryItem } from './types.js';
|
|
2
|
+
|
|
3
|
+
interface CreateDigestProgressTrackerOptions {
|
|
4
|
+
readonly onProgress?: WikiGraphProgressCallback;
|
|
5
|
+
readonly operation: WikiGraphOperation;
|
|
6
|
+
}
|
|
7
|
+
declare class DigestProgressTracker {
|
|
8
|
+
#private;
|
|
9
|
+
constructor(options: CreateDigestProgressTrackerOptions);
|
|
10
|
+
createSerialTracker(input: {
|
|
11
|
+
readonly id: number;
|
|
12
|
+
}): SerialProgressTracker;
|
|
13
|
+
discoverSerials(serials: readonly SerialDiscoveryItem[]): Promise<void>;
|
|
14
|
+
markDiscoveryUnavailable(): Promise<void>;
|
|
15
|
+
completeSerial(input: {
|
|
16
|
+
readonly id: number;
|
|
17
|
+
readonly words: number;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
emitSerialProgress(input: {
|
|
20
|
+
readonly completedFragments: number;
|
|
21
|
+
readonly completedWords: number;
|
|
22
|
+
readonly id: number;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
declare class SerialProgressTracker {
|
|
26
|
+
#private;
|
|
27
|
+
constructor(digestTracker: DigestProgressTracker, id: number);
|
|
28
|
+
begin(_input?: {
|
|
29
|
+
readonly fragments: number;
|
|
30
|
+
readonly words: number;
|
|
31
|
+
}): Promise<void>;
|
|
32
|
+
advance(wordsCount: number): Promise<void>;
|
|
33
|
+
complete(finalWordsCount?: number): Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
declare function createDigestProgressTracker(options: CreateDigestProgressTrackerOptions): DigestProgressTracker;
|
|
36
|
+
|
|
37
|
+
export { type CreateDigestProgressTrackerOptions, DigestProgressTracker, SerialProgressTracker, createDigestProgressTracker };
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { createProgressReporter } from "./reporter.js";
|
|
2
|
+
class DigestProgressTracker {
|
|
3
|
+
#reporter;
|
|
4
|
+
#completedWords = 0;
|
|
5
|
+
#completedWordsBySerial = /* @__PURE__ */ new Map();
|
|
6
|
+
#totalWords = 0;
|
|
7
|
+
#discoverySettled = false;
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.#reporter = createProgressReporter(
|
|
10
|
+
options.operation,
|
|
11
|
+
options.onProgress
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
createSerialTracker(input) {
|
|
15
|
+
return new SerialProgressTracker(this, input.id);
|
|
16
|
+
}
|
|
17
|
+
async discoverSerials(serials) {
|
|
18
|
+
this.#ensureDiscoveryOpen();
|
|
19
|
+
this.#discoverySettled = true;
|
|
20
|
+
this.#totalWords = serials.reduce((sum, serial) => sum + serial.words, 0);
|
|
21
|
+
await this.#reporter.emit({
|
|
22
|
+
available: true,
|
|
23
|
+
serials,
|
|
24
|
+
type: "serials-discovered"
|
|
25
|
+
});
|
|
26
|
+
await this.#emitDigestProgress();
|
|
27
|
+
}
|
|
28
|
+
async markDiscoveryUnavailable() {
|
|
29
|
+
this.#ensureDiscoveryOpen();
|
|
30
|
+
this.#discoverySettled = true;
|
|
31
|
+
await this.#reporter.emit({
|
|
32
|
+
available: false,
|
|
33
|
+
serials: [],
|
|
34
|
+
type: "serials-discovered"
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async completeSerial(input) {
|
|
38
|
+
const previousCompletedWords = this.#completedWordsBySerial.get(input.id) ?? 0;
|
|
39
|
+
if (input.words !== previousCompletedWords) {
|
|
40
|
+
this.#completedWordsBySerial.set(input.id, input.words);
|
|
41
|
+
this.#completedWords += input.words - previousCompletedWords;
|
|
42
|
+
}
|
|
43
|
+
const nextTotalWords = Math.max(
|
|
44
|
+
this.#totalWords,
|
|
45
|
+
this.#completedWords,
|
|
46
|
+
input.words
|
|
47
|
+
);
|
|
48
|
+
if (nextTotalWords === this.#totalWords && input.words === previousCompletedWords) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.#totalWords = nextTotalWords;
|
|
52
|
+
await this.#emitDigestProgress();
|
|
53
|
+
}
|
|
54
|
+
async emitSerialProgress(input) {
|
|
55
|
+
await this.#reporter.emit({
|
|
56
|
+
completedFragments: input.completedFragments,
|
|
57
|
+
completedWords: input.completedWords,
|
|
58
|
+
id: input.id,
|
|
59
|
+
type: "serial-progress"
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async #emitDigestProgress() {
|
|
63
|
+
await this.#reporter.emit({
|
|
64
|
+
completedWords: this.#completedWords,
|
|
65
|
+
totalWords: this.#totalWords,
|
|
66
|
+
type: "digest-progress"
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
#ensureDiscoveryOpen() {
|
|
70
|
+
if (this.#discoverySettled) {
|
|
71
|
+
throw new Error("Serial discovery has already been reported");
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
class SerialProgressTracker {
|
|
76
|
+
#completedFragments = 0;
|
|
77
|
+
#digestTracker;
|
|
78
|
+
#completedWords = 0;
|
|
79
|
+
#id;
|
|
80
|
+
constructor(digestTracker, id) {
|
|
81
|
+
this.#digestTracker = digestTracker;
|
|
82
|
+
this.#id = id;
|
|
83
|
+
}
|
|
84
|
+
async begin(_input) {
|
|
85
|
+
}
|
|
86
|
+
async advance(wordsCount) {
|
|
87
|
+
this.#completedWords += wordsCount;
|
|
88
|
+
this.#completedFragments += 1;
|
|
89
|
+
await this.#digestTracker.emitSerialProgress({
|
|
90
|
+
completedFragments: this.#completedFragments,
|
|
91
|
+
completedWords: this.#completedWords,
|
|
92
|
+
id: this.#id
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async complete(finalWordsCount = 0) {
|
|
96
|
+
this.#completedWords += finalWordsCount;
|
|
97
|
+
if (finalWordsCount > 0) {
|
|
98
|
+
this.#completedFragments += 1;
|
|
99
|
+
}
|
|
100
|
+
await this.#digestTracker.emitSerialProgress({
|
|
101
|
+
completedFragments: this.#completedFragments,
|
|
102
|
+
completedWords: this.#completedWords,
|
|
103
|
+
id: this.#id
|
|
104
|
+
});
|
|
105
|
+
await this.#digestTracker.completeSerial({
|
|
106
|
+
id: this.#id,
|
|
107
|
+
words: this.#completedWords
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function createDigestProgressTracker(options) {
|
|
112
|
+
return new DigestProgressTracker(options);
|
|
113
|
+
}
|
|
114
|
+
export {
|
|
115
|
+
DigestProgressTracker,
|
|
116
|
+
SerialProgressTracker,
|
|
117
|
+
createDigestProgressTracker
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=tracker.js.map
|