@diplodoc/cli 5.46.1 → 5.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/index.js +3 -3
- package/build/index.mjs +3 -3
- package/package.json +24 -8
- package/tests/.eslintrc.js +9 -0
- package/tests/e2e/__snapshots__/alternates.test.ts.snap +1199 -0
- package/tests/e2e/__snapshots__/assets.spec.ts.snap +0 -0
- package/tests/e2e/__snapshots__/build-content-map.spec.ts.snap +329 -0
- package/tests/e2e/__snapshots__/bundles.spec.ts.snap +172 -0
- package/tests/e2e/__snapshots__/cleanup-empty-dirs.spec.ts.snap +65 -0
- package/tests/e2e/__snapshots__/crawler-manifest.spec.ts.snap +28 -0
- package/tests/e2e/__snapshots__/files.spec.ts.snap +164 -0
- package/tests/e2e/__snapshots__/files.test.ts.snap +146 -0
- package/tests/e2e/__snapshots__/generate-map.spec.ts.snap +408 -0
- package/tests/e2e/__snapshots__/include-toc.test.ts.snap +797 -0
- package/tests/e2e/__snapshots__/include-with-meta.test.ts.snap +67 -0
- package/tests/e2e/__snapshots__/includes-conditions.test.ts.snap +78 -0
- package/tests/e2e/__snapshots__/includes.test.ts.snap +780 -0
- package/tests/e2e/__snapshots__/init.test.ts.snap +283 -0
- package/tests/e2e/__snapshots__/llms.spec.ts.snap +257 -0
- package/tests/e2e/__snapshots__/load-custom-resources.spec.ts.snap +362 -0
- package/tests/e2e/__snapshots__/markdown-options.spec.ts.snap +209 -0
- package/tests/e2e/__snapshots__/merge-includes.spec.ts.snap +1058 -0
- package/tests/e2e/__snapshots__/metadata.spec.ts.snap +200 -0
- package/tests/e2e/__snapshots__/neuro-expert.test.ts.snap +625 -0
- package/tests/e2e/__snapshots__/pdf-page.spec.ts.snap +341 -0
- package/tests/e2e/__snapshots__/plugin-corner-cases.spec.ts.snap +0 -0
- package/tests/e2e/__snapshots__/preprocess.test.ts.snap +1558 -0
- package/tests/e2e/__snapshots__/regression.test.ts.snap +2033 -0
- package/tests/e2e/__snapshots__/restricted-access.test.ts.snap +244 -0
- package/tests/e2e/__snapshots__/rtl.spec.ts.snap +234 -0
- package/tests/e2e/__snapshots__/search.test.ts.snap +56 -0
- package/tests/e2e/__snapshots__/single-page.spec.ts.snap +163 -0
- package/tests/e2e/__snapshots__/skip-html-extension.spec.ts.snap +519 -0
- package/tests/e2e/__snapshots__/toc-label.test.ts.snap +127 -0
- package/tests/e2e/__snapshots__/translation.spec.ts.snap +2386 -0
- package/tests/e2e/__snapshots__/vars-conditions.spec.ts.snap +131 -0
- package/tests/e2e/alternates.test.ts +49 -0
- package/tests/e2e/assets.spec.ts +31 -0
- package/tests/e2e/autotitles.spec.ts +37 -0
- package/tests/e2e/build-content-map.spec.ts +220 -0
- package/tests/e2e/bundles.spec.ts +16 -0
- package/tests/e2e/cleanup-empty-dirs.spec.ts +59 -0
- package/tests/e2e/crawler-manifest.spec.ts +129 -0
- package/tests/e2e/disable-csp.spec.ts +55 -0
- package/tests/e2e/empty-presets.spec.ts +32 -0
- package/tests/e2e/errors.spec.ts +158 -0
- package/tests/e2e/files.spec.ts +21 -0
- package/tests/e2e/generate-map.spec.ts +47 -0
- package/tests/e2e/include-toc.test.ts +73 -0
- package/tests/e2e/include-with-meta.test.ts +20 -0
- package/tests/e2e/includes-conditions.test.ts +23 -0
- package/tests/e2e/includes.test.ts +52 -0
- package/tests/e2e/init.test.ts +105 -0
- package/tests/e2e/llms.spec.ts +24 -0
- package/tests/e2e/load-custom-resources.spec.ts +23 -0
- package/tests/e2e/markdown-options.spec.ts +17 -0
- package/tests/e2e/merge-includes.spec.ts +196 -0
- package/tests/e2e/metadata.spec.ts +79 -0
- package/tests/e2e/nested-include-links.spec.ts +26 -0
- package/tests/e2e/neuro-expert.test.ts +16 -0
- package/tests/e2e/openapi-companion.spec.ts +213 -0
- package/tests/e2e/openapi-include-size.spec.ts +55 -0
- package/tests/e2e/pdf-page.spec.ts +127 -0
- package/tests/e2e/plugin-corner-cases.spec.ts +14 -0
- package/tests/e2e/preprocess.test.ts +40 -0
- package/tests/e2e/redirects-validation.spec.ts +62 -0
- package/tests/e2e/regression.test.ts +39 -0
- package/tests/e2e/restricted-access.test.ts +19 -0
- package/tests/e2e/rtl.spec.ts +17 -0
- package/tests/e2e/search.test.ts +16 -0
- package/tests/e2e/single-page.spec.ts +23 -0
- package/tests/e2e/skip-html-extension.spec.ts +17 -0
- package/tests/e2e/themer.test.ts +307 -0
- package/tests/e2e/toc-label.test.ts +23 -0
- package/tests/e2e/translation.spec.ts +221 -0
- package/tests/e2e/vars-conditions.spec.ts +16 -0
- package/tests/e2e/vars-ignore.test.ts +168 -0
- package/tests/fixtures/cli.ts +103 -0
- package/tests/fixtures/file.ts +148 -0
- package/tests/fixtures/globals.d.ts +4 -0
- package/tests/fixtures/index.ts +4 -0
- package/tests/fixtures/runner.ts +49 -0
- package/tests/fixtures/test.ts +210 -0
- package/tests/mocks/alternates/input/.yfm +1 -0
- package/tests/mocks/alternates/input/az/about.md +3 -0
- package/tests/mocks/alternates/input/az/deep/test.md +3 -0
- package/tests/mocks/alternates/input/az/index.yaml +3 -0
- package/tests/mocks/alternates/input/az/toc.yaml +6 -0
- package/tests/mocks/alternates/input/en/about.md +3 -0
- package/tests/mocks/alternates/input/en/deep/test.md +3 -0
- package/tests/mocks/alternates/input/en/index.yaml +3 -0
- package/tests/mocks/alternates/input/en/toc.yaml +6 -0
- package/tests/mocks/alternates/input/ru/about.md +8 -0
- package/tests/mocks/alternates/input/ru/deep/test.md +3 -0
- package/tests/mocks/alternates/input/ru/index.yaml +3 -0
- package/tests/mocks/alternates/input/ru/toc.yaml +6 -0
- package/tests/mocks/assets/input/.yfm +1 -0
- package/tests/mocks/assets/input/_images/camera.svg +1 -0
- package/tests/mocks/assets/input/_images/icons/bulb.svg +1 -0
- package/tests/mocks/assets/input/_images/mountain.jpg +0 -0
- package/tests/mocks/assets/input/_images/versions.png +0 -0
- package/tests/mocks/assets/input/index.md +18 -0
- package/tests/mocks/assets/input/page.yaml +7 -0
- package/tests/mocks/assets/input/toc.yaml +7 -0
- package/tests/mocks/autotitles/input/docs/index.md +3 -0
- package/tests/mocks/autotitles/input/docs/target.md +3 -0
- package/tests/mocks/autotitles/input/toc.yaml +5 -0
- package/tests/mocks/build-content-map/autotitle-chain/input/.yfm +0 -0
- package/tests/mocks/build-content-map/autotitle-chain/input/a.md +3 -0
- package/tests/mocks/build-content-map/autotitle-chain/input/b.md +3 -0
- package/tests/mocks/build-content-map/autotitle-chain/input/c.md +3 -0
- package/tests/mocks/build-content-map/autotitle-chain/input/toc.yaml +9 -0
- package/tests/mocks/build-content-map/autotitle-target-with-include/input/.yfm +0 -0
- package/tests/mocks/build-content-map/autotitle-target-with-include/input/_includes/snippet.md +3 -0
- package/tests/mocks/build-content-map/autotitle-target-with-include/input/a.md +3 -0
- package/tests/mocks/build-content-map/autotitle-target-with-include/input/b.md +3 -0
- package/tests/mocks/build-content-map/autotitle-target-with-include/input/toc.yaml +7 -0
- package/tests/mocks/build-content-map/diamond-includes/input/.yfm +0 -0
- package/tests/mocks/build-content-map/diamond-includes/input/_includes/branch-a.md +5 -0
- package/tests/mocks/build-content-map/diamond-includes/input/_includes/branch-b.md +5 -0
- package/tests/mocks/build-content-map/diamond-includes/input/_includes/shared.md +3 -0
- package/tests/mocks/build-content-map/diamond-includes/input/index.md +7 -0
- package/tests/mocks/build-content-map/diamond-includes/input/toc.yaml +5 -0
- package/tests/mocks/build-content-map/nested-includes/input/.yfm +0 -0
- package/tests/mocks/build-content-map/nested-includes/input/_includes/level1.md +5 -0
- package/tests/mocks/build-content-map/nested-includes/input/_includes/level2.md +3 -0
- package/tests/mocks/build-content-map/nested-includes/input/index.md +5 -0
- package/tests/mocks/build-content-map/nested-includes/input/toc.yaml +5 -0
- package/tests/mocks/build-content-map/with-autotitles/input/.yfm +0 -0
- package/tests/mocks/build-content-map/with-autotitles/input/index.md +3 -0
- package/tests/mocks/build-content-map/with-autotitles/input/other.md +3 -0
- package/tests/mocks/build-content-map/with-autotitles/input/toc.yaml +7 -0
- package/tests/mocks/build-content-map/with-includes/input/.yfm +0 -0
- package/tests/mocks/build-content-map/with-includes/input/_includes/snippet.md +1 -0
- package/tests/mocks/build-content-map/with-includes/input/index.md +5 -0
- package/tests/mocks/build-content-map/with-includes/input/logo.svg +1 -0
- package/tests/mocks/build-content-map/with-includes/input/toc.yaml +5 -0
- package/tests/mocks/bundles/input/.yfm +13 -0
- package/tests/mocks/bundles/input/index.md +12 -0
- package/tests/mocks/bundles/input/page1.md +3 -0
- package/tests/mocks/bundles/input/page2.md +5 -0
- package/tests/mocks/bundles/input/toc.yaml +9 -0
- package/tests/mocks/cleanup-empty-dirs/input/.yfm +2 -0
- package/tests/mocks/cleanup-empty-dirs/input/active/page.md +5 -0
- package/tests/mocks/cleanup-empty-dirs/input/active/presets.yaml +2 -0
- package/tests/mocks/cleanup-empty-dirs/input/active/toc.yaml +4 -0
- package/tests/mocks/cleanup-empty-dirs/input/empty-section/page.md +5 -0
- package/tests/mocks/cleanup-empty-dirs/input/empty-section/presets.yaml +2 -0
- package/tests/mocks/cleanup-empty-dirs/input/empty-section/toc.yaml +5 -0
- package/tests/mocks/cleanup-empty-dirs/input/index.md +5 -0
- package/tests/mocks/cleanup-empty-dirs/input/presets.yaml +2 -0
- package/tests/mocks/cleanup-empty-dirs/input/toc.yaml +5 -0
- package/tests/mocks/crawler-manifest/config/input/.yfm +1 -0
- package/tests/mocks/crawler-manifest/config/input/index.md +3 -0
- package/tests/mocks/crawler-manifest/config/input/toc.yaml +4 -0
- package/tests/mocks/crawler-manifest/exclude/input/.yfm +9 -0
- package/tests/mocks/crawler-manifest/exclude/input/index.md +5 -0
- package/tests/mocks/crawler-manifest/exclude/input/toc.yaml +4 -0
- package/tests/mocks/crawler-manifest/no-links/input/index.md +5 -0
- package/tests/mocks/crawler-manifest/no-links/input/toc.yaml +4 -0
- package/tests/mocks/crawler-manifest/notifications-docs-viewer/input/.yfm +8 -0
- package/tests/mocks/crawler-manifest/notifications-docs-viewer/input/index.md +3 -0
- package/tests/mocks/crawler-manifest/notifications-docs-viewer/input/toc.yaml +4 -0
- package/tests/mocks/crawler-manifest/notifications-no-receivers/input/.yfm +5 -0
- package/tests/mocks/crawler-manifest/notifications-no-receivers/input/index.md +3 -0
- package/tests/mocks/crawler-manifest/notifications-no-receivers/input/toc.yaml +4 -0
- package/tests/mocks/crawler-manifest/notifications-root/input/.yfm +11 -0
- package/tests/mocks/crawler-manifest/notifications-root/input/index.md +3 -0
- package/tests/mocks/crawler-manifest/notifications-root/input/toc.yaml +4 -0
- package/tests/mocks/crawler-manifest/with-links/input/redirects.yaml +5 -0
- package/tests/mocks/crawler-manifest/with-links/input/ru/_includes/snippet.md +1 -0
- package/tests/mocks/crawler-manifest/with-links/input/ru/index.md +35 -0
- package/tests/mocks/crawler-manifest/with-links/input/ru/leading.yaml +5 -0
- package/tests/mocks/crawler-manifest/with-links/input/ru/no-links.md +3 -0
- package/tests/mocks/crawler-manifest/with-links/input/ru/references.md +5 -0
- package/tests/mocks/crawler-manifest/with-links/input/toc.yaml +12 -0
- package/tests/mocks/disable-csp/input/.yfm +8 -0
- package/tests/mocks/disable-csp/input/en/index.md +3 -0
- package/tests/mocks/disable-csp/input/en/page.md +3 -0
- package/tests/mocks/disable-csp/input/en/toc.yaml +5 -0
- package/tests/mocks/docs-viewer-interface/input/.yfm +6 -0
- package/tests/mocks/docs-viewer-interface/input/index.md +3 -0
- package/tests/mocks/docs-viewer-interface/input/toc.yaml +5 -0
- package/tests/mocks/empty-presets/input/.yfm +1 -0
- package/tests/mocks/empty-presets/input/index.md +3 -0
- package/tests/mocks/empty-presets/input/presets.yaml +3 -0
- package/tests/mocks/empty-presets/input/subfolder/presets.yaml +3 -0
- package/tests/mocks/empty-presets/input/subfolder/subpage.md +3 -0
- package/tests/mocks/empty-presets/input/subfolder/toc.yaml +4 -0
- package/tests/mocks/empty-presets/input/toc.yaml +4 -0
- package/tests/mocks/errors/extract-filtered-link/input/filtered.md +1 -0
- package/tests/mocks/errors/extract-filtered-link/input/filtered2.md +0 -0
- package/tests/mocks/errors/extract-filtered-link/input/index.md +7 -0
- package/tests/mocks/errors/extract-filtered-link/input/toc.yaml +1 -0
- package/tests/mocks/errors/invalid-frontmatter/input/index.md +9 -0
- package/tests/mocks/errors/invalid-frontmatter/input/toc.yaml +1 -0
- package/tests/mocks/errors/invalid-toc-entry-href/input/.yfm +1 -0
- package/tests/mocks/errors/invalid-toc-entry-href/input/ru/toc.yaml +3 -0
- package/tests/mocks/errors/invalid-toc-root-array/input/.yfm +1 -0
- package/tests/mocks/errors/invalid-toc-root-array/input/ru/toc.yaml +2 -0
- package/tests/mocks/errors/max-asset-size/input/_images/large-image.png +0 -0
- package/tests/mocks/errors/max-asset-size/input/index.md +5 -0
- package/tests/mocks/errors/max-asset-size/input/toc.yaml +1 -0
- package/tests/mocks/errors/object-validation/input/index.md +3 -0
- package/tests/mocks/errors/object-validation/input/toc.yaml +14 -0
- package/tests/mocks/errors/unreachable-link/input/exists.md +1 -0
- package/tests/mocks/errors/unreachable-link/input/index.md +2 -0
- package/tests/mocks/errors/unreachable-link/input/toc.yaml +1 -0
- package/tests/mocks/errors/unreachable-link-in-include/input/_includes/chapter.md +1 -0
- package/tests/mocks/errors/unreachable-link-in-include/input/index.md +5 -0
- package/tests/mocks/errors/unreachable-link-in-include/input/toc.yaml +1 -0
- package/tests/mocks/errors/unreachable-link-in-nested-include/input/_includes/chapter.md +3 -0
- package/tests/mocks/errors/unreachable-link-in-nested-include/input/_includes/details.md +1 -0
- package/tests/mocks/errors/unreachable-link-in-nested-include/input/index.md +3 -0
- package/tests/mocks/errors/unreachable-link-in-nested-include/input/toc.yaml +1 -0
- package/tests/mocks/errors/valid-link-in-include/input/_includes/content.md +1 -0
- package/tests/mocks/errors/valid-link-in-include/input/index.md +3 -0
- package/tests/mocks/errors/valid-link-in-include/input/page.md +3 -0
- package/tests/mocks/errors/valid-link-in-include/input/toc.yaml +4 -0
- package/tests/mocks/fileContent/metadata/authorAliasInMetadata.md +7 -0
- package/tests/mocks/fileContent/metadata/fullAuthorInMetadata.md +10 -0
- package/tests/mocks/fileContent/metadata/includesContent/firstIncludeFile.md +7 -0
- package/tests/mocks/fileContent/metadata/includesContent/secondIncludeFile.md +5 -0
- package/tests/mocks/fileContent/metadata/includesContent/withIncludes.md +7 -0
- package/tests/mocks/fileContent/metadata/keywordsInMetadata.md +9 -0
- package/tests/mocks/fileContent/metadata/simpleMetadata.md +6 -0
- package/tests/mocks/fileContent/metadata/substitutionsInMetadataPropertyKeys.md +7 -0
- package/tests/mocks/fileContent/metadata/substitutionsInMetadataPropertyValues.md +11 -0
- package/tests/mocks/fileContent/metadata/substitutionsWithEmptyString.md +7 -0
- package/tests/mocks/fileContent/metadata/variableInMetadata.md +7 -0
- package/tests/mocks/fileContent/metadata/withAdditionalSeparatorsInContent.md +9 -0
- package/tests/mocks/fileContent/metadata/withoutMetadata.md +2 -0
- package/tests/mocks/fileContent/metadata/withoutMetadataWithAdditionalSeparatorsInContent.md +6 -0
- package/tests/mocks/files/input/_assets/test.csv +0 -0
- package/tests/mocks/files/input/_assets/test.docx +0 -0
- package/tests/mocks/files/input/_assets/test.pdf +0 -0
- package/tests/mocks/files/input/_assets/test.pptx +0 -0
- package/tests/mocks/files/input/_assets/test.txt +0 -0
- package/tests/mocks/files/input/_assets/test.xlsx +0 -0
- package/tests/mocks/files/input/_assets/test.yaml +50 -0
- package/tests/mocks/files/input/index.md +17 -0
- package/tests/mocks/files/input/pc-index.yaml +70 -0
- package/tests/mocks/files/input/toc.yaml +6 -0
- package/tests/mocks/generate-map/test1/input/.yfm +0 -0
- package/tests/mocks/generate-map/test1/input/ru/_includes/file.md +0 -0
- package/tests/mocks/generate-map/test1/input/ru/_includes/plugins.md +0 -0
- package/tests/mocks/generate-map/test1/input/ru/folder1/a1.md +1 -0
- package/tests/mocks/generate-map/test1/input/ru/folder1/folder2/a1.md +1 -0
- package/tests/mocks/generate-map/test1/input/ru/folder1/folder2/toc.yaml +5 -0
- package/tests/mocks/generate-map/test1/input/ru/folder1/toc.yaml +7 -0
- package/tests/mocks/generate-map/test1/input/ru/index.md +0 -0
- package/tests/mocks/generate-map/test1/input/ru/plugins/import.md +0 -0
- package/tests/mocks/generate-map/test1/input/ru/plugins/index.md +0 -0
- package/tests/mocks/generate-map/test1/input/ru/project/config.md +0 -0
- package/tests/mocks/generate-map/test1/input/ru/project/index.md +0 -0
- package/tests/mocks/generate-map/test1/input/ru/settings.md +0 -0
- package/tests/mocks/generate-map/test1/input/ru/toc.yaml +22 -0
- package/tests/mocks/generate-map/test2/input/en/_includes/file.md +0 -0
- package/tests/mocks/generate-map/test2/input/en/_includes/plugins.md +0 -0
- package/tests/mocks/generate-map/test2/input/en/index.md +0 -0
- package/tests/mocks/generate-map/test2/input/en/plugins/import.md +0 -0
- package/tests/mocks/generate-map/test2/input/en/plugins/index.md +0 -0
- package/tests/mocks/generate-map/test2/input/en/project/config.md +0 -0
- package/tests/mocks/generate-map/test2/input/en/project/index.md +0 -0
- package/tests/mocks/generate-map/test2/input/en/settings.md +0 -0
- package/tests/mocks/generate-map/test2/input/en/toc.yaml +18 -0
- package/tests/mocks/generate-map/test2/input/ru/_includes/file.md +0 -0
- package/tests/mocks/generate-map/test2/input/ru/_includes/plugins.md +0 -0
- package/tests/mocks/generate-map/test2/input/ru/index.md +0 -0
- package/tests/mocks/generate-map/test2/input/ru/plugins/import.md +0 -0
- package/tests/mocks/generate-map/test2/input/ru/plugins/index.md +0 -0
- package/tests/mocks/generate-map/test2/input/ru/project/config.md +0 -0
- package/tests/mocks/generate-map/test2/input/ru/project/index.md +0 -0
- package/tests/mocks/generate-map/test2/input/ru/settings.md +0 -0
- package/tests/mocks/generate-map/test2/input/ru/toc.yaml +18 -0
- package/tests/mocks/generate-map/test3/input/.yfm +0 -0
- package/tests/mocks/generate-map/test3/input/ru/_includes/file.md +0 -0
- package/tests/mocks/generate-map/test3/input/ru/_includes/plugins.md +0 -0
- package/tests/mocks/generate-map/test3/input/ru/folder1/a1.md +1 -0
- package/tests/mocks/generate-map/test3/input/ru/folder1/folder2/a1.md +1 -0
- package/tests/mocks/generate-map/test3/input/ru/folder1/folder2/toc.yaml +5 -0
- package/tests/mocks/generate-map/test3/input/ru/folder1/toc.yaml +7 -0
- package/tests/mocks/generate-map/test3/input/ru/index.md +0 -0
- package/tests/mocks/generate-map/test3/input/ru/plugins/import.md +0 -0
- package/tests/mocks/generate-map/test3/input/ru/plugins/index.md +0 -0
- package/tests/mocks/generate-map/test3/input/ru/project/config.md +0 -0
- package/tests/mocks/generate-map/test3/input/ru/project/index.md +0 -0
- package/tests/mocks/generate-map/test3/input/ru/settings.md +0 -0
- package/tests/mocks/generate-map/test3/input/ru/toc.yaml +22 -0
- package/tests/mocks/include-skip/test1/input/includes/missing.md +1 -0
- package/tests/mocks/include-skip/test1/input/index.md +3 -0
- package/tests/mocks/include-skip/test1/input/toc.yaml +3 -0
- package/tests/mocks/include-skip/test2/input/includes/missing.md +1 -0
- package/tests/mocks/include-skip/test2/input/includes/valid.md +4 -0
- package/tests/mocks/include-skip/test2/input/index.md +4 -0
- package/tests/mocks/include-skip/test2/input/toc.yaml +4 -0
- package/tests/mocks/include-toc/test1/input/a1.md +1 -0
- package/tests/mocks/include-toc/test1/input/folder1/a1.md +1 -0
- package/tests/mocks/include-toc/test1/input/folder1/folder2/a1.md +1 -0
- package/tests/mocks/include-toc/test1/input/folder1/folder2/toc.yaml +5 -0
- package/tests/mocks/include-toc/test1/input/folder1/toc.yaml +7 -0
- package/tests/mocks/include-toc/test1/input/toc.yaml +9 -0
- package/tests/mocks/include-toc/test10/input/test/index.md +4 -0
- package/tests/mocks/include-toc/test10/input/test/sub/index.md +1 -0
- package/tests/mocks/include-toc/test10/input/test/sub/sub/sub-3.md +1 -0
- package/tests/mocks/include-toc/test10/input/test/sub/sub-1.md +5 -0
- package/tests/mocks/include-toc/test10/input/test/sub/sub-2.md +1 -0
- package/tests/mocks/include-toc/test10/input/test/test.md +1 -0
- package/tests/mocks/include-toc/test10/input/toc.yaml +9 -0
- package/tests/mocks/include-toc/test2/input/.yfm +1 -0
- package/tests/mocks/include-toc/test2/input/file1.md +1 -0
- package/tests/mocks/include-toc/test2/input/fileX.md +1 -0
- package/tests/mocks/include-toc/test2/input/folder/fileA.md +11 -0
- package/tests/mocks/include-toc/test2/input/folder/fileB.md +9 -0
- package/tests/mocks/include-toc/test2/input/folder/folder/fileC.md +1 -0
- package/tests/mocks/include-toc/test2/input/folder/folder/toc.yaml +3 -0
- package/tests/mocks/include-toc/test2/input/folder/toc.yaml +6 -0
- package/tests/mocks/include-toc/test2/input/presets.yaml +2 -0
- package/tests/mocks/include-toc/test2/input/toc.yaml +6 -0
- package/tests/mocks/include-toc/test3/input/product1/core/_includes/inc.md +1 -0
- package/tests/mocks/include-toc/test3/input/product1/core/article1.md +3 -0
- package/tests/mocks/include-toc/test3/input/product1/core/toc_m.yaml +2 -0
- package/tests/mocks/include-toc/test3/input/product1/product/toc_p.yaml +3 -0
- package/tests/mocks/include-toc/test3/input/product1/toc.yaml +3 -0
- package/tests/mocks/include-toc/test3/input/product2/core/_includes/inc.md +1 -0
- package/tests/mocks/include-toc/test3/input/product2/core/article1.md +3 -0
- package/tests/mocks/include-toc/test3/input/product2/core/toc_m.yaml +2 -0
- package/tests/mocks/include-toc/test3/input/product2/overlay1/product/article1.md +3 -0
- package/tests/mocks/include-toc/test3/input/product2/overlay1/product/toc_p.yaml +3 -0
- package/tests/mocks/include-toc/test3/input/product2/overlay1/toc.yaml +2 -0
- package/tests/mocks/include-toc/test3/input/product2/overlay2/product/article1.md +3 -0
- package/tests/mocks/include-toc/test3/input/product2/overlay2/product/toc_p.yaml +3 -0
- package/tests/mocks/include-toc/test3/input/product2/overlay2/toc.yaml +2 -0
- package/tests/mocks/include-toc/test3/input/product2/overlay3/product/toc_p.yaml +3 -0
- package/tests/mocks/include-toc/test3/input/product2/overlay3/toc.yaml +2 -0
- package/tests/mocks/include-toc/test3/input/product2/p2.md +4 -0
- package/tests/mocks/include-toc/test3/input/product2/toc.yaml +10 -0
- package/tests/mocks/include-toc/test4/input/a1.md +1 -0
- package/tests/mocks/include-toc/test4/input/index.yaml +20 -0
- package/tests/mocks/include-toc/test4/input/toc.yaml +9 -0
- package/tests/mocks/include-toc/test5/input/core/concepts/toc_i.yaml +2 -0
- package/tests/mocks/include-toc/test5/input/core/concepts/toc_p.yaml +3 -0
- package/tests/mocks/include-toc/test5/input/core/toc_i.yaml +6 -0
- package/tests/mocks/include-toc/test5/input/core/toc_m.yaml +3 -0
- package/tests/mocks/include-toc/test5/input/core/toc_p.yaml +5 -0
- package/tests/mocks/include-toc/test5/input/overlay/toc_p.yaml +3 -0
- package/tests/mocks/include-toc/test5/input/toc.yaml +4 -0
- package/tests/mocks/include-toc/test6/input/test/index.md +4 -0
- package/tests/mocks/include-toc/test6/input/test/sub/sub/sub-3.md +1 -0
- package/tests/mocks/include-toc/test6/input/test/sub/sub-1.md +5 -0
- package/tests/mocks/include-toc/test6/input/test/sub/sub-2.md +1 -0
- package/tests/mocks/include-toc/test6/input/test/test.md +1 -0
- package/tests/mocks/include-toc/test6/input/toc.yaml +8 -0
- package/tests/mocks/include-toc/test7/input/.yfm +1 -0
- package/tests/mocks/include-toc/test7/input/ru/presets.yaml +2 -0
- package/tests/mocks/include-toc/test7/input/ru/sub/folder/index.yaml +4 -0
- package/tests/mocks/include-toc/test7/input/ru/sub/folder/toc.yaml +3 -0
- package/tests/mocks/include-toc/test7/input/ru/toc.yaml +3 -0
- package/tests/mocks/include-toc/test8/input/test/index.md +4 -0
- package/tests/mocks/include-toc/test8/input/test/sub/index.md +1 -0
- package/tests/mocks/include-toc/test8/input/test/sub/sub/sub-3.md +1 -0
- package/tests/mocks/include-toc/test8/input/test/sub/sub-1.md +5 -0
- package/tests/mocks/include-toc/test8/input/test/sub/sub-2.md +1 -0
- package/tests/mocks/include-toc/test8/input/test/test.md +1 -0
- package/tests/mocks/include-toc/test8/input/toc.yaml +9 -0
- package/tests/mocks/include-toc/test9/input/test/index.md +4 -0
- package/tests/mocks/include-toc/test9/input/test/sub/index.md +1 -0
- package/tests/mocks/include-toc/test9/input/test/sub/sub/sub-3.md +1 -0
- package/tests/mocks/include-toc/test9/input/test/sub/sub-1.md +5 -0
- package/tests/mocks/include-toc/test9/input/test/sub/sub-2.md +1 -0
- package/tests/mocks/include-toc/test9/input/test/test.md +1 -0
- package/tests/mocks/include-toc/test9/input/toc.yaml +8 -0
- package/tests/mocks/include-with-meta/input/included.md +16 -0
- package/tests/mocks/include-with-meta/input/index.md +15 -0
- package/tests/mocks/include-with-meta/input/toc.yaml +6 -0
- package/tests/mocks/includes/input/.yfm +1 -0
- package/tests/mocks/includes/input/_assets/4.png +0 -0
- package/tests/mocks/includes/input/includes/commented-include.md +5 -0
- package/tests/mocks/includes/input/includes/deep-include.md +13 -0
- package/tests/mocks/includes/input/includes/fragments.md +23 -0
- package/tests/mocks/includes/input/includes/nested-include.md +5 -0
- package/tests/mocks/includes/input/includes/no-title-include.md +19 -0
- package/tests/mocks/includes/input/includes/root-include.md +11 -0
- package/tests/mocks/includes/input/includes/user.md +5 -0
- package/tests/mocks/includes/input/index.md +69 -0
- package/tests/mocks/includes/input/level1/includes/level1-include.md +11 -0
- package/tests/mocks/includes/input/level1/level2/includes/level2-include.md +11 -0
- package/tests/mocks/includes/input/level1/level2/page2.md +29 -0
- package/tests/mocks/includes/input/level1/page1.md +29 -0
- package/tests/mocks/includes/input/presets.yaml +3 -0
- package/tests/mocks/includes/input/toc-include.md +13 -0
- package/tests/mocks/includes/input/toc.yaml +13 -0
- package/tests/mocks/includes-conditions/input/includes/first.md +5 -0
- package/tests/mocks/includes-conditions/input/includes/second.md +5 -0
- package/tests/mocks/includes-conditions/input/includes/third.md +1 -0
- package/tests/mocks/includes-conditions/input/index.md +7 -0
- package/tests/mocks/includes-conditions/input/presets.yaml +2 -0
- package/tests/mocks/includes-conditions/input/toc.yaml +3 -0
- package/tests/mocks/includes-missing/input/index.md +7 -0
- package/tests/mocks/includes-missing/input/toc.yaml +3 -0
- package/tests/mocks/llms/input/.yfm +1 -0
- package/tests/mocks/llms/input/_includes/requirements.md +4 -0
- package/tests/mocks/llms/input/api.md +9 -0
- package/tests/mocks/llms/input/beta.md +4 -0
- package/tests/mocks/llms/input/index.md +8 -0
- package/tests/mocks/llms/input/presets.yaml +2 -0
- package/tests/mocks/llms/input/start.md +9 -0
- package/tests/mocks/llms/input/toc.yaml +11 -0
- package/tests/mocks/load-custom-resources/md2html-with-resources/input/.yfm +5 -0
- package/tests/mocks/load-custom-resources/md2html-with-resources/input/_assets/script/test1.js +0 -0
- package/tests/mocks/load-custom-resources/md2html-with-resources/input/_assets/style/test.css +13 -0
- package/tests/mocks/load-custom-resources/md2html-with-resources/input/index.yaml +9 -0
- package/tests/mocks/load-custom-resources/md2html-with-resources/input/page.md +14 -0
- package/tests/mocks/load-custom-resources/md2html-with-resources/input/project/config.md +1 -0
- package/tests/mocks/load-custom-resources/md2html-with-resources/input/toc.yaml +7 -0
- package/tests/mocks/load-custom-resources/md2md-with-resources/input/.yfm +5 -0
- package/tests/mocks/load-custom-resources/md2md-with-resources/input/_assets/script/test1.js +0 -0
- package/tests/mocks/load-custom-resources/md2md-with-resources/input/_assets/style/test.css +13 -0
- package/tests/mocks/load-custom-resources/md2md-with-resources/input/index.yaml +9 -0
- package/tests/mocks/load-custom-resources/md2md-with-resources/input/page.md +14 -0
- package/tests/mocks/load-custom-resources/md2md-with-resources/input/project/config.md +1 -0
- package/tests/mocks/load-custom-resources/md2md-with-resources/input/toc.yaml +7 -0
- package/tests/mocks/load-custom-resources/single-page-with-resources/input/.yfm +5 -0
- package/tests/mocks/load-custom-resources/single-page-with-resources/input/_assets/script/test1.js +0 -0
- package/tests/mocks/load-custom-resources/single-page-with-resources/input/_assets/style/test.css +13 -0
- package/tests/mocks/load-custom-resources/single-page-with-resources/input/index.yaml +9 -0
- package/tests/mocks/load-custom-resources/single-page-with-resources/input/page.md +14 -0
- package/tests/mocks/load-custom-resources/single-page-with-resources/input/project/config.md +1 -0
- package/tests/mocks/load-custom-resources/single-page-with-resources/input/toc.yaml +7 -0
- package/tests/mocks/markdown-options/example-1/input/.yfm +5 -0
- package/tests/mocks/markdown-options/example-1/input/breaks.md +5 -0
- package/tests/mocks/markdown-options/example-1/input/linkify-tlds.md +7 -0
- package/tests/mocks/markdown-options/example-1/input/linkify.md +3 -0
- package/tests/mocks/markdown-options/example-1/input/toc.yaml +7 -0
- package/tests/mocks/markdown-options/example-2/input/.yfm +3 -0
- package/tests/mocks/markdown-options/example-2/input/breaks.md +5 -0
- package/tests/mocks/markdown-options/example-2/input/linkify-tlds.md +7 -0
- package/tests/mocks/markdown-options/example-2/input/linkify.md +3 -0
- package/tests/mocks/markdown-options/example-2/input/toc.yaml +7 -0
- package/tests/mocks/merge-includes/basic/input/_includes/simple.md +3 -0
- package/tests/mocks/merge-includes/basic/input/index.md +3 -0
- package/tests/mocks/merge-includes/basic/input/main.md +7 -0
- package/tests/mocks/merge-includes/basic/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/hash-fallback/input/_includes/sections.md +19 -0
- package/tests/mocks/merge-includes/hash-fallback/input/index.md +1 -0
- package/tests/mocks/merge-includes/hash-fallback/input/main.md +5 -0
- package/tests/mocks/merge-includes/hash-fallback/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/hash-section-html/input/_includes/mixed.md +11 -0
- package/tests/mocks/merge-includes/hash-section-html/input/index.md +3 -0
- package/tests/mocks/merge-includes/hash-section-html/input/main.md +13 -0
- package/tests/mocks/merge-includes/hash-section-html/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/html-comment-blanks/input/_includes/examples.md +27 -0
- package/tests/mocks/merge-includes/html-comment-blanks/input/index.md +3 -0
- package/tests/mocks/merge-includes/html-comment-blanks/input/main.md +15 -0
- package/tests/mocks/merge-includes/html-comment-blanks/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/html-in-list/input/_includes/styles.md +7 -0
- package/tests/mocks/merge-includes/html-in-list/input/index.md +3 -0
- package/tests/mocks/merge-includes/html-in-list/input/main.md +11 -0
- package/tests/mocks/merge-includes/html-in-list/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/include-after-fence/input/_includes/chat-button.md +1 -0
- package/tests/mocks/merge-includes/include-after-fence/input/_includes/footer.md +1 -0
- package/tests/mocks/merge-includes/include-after-fence/input/index.md +3 -0
- package/tests/mocks/merge-includes/include-after-fence/input/main.md +14 -0
- package/tests/mocks/merge-includes/include-after-fence/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/include-in-code-block/input/_includes/glossary.md +1 -0
- package/tests/mocks/merge-includes/include-in-code-block/input/index.md +3 -0
- package/tests/mocks/merge-includes/include-in-code-block/input/main.md +19 -0
- package/tests/mocks/merge-includes/include-in-code-block/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/indent-paragraph-in-include/input/_includes/requirements.md +9 -0
- package/tests/mocks/merge-includes/indent-paragraph-in-include/input/index.md +3 -0
- package/tests/mocks/merge-includes/indent-paragraph-in-include/input/main.md +12 -0
- package/tests/mocks/merge-includes/indent-paragraph-in-include/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/inline-context/input/_includes/snippet.md +12 -0
- package/tests/mocks/merge-includes/inline-context/input/index.md +3 -0
- package/tests/mocks/merge-includes/inline-context/input/main.md +11 -0
- package/tests/mocks/merge-includes/inline-context/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/nested/input/_includes/inner.md +3 -0
- package/tests/mocks/merge-includes/nested/input/_includes/outer.md +7 -0
- package/tests/mocks/merge-includes/nested/input/index.md +3 -0
- package/tests/mocks/merge-includes/nested/input/main.md +7 -0
- package/tests/mocks/merge-includes/nested/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/relative-paths/input/_includes/sub/with-links.md +7 -0
- package/tests/mocks/merge-includes/relative-paths/input/index.md +3 -0
- package/tests/mocks/merge-includes/relative-paths/input/main.md +3 -0
- package/tests/mocks/merge-includes/relative-paths/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/term-extract/input/_includes/chapter.md +7 -0
- package/tests/mocks/merge-includes/term-extract/input/index.md +3 -0
- package/tests/mocks/merge-includes/term-extract/input/main.md +7 -0
- package/tests/mocks/merge-includes/term-extract/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/term-inline/input/_includes/defs.md +20 -0
- package/tests/mocks/merge-includes/term-inline/input/index.md +3 -0
- package/tests/mocks/merge-includes/term-inline/input/main.md +19 -0
- package/tests/mocks/merge-includes/term-inline/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/yfm-table/input/_includes/cell-content.md +1 -0
- package/tests/mocks/merge-includes/yfm-table/input/index.md +3 -0
- package/tests/mocks/merge-includes/yfm-table/input/main.md +12 -0
- package/tests/mocks/merge-includes/yfm-table/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/yfm-table-html-block/input/_includes/button.md +8 -0
- package/tests/mocks/merge-includes/yfm-table-html-block/input/index.md +3 -0
- package/tests/mocks/merge-includes/yfm-table-html-block/input/main.md +12 -0
- package/tests/mocks/merge-includes/yfm-table-html-block/input/toc.yaml +5 -0
- package/tests/mocks/merge-includes/yfm-table-pipe-in-content/input/_includes/example.md +1 -0
- package/tests/mocks/merge-includes/yfm-table-pipe-in-content/input/index.md +3 -0
- package/tests/mocks/merge-includes/yfm-table-pipe-in-content/input/main.md +22 -0
- package/tests/mocks/merge-includes/yfm-table-pipe-in-content/input/toc.yaml +5 -0
- package/tests/mocks/metadata/include-with-csp-meta/input/.yfm +8 -0
- package/tests/mocks/metadata/include-with-csp-meta/input/_includes/support.md +1 -0
- package/tests/mocks/metadata/include-with-csp-meta/input/page.md +7 -0
- package/tests/mocks/metadata/include-with-csp-meta/input/toc.yaml +4 -0
- package/tests/mocks/metadata/md2html-with-metadata/input/.yfm +1 -0
- package/tests/mocks/metadata/md2html-with-metadata/input/index.yaml +9 -0
- package/tests/mocks/metadata/md2html-with-metadata/input/page.md +16 -0
- package/tests/mocks/metadata/md2html-with-metadata/input/presets.yaml +6 -0
- package/tests/mocks/metadata/md2html-with-metadata/input/project/config.md +7 -0
- package/tests/mocks/metadata/md2html-with-metadata/input/toc.yaml +7 -0
- package/tests/mocks/metadata/md2md-with-metadata/input/index.yaml +9 -0
- package/tests/mocks/metadata/md2md-with-metadata/input/page.md +14 -0
- package/tests/mocks/metadata/md2md-with-metadata/input/presets.yaml +6 -0
- package/tests/mocks/metadata/md2md-with-metadata/input/project/config.md +7 -0
- package/tests/mocks/metadata/md2md-with-metadata/input/toc.yaml +7 -0
- package/tests/mocks/nested-docs/input/.yfm +1 -0
- package/tests/mocks/nested-docs/input/.yfm-subdoc +5 -0
- package/tests/mocks/nested-docs/input/index.md +5 -0
- package/tests/mocks/nested-docs/input/presets.yaml +3 -0
- package/tests/mocks/nested-docs/input/subdoc/.yfm +0 -0
- package/tests/mocks/nested-docs/input/subdoc/index.md +5 -0
- package/tests/mocks/nested-docs/input/subdoc/presets.yaml +3 -0
- package/tests/mocks/nested-docs/input/subdoc/toc.yaml +4 -0
- package/tests/mocks/nested-docs/input/toc.yaml +6 -0
- package/tests/mocks/nested-include-links/input/includes/middle.md +4 -0
- package/tests/mocks/nested-include-links/input/other/page.md +4 -0
- package/tests/mocks/nested-include-links/input/sub/deep/entry.md +8 -0
- package/tests/mocks/nested-include-links/input/target.md +4 -0
- package/tests/mocks/nested-include-links/input/toc.yaml +6 -0
- package/tests/mocks/neuro-expert/input/.yfm +14 -0
- package/tests/mocks/neuro-expert/input/en/folder/index.md +1 -0
- package/tests/mocks/neuro-expert/input/en/index-test-html/index.md +4 -0
- package/tests/mocks/neuro-expert/input/en/index.md +11 -0
- package/tests/mocks/neuro-expert/input/en/page1.md +8 -0
- package/tests/mocks/neuro-expert/input/en/page2.md +6 -0
- package/tests/mocks/neuro-expert/input/en/toc.yaml +13 -0
- package/tests/mocks/neuro-expert/input/ru/folder/index.md +1 -0
- package/tests/mocks/neuro-expert/input/ru/index-test-html/index.md +4 -0
- package/tests/mocks/neuro-expert/input/ru/index.md +5 -0
- package/tests/mocks/neuro-expert/input/ru/page1.md +3 -0
- package/tests/mocks/neuro-expert/input/ru/page2.md +11 -0
- package/tests/mocks/neuro-expert/input/ru/toc.yaml +12 -0
- package/tests/mocks/openapi-companion/input/petstore.yaml +29 -0
- package/tests/mocks/openapi-companion/input/toc.yaml +9 -0
- package/tests/mocks/openapi-companion-disabled/input/.yfm +2 -0
- package/tests/mocks/openapi-companion-disabled/input/petstore.yaml +29 -0
- package/tests/mocks/openapi-companion-disabled/input/toc.yaml +9 -0
- package/tests/mocks/openapi-companion-link/input/petstore.yaml +29 -0
- package/tests/mocks/openapi-companion-link/input/toc.yaml +12 -0
- package/tests/mocks/openapi-include-size-exceeds/input/openapi-spec.yaml +190 -0
- package/tests/mocks/openapi-include-size-exceeds/input/toc.yaml +9 -0
- package/tests/mocks/openapi-include-size-within/input/openapi-spec.yaml +16 -0
- package/tests/mocks/openapi-include-size-within/input/toc.yaml +9 -0
- package/tests/mocks/pdf-page/custom-pdf-icon/input/.yfm +6 -0
- package/tests/mocks/pdf-page/custom-pdf-icon/input/_assets/custom-pdf-icon.svg +1 -0
- package/tests/mocks/pdf-page/custom-pdf-icon/input/index.md +1 -0
- package/tests/mocks/pdf-page/custom-pdf-icon/input/pdf/output.pdf +0 -0
- package/tests/mocks/pdf-page/custom-pdf-icon/input/toc.yaml +2 -0
- package/tests/mocks/pdf-page/flag-enabled/input/__includes/include1.md +3 -0
- package/tests/mocks/pdf-page/flag-enabled/input/index.md +7 -0
- package/tests/mocks/pdf-page/flag-enabled/input/page1.md +6 -0
- package/tests/mocks/pdf-page/flag-enabled/input/page2.md +7 -0
- package/tests/mocks/pdf-page/flag-enabled/input/page3.md +1 -0
- package/tests/mocks/pdf-page/flag-enabled/input/syntax/test.md +1 -0
- package/tests/mocks/pdf-page/flag-enabled/input/toc.yaml +17 -0
- package/tests/mocks/pdf-page/multiple-tocs/input/.yfm +2 -0
- package/tests/mocks/pdf-page/multiple-tocs/input/section1/index.md +5 -0
- package/tests/mocks/pdf-page/multiple-tocs/input/section1/page1.md +3 -0
- package/tests/mocks/pdf-page/multiple-tocs/input/section1/toc.yaml +6 -0
- package/tests/mocks/pdf-page/multiple-tocs/input/section2/index.md +5 -0
- package/tests/mocks/pdf-page/multiple-tocs/input/section2/page1.md +3 -0
- package/tests/mocks/pdf-page/multiple-tocs/input/section2/toc.yaml +6 -0
- package/tests/mocks/pdf-page/pc-page/input/__images/mountain.jpg +0 -0
- package/tests/mocks/pdf-page/pc-page/input/__includes/include1.md +1 -0
- package/tests/mocks/pdf-page/pc-page/input/index.md +1 -0
- package/tests/mocks/pdf-page/pc-page/input/index.yaml +87 -0
- package/tests/mocks/pdf-page/pc-page/input/index2.yaml +135 -0
- package/tests/mocks/pdf-page/pc-page/input/page1.md +3 -0
- package/tests/mocks/pdf-page/pc-page/input/page2.md +3 -0
- package/tests/mocks/pdf-page/pc-page/input/pdf-titles/pdf-title-page1.md +13 -0
- package/tests/mocks/pdf-page/pc-page/input/pdf-titles/pdf-title-page2.md +5 -0
- package/tests/mocks/pdf-page/pc-page/input/presets.yaml +2 -0
- package/tests/mocks/pdf-page/pc-page/input/toc.yaml +13 -0
- package/tests/mocks/pdf-page/pc-page/input/with-pc-page.md +363 -0
- package/tests/mocks/pdf-page/title-pages/input/.yfm +6 -0
- package/tests/mocks/pdf-page/title-pages/input/__assets/start-page.css +16 -0
- package/tests/mocks/pdf-page/title-pages/input/__images/mountain.jpg +0 -0
- package/tests/mocks/pdf-page/title-pages/input/__includes/include1.md +1 -0
- package/tests/mocks/pdf-page/title-pages/input/index.md +1 -0
- package/tests/mocks/pdf-page/title-pages/input/page1.md +3 -0
- package/tests/mocks/pdf-page/title-pages/input/page2.md +3 -0
- package/tests/mocks/pdf-page/title-pages/input/pdf-endings/pdf-ending-page1.md +13 -0
- package/tests/mocks/pdf-page/title-pages/input/pdf-endings/pdf-ending-page2.md +3 -0
- package/tests/mocks/pdf-page/title-pages/input/pdf-titles/pdf-title-page1.md +13 -0
- package/tests/mocks/pdf-page/title-pages/input/pdf-titles/pdf-title-page2.md +3 -0
- package/tests/mocks/pdf-page/title-pages/input/presets.yaml +2 -0
- package/tests/mocks/pdf-page/title-pages/input/toc.yaml +15 -0
- package/tests/mocks/pdf-page/yfm-config/input/.yfm +5 -0
- package/tests/mocks/pdf-page/yfm-config/input/index.md +6 -0
- package/tests/mocks/pdf-page/yfm-config/input/page1.md +3 -0
- package/tests/mocks/pdf-page/yfm-config/input/page2.md +7 -0
- package/tests/mocks/pdf-page/yfm-config/input/page3.md +1 -0
- package/tests/mocks/pdf-page/yfm-config/input/toc.yaml +15 -0
- package/tests/mocks/plugin-corner-cases/images-in-deflists/input/image.jpeg +0 -0
- package/tests/mocks/plugin-corner-cases/images-in-deflists/input/index.md +5 -0
- package/tests/mocks/plugin-corner-cases/images-in-deflists/input/toc.yaml +4 -0
- package/tests/mocks/preprocess/input/.yfm +1 -0
- package/tests/mocks/preprocess/input/1.md +29 -0
- package/tests/mocks/preprocess/input/_assets/1.png +0 -0
- package/tests/mocks/preprocess/input/_assets/1.svg +15 -0
- package/tests/mocks/preprocess/input/_assets/2.svg +19 -0
- package/tests/mocks/preprocess/input/autotitle.md +39 -0
- package/tests/mocks/preprocess/input/commented-include.md +3 -0
- package/tests/mocks/preprocess/input/images.md +163 -0
- package/tests/mocks/preprocess/input/included-item.md +12 -0
- package/tests/mocks/preprocess/input/includes/deep.md +1 -0
- package/tests/mocks/preprocess/input/includes/deepWithIndent.md +6 -0
- package/tests/mocks/preprocess/input/includes/level1.md +9 -0
- package/tests/mocks/preprocess/input/includes/level11.md +1 -0
- package/tests/mocks/preprocess/input/includes/presets.yaml +2 -0
- package/tests/mocks/preprocess/input/includes/sub/level2.md +7 -0
- package/tests/mocks/preprocess/input/includes/sub/user.md +1 -0
- package/tests/mocks/preprocess/input/includes/sub/userWithIndent.md +5 -0
- package/tests/mocks/preprocess/input/includes/test.md +1 -0
- package/tests/mocks/preprocess/input/includes/user.md +1 -0
- package/tests/mocks/preprocess/input/includes.md +18 -0
- package/tests/mocks/preprocess/input/latex.md +3 -0
- package/tests/mocks/preprocess/input/level0.md +7 -0
- package/tests/mocks/preprocess/input/level1/level1.md +7 -0
- package/tests/mocks/preprocess/input/level1/level2/level2.md +6 -0
- package/tests/mocks/preprocess/input/level1/toc.yaml +5 -0
- package/tests/mocks/preprocess/input/mermaid.md +13 -0
- package/tests/mocks/preprocess/input/presets.yaml +8 -0
- package/tests/mocks/preprocess/input/sub/folder/item-1.md +7 -0
- package/tests/mocks/preprocess/input/sub/toc.yaml +5 -0
- package/tests/mocks/preprocess/input/toc-i.yaml +3 -0
- package/tests/mocks/preprocess/input/toc.yaml +24 -0
- package/tests/mocks/redirects-validation/extensions-deprecation/input/blah.md +0 -0
- package/tests/mocks/redirects-validation/extensions-deprecation/input/redirects.yaml +5 -0
- package/tests/mocks/redirects-validation/extensions-deprecation/input/toc.yaml +4 -0
- package/tests/mocks/redirects-validation/invalid-regex/input/blah.md +0 -0
- package/tests/mocks/redirects-validation/invalid-regex/input/redirects.yaml +3 -0
- package/tests/mocks/redirects-validation/invalid-regex/input/toc.yaml +4 -0
- package/tests/mocks/redirects-validation/malformed-redirect/input/blah.md +0 -0
- package/tests/mocks/redirects-validation/malformed-redirect/input/redirects.yaml +6 -0
- package/tests/mocks/redirects-validation/malformed-redirect/input/toc.yaml +4 -0
- package/tests/mocks/redirects-validation/same-path/input/blah.md +0 -0
- package/tests/mocks/redirects-validation/same-path/input/redirects.yaml +3 -0
- package/tests/mocks/redirects-validation/same-path/input/toc.yaml +4 -0
- package/tests/mocks/redirects-validation/unparseable/input/blah.md +0 -0
- package/tests/mocks/redirects-validation/unparseable/input/redirects.yaml +11 -0
- package/tests/mocks/redirects-validation/unparseable/input/toc.yaml +4 -0
- package/tests/mocks/regression/input/.yfm +2 -0
- package/tests/mocks/regression/input/1.md +29 -0
- package/tests/mocks/regression/input/_assets/1.png +0 -0
- package/tests/mocks/regression/input/_assets/2.png +0 -0
- package/tests/mocks/regression/input/_assets/3.png +0 -0
- package/tests/mocks/regression/input/_assets/4.png +0 -0
- package/tests/mocks/regression/input/_assets/5_1.png +0 -0
- package/tests/mocks/regression/input/_assets/empty.pdf +0 -0
- package/tests/mocks/regression/input/autotitle.md +58 -0
- package/tests/mocks/regression/input/commented-include.md +3 -0
- package/tests/mocks/regression/input/entry-as-include.md +3 -0
- package/tests/mocks/regression/input/generic/1.md +3 -0
- package/tests/mocks/regression/input/generic/2.md +3 -0
- package/tests/mocks/regression/input/generic/3.md +1 -0
- package/tests/mocks/regression/input/generic/Sub notes/1.md +3 -0
- package/tests/mocks/regression/input/generic/Sub notes/2.md +3 -0
- package/tests/mocks/regression/input/images.md +13 -0
- package/tests/mocks/regression/input/included-item.md +13 -0
- package/tests/mocks/regression/input/includer-of-entry.md +5 -0
- package/tests/mocks/regression/input/includes/deep.md +3 -0
- package/tests/mocks/regression/input/includes/fragments.md +41 -0
- package/tests/mocks/regression/input/includes/presets.yaml +3 -0
- package/tests/mocks/regression/input/includes/styles.md +8 -0
- package/tests/mocks/regression/input/includes/test.md +1 -0
- package/tests/mocks/regression/input/includes/tools.md +1 -0
- package/tests/mocks/regression/input/includes/user.md +1 -0
- package/tests/mocks/regression/input/includes.md +33 -0
- package/tests/mocks/regression/input/index.yaml +9 -0
- package/tests/mocks/regression/input/latex.md +3 -0
- package/tests/mocks/regression/input/merge/merge.md +5 -0
- package/tests/mocks/regression/input/merge/presets.yaml +3 -0
- package/tests/mocks/regression/input/merge/toc.yaml +6 -0
- package/tests/mocks/regression/input/merge-source/merged.md +3 -0
- package/tests/mocks/regression/input/merge-source/toc-m.yaml +4 -0
- package/tests/mocks/regression/input/mermaid.md +13 -0
- package/tests/mocks/regression/input/openapi-spec.yaml +111 -0
- package/tests/mocks/regression/input/presets.yaml +12 -0
- package/tests/mocks/regression/input/redirects.yaml +6 -0
- package/tests/mocks/regression/input/sub/folder/item-1.md +5 -0
- package/tests/mocks/regression/input/sub/toc.yaml +5 -0
- package/tests/mocks/regression/input/toc-i.yaml +3 -0
- package/tests/mocks/regression/input/toc.yaml +43 -0
- package/tests/mocks/restricted-access/test1/input/index.md +0 -0
- package/tests/mocks/restricted-access/test1/input/plugins/index.md +0 -0
- package/tests/mocks/restricted-access/test1/input/plugins/index2.md +0 -0
- package/tests/mocks/restricted-access/test1/input/plugins/index3.md +0 -0
- package/tests/mocks/restricted-access/test1/input/plugins/index4.md +4 -0
- package/tests/mocks/restricted-access/test1/input/toc.yaml +28 -0
- package/tests/mocks/restricted-access/test2/input/index.md +0 -0
- package/tests/mocks/restricted-access/test2/input/plugins/index.md +0 -0
- package/tests/mocks/restricted-access/test2/input/project/index.md +0 -0
- package/tests/mocks/restricted-access/test2/input/toc.yaml +21 -0
- package/tests/mocks/restricted-access/test3/input/a1.md +1 -0
- package/tests/mocks/restricted-access/test3/input/folder1/a1.md +1 -0
- package/tests/mocks/restricted-access/test3/input/folder1/folder2/a1.md +1 -0
- package/tests/mocks/restricted-access/test3/input/folder1/folder2/toc.yaml +8 -0
- package/tests/mocks/restricted-access/test3/input/folder1/toc.yaml +10 -0
- package/tests/mocks/restricted-access/test3/input/index.md +0 -0
- package/tests/mocks/restricted-access/test3/input/toc.yaml +16 -0
- package/tests/mocks/rtl/multidirectional-languages/input/.yfm +1 -0
- package/tests/mocks/rtl/multidirectional-languages/input/ar/index.yaml +4 -0
- package/tests/mocks/rtl/multidirectional-languages/input/ar/page.md +1 -0
- package/tests/mocks/rtl/multidirectional-languages/input/ar/toc.yaml +5 -0
- package/tests/mocks/rtl/multidirectional-languages/input/en/index.yaml +9 -0
- package/tests/mocks/rtl/multidirectional-languages/input/en/page.md +7 -0
- package/tests/mocks/rtl/multidirectional-languages/input/en/toc.yaml +5 -0
- package/tests/mocks/rtl/rtl-language/input/.yfm +1 -0
- package/tests/mocks/rtl/rtl-language/input/index.yaml +4 -0
- package/tests/mocks/rtl/rtl-language/input/page.md +1 -0
- package/tests/mocks/rtl/rtl-language/input/toc.yaml +5 -0
- package/tests/mocks/search/input/.yfm +12 -0
- package/tests/mocks/search/input/index.md +3 -0
- package/tests/mocks/search/input/toc.yaml +1 -0
- package/tests/mocks/single-page/input/ru/index.yaml +9 -0
- package/tests/mocks/single-page/input/ru/page.md +14 -0
- package/tests/mocks/single-page/input/ru/project/config.md +1 -0
- package/tests/mocks/single-page/input/ru/toc.yaml +7 -0
- package/tests/mocks/skip-html-extension/monolingual/input/.yfm +1 -0
- package/tests/mocks/skip-html-extension/monolingual/input/folder/index.md +1 -0
- package/tests/mocks/skip-html-extension/monolingual/input/index-test-html/index.md +4 -0
- package/tests/mocks/skip-html-extension/monolingual/input/index.md +6 -0
- package/tests/mocks/skip-html-extension/monolingual/input/page1.md +3 -0
- package/tests/mocks/skip-html-extension/monolingual/input/page2.md +6 -0
- package/tests/mocks/skip-html-extension/monolingual/input/toc.yaml +13 -0
- package/tests/mocks/skip-html-extension/multilingual/input/.yfm +2 -0
- package/tests/mocks/skip-html-extension/multilingual/input/en/folder/index.md +1 -0
- package/tests/mocks/skip-html-extension/multilingual/input/en/index-test-html/index.md +4 -0
- package/tests/mocks/skip-html-extension/multilingual/input/en/index.md +6 -0
- package/tests/mocks/skip-html-extension/multilingual/input/en/page1.md +3 -0
- package/tests/mocks/skip-html-extension/multilingual/input/en/page2.md +6 -0
- package/tests/mocks/skip-html-extension/multilingual/input/en/toc.yaml +13 -0
- package/tests/mocks/skip-html-extension/multilingual/input/ru/folder/index.md +1 -0
- package/tests/mocks/skip-html-extension/multilingual/input/ru/index-test-html/index.md +4 -0
- package/tests/mocks/skip-html-extension/multilingual/input/ru/index.md +5 -0
- package/tests/mocks/skip-html-extension/multilingual/input/ru/page1.md +3 -0
- package/tests/mocks/skip-html-extension/multilingual/input/ru/page2.md +6 -0
- package/tests/mocks/skip-html-extension/multilingual/input/ru/toc.yaml +12 -0
- package/tests/mocks/themer/test1/input/.yfm +3 -0
- package/tests/mocks/themer/test1/input/_assets/style/custom.css +3 -0
- package/tests/mocks/themer/test1/input/index.md +1 -0
- package/tests/mocks/themer/test1/input/theme.yaml +14 -0
- package/tests/mocks/themer/test1/input/toc.yaml +3 -0
- package/tests/mocks/themer/test2/input/index.md +1 -0
- package/tests/mocks/themer/test2/input/theme.yaml +8 -0
- package/tests/mocks/themer/test2/input/toc.yaml +3 -0
- package/tests/mocks/themer/test3/input/index.md +1 -0
- package/tests/mocks/themer/test3/input/toc.yaml +3 -0
- package/tests/mocks/themer/test4/input/index.md +1 -0
- package/tests/mocks/themer/test4/input/theme.yaml +3 -0
- package/tests/mocks/themer/test4/input/toc.yaml +3 -0
- package/tests/mocks/themer/test5/input/.yfm +1 -0
- package/tests/mocks/themer/test5/input/index.md +1 -0
- package/tests/mocks/themer/test5/input/toc.yaml +3 -0
- package/tests/mocks/themer/test6/input/.yfm +3 -0
- package/tests/mocks/themer/test6/input/index.md +11 -0
- package/tests/mocks/themer/test6/input/toc.yaml +5 -0
- package/tests/mocks/themer/test7/input/.yfm +3 -0
- package/tests/mocks/themer/test7/input/index.md +5 -0
- package/tests/mocks/themer/test7/input/theme.yaml +7 -0
- package/tests/mocks/themer/test7/input/toc.yaml +5 -0
- package/tests/mocks/themer/test8/input/.yfm +3 -0
- package/tests/mocks/themer/test8/input/index.md +5 -0
- package/tests/mocks/themer/test8/input/toc.yaml +5 -0
- package/tests/mocks/toc-label/input/.yfm +1 -0
- package/tests/mocks/toc-label/input/index.md +3 -0
- package/tests/mocks/toc-label/input/page1.md +3 -0
- package/tests/mocks/toc-label/input/toc.yaml +10 -0
- package/tests/mocks/translation/compose/input/openapi-spec.yaml.skl +41 -0
- package/tests/mocks/translation/compose/input/openapi-spec.yaml.xliff +52 -0
- package/tests/mocks/translation/compose/input/toc.yaml.skl +8 -0
- package/tests/mocks/translation/compose/input/toc.yaml.xliff +16 -0
- package/tests/mocks/translation/conditions/input/index.md +37 -0
- package/tests/mocks/translation/conditions/input/toc.yaml +5 -0
- package/tests/mocks/translation/custom-schema/custom-openapi-schema-30.yaml +1054 -0
- package/tests/mocks/translation/dir-files/input/.yfm +6 -0
- package/tests/mocks/translation/dir-files/input/ru/_includes/test.md +1 -0
- package/tests/mocks/translation/dir-files/input/ru/_no-translate/exclude.md +1 -0
- package/tests/mocks/translation/dir-files/input/ru/aboba.md +5 -0
- package/tests/mocks/translation/dir-files/input/ru/index.md +3 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/a1.md +3 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/folder1/a1.md +3 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/folder1/toc-i.yaml +3 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/index-yfm.md +2 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/index.yaml +24 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/not-in-toc.md +20 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/syntax/base.md +3 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/syntax/index.md +2 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/syntax/lists.md +1 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/toc.yaml +19 -0
- package/tests/mocks/translation/dir-files/input/ru/nested/use_filtered_above.md +4 -0
- package/tests/mocks/translation/dir-files/input/ru/no-var-page.md +3 -0
- package/tests/mocks/translation/dir-files/input/ru/not-in-toc.md +20 -0
- package/tests/mocks/translation/dir-files/input/ru/to-be-excluded.md +1 -0
- package/tests/mocks/translation/dir-files/input/ru/toc.yaml +13 -0
- package/tests/mocks/translation/no-translate/input/index.md +7 -0
- package/tests/mocks/translation/no-translate/input/no-translate.md +57 -0
- package/tests/mocks/translation/no-translate/input/openapi-spec.yaml +37 -0
- package/tests/mocks/translation/no-translate/input/toc.yaml +11 -0
- package/tests/mocks/translation/openapi/input/openapi-spec.yaml +50 -0
- package/tests/mocks/translation/openapi/input/toc.yaml +8 -0
- package/tests/mocks/translation/toc-include/input/included-toc/merged-included-toc-item.md +1 -0
- package/tests/mocks/translation/toc-include/input/included-toc/toc.yaml +3 -0
- package/tests/mocks/translation/toc-include/input/included-toc.md +1 -0
- package/tests/mocks/translation/toc-include/input/index.md +7 -0
- package/tests/mocks/translation/toc-include/input/merged-included-toc-item.md +1 -0
- package/tests/mocks/translation/toc-include/input/no-translate.md +57 -0
- package/tests/mocks/translation/toc-include/input/openapi-spec.yaml +37 -0
- package/tests/mocks/translation/toc-include/input/toc.yaml +14 -0
- package/tests/mocks/translation/yaml-scheme/input/ru/.yfm +1 -0
- package/tests/mocks/translation/yaml-scheme/input/ru/index-direct.yaml +133 -0
- package/tests/mocks/translation/yaml-scheme/input/ru/index.yaml +32 -0
- package/tests/mocks/translation/yaml-scheme/input/ru/toc.yaml +19 -0
- package/tests/mocks/vars-conditions/input/.yfm +1 -0
- package/tests/mocks/vars-conditions/input/index.md +3 -0
- package/tests/mocks/vars-conditions/input/page1.yaml +13 -0
- package/tests/mocks/vars-conditions/input/page2.md +24 -0
- package/tests/mocks/vars-conditions/input/page3.md +1 -0
- package/tests/mocks/vars-conditions/input/page4.md +1 -0
- package/tests/mocks/vars-conditions/input/page5.yaml +10 -0
- package/tests/mocks/vars-conditions/input/presets.yaml +9 -0
- package/tests/mocks/vars-conditions/input/toc.yaml +51 -0
- package/tests/mocks/vars-ignore/input/.yfm +1 -0
- package/tests/mocks/vars-ignore/input/data/data-test.md +4 -0
- package/tests/mocks/vars-ignore/input/data/presets.yaml +3 -0
- package/tests/mocks/vars-ignore/input/data/temp-test.md +4 -0
- package/tests/mocks/vars-ignore/input/ignored/ignored-test.md +4 -0
- package/tests/mocks/vars-ignore/input/ignored/presets.yaml +3 -0
- package/tests/mocks/vars-ignore/input/presets.yaml +3 -0
- package/tests/mocks/vars-ignore/input/test.md +6 -0
- package/tests/mocks/vars-ignore/input/toc.yaml +8 -0
- package/tests/mocks/warning/unreachable-autotitle/input/index.md +1 -0
- package/tests/mocks/warning/unreachable-autotitle/input/link.md +0 -0
- package/tests/mocks/warning/unreachable-autotitle/input/toc.yaml +4 -0
- package/tests/tsconfig.json +13 -0
- package/vitest.integration.config.ts +26 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import {describe, expect, test} from 'vitest';
|
|
2
|
+
import {join} from 'node:path';
|
|
3
|
+
import {access, readFile} from 'node:fs/promises';
|
|
4
|
+
|
|
5
|
+
import {TestAdapter, getTestPaths} from '../fixtures';
|
|
6
|
+
|
|
7
|
+
describe('Crawler manifest', () => {
|
|
8
|
+
test('generates crawler-manifest.json', async () => {
|
|
9
|
+
const {inputPath, outputPath} = getTestPaths('mocks/crawler-manifest/with-links');
|
|
10
|
+
|
|
11
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
12
|
+
md2md: true,
|
|
13
|
+
md2html: false,
|
|
14
|
+
args: '--crawler-manifest',
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const manifestContent = await readFile(join(outputPath, 'crawler-manifest.json'), 'utf-8');
|
|
18
|
+
|
|
19
|
+
expect(JSON.parse(manifestContent)).toMatchSnapshot();
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
test('does not generate manifest when --crawler-manifest flag is absent', async () => {
|
|
23
|
+
const {inputPath, outputPath} = getTestPaths('mocks/crawler-manifest/with-links');
|
|
24
|
+
|
|
25
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
26
|
+
md2md: true,
|
|
27
|
+
md2html: false,
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
await expect(access(join(outputPath, 'crawler-manifest.json'))).rejects.toThrow();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
test('does not generate manifest when there are no external links', async () => {
|
|
34
|
+
const {inputPath, outputPath} = getTestPaths('mocks/crawler-manifest/no-links');
|
|
35
|
+
|
|
36
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
37
|
+
md2md: true,
|
|
38
|
+
md2html: false,
|
|
39
|
+
args: '--crawler-manifest',
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
await expect(access(join(outputPath, 'crawler-manifest.json'))).rejects.toThrow();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test('reads crawlerManifest setting from .yfm config file', async () => {
|
|
46
|
+
const {inputPath, outputPath} = getTestPaths('mocks/crawler-manifest/config');
|
|
47
|
+
|
|
48
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
49
|
+
md2md: true,
|
|
50
|
+
md2html: false,
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
const manifestContent = await readFile(join(outputPath, 'crawler-manifest.json'), 'utf-8');
|
|
54
|
+
const manifest = JSON.parse(manifestContent);
|
|
55
|
+
|
|
56
|
+
expect(manifest.links['index.md']).toContain('https://config.example.com');
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
test('excludes urls by exact match and regexp from docs-viewer.crawler.exclude', async () => {
|
|
60
|
+
const {inputPath, outputPath} = getTestPaths('mocks/crawler-manifest/exclude');
|
|
61
|
+
|
|
62
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
63
|
+
md2md: true,
|
|
64
|
+
md2html: false,
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
const manifestContent = await readFile(join(outputPath, 'crawler-manifest.json'), 'utf-8');
|
|
68
|
+
const manifest = JSON.parse(manifestContent);
|
|
69
|
+
|
|
70
|
+
expect(manifest.links['index.md']).toContain('https://kept.example.com');
|
|
71
|
+
expect(manifest.links['index.md']).not.toContain('https://excluded-exact.example.com');
|
|
72
|
+
expect(manifest.links['index.md']).not.toContain(
|
|
73
|
+
'https://excluded-regexp.example.com/some/path',
|
|
74
|
+
);
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
test('includes notifications from root crawler config with defaults applied', async () => {
|
|
78
|
+
const {inputPath, outputPath} = getTestPaths('mocks/crawler-manifest/notifications-root');
|
|
79
|
+
|
|
80
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
81
|
+
md2md: true,
|
|
82
|
+
md2html: false,
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
const manifestContent = await readFile(join(outputPath, 'crawler-manifest.json'), 'utf-8');
|
|
86
|
+
const manifest = JSON.parse(manifestContent);
|
|
87
|
+
|
|
88
|
+
expect(manifest.notifications).toEqual({
|
|
89
|
+
interval: 'daily',
|
|
90
|
+
emailReceivers: ['user1', 'user2'],
|
|
91
|
+
messengerReceivers: ['user1', 'user2'],
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
test('includes notifications from docs-viewer.crawler config with default interval', async () => {
|
|
96
|
+
const {inputPath, outputPath} = getTestPaths(
|
|
97
|
+
'mocks/crawler-manifest/notifications-docs-viewer',
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
101
|
+
md2md: true,
|
|
102
|
+
md2html: false,
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const manifestContent = await readFile(join(outputPath, 'crawler-manifest.json'), 'utf-8');
|
|
106
|
+
const manifest = JSON.parse(manifestContent);
|
|
107
|
+
|
|
108
|
+
expect(manifest.notifications).toEqual({
|
|
109
|
+
interval: 'weekly',
|
|
110
|
+
emailReceivers: ['user3'],
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
test('omits notifications from manifest when receivers are not configured', async () => {
|
|
115
|
+
const {inputPath, outputPath} = getTestPaths(
|
|
116
|
+
'mocks/crawler-manifest/notifications-no-receivers',
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
120
|
+
md2md: true,
|
|
121
|
+
md2html: false,
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
const manifestContent = await readFile(join(outputPath, 'crawler-manifest.json'), 'utf-8');
|
|
125
|
+
const manifest = JSON.parse(manifestContent);
|
|
126
|
+
|
|
127
|
+
expect(manifest.notifications).toBeUndefined();
|
|
128
|
+
});
|
|
129
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import {readFileSync, readdirSync} from 'node:fs';
|
|
2
|
+
import {join, sep} from 'node:path';
|
|
3
|
+
import {describe, expect, test} from 'vitest';
|
|
4
|
+
|
|
5
|
+
import {TestAdapter, getTestPaths} from '../fixtures';
|
|
6
|
+
|
|
7
|
+
function findHtmlFiles(dir: string): string[] {
|
|
8
|
+
const results: string[] = [];
|
|
9
|
+
|
|
10
|
+
try {
|
|
11
|
+
for (const entry of readdirSync(dir, {withFileTypes: true})) {
|
|
12
|
+
const full = join(dir, entry.name);
|
|
13
|
+
|
|
14
|
+
if (entry.isDirectory()) {
|
|
15
|
+
results.push(...findHtmlFiles(full));
|
|
16
|
+
} else if (entry.name.endsWith('.html')) {
|
|
17
|
+
results.push(full);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
} catch {
|
|
21
|
+
// ignore
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return results;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
describe('disableCsp', () => {
|
|
28
|
+
test('should not inject CSP meta tag when disableCsp is true with neuroExpert enabled', async () => {
|
|
29
|
+
const {inputPath, outputPath} = getTestPaths('mocks/disable-csp');
|
|
30
|
+
|
|
31
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
32
|
+
md2md: false,
|
|
33
|
+
md2html: true,
|
|
34
|
+
args: '-j2',
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const htmlFiles = findHtmlFiles(outputPath);
|
|
38
|
+
expect(htmlFiles.length).toBeGreaterThan(0);
|
|
39
|
+
|
|
40
|
+
// No HTML page should contain CSP meta tag
|
|
41
|
+
for (const htmlFile of htmlFiles) {
|
|
42
|
+
const html = readFileSync(htmlFile, 'utf8');
|
|
43
|
+
expect(html).not.toContain('Content-Security-Policy');
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Content pages (under en/) should still have the neuroExpert widget script
|
|
47
|
+
const contentPages = htmlFiles.filter((f) => f.includes(`${sep}en${sep}`));
|
|
48
|
+
expect(contentPages.length).toBeGreaterThan(0);
|
|
49
|
+
|
|
50
|
+
for (const htmlFile of contentPages) {
|
|
51
|
+
const html = readFileSync(htmlFile, 'utf8');
|
|
52
|
+
expect(html).toContain('neuroexpert-widget');
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import {describe, expect, test} from 'vitest';
|
|
2
|
+
import {existsSync, readFileSync} from 'node:fs';
|
|
3
|
+
import {resolve} from 'node:path';
|
|
4
|
+
|
|
5
|
+
import {TestAdapter, getTestPaths} from '../fixtures';
|
|
6
|
+
|
|
7
|
+
describe('Empty presets.yaml handling', () => {
|
|
8
|
+
test('should not create empty presets.yaml files in md output format when no variables are used', async () => {
|
|
9
|
+
const {inputPath, outputPath} = getTestPaths('mocks/empty-presets');
|
|
10
|
+
|
|
11
|
+
// Test with --output-format=md and disabled templating
|
|
12
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
13
|
+
md2md: true,
|
|
14
|
+
args: '-f md --no-template',
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
// Check that presets.yaml file was NOT created in the output
|
|
18
|
+
const presetsPath = resolve(outputPath, 'presets.yaml');
|
|
19
|
+
expect(existsSync(presetsPath)).toBe(false);
|
|
20
|
+
|
|
21
|
+
// Check that subfolder presets.yaml file was NOT created in the output
|
|
22
|
+
const subfolderPresetsPath = resolve(outputPath, 'subfolder/presets.yaml');
|
|
23
|
+
expect(existsSync(subfolderPresetsPath)).toBe(false);
|
|
24
|
+
|
|
25
|
+
// Verify that the markdown files were still processed correctly
|
|
26
|
+
const indexContent = readFileSync(resolve(outputPath, 'index.md'), 'utf8');
|
|
27
|
+
expect(indexContent).toContain('Test Page');
|
|
28
|
+
|
|
29
|
+
const subpageContent = readFileSync(resolve(outputPath, 'subfolder/subpage.md'), 'utf8');
|
|
30
|
+
expect(subpageContent).toContain('Sub Page');
|
|
31
|
+
});
|
|
32
|
+
});
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import type {Report} from '../fixtures/runner';
|
|
2
|
+
|
|
3
|
+
import {describe, expect, it} from 'vitest';
|
|
4
|
+
|
|
5
|
+
import {TestAdapter, getTestPaths} from '../fixtures';
|
|
6
|
+
|
|
7
|
+
type TestResult = {
|
|
8
|
+
md: Report;
|
|
9
|
+
html: Report;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
function test(path: string, expect: Function, additionalArgs: string[] = []) {
|
|
13
|
+
it(path, async () => {
|
|
14
|
+
const {inputPath, outputPath} = getTestPaths(path);
|
|
15
|
+
|
|
16
|
+
const md = await TestAdapter.build.run(inputPath, outputPath, [
|
|
17
|
+
'-j2',
|
|
18
|
+
'-f',
|
|
19
|
+
'md',
|
|
20
|
+
...additionalArgs,
|
|
21
|
+
]);
|
|
22
|
+
const html = await TestAdapter.build.run(inputPath, outputPath + '-html', [
|
|
23
|
+
'-j2',
|
|
24
|
+
'-f',
|
|
25
|
+
'html',
|
|
26
|
+
...additionalArgs,
|
|
27
|
+
]);
|
|
28
|
+
return expect({md, html});
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
describe('Errors', () => {
|
|
33
|
+
test('mocks/errors/unreachable-link', ({html}: TestResult) => {
|
|
34
|
+
expectErrors(html, [
|
|
35
|
+
'ERR index.md: 1: YFM003 / unreachable-link Link is unreachable [Context: "Unreachable link: "exists.html"; Reason: File is not declared in toc; Line: 1"]',
|
|
36
|
+
'ERR index.md: 2: YFM003 / unreachable-link Link is unreachable [Context: "Unreachable link: "missed.html"; Reason: File is not declared in toc; Line: 2"]',
|
|
37
|
+
]);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test('mocks/errors/object-validation', ({html}: TestResult) => {
|
|
41
|
+
expectErrors(html, [
|
|
42
|
+
'ERR Invalid toc structure in toc.yaml -> toc.yaml at items[1].name: found [object Object] value',
|
|
43
|
+
'ERR Invalid toc structure in toc.yaml -> toc.yaml at items[2].href: found [object Object] value',
|
|
44
|
+
'ERR Invalid toc structure in toc.yaml -> toc.yaml at items[3].items[0].name: found [object Object] value',
|
|
45
|
+
'ERR Invalid toc structure in toc.yaml -> toc.yaml at items[4].title: found [object Object] value',
|
|
46
|
+
'ERR Invalid toc structure in toc.yaml -> toc.yaml at items[5].label: found [object Object] value',
|
|
47
|
+
'ERR Invalid toc structure in toc.yaml -> toc.yaml at items[6].navigation: found [object Object] value',
|
|
48
|
+
]);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test(
|
|
52
|
+
'mocks/errors/invalid-toc-root-array',
|
|
53
|
+
({md, html}: TestResult) => {
|
|
54
|
+
expectErrors(md, [
|
|
55
|
+
'ERR Invalid TOC format in ru/toc.yaml: root value must be an object, got array. Wrap items into an object with the items field.',
|
|
56
|
+
]);
|
|
57
|
+
expectErrors(html, [
|
|
58
|
+
'ERR Invalid TOC format in ru/toc.yaml: root value must be an object, got array. Wrap items into an object with the items field.',
|
|
59
|
+
]);
|
|
60
|
+
},
|
|
61
|
+
['-j1'],
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
test('mocks/errors/invalid-toc-root-array', ({md, html}: TestResult) => {
|
|
65
|
+
expectErrors(md, [
|
|
66
|
+
'ERR Invalid TOC format in ru/toc.yaml: root value must be an object, got array. Wrap items into an object with the items field.',
|
|
67
|
+
]);
|
|
68
|
+
expectErrors(html, [
|
|
69
|
+
'ERR Invalid TOC format in ru/toc.yaml: root value must be an object, got array. Wrap items into an object with the items field.',
|
|
70
|
+
]);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
test(
|
|
74
|
+
'mocks/errors/max-asset-size',
|
|
75
|
+
({md, html}: TestResult) => {
|
|
76
|
+
expectErrors(md, [
|
|
77
|
+
'ERR YFM013 _images/large-image.png: YFM013 / File asset limit exceeded: 3057 (limit is 2048)',
|
|
78
|
+
]);
|
|
79
|
+
expectErrors(html, [
|
|
80
|
+
'ERR YFM013 _images/large-image.png: YFM013 / File asset limit exceeded: 3057 (limit is 2048)',
|
|
81
|
+
]);
|
|
82
|
+
},
|
|
83
|
+
['--max-asset-size', '2K'],
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
test('mocks/errors/invalid-frontmatter', ({md, html}: TestResult) => {
|
|
87
|
+
expectErrors(md, [
|
|
88
|
+
'ERR index.md: 2: YFM017 / invalid front matter format [Reason: "duplicated mapping key"; Line: 2; Key: "title"]',
|
|
89
|
+
]);
|
|
90
|
+
expectErrors(html, [
|
|
91
|
+
'ERR index.md: 2: YFM017 / invalid front matter format [Reason: "duplicated mapping key"; Line: 2; Key: "title"]',
|
|
92
|
+
]);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it('translate extract with filtered links', async () => {
|
|
96
|
+
const {inputPath, outputPath} = getTestPaths('mocks/errors/extract-filtered-link');
|
|
97
|
+
|
|
98
|
+
const result = await TestAdapter.extract.run(inputPath, outputPath, [
|
|
99
|
+
'--source',
|
|
100
|
+
'ru-RU',
|
|
101
|
+
'--target',
|
|
102
|
+
'es-ES',
|
|
103
|
+
'--filter',
|
|
104
|
+
]);
|
|
105
|
+
|
|
106
|
+
expect(result.code).toEqual(1);
|
|
107
|
+
|
|
108
|
+
expect(result.errors).toEqual([
|
|
109
|
+
"ERR File index.md contains link to filtered.md, which was filtered from toc.yaml or it's not been included initially",
|
|
110
|
+
"ERR File index.md contains link to filtered2.md, which was filtered from toc.yaml or it's not been included initially",
|
|
111
|
+
"ERR File index.md contains link to filtered2.md, which was filtered from toc.yaml or it's not been included initially",
|
|
112
|
+
"ERR File index.md contains link to filtered3.md, which was filtered from toc.yaml or it's not been included initially",
|
|
113
|
+
]);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
describe('Include chain errors', () => {
|
|
118
|
+
test('mocks/errors/unreachable-link-in-include', ({html}: TestResult) => {
|
|
119
|
+
expectErrors(html, [
|
|
120
|
+
'ERR index.md: 5: YFM003 / unreachable-link Link is unreachable [Context: "index.md:5 → _includes/chapter.md:1 ↛ _includes/nonexistent.html; Reason: File is not declared in toc"]',
|
|
121
|
+
]);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
test('mocks/errors/unreachable-link-in-nested-include', ({html}: TestResult) => {
|
|
125
|
+
expectErrors(html, [
|
|
126
|
+
'ERR index.md: 3: YFM003 / unreachable-link Link is unreachable [Context: "index.md:3 → _includes/chapter.md:3 → _includes/details.md:1 ↛ _includes/nonexistent.html; Reason: File is not declared in toc"]',
|
|
127
|
+
]);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
test('mocks/errors/valid-link-in-include', ({html}: TestResult) => {
|
|
131
|
+
const yfm003 = html.errors.filter((e: string) => e.includes('YFM003'));
|
|
132
|
+
expect(yfm003).toEqual([]);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
describe('Warnings', () => {
|
|
137
|
+
test('mocks/warning/unreachable-autotitle', ({html}: TestResult) => {
|
|
138
|
+
expectWarnings(html, [
|
|
139
|
+
'WARN index.md: 1: YFM010 / unreachable-autotitle-anchor Auto title anchor is unreachable [Context: "Unreachable autotitle anchor: "link.html#unknown_yfm010"; Line: 1"]',
|
|
140
|
+
]);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
function expectErrors(report: Report, errors: string[]) {
|
|
145
|
+
expect(report.code).toEqual(1);
|
|
146
|
+
|
|
147
|
+
for (const error of errors) {
|
|
148
|
+
expect(report.errors).toContain(error);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function expectWarnings(report: Report, warnings: string[]) {
|
|
153
|
+
expect(report.warns.length).toEqual(warnings.length);
|
|
154
|
+
|
|
155
|
+
for (const warn of warnings) {
|
|
156
|
+
expect(report.warns).toContain(warn);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {describe, test} from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {TestAdapter, compareDirectories, getTestPaths} from '../fixtures';
|
|
4
|
+
|
|
5
|
+
describe('Static files from _assets directory', () => {
|
|
6
|
+
test('Download link should be enabled', async () => {
|
|
7
|
+
const {inputPath, outputPath} = getTestPaths('mocks/files');
|
|
8
|
+
|
|
9
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
10
|
+
md2md: true,
|
|
11
|
+
md2html: false,
|
|
12
|
+
});
|
|
13
|
+
await compareDirectories(outputPath);
|
|
14
|
+
|
|
15
|
+
await TestAdapter.testBuildPass(outputPath, outputPath + '-html', {
|
|
16
|
+
md2md: false,
|
|
17
|
+
md2html: true,
|
|
18
|
+
});
|
|
19
|
+
await compareDirectories(outputPath + '-html');
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {describe, expect, test} from 'vitest';
|
|
2
|
+
import {join} from 'node:path';
|
|
3
|
+
import {readFile} from 'node:fs/promises';
|
|
4
|
+
|
|
5
|
+
import {TestAdapter, bundleless, getFileContent, getTestPaths} from '../fixtures';
|
|
6
|
+
|
|
7
|
+
const generateMapTestTemplate = (
|
|
8
|
+
testTitle: string,
|
|
9
|
+
testRootPath: string,
|
|
10
|
+
md2md = true,
|
|
11
|
+
md2html = true,
|
|
12
|
+
) => {
|
|
13
|
+
test(testTitle, async () => {
|
|
14
|
+
const {inputPath, outputPath} = getTestPaths(testRootPath);
|
|
15
|
+
|
|
16
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
17
|
+
md2md,
|
|
18
|
+
md2html,
|
|
19
|
+
args: '--add-map-file --build-manifest',
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const content = getFileContent(join(outputPath, 'files.json'));
|
|
23
|
+
const manifestContent = await readFile(
|
|
24
|
+
join(outputPath, 'yfm-build-manifest.json'),
|
|
25
|
+
'utf-8',
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
expect(bundleless(content)).toMatchSnapshot();
|
|
29
|
+
expect(JSON.parse(manifestContent)).toMatchSnapshot();
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
describe('Generate map for', () => {
|
|
34
|
+
generateMapTestTemplate(
|
|
35
|
+
'project with single language and toc include',
|
|
36
|
+
'mocks/generate-map/test1',
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
generateMapTestTemplate(
|
|
40
|
+
'project with single language and toc include - only md2html',
|
|
41
|
+
'mocks/generate-map/test1',
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
generateMapTestTemplate('project with multiple language', 'mocks/generate-map/test2');
|
|
45
|
+
|
|
46
|
+
generateMapTestTemplate('project with external links in toc', 'mocks/generate-map/test3');
|
|
47
|
+
});
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import {describe, test} from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {TestAdapter, compareDirectories, getTestPaths} from '../fixtures';
|
|
4
|
+
|
|
5
|
+
describe('Include toc', () => {
|
|
6
|
+
test('Toc is included in link mode', async () => {
|
|
7
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test1');
|
|
8
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
9
|
+
await compareDirectories(outputPath);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
test('Toc is included inline, not as a new section', async () => {
|
|
13
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test2');
|
|
14
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
15
|
+
await compareDirectories(outputPath);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('Nested toc inclusions with mixed including modes', async () => {
|
|
19
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test3');
|
|
20
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
21
|
+
await compareDirectories(outputPath);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test('Nested toc inclusions with mixed including modes 2', async () => {
|
|
25
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test5');
|
|
26
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
27
|
+
await compareDirectories(outputPath);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test('Toc with expressions', async () => {
|
|
31
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test4');
|
|
32
|
+
const vars = {
|
|
33
|
+
type: 'a',
|
|
34
|
+
a: 'A',
|
|
35
|
+
b: 'B',
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
39
|
+
args: `--vars=${JSON.stringify(vars)}`,
|
|
40
|
+
});
|
|
41
|
+
await compareDirectories(outputPath);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('Toc with generic includer', async () => {
|
|
45
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test6');
|
|
46
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
47
|
+
await compareDirectories(outputPath);
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
test('Toc root merge on non root dir', async () => {
|
|
51
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test7');
|
|
52
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
53
|
+
await compareDirectories(outputPath);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
test('Toc with generic includer and linkIndex option', async () => {
|
|
57
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test8');
|
|
58
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
59
|
+
await compareDirectories(outputPath);
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('Toc with generic includer keeps index.md as child item by default', async () => {
|
|
63
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test9');
|
|
64
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
65
|
+
await compareDirectories(outputPath);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test('Toc with generic includer linkIndexAutotitle uses index.md heading for directory', async () => {
|
|
69
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-toc/test10');
|
|
70
|
+
await TestAdapter.testBuildPass(inputPath, outputPath);
|
|
71
|
+
await compareDirectories(outputPath);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {describe, test} from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {TestAdapter, compareDirectories, getTestPaths} from '../fixtures';
|
|
4
|
+
|
|
5
|
+
describe('Include with Meta', () => {
|
|
6
|
+
test('Build with PAGE_PROCESS_CONCURRENCY=1 should preserve meta information in includes', async () => {
|
|
7
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-with-meta');
|
|
8
|
+
|
|
9
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
10
|
+
md2md: true,
|
|
11
|
+
md2html: false,
|
|
12
|
+
args: '-j 2',
|
|
13
|
+
env: {
|
|
14
|
+
PAGE_PROCESS_CONCURRENCY: '1',
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
await compareDirectories(outputPath);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {describe, test} from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {TestAdapter, compareDirectories, getTestPaths} from '../fixtures';
|
|
4
|
+
|
|
5
|
+
describe('Includes with conditions', () => {
|
|
6
|
+
test('Consecutive includes with false condition in the middle', async () => {
|
|
7
|
+
const {inputPath, outputPath} = getTestPaths('mocks/includes-conditions');
|
|
8
|
+
|
|
9
|
+
// Test md2md transformation
|
|
10
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
11
|
+
md2md: true,
|
|
12
|
+
md2html: false,
|
|
13
|
+
});
|
|
14
|
+
await compareDirectories(outputPath);
|
|
15
|
+
|
|
16
|
+
// Test md2html transformation
|
|
17
|
+
await TestAdapter.testBuildPass(outputPath, outputPath + '-html', {
|
|
18
|
+
md2md: false,
|
|
19
|
+
md2html: true,
|
|
20
|
+
});
|
|
21
|
+
await compareDirectories(outputPath + '-html');
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import {describe, expect, test} from 'vitest';
|
|
2
|
+
|
|
3
|
+
import {TestAdapter, compareDirectories, getTestPaths} from '../fixtures';
|
|
4
|
+
|
|
5
|
+
describe('Includes', () => {
|
|
6
|
+
test('Various include scenarios', async () => {
|
|
7
|
+
const {inputPath, outputPath} = getTestPaths('mocks/includes');
|
|
8
|
+
|
|
9
|
+
// Test md2md transformation
|
|
10
|
+
await TestAdapter.testBuildPass(inputPath, outputPath, {
|
|
11
|
+
md2md: true,
|
|
12
|
+
md2html: false,
|
|
13
|
+
});
|
|
14
|
+
await compareDirectories(outputPath);
|
|
15
|
+
|
|
16
|
+
// Test md2html transformation
|
|
17
|
+
await TestAdapter.testBuildPass(outputPath, outputPath + '-html', {
|
|
18
|
+
md2md: false,
|
|
19
|
+
md2html: true,
|
|
20
|
+
});
|
|
21
|
+
await compareDirectories(outputPath + '-html');
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// TODO: This test was disabled because missing include files no longer cause
|
|
25
|
+
// a build failure in either md2md or md2html mode. The include is simply skipped.
|
|
26
|
+
// Re-enable when the expected error behavior is clarified.
|
|
27
|
+
test.todo('Include with missing file should fail');
|
|
28
|
+
|
|
29
|
+
test('Check filename and line in logs for skipped include', async () => {
|
|
30
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-skip/test1');
|
|
31
|
+
|
|
32
|
+
const mdReport = await TestAdapter.build.run(inputPath, outputPath, ['-f', 'html']);
|
|
33
|
+
expect(mdReport.code).toBeGreaterThan(0);
|
|
34
|
+
const mdLogs = mdReport.errors.join('\n');
|
|
35
|
+
|
|
36
|
+
expect(mdLogs).toContain(
|
|
37
|
+
'ERR Include skipped in (index.md:3). Include source for includes/missing.md not found',
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test('Check filename and line in logs for skipped nested include', async () => {
|
|
42
|
+
const {inputPath, outputPath} = getTestPaths('mocks/include-skip/test2');
|
|
43
|
+
|
|
44
|
+
const mdReport = await TestAdapter.build.run(inputPath, outputPath, ['-f', 'html']);
|
|
45
|
+
expect(mdReport.code).toBeGreaterThan(0);
|
|
46
|
+
const mdLogs = mdReport.errors.join('\n');
|
|
47
|
+
|
|
48
|
+
expect(mdLogs).toContain(
|
|
49
|
+
'ERR Include skipped in (includes/valid.md:3). Include source for includes/missing.md not found',
|
|
50
|
+
);
|
|
51
|
+
});
|
|
52
|
+
});
|