@shoalrun/cli 0.1.0-beta.1 → 1.1.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/CHANGELOG.md +36 -0
- package/CODE-REFERENCES.md +156 -0
- package/README.md +18 -6
- package/adapters/python/requirements.txt +1 -0
- package/adapters/python/shoalrun_reference.py +234 -0
- package/adapters/typescript/README.md +27 -0
- package/adapters/typescript/shoalrun-reference.mjs +260 -0
- package/agent-docs/.well-known/shoalrun/navigation/project-updates-50f26fe22670.txt +6 -2
- package/agent-docs/SNAPSHOT.json +5 -5
- package/agent-docs/about.md +3 -3
- package/agent-docs/api-docs/code-reference-settings.md +160 -0
- package/agent-docs/api-docs/code-reference-settings.sections/catalog-settings.md +50 -0
- package/agent-docs/api-docs/code-reference-settings.sections/complete-reference-page.md +46 -0
- package/agent-docs/api-docs/code-reference-settings.sections/converter-snapshot.md +58 -0
- package/agent-docs/api-docs/code-reference-settings.sections/descriptions-type-links-and-source-links.md +40 -0
- package/agent-docs/api-docs/code-reference-settings.sections/html-markdown-and-agents.md +38 -0
- package/agent-docs/api-docs/code-reference-settings.sections/metadata-and-selection.md +38 -0
- package/agent-docs/api-docs/code-reference-settings.sections/publication-sources.md +54 -0
- package/agent-docs/api-docs/code-reference-settings.sections/python-adapter-limits.md +38 -0
- package/agent-docs/api-docs/code-reference-settings.sections/related-reading.md +32 -0
- package/agent-docs/api-docs/code-reference-settings.sections/symbol-fields.md +56 -0
- package/agent-docs/api-docs/code-references.md +151 -0
- package/agent-docs/api-docs/code-references.sections/a-real-typescript-example.md +38 -0
- package/agent-docs/api-docs/code-references.sections/add-python-source.md +56 -0
- package/agent-docs/api-docs/code-references.sections/before-you-start.md +40 -0
- package/agent-docs/api-docs/code-references.sections/build-and-verify.md +47 -0
- package/agent-docs/api-docs/code-references.sections/choose-the-reading-layout.md +46 -0
- package/agent-docs/api-docs/code-references.sections/extract-and-validate-a-snapshot.md +52 -0
- package/agent-docs/api-docs/code-references.sections/html-markdown-and-agents.md +42 -0
- package/agent-docs/api-docs/code-references.sections/register-the-catalog-and-navigation.md +58 -0
- package/agent-docs/api-docs/code-references.sections/related-reading.md +40 -0
- package/agent-docs/api-docs/code-references.sections/versions-profiles-and-delivery.md +40 -0
- package/agent-docs/api-docs/typescript-references.md +93 -0
- package/agent-docs/author/agent-overview.md +2 -2
- package/agent-docs/author/components/for-facet.md +127 -0
- package/agent-docs/author/components/only.md +3 -1
- package/agent-docs/author/components.md +2 -1
- package/agent-docs/author/reader-views.md +2 -2
- package/agent-docs/author/reader-views.sections/configure-the-choices.md +2 -2
- package/agent-docs/author/reader-views.sections/connect-your-own-control.md +2 -2
- package/agent-docs/author/reader-views.sections/how-it-works-for-agents.md +2 -2
- package/agent-docs/author/reader-views.sections/mark-pages.md +2 -2
- package/agent-docs/author/reader-views.sections/mark-sections-and-add-an-entry-choice.md +2 -2
- package/agent-docs/author/reader-views.sections/place-filter-controls.md +2 -2
- package/agent-docs/author/reader-views.sections/try-the-controls-here.md +2 -2
- package/agent-docs/changelog/code-api-references.md +44 -0
- package/agent-docs/changelog/facet-typescript.md +54 -0
- package/agent-docs/changelog.md +17 -1
- package/agent-docs/cli.md +11 -1
- package/agent-docs/cli.sections/audit-a-project-and-api-sources.md +1 -1
- package/agent-docs/cli.sections/author-pages.md +1 -1
- package/agent-docs/cli.sections/build-and-serve.md +1 -1
- package/agent-docs/cli.sections/inspect-config-and-operations.md +1 -1
- package/agent-docs/cli.sections/npm-scripts-in-this-repository.md +1 -1
- package/agent-docs/cli.sections/related-reading.md +1 -1
- package/agent-docs/cli.sections/search-and-chat.md +1 -1
- package/agent-docs/cli.sections/start-a-project.md +1 -1
- package/agent-docs/cli.sections/validate-code-reference-snapshots.md +41 -0
- package/agent-docs/cli.sections/working-tree-authoring-tools.md +1 -1
- package/agent-docs/config/apis.md +5 -1
- package/agent-docs/config/examples.md +3 -3
- package/agent-docs/config/examples.sections/feature-showcase.md +3 -3
- package/agent-docs/config/examples.sections/minimal-site.md +2 -2
- package/agent-docs/config/examples.sections/multilingual-help-center.md +2 -2
- package/agent-docs/config/examples.sections/parcel-api-documentation.md +2 -2
- package/agent-docs/config/examples.sections/related-reading.md +2 -2
- package/agent-docs/config/examples.sections/shared-company-preset.md +2 -2
- package/agent-docs/config/outputs.md +12 -12
- package/agent-docs/config/outputs.sections/exports.md +12 -12
- package/agent-docs/config/outputs.sections/metadata.md +1 -1
- package/agent-docs/config/outputs.sections/pdf-output.md +1 -1
- package/agent-docs/config/outputs.sections/related-reading.md +1 -1
- package/agent-docs/config/site.md +17 -17
- package/agent-docs/config/site.sections/related-reading.md +1 -1
- package/agent-docs/config/site.sections/theme.md +1 -1
- package/agent-docs/config.md +2 -2
- package/agent-docs/configuration.md +2 -2
- package/agent-docs/configuration.sections/build-several-sites-from-shared-content.md +1 -1
- package/agent-docs/configuration.sections/change-inherited-lists-deliberately.md +1 -1
- package/agent-docs/configuration.sections/extract-a-section-with-include.md +1 -1
- package/agent-docs/configuration.sections/inspect-and-validate-changes.md +1 -1
- package/agent-docs/configuration.sections/related-reading.md +1 -1
- package/agent-docs/configuration.sections/separate-config-inheritance-from-page-metadata.md +1 -1
- package/agent-docs/configuration.sections/share-defaults-through-extends.md +1 -1
- package/agent-docs/configuration.sections/start-with-one-working-file.md +2 -2
- package/agent-docs/configuration.sections/understand-the-three-stages.md +1 -1
- package/agent-docs/configuration.sections/understand-where-paths-point.md +1 -1
- package/agent-docs/content-delivery/api.md +10 -2
- package/agent-docs/content-delivery/api.sections/errors.md +52 -0
- package/agent-docs/content-delivery/api.sections/generated-typescript-reference.md +36 -0
- package/agent-docs/content-delivery/api.sections/html-markdown-and-agents.md +36 -0
- package/agent-docs/content-delivery/api.sections/mount-html.md +42 -0
- package/agent-docs/content-delivery/api.sections/open-a-rest-source.md +55 -0
- package/agent-docs/content-delivery/api.sections/open-a-source.md +51 -0
- package/agent-docs/content-delivery/api.sections/read-a-snapshot.md +55 -0
- package/agent-docs/content-delivery/api.sections/related-reading.md +42 -0
- package/agent-docs/content-delivery/api.sections/validate-a-manifest.md +40 -0
- package/agent-docs/content-delivery/client.md +9 -1
- package/agent-docs/content-delivery/sdk/all.md +1772 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-exportedid.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-id.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor-title.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentanchor.md +44 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentasset-mediatype.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentasset.md +40 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliveryerror-code.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliveryerror.md +46 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-manifestbytes.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-resourcebytes.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits-resources.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentdeliverylimits.md +44 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contenterrorcode.md +32 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-bytes.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-digest.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile-path.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentfile.md +44 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentformat.md +32 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-asset.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-fragment.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-href.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-key.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-kind.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-query.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink-ref.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentlink.md +52 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-assets.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-diagnostics.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-digest.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-files.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-kind.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-publication.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-publicbase.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-resources.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-review.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest-schemaversion.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmanifest.md +68 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-anchors.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-links.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount-unmount.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentmount.md +49 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-channel.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-language.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-product.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication-version.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentpublication.md +46 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentref.md +43 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrefkey.md +42 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation-anchors.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation-links.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrepresentation.md +42 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-assets.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-canonicalurl.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-externaldependencies.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-publication.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-ref.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-representations.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-source.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-summary.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-title.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource-type.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresource.md +65 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresourcekey.md +42 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry-key.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry-resource.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestentry.md +42 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterror-error.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterror.md +43 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresterrorcode.md +32 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-publication.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-resources.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-revision.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist-schemaversion.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestlist.md +46 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-key.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-publication.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-resource.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-revision.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource-schemaversion.md +34 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentrestresource.md +48 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-content.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-format.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-representation.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-resource.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult-revision.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentresult.md +48 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-dispose.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-get.md +45 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-list.md +38 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-publication.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot-revision.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-contentsnapshot.md +47 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-fetch.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-limits.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-manifesturl.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions-signal.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-manifestcontentsourceoptions.md +46 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-mountcontent.md +48 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-openmanifestcontentsource.md +54 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-openrestcontentsource.md +44 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-baseurl.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-fetch.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-limits.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-publication.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-revision.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions-signal.md +36 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-restcontentsourceoptions.md +50 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content-validatecontentmanifest.md +45 -0
- package/agent-docs/content-delivery/sdk/all.sections/shoalrun-content.md +65 -0
- package/agent-docs/content-delivery/sdk/content-anchor/exported-id.md +25 -0
- package/agent-docs/content-delivery/sdk/content-anchor/id.md +25 -0
- package/agent-docs/content-delivery/sdk/content-anchor/title.md +25 -0
- package/agent-docs/content-delivery/sdk/content-anchor.md +71 -0
- package/agent-docs/content-delivery/sdk/content-asset/media-type.md +25 -0
- package/agent-docs/content-delivery/sdk/content-asset.md +43 -0
- package/agent-docs/content-delivery/sdk/content-delivery-error/code.md +25 -0
- package/agent-docs/content-delivery/sdk/content-delivery-error.md +53 -0
- package/agent-docs/content-delivery/sdk/content-delivery-limits/manifest-bytes.md +27 -0
- package/agent-docs/content-delivery/sdk/content-delivery-limits/resource-bytes.md +27 -0
- package/agent-docs/content-delivery/sdk/content-delivery-limits/resources.md +27 -0
- package/agent-docs/content-delivery/sdk/content-delivery-limits.md +77 -0
- package/agent-docs/content-delivery/sdk/content-error-code.md +23 -0
- package/agent-docs/content-delivery/sdk/content-file/bytes.md +25 -0
- package/agent-docs/content-delivery/sdk/content-file/digest.md +25 -0
- package/agent-docs/content-delivery/sdk/content-file/path.md +25 -0
- package/agent-docs/content-delivery/sdk/content-file.md +71 -0
- package/agent-docs/content-delivery/sdk/content-format.md +23 -0
- package/agent-docs/content-delivery/sdk/content-link/asset.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/fragment.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/href.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/key.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/kind.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/query.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link/ref.md +25 -0
- package/agent-docs/content-delivery/sdk/content-link.md +127 -0
- package/agent-docs/content-delivery/sdk/content-manifest/assets.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/diagnostics.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/digest.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/files.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/kind.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/public-base.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/publication.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/resources.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/review.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest/schema-version.md +25 -0
- package/agent-docs/content-delivery/sdk/content-manifest.md +179 -0
- package/agent-docs/content-delivery/sdk/content-mount/anchors.md +27 -0
- package/agent-docs/content-delivery/sdk/content-mount/links.md +27 -0
- package/agent-docs/content-delivery/sdk/content-mount/unmount.md +27 -0
- package/agent-docs/content-delivery/sdk/content-mount.md +82 -0
- package/agent-docs/content-delivery/sdk/content-publication/channel.md +25 -0
- package/agent-docs/content-delivery/sdk/content-publication/language.md +25 -0
- package/agent-docs/content-delivery/sdk/content-publication/product.md +25 -0
- package/agent-docs/content-delivery/sdk/content-publication/version.md +25 -0
- package/agent-docs/content-delivery/sdk/content-publication.md +85 -0
- package/agent-docs/content-delivery/sdk/content-ref-key.md +34 -0
- package/agent-docs/content-delivery/sdk/content-ref.md +40 -0
- package/agent-docs/content-delivery/sdk/content-representation/anchors.md +25 -0
- package/agent-docs/content-delivery/sdk/content-representation/links.md +25 -0
- package/agent-docs/content-delivery/sdk/content-representation.md +57 -0
- package/agent-docs/content-delivery/sdk/content-resource/assets.md +25 -0
- package/agent-docs/content-delivery/sdk/content-resource/canonical-url.md +25 -0
- package/agent-docs/content-delivery/sdk/content-resource/external-dependencies.md +25 -0
- package/agent-docs/content-delivery/sdk/content-resource/publication.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/ref.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/representations.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/source.md +25 -0
- package/agent-docs/content-delivery/sdk/content-resource/summary.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/title.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource/type.md +27 -0
- package/agent-docs/content-delivery/sdk/content-resource-key.md +34 -0
- package/agent-docs/content-delivery/sdk/content-resource.md +192 -0
- package/agent-docs/content-delivery/sdk/content-rest-entry/key.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-entry/resource.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-entry.md +57 -0
- package/agent-docs/content-delivery/sdk/content-rest-error/error.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-error-code.md +23 -0
- package/agent-docs/content-delivery/sdk/content-rest-error.md +46 -0
- package/agent-docs/content-delivery/sdk/content-rest-list/publication.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-list/resources.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-list/revision.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-list/schema-version.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-list.md +85 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/key.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/publication.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/resource.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/revision.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource/schema-version.md +25 -0
- package/agent-docs/content-delivery/sdk/content-rest-resource.md +99 -0
- package/agent-docs/content-delivery/sdk/content-result/content.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result/format.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result/representation.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result/resource.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result/revision.md +27 -0
- package/agent-docs/content-delivery/sdk/content-result.md +114 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/dispose.md +27 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/get.md +36 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/list.md +29 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/publication.md +27 -0
- package/agent-docs/content-delivery/sdk/content-snapshot/revision.md +27 -0
- package/agent-docs/content-delivery/sdk/content-snapshot.md +123 -0
- package/agent-docs/content-delivery/sdk/exports.md +742 -0
- package/agent-docs/content-delivery/sdk/exports.sections/functions.md +30 -0
- package/agent-docs/content-delivery/sdk/exports.sections/members.md +47 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentanchor.md +41 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentasset.md +37 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentdeliveryerror.md +43 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentdeliverylimits.md +41 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contenterrorcode.md +29 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentfile.md +41 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentformat.md +29 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentlink.md +49 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentmanifest.md +65 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentmount.md +46 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentpublication.md +43 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentref.md +40 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrefkey.md +39 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrepresentation.md +39 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresource.md +62 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresourcekey.md +39 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestentry.md +39 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresterror.md +40 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresterrorcode.md +29 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestlist.md +43 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentrestresource.md +45 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentresult.md +45 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-contentsnapshot.md +44 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-manifestcontentsourceoptions.md +43 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-mountcontent.md +45 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-openmanifestcontentsource.md +51 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-openrestcontentsource.md +41 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-restcontentsourceoptions.md +47 -0
- package/agent-docs/content-delivery/sdk/exports.sections/shoalrun-content-validatecontentmanifest.md +42 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options/fetch.md +27 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options/limits.md +27 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options/manifest-url.md +27 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options/signal.md +27 -0
- package/agent-docs/content-delivery/sdk/manifest-content-source-options.md +93 -0
- package/agent-docs/content-delivery/sdk/mount-content.md +46 -0
- package/agent-docs/content-delivery/sdk/open-manifest-content-source.md +51 -0
- package/agent-docs/content-delivery/sdk/open-rest-content-source.md +39 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/base-url.md +28 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/fetch.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/limits.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/publication.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/revision.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options/signal.md +27 -0
- package/agent-docs/content-delivery/sdk/rest-content-source-options.md +125 -0
- package/agent-docs/content-delivery/sdk/validate-content-manifest.md +38 -0
- package/agent-docs/contribute/agent-skills.md +33 -6
- package/agent-docs/documents.json +7710 -530
- package/agent-docs/features.md +20 -18
- package/agent-docs/provenance.json +6 -6
- package/agent-docs/publish/api-references.md +3 -1
- package/agent-docs/publish/api-references.sections/author-the-reference-page.md +3 -1
- package/agent-docs/publish/api-references.sections/build-and-verify-the-output.md +3 -1
- package/agent-docs/publish/api-references.sections/inspect-the-machine-readable-contract.md +3 -1
- package/agent-docs/publish/api-references.sections/next-steps.md +3 -1
- package/agent-docs/publish/api-references.sections/preview-a-small-api-reference.md +3 -1
- package/agent-docs/publish/api-references.sections/put-the-spec-in-your-project.md +3 -1
- package/agent-docs/publish/api-references.sections/register-the-operation.md +3 -1
- package/agent-docs/publish/api-references.sections/related-reading.md +3 -1
- package/agent-docs/publish/api-references.sections/review-imported-content-before-publishing.md +3 -1
- package/agent-docs/publish/api-references.sections/what-readers-get.md +3 -1
- package/agent-docs/publish/content-export.md +3 -1
- package/agent-docs/publish/content-export.sections/assets-downloads-and-notices.md +1 -1
- package/agent-docs/publish/content-export.sections/check-the-result.md +1 -1
- package/agent-docs/publish/content-export.sections/inspect-the-manifest.md +1 -1
- package/agent-docs/publish/content-export.sections/prerequisites.md +1 -1
- package/agent-docs/publish/content-export.sections/related-reading.md +1 -1
- package/agent-docs/publish/content-export.sections/review-exported-api-material.md +1 -1
- package/agent-docs/publish/content-export.sections/try-the-help-drawer-example.md +1 -1
- package/agent-docs/publish/content-export.sections/what-the-representations-retain.md +1 -1
- package/agent-docs/publish/pdf.md +2 -2
- package/agent-docs/publish/pdf.sections/apply-print-styling.md +1 -1
- package/agent-docs/publish/pdf.sections/check-the-result.md +1 -1
- package/agent-docs/publish/pdf.sections/export-a-page-or-publication.md +2 -2
- package/agent-docs/publish/pdf.sections/html-markdown-and-agents.md +1 -1
- package/agent-docs/publish/pdf.sections/offer-browser-page-printing.md +1 -1
- package/agent-docs/publish/pdf.sections/offer-direct-downloads-through-a-node-server.md +1 -1
- package/agent-docs/publish/pdf.sections/prerequisites.md +1 -1
- package/agent-docs/publish/pdf.sections/publish-an-optional-manual-download.md +1 -1
- package/agent-docs/publish/single-source-sites.md +26 -2
- package/agent-docs/publish/single-source-sites.sections/build-and-check-each-output.md +49 -0
- package/agent-docs/publish/single-source-sites.sections/html-markdown-and-agents.md +33 -0
- package/agent-docs/publish/single-source-sites.sections/include-additional-sections-in-a-build.md +47 -0
- package/agent-docs/publish/single-source-sites.sections/related-reading.md +43 -0
- package/agent-docs/publish/single-source-sites.sections/select-the-pages-for-each-site.md +74 -0
- package/agent-docs/publish/single-source-sites.sections/share-the-base-configuration.md +93 -0
- package/agent-docs/reference/agent-skills.md +2 -2
- package/agent-docs/search-index.json +1 -1
- package/agent-docs/start.md +3 -3
- package/agent-docs/start.sections/add-the-page-to-navigation.md +2 -2
- package/agent-docs/start.sections/build-and-check-both-outputs.md +2 -2
- package/agent-docs/start.sections/build-this-site.md +2 -2
- package/agent-docs/start.sections/check-writing-style.md +2 -2
- package/agent-docs/start.sections/create-a-page.md +2 -2
- package/agent-docs/start.sections/make-it-yours.md +2 -2
- package/agent-docs/start.sections/migrating-from-github-packages.md +2 -2
- package/agent-docs/start.sections/prerequisites.md +2 -2
- package/agent-docs/start.sections/related-reading.md +2 -2
- package/agent-docs/start.sections/start-your-own-project.md +3 -3
- package/agent-docs/status.md +6 -4
- package/agent-docs/styling/themes.md +7 -3
- package/agent-docs/what-is-shoalrun.md +2 -2
- package/assets/search-lexical.js +15 -4
- package/dist/artifact-bundle.d.ts +1 -0
- package/dist/artifact-bundle.js +11 -3
- package/dist/cli-discovery.d.ts +1 -1
- package/dist/cli-discovery.js +1 -0
- package/dist/cli.js +7 -0
- package/dist/code-reference-model.d.ts +85 -0
- package/dist/code-reference-model.js +73 -0
- package/dist/code-references.d.ts +23 -0
- package/dist/code-references.js +371 -0
- package/dist/compiler-config.d.ts +1 -0
- package/dist/compiler.d.ts +8 -0
- package/dist/compiler.js +14 -7
- package/dist/component-names.js +1 -1
- package/dist/component-transform.js +14 -22
- package/dist/conditional-tree.d.ts +2 -0
- package/dist/conditional-tree.js +14 -0
- package/dist/config.js +1 -1
- package/dist/content-delivery-contract.d.ts +39 -0
- package/dist/content-delivery-contract.js +2 -0
- package/dist/content-delivery-validation.d.ts +6 -0
- package/dist/content-delivery-validation.js +6 -0
- package/dist/content-delivery.d.ts +19 -1
- package/dist/content-delivery.js +10 -1
- package/dist/content-export-command.d.ts +42 -3
- package/dist/content-export.d.ts +42 -3
- package/dist/content-export.js +15 -6
- package/dist/content-filter.d.ts +2 -0
- package/dist/content-filter.js +4 -0
- package/dist/content-mount.d.ts +12 -1
- package/dist/content-mount.js +8 -1
- package/dist/content-rest-client.d.ts +11 -1
- package/dist/content-rest-client.js +4 -1
- package/dist/content-rest-contract.d.ts +5 -0
- package/dist/content-source.d.ts +2 -0
- package/dist/content-workspace.d.ts +5 -1
- package/dist/content-workspace.js +7 -2
- package/dist/deployment-profile.d.ts +3 -1
- package/dist/deployment-profile.js +18 -19
- package/dist/fonts.d.ts +9 -0
- package/dist/fonts.js +58 -3
- package/dist/page-materialization.js +3 -2
- package/dist/page-renderer.d.ts +1 -0
- package/dist/page-renderer.js +3 -1
- package/dist/palettes.d.ts +1 -1
- package/dist/publication-manifest.js +1 -1
- package/dist/publication-render.d.ts +2 -1
- package/dist/publication-render.js +2 -2
- package/dist/representation-tree.js +12 -2
- package/dist/search-query.js +13 -6
- package/dist/section-selection.d.ts +29 -0
- package/dist/section-selection.js +92 -0
- package/dist/snippets.d.ts +1 -0
- package/example-configs/facet-sections/README.md +37 -0
- package/example-configs/facet-sections/base.yaml +29 -0
- package/example-configs/facet-sections/content/billing.mdx +25 -0
- package/example-configs/facet-sections/customer.config.yaml +4 -0
- package/example-configs/facet-sections/docs.config.yaml +3 -0
- package/example-configs/faceted-sites/README.md +4 -2
- package/examples/code-references/content/start.md +53 -0
- package/examples/code-references/docs.config.yaml +262 -0
- package/examples/code-references/python/orchard/__init__.py +11 -0
- package/examples/code-references/python/orchard/client.py +212 -0
- package/examples/code-references/python/orchard/errors.py +31 -0
- package/examples/code-references/python/orchard/models.py +69 -0
- package/examples/code-references/python/orchard/pagination.py +39 -0
- package/examples/code-references/reference.json +1244 -0
- package/package.json +9 -1
- package/schemas/code-reference.schema.json +306 -0
- package/skills/shoalrun-author/SKILL.md +17 -0
- package/skills/shoalrun-author/references/code-api-references.md +19 -0
- package/skills/shoalrun-author/references/facet-selection.md +48 -0
- package/skills/shoalrun-brand/SKILL.md +9 -0
- package/skills/shoalrun-component-author/SKILL.md +9 -0
- package/skills/shoalrun-pdf/SKILL.md +9 -0
- package/skills/shoalrun-recipes/SKILL.md +9 -0
- package/skills/shoalrun-setup/SKILL.md +9 -0
- package/skills/shoalrun-walkthrough/SKILL.md +9 -0
- package/styles/site.css +61 -2
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
/** Browser-safe delivery contracts. These types do not import the compiler. */
|
|
2
|
+
/** Exact documentation publication selected by a content source. */
|
|
2
3
|
export type ContentPublication = {
|
|
3
4
|
channel: string;
|
|
4
5
|
version: string;
|
|
5
6
|
language: string;
|
|
6
7
|
product?: string;
|
|
7
8
|
};
|
|
9
|
+
/** Portable representations a content client can request. */
|
|
8
10
|
export type ContentFormat = 'html' | 'markdown';
|
|
11
|
+
/** Stable identity of a page, a section within a page, or a named snippet instance.
|
|
12
|
+
* A reference is scoped to the publication and revision of the opened snapshot.
|
|
13
|
+
*/
|
|
9
14
|
export type ContentRef = {
|
|
10
15
|
kind: 'page';
|
|
11
16
|
documentId: string;
|
|
@@ -17,19 +22,23 @@ export type ContentRef = {
|
|
|
17
22
|
kind: 'snippet';
|
|
18
23
|
id: string;
|
|
19
24
|
};
|
|
25
|
+
/** Export-relative file path, byte length, and SHA-256 digest. */
|
|
20
26
|
export type ContentFile = {
|
|
21
27
|
path: string;
|
|
22
28
|
bytes: number;
|
|
23
29
|
digest: string;
|
|
24
30
|
};
|
|
31
|
+
/** A content-addressed file with its declared media type. */
|
|
25
32
|
export type ContentAsset = ContentFile & {
|
|
26
33
|
mediaType: string;
|
|
27
34
|
};
|
|
35
|
+
/** Mapping from a canonical document fragment to its exported HTML ID. */
|
|
28
36
|
export type ContentAnchor = {
|
|
29
37
|
id: string;
|
|
30
38
|
exportedId: string;
|
|
31
39
|
title?: string;
|
|
32
40
|
};
|
|
41
|
+
/** Classified link and optional resource identity for application routing. */
|
|
33
42
|
export type ContentLink = {
|
|
34
43
|
key: string;
|
|
35
44
|
kind: 'resource' | 'canonical' | 'external' | 'asset';
|
|
@@ -39,15 +48,22 @@ export type ContentLink = {
|
|
|
39
48
|
query?: string;
|
|
40
49
|
asset?: string;
|
|
41
50
|
};
|
|
51
|
+
/** One portable format, including its file metadata, anchors, and typed links. */
|
|
42
52
|
export type ContentRepresentation = ContentAsset & {
|
|
43
53
|
anchors: ContentAnchor[];
|
|
44
54
|
links: ContentLink[];
|
|
45
55
|
};
|
|
56
|
+
/** Inventory entry describing one exported document, section, or snippet instance. */
|
|
46
57
|
export type ContentResource = {
|
|
58
|
+
/** Stable identity used by ContentSnapshot.get. */
|
|
47
59
|
ref: ContentRef;
|
|
60
|
+
/** Exact product, channel, version, and documentation language. */
|
|
48
61
|
publication: ContentPublication;
|
|
62
|
+
/** Human-readable resource title. */
|
|
49
63
|
title: string;
|
|
64
|
+
/** Short explanation of the resource's purpose. */
|
|
50
65
|
summary: string;
|
|
66
|
+
/** Authored document type, or section/snippet for a selected resource. */
|
|
51
67
|
type: string;
|
|
52
68
|
canonicalUrl?: string;
|
|
53
69
|
source?: {
|
|
@@ -55,6 +71,7 @@ export type ContentResource = {
|
|
|
55
71
|
snippetId?: string;
|
|
56
72
|
valuesDigest?: string;
|
|
57
73
|
};
|
|
74
|
+
/** Available portable formats and their files, anchors, and typed links. */
|
|
58
75
|
representations: Partial<Record<ContentFormat, ContentRepresentation>>;
|
|
59
76
|
assets: string[];
|
|
60
77
|
externalDependencies: Array<{
|
|
@@ -62,6 +79,7 @@ export type ContentResource = {
|
|
|
62
79
|
kind: 'image';
|
|
63
80
|
}>;
|
|
64
81
|
};
|
|
82
|
+
/** One validated, content-addressed export inventory. */
|
|
65
83
|
export type ContentManifest = {
|
|
66
84
|
schemaVersion: 1 | 2;
|
|
67
85
|
kind: 'shoalrun-content-export';
|
|
@@ -84,26 +102,47 @@ export type ContentManifest = {
|
|
|
84
102
|
message: string;
|
|
85
103
|
}>;
|
|
86
104
|
};
|
|
105
|
+
/** A fetched representation together with the metadata needed to render or route it. */
|
|
87
106
|
export type ContentResult = {
|
|
107
|
+
/** Inventory entry that was selected by the requested reference. */
|
|
88
108
|
resource: Readonly<ContentResource>;
|
|
109
|
+
/** File, media type, anchors, and typed links for the selected format. */
|
|
89
110
|
representation: Readonly<ContentRepresentation>;
|
|
111
|
+
/** Representation actually returned by the source. */
|
|
90
112
|
format: ContentFormat;
|
|
113
|
+
/** Validated UTF-8 HTML or Markdown text. */
|
|
91
114
|
content: string;
|
|
115
|
+
/** Revision shared by this response and its opened content snapshot. */
|
|
92
116
|
revision: string;
|
|
93
117
|
};
|
|
118
|
+
/** A client pinned to one immutable inventory revision and publication. */
|
|
94
119
|
export interface ContentSnapshot {
|
|
120
|
+
/** Content digest identifying this inventory revision. */
|
|
95
121
|
readonly revision: string;
|
|
122
|
+
/** Publication shared by every resource available from this snapshot. */
|
|
96
123
|
readonly publication: Readonly<ContentPublication>;
|
|
124
|
+
/** List the resources in the opened inventory without fetching their bodies.
|
|
125
|
+
* @returns Read-only resource entries for this publication and revision.
|
|
126
|
+
*/
|
|
97
127
|
list(): readonly Readonly<ContentResource>[];
|
|
128
|
+
/** Fetch one available representation of a stable content reference.
|
|
129
|
+
* @param ref Page, section, or named snippet instance in this snapshot.
|
|
130
|
+
* @param options Required format and an optional signal for this read.
|
|
131
|
+
* @returns Validated representation text with its routing and revision metadata.
|
|
132
|
+
*/
|
|
98
133
|
get(ref: ContentRef, options: {
|
|
99
134
|
format: ContentFormat;
|
|
100
135
|
signal?: AbortSignal;
|
|
101
136
|
}): Promise<ContentResult>;
|
|
137
|
+
/** Cancel pending requests and prevent subsequent reads or inventory access. */
|
|
102
138
|
dispose(): void;
|
|
103
139
|
}
|
|
140
|
+
/** Stable error categories raised by content-source validation and reads. */
|
|
104
141
|
export type ContentErrorCode = 'invalid_manifest' | 'not_found' | 'unsupported_format' | 'stale_revision' | 'network_error' | 'invalid_content' | 'disposed';
|
|
142
|
+
/** Delivery failure with a machine-readable code and a human-readable message. */
|
|
105
143
|
export declare class ContentDeliveryError extends Error {
|
|
106
144
|
readonly code: ContentErrorCode;
|
|
107
145
|
constructor(code: ContentErrorCode, message: string);
|
|
108
146
|
}
|
|
147
|
+
/** Serialize a reference to a deterministic key without including publication scope. */
|
|
109
148
|
export declare function contentRefKey(ref: ContentRef): string;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** Delivery failure with a machine-readable code and a human-readable message. */
|
|
1
2
|
export class ContentDeliveryError extends Error {
|
|
2
3
|
code;
|
|
3
4
|
constructor(code, message) {
|
|
@@ -6,6 +7,7 @@ export class ContentDeliveryError extends Error {
|
|
|
6
7
|
this.name = 'ContentDeliveryError';
|
|
7
8
|
}
|
|
8
9
|
}
|
|
10
|
+
/** Serialize a reference to a deterministic key without including publication scope. */
|
|
9
11
|
export function contentRefKey(ref) {
|
|
10
12
|
switch (ref.kind) {
|
|
11
13
|
case 'page': return JSON.stringify(['page', ref.documentId]);
|
|
@@ -2,6 +2,12 @@ import type { ContentManifest, ContentRef, ContentPublication } from './content-
|
|
|
2
2
|
export declare const safeContentPath: (value: any) => value is string;
|
|
3
3
|
export declare const validContentPublication: (value: any) => value is ContentPublication;
|
|
4
4
|
export declare function validContentRef(value: any): value is ContentRef;
|
|
5
|
+
/** Validate a parsed manifest's shape, identities, paths, and resource bounds.
|
|
6
|
+
* This assertion narrows the value but doesn't verify fetched file bytes or trust in a host.
|
|
7
|
+
* @param value Parsed JSON manifest to validate.
|
|
8
|
+
* @param maxResources Maximum allowed resource count; defaults to 10,000.
|
|
9
|
+
* @param maxResourceBytes Maximum declared representation bytes; defaults to 8,000,000.
|
|
10
|
+
*/
|
|
5
11
|
export declare function validateContentManifest(value: any, maxResources?: number, maxResourceBytes?: number): asserts value is ContentManifest;
|
|
6
12
|
/** Shared metadata validation; transport supplies its file/asset inventory policy. */
|
|
7
13
|
export declare function validateContentResources(resources: any[], expectedPublication: unknown, assets: Set<string>, checkRepresentation: (value: any) => boolean, publicBase?: string): void;
|
|
@@ -26,6 +26,12 @@ function safeExternal(value, image = false) {
|
|
|
26
26
|
return false;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
+
/** Validate a parsed manifest's shape, identities, paths, and resource bounds.
|
|
30
|
+
* This assertion narrows the value but doesn't verify fetched file bytes or trust in a host.
|
|
31
|
+
* @param value Parsed JSON manifest to validate.
|
|
32
|
+
* @param maxResources Maximum allowed resource count; defaults to 10,000.
|
|
33
|
+
* @param maxResourceBytes Maximum declared representation bytes; defaults to 8,000,000.
|
|
34
|
+
*/
|
|
29
35
|
export function validateContentManifest(value, maxResources = 10_000, maxResourceBytes = 8_000_000) {
|
|
30
36
|
if (!keys(value, ['schemaVersion', 'kind', 'digest', 'publicBase', 'publication', 'review', 'resources', 'assets', 'files', 'diagnostics']) || ![1, 2].includes(value.schemaVersion) || value.kind !== 'shoalrun-content-export' || !digestPattern.test(value.digest ?? ''))
|
|
31
37
|
invalid('Unsupported content manifest.');
|
|
@@ -4,18 +4,36 @@ export * from './content-rest-contract.js';
|
|
|
4
4
|
export { validateContentManifest } from './content-delivery-validation.js';
|
|
5
5
|
export { mountContent } from './content-mount.js';
|
|
6
6
|
export type { ContentMount } from './content-mount.js';
|
|
7
|
+
/** Positive safe-integer bounds applied when opening and reading content. */
|
|
7
8
|
export type ContentDeliveryLimits = {
|
|
9
|
+
/** Maximum manifest or REST inventory bytes. Defaults to 5,000,000. */
|
|
8
10
|
manifestBytes?: number;
|
|
11
|
+
/** Maximum bytes for an individual representation. Defaults to 8,000,000. */
|
|
9
12
|
resourceBytes?: number;
|
|
13
|
+
/** Maximum resource count in the inventory. Defaults to 10,000. */
|
|
10
14
|
resources?: number;
|
|
11
15
|
};
|
|
16
|
+
/** Configuration for opening a static content-export manifest. */
|
|
12
17
|
export type ManifestContentSourceOptions = {
|
|
18
|
+
/** Manifest URL; a browser resolves relative URLs against its current location. */
|
|
13
19
|
manifestUrl: string | URL;
|
|
20
|
+
/** Fetch implementation. Defaults to globalThis.fetch. */
|
|
14
21
|
fetch?: typeof globalThis.fetch;
|
|
22
|
+
/** Cancel the opening request. Use get's signal to cancel an individual read. */
|
|
15
23
|
signal?: AbortSignal;
|
|
24
|
+
/** Inventory and representation bounds. */
|
|
16
25
|
limits?: ContentDeliveryLimits;
|
|
17
26
|
};
|
|
18
|
-
/**
|
|
27
|
+
/** Open and validate one immutable static manifest revision.
|
|
28
|
+
* The caller owns trust in the compiler output and host. Browser URLs must use
|
|
29
|
+
* the application's origin. Requests reject redirects and unexpected content types.
|
|
30
|
+
* @param options Manifest URL, request implementation, cancellation, and limits.
|
|
31
|
+
* @returns A revision-pinned snapshot for listing and reading exported resources.
|
|
32
|
+
* @example
|
|
33
|
+
* const snapshot = await openManifestContentSource({ manifestUrl: '/help/manifest.json' });
|
|
34
|
+
* const page = await snapshot.get({ kind: 'page', documentId: 'guide.start' }, { format: 'markdown' });
|
|
35
|
+
* snapshot.dispose();
|
|
36
|
+
*/
|
|
19
37
|
export declare function openManifestContentSource(options: ManifestContentSourceOptions): Promise<ContentSnapshot>;
|
|
20
38
|
export { openRestContentSource } from './content-rest-client.js';
|
|
21
39
|
export type { RestContentSourceOptions } from './content-rest-client.js';
|
package/dist/content-delivery.js
CHANGED
|
@@ -6,7 +6,16 @@ export { validateContentManifest } from './content-delivery-validation.js';
|
|
|
6
6
|
import { freeze, sha256, readBounded } from './content-delivery-transport.js';
|
|
7
7
|
const invalid = (message) => { throw new ContentDeliveryError('invalid_manifest', message); };
|
|
8
8
|
export { mountContent } from './content-mount.js';
|
|
9
|
-
/**
|
|
9
|
+
/** Open and validate one immutable static manifest revision.
|
|
10
|
+
* The caller owns trust in the compiler output and host. Browser URLs must use
|
|
11
|
+
* the application's origin. Requests reject redirects and unexpected content types.
|
|
12
|
+
* @param options Manifest URL, request implementation, cancellation, and limits.
|
|
13
|
+
* @returns A revision-pinned snapshot for listing and reading exported resources.
|
|
14
|
+
* @example
|
|
15
|
+
* const snapshot = await openManifestContentSource({ manifestUrl: '/help/manifest.json' });
|
|
16
|
+
* const page = await snapshot.get({ kind: 'page', documentId: 'guide.start' }, { format: 'markdown' });
|
|
17
|
+
* snapshot.dispose();
|
|
18
|
+
*/
|
|
10
19
|
export async function openManifestContentSource(options) {
|
|
11
20
|
const fetcher = options.fetch ?? globalThis.fetch;
|
|
12
21
|
let manifestUrl;
|
|
@@ -4,7 +4,12 @@ export declare function runExportCommand(args: string[]): Promise<{
|
|
|
4
4
|
preparedPdf: import("./content-export.js").PdfExportPreparation;
|
|
5
5
|
status: string;
|
|
6
6
|
output: string;
|
|
7
|
-
publication:
|
|
7
|
+
publication: {
|
|
8
|
+
product?: string;
|
|
9
|
+
channel: string;
|
|
10
|
+
version: string;
|
|
11
|
+
language: string;
|
|
12
|
+
};
|
|
8
13
|
formats: import("./content-export-config.js").ExportFormat[];
|
|
9
14
|
profileSelection: {
|
|
10
15
|
schemaVersion: number;
|
|
@@ -18,6 +23,14 @@ export declare function runExportCommand(args: string[]): Promise<{
|
|
|
18
23
|
requires?: import("./deployment-profile.js").FeatureRequirements;
|
|
19
24
|
}[];
|
|
20
25
|
} | undefined;
|
|
26
|
+
contentSelection: {
|
|
27
|
+
selection: import("./reader-filters.js").ReaderSelection | null;
|
|
28
|
+
decisions: Record<string, unknown>[];
|
|
29
|
+
warnings: {
|
|
30
|
+
code: string;
|
|
31
|
+
message: string;
|
|
32
|
+
}[];
|
|
33
|
+
};
|
|
21
34
|
resources: number;
|
|
22
35
|
documents: number;
|
|
23
36
|
documentIds: string[];
|
|
@@ -42,7 +55,12 @@ export declare function runExportCommand(args: string[]): Promise<{
|
|
|
42
55
|
pdf: string;
|
|
43
56
|
status: string;
|
|
44
57
|
output: string;
|
|
45
|
-
publication:
|
|
58
|
+
publication: {
|
|
59
|
+
product?: string;
|
|
60
|
+
channel: string;
|
|
61
|
+
version: string;
|
|
62
|
+
language: string;
|
|
63
|
+
};
|
|
46
64
|
formats: import("./content-export-config.js").ExportFormat[];
|
|
47
65
|
profileSelection: {
|
|
48
66
|
schemaVersion: number;
|
|
@@ -56,6 +74,14 @@ export declare function runExportCommand(args: string[]): Promise<{
|
|
|
56
74
|
requires?: import("./deployment-profile.js").FeatureRequirements;
|
|
57
75
|
}[];
|
|
58
76
|
} | undefined;
|
|
77
|
+
contentSelection: {
|
|
78
|
+
selection: import("./reader-filters.js").ReaderSelection | null;
|
|
79
|
+
decisions: Record<string, unknown>[];
|
|
80
|
+
warnings: {
|
|
81
|
+
code: string;
|
|
82
|
+
message: string;
|
|
83
|
+
}[];
|
|
84
|
+
};
|
|
59
85
|
resources: number;
|
|
60
86
|
documents: number;
|
|
61
87
|
documentIds: string[];
|
|
@@ -78,7 +104,12 @@ export declare function runExportCommand(args: string[]): Promise<{
|
|
|
78
104
|
} | {
|
|
79
105
|
status: string;
|
|
80
106
|
output: string;
|
|
81
|
-
publication:
|
|
107
|
+
publication: {
|
|
108
|
+
product?: string;
|
|
109
|
+
channel: string;
|
|
110
|
+
version: string;
|
|
111
|
+
language: string;
|
|
112
|
+
};
|
|
82
113
|
formats: import("./content-export-config.js").ExportFormat[];
|
|
83
114
|
profileSelection: {
|
|
84
115
|
schemaVersion: number;
|
|
@@ -92,6 +123,14 @@ export declare function runExportCommand(args: string[]): Promise<{
|
|
|
92
123
|
requires?: import("./deployment-profile.js").FeatureRequirements;
|
|
93
124
|
}[];
|
|
94
125
|
} | undefined;
|
|
126
|
+
contentSelection: {
|
|
127
|
+
selection: import("./reader-filters.js").ReaderSelection | null;
|
|
128
|
+
decisions: Record<string, unknown>[];
|
|
129
|
+
warnings: {
|
|
130
|
+
code: string;
|
|
131
|
+
message: string;
|
|
132
|
+
}[];
|
|
133
|
+
};
|
|
95
134
|
resources: number;
|
|
96
135
|
documents: number;
|
|
97
136
|
documentIds: string[];
|
package/dist/content-export.d.ts
CHANGED
|
@@ -66,7 +66,12 @@ export declare function exportContent(configFile: string, destination: string, o
|
|
|
66
66
|
preparedPdf: PdfExportPreparation;
|
|
67
67
|
status: string;
|
|
68
68
|
output: string;
|
|
69
|
-
publication:
|
|
69
|
+
publication: {
|
|
70
|
+
product?: string;
|
|
71
|
+
channel: string;
|
|
72
|
+
version: string;
|
|
73
|
+
language: string;
|
|
74
|
+
};
|
|
70
75
|
formats: ExportFormat[];
|
|
71
76
|
profileSelection: {
|
|
72
77
|
schemaVersion: number;
|
|
@@ -80,6 +85,14 @@ export declare function exportContent(configFile: string, destination: string, o
|
|
|
80
85
|
requires?: import("./deployment-profile.js").FeatureRequirements;
|
|
81
86
|
}[];
|
|
82
87
|
} | undefined;
|
|
88
|
+
contentSelection: {
|
|
89
|
+
selection: import("./reader-filters.js").ReaderSelection | null;
|
|
90
|
+
decisions: Record<string, unknown>[];
|
|
91
|
+
warnings: {
|
|
92
|
+
code: string;
|
|
93
|
+
message: string;
|
|
94
|
+
}[];
|
|
95
|
+
};
|
|
83
96
|
resources: number;
|
|
84
97
|
documents: number;
|
|
85
98
|
documentIds: string[];
|
|
@@ -104,7 +117,12 @@ export declare function exportContent(configFile: string, destination: string, o
|
|
|
104
117
|
pdf: string;
|
|
105
118
|
status: string;
|
|
106
119
|
output: string;
|
|
107
|
-
publication:
|
|
120
|
+
publication: {
|
|
121
|
+
product?: string;
|
|
122
|
+
channel: string;
|
|
123
|
+
version: string;
|
|
124
|
+
language: string;
|
|
125
|
+
};
|
|
108
126
|
formats: ExportFormat[];
|
|
109
127
|
profileSelection: {
|
|
110
128
|
schemaVersion: number;
|
|
@@ -118,6 +136,14 @@ export declare function exportContent(configFile: string, destination: string, o
|
|
|
118
136
|
requires?: import("./deployment-profile.js").FeatureRequirements;
|
|
119
137
|
}[];
|
|
120
138
|
} | undefined;
|
|
139
|
+
contentSelection: {
|
|
140
|
+
selection: import("./reader-filters.js").ReaderSelection | null;
|
|
141
|
+
decisions: Record<string, unknown>[];
|
|
142
|
+
warnings: {
|
|
143
|
+
code: string;
|
|
144
|
+
message: string;
|
|
145
|
+
}[];
|
|
146
|
+
};
|
|
121
147
|
resources: number;
|
|
122
148
|
documents: number;
|
|
123
149
|
documentIds: string[];
|
|
@@ -140,7 +166,12 @@ export declare function exportContent(configFile: string, destination: string, o
|
|
|
140
166
|
} | {
|
|
141
167
|
status: string;
|
|
142
168
|
output: string;
|
|
143
|
-
publication:
|
|
169
|
+
publication: {
|
|
170
|
+
product?: string;
|
|
171
|
+
channel: string;
|
|
172
|
+
version: string;
|
|
173
|
+
language: string;
|
|
174
|
+
};
|
|
144
175
|
formats: ExportFormat[];
|
|
145
176
|
profileSelection: {
|
|
146
177
|
schemaVersion: number;
|
|
@@ -154,6 +185,14 @@ export declare function exportContent(configFile: string, destination: string, o
|
|
|
154
185
|
requires?: import("./deployment-profile.js").FeatureRequirements;
|
|
155
186
|
}[];
|
|
156
187
|
} | undefined;
|
|
188
|
+
contentSelection: {
|
|
189
|
+
selection: import("./reader-filters.js").ReaderSelection | null;
|
|
190
|
+
decisions: Record<string, unknown>[];
|
|
191
|
+
warnings: {
|
|
192
|
+
code: string;
|
|
193
|
+
message: string;
|
|
194
|
+
}[];
|
|
195
|
+
};
|
|
157
196
|
resources: number;
|
|
158
197
|
documents: number;
|
|
159
198
|
documentIds: string[];
|
package/dist/content-export.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { createSectionSelection, pruneSelectedTree, sectionSelectionReport, writeSectionSelectionReport } from './section-selection.js';
|
|
1
2
|
import { documentKey, publicationKey, samePublication } from './publication-identity.js';
|
|
2
|
-
import {
|
|
3
|
+
import { profileSelection } from './deployment-profile.js';
|
|
3
4
|
import { readFile, realpath } from 'node:fs/promises';
|
|
4
5
|
import path from 'node:path';
|
|
5
6
|
import { fileURLToPath } from 'node:url';
|
|
@@ -121,7 +122,8 @@ export async function exportContent(configFile, destination, options = {}) {
|
|
|
121
122
|
const providerSetting = configField(config.metadata, 'provider');
|
|
122
123
|
const metadataProvider = await loadMetadataProvider(providerSetting, providerSetting ? explainSegments(loaded, ['metadata', 'provider', 'module']).source.file : configFile);
|
|
123
124
|
const metadataDependencies = new Set();
|
|
124
|
-
const
|
|
125
|
+
const sectionSelection = createSectionSelection(readerFilters, selection, publications);
|
|
126
|
+
const workspace = await prepareContentWorkspace({ base, basePath, config, loaded, variants: [publication], language, readerFilters, metadataProvider, metadataDependencies, sectionSelection, allowRouteCollisions: true });
|
|
125
127
|
const { docs: eligible, apiPlan, snippets, sourceForOperation } = workspace;
|
|
126
128
|
const ids = new Set(target.resources ? target.resources.filter(item => item.kind !== 'snippet').map(item => item.documentId) : target.documents);
|
|
127
129
|
for (const id of ids) {
|
|
@@ -180,7 +182,7 @@ export async function exportContent(configFile, destination, options = {}) {
|
|
|
180
182
|
throw new Error(`Unknown export snippet ${selection.snippetId}`);
|
|
181
183
|
// This is an explicit isolated context. It has no containing page, operations,
|
|
182
184
|
// relationships, page variables, or inherited publication/access metadata.
|
|
183
|
-
const snippetDocument = { featureContext: loaded.deployment?.context, file: definition.file, body: '', tree: root([]), variant: publication,
|
|
185
|
+
const snippetDocument = { sectionSelection, featureContext: loaded.deployment?.context, file: definition.file, body: '', tree: root([]), variant: publication,
|
|
184
186
|
route: `/__content_snippets/${encodeURIComponent(selection.id)}`, markdownRoute: '',
|
|
185
187
|
frontmatter: { id: selection.id, title: selection.title, summary: selection.summary, type: 'snippet', slug: '/', access: { policy: 'public' } } };
|
|
186
188
|
const checkSnippet = (id, seen = new Set()) => {
|
|
@@ -190,7 +192,7 @@ export async function exportContent(configFile, destination, options = {}) {
|
|
|
190
192
|
const source = snippets.get(id);
|
|
191
193
|
if (!source)
|
|
192
194
|
throw new Error(`Unknown snippet ${id}`);
|
|
193
|
-
visitTree(
|
|
195
|
+
visitTree(pruneSelectedTree(source.tree, snippetDocument, source.file, false), node => {
|
|
194
196
|
if (['RelatedReading', 'DocCard', 'DocCards', 'DocCollection', 'CookbookChooser', 'ApiExample', 'ApiSchema', 'FrontmatterReference', 'Anchor'].includes(node.name))
|
|
195
197
|
throw new Error(`Snippet instance ${selection.id}: <${node.name}> needs page context`);
|
|
196
198
|
if (node.name === 'Snippet') {
|
|
@@ -316,6 +318,11 @@ export async function exportContent(configFile, destination, options = {}) {
|
|
|
316
318
|
const key = `${sourceKeyFor(destination)}:${format}`;
|
|
317
319
|
if (canonicalAnchors.has(key))
|
|
318
320
|
return canonicalAnchors.get(key);
|
|
321
|
+
// An export-selected tree cannot prove anchors in a differently selected website.
|
|
322
|
+
// Refuse the fragment rather than silently publish a broken canonical link.
|
|
323
|
+
const normalizeSelection = (value) => JSON.stringify(Object.entries(value ?? {}).sort(([a], [b]) => compare(a, b)).map(([facet, choices]) => [facet, [...choices].sort(compare)]));
|
|
324
|
+
if (sectionSelection.hasConditions && normalizeSelection(selection) !== normalizeSelection(siteSelection))
|
|
325
|
+
throw new Error(`Cannot verify canonical anchor in ${destination.frontmatter.id} across different site and export contentFilter selections; include the target resource or use its page URL without a fragment`);
|
|
319
326
|
const source = sourceInventories.get(key);
|
|
320
327
|
if (!source || destination.endpoint)
|
|
321
328
|
throw new Error(`Cannot validate canonical fragments in ${destination.frontmatter.id}; select the target resource explicitly`);
|
|
@@ -553,7 +560,7 @@ export async function exportContent(configFile, destination, options = {}) {
|
|
|
553
560
|
};
|
|
554
561
|
const input = { documents: printDocuments, title: selected.length === 1 ? selected[0].title : site.title, publication, assets: assets.artifacts, publicBase: target.publicBase, config: pdfConfig, configFile, assetRoots: [...roots, ...pdfInputs.map(file => path.dirname(file))] };
|
|
555
562
|
const preparedPdf = { input, manifest, inputs };
|
|
556
|
-
const common = { status: unreviewed.length ? 'needs-review' : 'ok', output: path.resolve(destination || base), publication, formats: target.formats, profileSelection: profileSelection(loaded.deployment), resources: records.length, documents: records.length, documentIds: selected.map(item => item.doc.frontmatter.id), comparison: { status: 'no-baseline', added: [], removed: [], diagnostics: [] }, assets: assets.records.size, apiReview: manifest.review.apis, diagnostics };
|
|
563
|
+
const common = { status: unreviewed.length ? 'needs-review' : 'ok', output: path.resolve(destination || base), publication, formats: target.formats, profileSelection: profileSelection(loaded.deployment), contentSelection: sectionSelectionReport(sectionSelection), resources: records.length, documents: records.length, documentIds: selected.map(item => item.doc.frontmatter.id), comparison: { status: 'no-baseline', added: [], removed: [], diagnostics: [] }, assets: assets.records.size, apiReview: manifest.review.apis, diagnostics };
|
|
557
564
|
if (options.preparePdfOnly)
|
|
558
565
|
return { ...common, digest: exportDigest(JSON.stringify(manifest)), preparedPdf };
|
|
559
566
|
checkOutputDirectory(destination, base, workspace.contentDir, inputs);
|
|
@@ -573,6 +580,7 @@ export async function exportContent(configFile, destination, options = {}) {
|
|
|
573
580
|
const digest = exportDigest(JSON.stringify(payload));
|
|
574
581
|
pdfArtifacts.set('manifest.json', JSON.stringify({ ...payload, digest }, null, 2) + '\n');
|
|
575
582
|
await commitArtifacts(path.resolve(destination), pdfArtifacts, undefined, 'pdf');
|
|
583
|
+
await writeSectionSelectionReport(base, sectionSelection, { target: { kind: 'pdf', name: options.target ?? null, output: path.resolve(destination) }, buildId: digest, configDigest: loaded.digest, filterOrigin: target.contentFilter ? 'export.contentFilter' : 'site.contentFilter' });
|
|
576
584
|
return { ...common, digest, pdf: filename };
|
|
577
585
|
}
|
|
578
586
|
const manifest = { schemaVersion: publication.product === undefined ? 1 : 2, kind: 'shoalrun-content-export', publicBase: target.publicBase, publication,
|
|
@@ -599,7 +607,8 @@ export async function exportContent(configFile, destination, options = {}) {
|
|
|
599
607
|
throw new Error('Review candidate cannot overwrite an approved export; choose a separate review destination');
|
|
600
608
|
}
|
|
601
609
|
await commitArtifacts(path.resolve(destination), artifacts, undefined, 'export');
|
|
610
|
+
await writeSectionSelectionReport(base, sectionSelection, { target: { kind: 'export', name: options.target ?? null, output: path.resolve(destination) }, buildId: bundleDigest, configDigest: loaded.digest, filterOrigin: target.contentFilter ? 'export.contentFilter' : 'unfiltered' });
|
|
602
611
|
return { status: unreviewed.length ? 'needs-review' : 'ok', output: path.resolve(destination), publication, formats: target.formats,
|
|
603
|
-
profileSelection: profileSelection(loaded.deployment), resources: records.length, documents: records.filter(item => item.ref.kind === 'page').length, documentIds: records.flatMap(item => item.ref.kind === 'page' ? [item.ref.documentId] : []), comparison, assets: assets.records.size, digest: bundleDigest,
|
|
612
|
+
profileSelection: profileSelection(loaded.deployment), contentSelection: sectionSelectionReport(sectionSelection), resources: records.length, documents: records.filter(item => item.ref.kind === 'page').length, documentIds: records.flatMap(item => item.ref.kind === 'page' ? [item.ref.documentId] : []), comparison, assets: assets.records.size, digest: bundleDigest,
|
|
604
613
|
apiReview: reviews.map(row => ({ apiId: row.apiId, digest: row.digest })), diagnostics };
|
|
605
614
|
}
|
package/dist/content-filter.d.ts
CHANGED
|
@@ -2,3 +2,5 @@ import { type ReaderFiltersConfig, type ReaderSelection } from './reader-filters
|
|
|
2
2
|
/** Build-time page selection; every selected facet must match at least one choice. */
|
|
3
3
|
export declare function validateContentFilter(value: unknown, facets?: ReaderFiltersConfig): ReaderSelection | undefined;
|
|
4
4
|
export declare function matchesContentFilter(marks: ReaderSelection | undefined, selection: ReaderSelection | undefined): boolean;
|
|
5
|
+
/** Section requirements narrow a selected page; unselected facets pass. */
|
|
6
|
+
export declare function matchesSectionContentFilter(requirements: ReaderSelection, selection: ReaderSelection | undefined): boolean;
|
package/dist/content-filter.js
CHANGED
|
@@ -14,3 +14,7 @@ export function validateContentFilter(value, facets) {
|
|
|
14
14
|
export function matchesContentFilter(marks, selection) {
|
|
15
15
|
return !selection || Object.entries(selection).every(([facet, choices]) => choices.some(choice => marks?.[facet]?.includes(choice)));
|
|
16
16
|
}
|
|
17
|
+
/** Section requirements narrow a selected page; unselected facets pass. */
|
|
18
|
+
export function matchesSectionContentFilter(requirements, selection) {
|
|
19
|
+
return Object.entries(requirements).every(([facet, choices]) => !selection?.[facet] || choices.some(choice => selection[facet].includes(choice)));
|
|
20
|
+
}
|
package/dist/content-mount.d.ts
CHANGED
|
@@ -1,10 +1,21 @@
|
|
|
1
1
|
import type { ContentAnchor, ContentLink, ContentResult } from './content-delivery-contract.js';
|
|
2
|
+
/** Handles and rewritten routing metadata for one mounted HTML instance. */
|
|
2
3
|
export type ContentMount = {
|
|
4
|
+
/** Anchors after instance-specific ID rewriting. */
|
|
3
5
|
anchors: readonly ContentAnchor[];
|
|
6
|
+
/** Typed links, including rewritten local fragments for this instance. */
|
|
4
7
|
links: readonly ContentLink[];
|
|
8
|
+
/** Remove nodes that still belong to this mount. */
|
|
5
9
|
unmount(): void;
|
|
6
10
|
};
|
|
7
|
-
/** Mount trusted compiler
|
|
11
|
+
/** Mount trusted compiler HTML with instance-specific anchor and accessibility IDs.
|
|
12
|
+
* This is not a sanitizer. The result must come from trusted compiler output.
|
|
13
|
+
* The mount replaces the container's children and rewrites local routing metadata.
|
|
14
|
+
* @param container DOM element receiving the content.
|
|
15
|
+
* @param result A validated HTML representation; Markdown results aren't accepted.
|
|
16
|
+
* @param options Optional unique instance ID and cancellation signal.
|
|
17
|
+
* @returns Rewritten anchors, typed links, and an unmount handle.
|
|
18
|
+
*/
|
|
8
19
|
export declare function mountContent(container: Element, result: ContentResult, options?: {
|
|
9
20
|
instanceId?: string;
|
|
10
21
|
signal?: AbortSignal;
|
package/dist/content-mount.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { ContentDeliveryError, contentRefKey } from './content-delivery-contract.js';
|
|
2
|
-
/** Mount trusted compiler
|
|
2
|
+
/** Mount trusted compiler HTML with instance-specific anchor and accessibility IDs.
|
|
3
|
+
* This is not a sanitizer. The result must come from trusted compiler output.
|
|
4
|
+
* The mount replaces the container's children and rewrites local routing metadata.
|
|
5
|
+
* @param container DOM element receiving the content.
|
|
6
|
+
* @param result A validated HTML representation; Markdown results aren't accepted.
|
|
7
|
+
* @param options Optional unique instance ID and cancellation signal.
|
|
8
|
+
* @returns Rewritten anchors, typed links, and an unmount handle.
|
|
9
|
+
*/
|
|
3
10
|
export function mountContent(container, result, options = {}) {
|
|
4
11
|
options.signal?.throwIfAborted();
|
|
5
12
|
if (result.format !== 'html')
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import type { ContentSnapshot, ContentPublication } from './content-delivery-contract.js';
|
|
2
2
|
import type { ContentDeliveryLimits } from './content-delivery.js';
|
|
3
|
+
/** Options for a REST inventory and its revision-pinned resource reads. */
|
|
3
4
|
export type RestContentSourceOptions = {
|
|
5
|
+
/** REST mount URL, such as /content/v1. Browser requests must use the application's origin. */
|
|
4
6
|
baseUrl: string | URL;
|
|
7
|
+
/** Exact publication to request; include product for a product-scoped source. */
|
|
5
8
|
publication: ContentPublication;
|
|
9
|
+
/** Expected inventory revision. Omit it to open the current revision. */
|
|
6
10
|
revision?: string;
|
|
11
|
+
/** Fetch implementation. Defaults to globalThis.fetch. */
|
|
7
12
|
fetch?: typeof globalThis.fetch;
|
|
13
|
+
/** Cancel the inventory-opening request. */
|
|
8
14
|
signal?: AbortSignal;
|
|
15
|
+
/** Inventory and representation bounds. */
|
|
9
16
|
limits?: ContentDeliveryLimits;
|
|
10
17
|
};
|
|
11
|
-
/**
|
|
18
|
+
/** Open a REST inventory and pin subsequent resource reads to its revision.
|
|
19
|
+
* @param options REST mount, exact publication, optional revision, and request settings.
|
|
20
|
+
* @returns A snapshot with the same list/get/dispose interface as the manifest source.
|
|
21
|
+
*/
|
|
12
22
|
export declare function openRestContentSource(options: RestContentSourceOptions): Promise<ContentSnapshot>;
|
|
@@ -7,7 +7,10 @@ const digestPattern = /^[a-f0-9]{64}$/;
|
|
|
7
7
|
const record = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
8
8
|
const exactKeys = (value, keys) => record(value) && Object.keys(value).length === keys.length && Object.keys(value).every(key => keys.includes(key));
|
|
9
9
|
const invalid = (message) => { throw new ContentDeliveryError('invalid_manifest', message); };
|
|
10
|
-
/**
|
|
10
|
+
/** Open a REST inventory and pin subsequent resource reads to its revision.
|
|
11
|
+
* @param options REST mount, exact publication, optional revision, and request settings.
|
|
12
|
+
* @returns A snapshot with the same list/get/dispose interface as the manifest source.
|
|
13
|
+
*/
|
|
11
14
|
export async function openRestContentSource(options) {
|
|
12
15
|
let baseUrl;
|
|
13
16
|
try {
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import type { ContentPublication, ContentRef, ContentResource } from './content-delivery-contract.js';
|
|
2
2
|
/** Public identity only: independent of publication, revision, and export filenames. */
|
|
3
3
|
export declare function contentResourceKey(ref: ContentRef): string;
|
|
4
|
+
/** One resource inventory entry with its REST lookup key. */
|
|
4
5
|
export type ContentRestEntry = {
|
|
5
6
|
key: string;
|
|
6
7
|
resource: ContentResource;
|
|
7
8
|
};
|
|
9
|
+
/** Revision-scoped inventory envelope returned by the content REST service. */
|
|
8
10
|
export type ContentRestList = {
|
|
9
11
|
schemaVersion: 1 | 2;
|
|
10
12
|
revision: string;
|
|
11
13
|
publication: ContentPublication;
|
|
12
14
|
resources: ContentRestEntry[];
|
|
13
15
|
};
|
|
16
|
+
/** Revision-scoped metadata envelope for a single content resource. */
|
|
14
17
|
export type ContentRestResource = {
|
|
15
18
|
schemaVersion: 1 | 2;
|
|
16
19
|
revision: string;
|
|
@@ -18,7 +21,9 @@ export type ContentRestResource = {
|
|
|
18
21
|
key: string;
|
|
19
22
|
resource: ContentResource;
|
|
20
23
|
};
|
|
24
|
+
/** Error categories used by the content REST protocol. */
|
|
21
25
|
export type ContentRestErrorCode = 'invalid_request' | 'not_found' | 'unsupported_format' | 'stale_revision' | 'method_not_allowed' | 'internal_error';
|
|
26
|
+
/** JSON error envelope returned by the content REST service. */
|
|
22
27
|
export type ContentRestError = {
|
|
23
28
|
error: {
|
|
24
29
|
code: ContentRestErrorCode;
|
package/dist/content-source.d.ts
CHANGED
|
@@ -57,6 +57,8 @@ export type Frontmatter = {
|
|
|
57
57
|
[key: string]: unknown;
|
|
58
58
|
};
|
|
59
59
|
export type Document = {
|
|
60
|
+
sectionSelection?: import('./section-selection.js').SectionSelection;
|
|
61
|
+
codeReference?: import('./code-reference-model.js').CodeReference;
|
|
60
62
|
featureContext?: import('./deployment-profile.js').FeatureContext;
|
|
61
63
|
change?: ResolvedChange;
|
|
62
64
|
subjectDeprecation?: ResolvedSubjectDeprecation;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SectionSelection } from './section-selection.js';
|
|
1
2
|
import { type Document, type Variant } from './content.js';
|
|
2
3
|
import { type AuthoredPublicationConfig } from './publication-plan.js';
|
|
3
4
|
import { type loadConfig } from './config.js';
|
|
@@ -5,25 +6,28 @@ import { type SnippetDefinition } from './snippets.js';
|
|
|
5
6
|
import type { ReaderFiltersConfig, ReaderSelection } from './reader-filters.js';
|
|
6
7
|
import type { loadMetadataProvider } from './metadata-provider.js';
|
|
7
8
|
/** Shared source resolution. No website navigation, styles, hosting or provider setup. */
|
|
8
|
-
export declare function prepareContentWorkspace({ base, basePath, config, loaded, variants, language, readerFilters, contentFilter, metadataProvider, metadataDependencies, sourceOverrides, authoringFiles, allowRouteCollisions }: {
|
|
9
|
+
export declare function prepareContentWorkspace({ base, basePath, config, loaded, variants, language, readerFilters, contentFilter, metadataProvider, metadataDependencies, sourceOverrides, authoringFiles, allowRouteCollisions, sectionSelection: suppliedSectionSelection }: {
|
|
9
10
|
base: string;
|
|
10
11
|
basePath: string;
|
|
11
12
|
config: AuthoredPublicationConfig & {
|
|
12
13
|
snippets?: unknown;
|
|
13
14
|
variables?: unknown;
|
|
14
15
|
apis?: unknown;
|
|
16
|
+
codeReferences?: unknown;
|
|
15
17
|
};
|
|
16
18
|
loaded: Awaited<ReturnType<typeof loadConfig>>;
|
|
17
19
|
variants: Variant[];
|
|
18
20
|
language: string;
|
|
19
21
|
readerFilters?: ReaderFiltersConfig;
|
|
20
22
|
contentFilter?: ReaderSelection;
|
|
23
|
+
sectionSelection?: SectionSelection;
|
|
21
24
|
metadataProvider?: Awaited<ReturnType<typeof loadMetadataProvider>>;
|
|
22
25
|
metadataDependencies: Set<string>;
|
|
23
26
|
sourceOverrides?: ReadonlyMap<string, string>;
|
|
24
27
|
authoringFiles?: ReadonlySet<string>;
|
|
25
28
|
allowRouteCollisions?: boolean;
|
|
26
29
|
}): Promise<{
|
|
30
|
+
sectionSelection: SectionSelection;
|
|
27
31
|
docs: Map<string, Document>;
|
|
28
32
|
knownDocumentIds: Set<string>;
|
|
29
33
|
knownDocumentTypes: Map<string, string>;
|