@terra-symposium/docs 0.0.0-stage → 0.1.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +72 -2
- package/lib-dist/assets/fonts/AUTHENTICSans-130.woff +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-130.woff2 +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-150.woff +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-150.woff2 +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-90.woff +0 -0
- package/lib-dist/assets/fonts/AUTHENTICSans-90.woff2 +0 -0
- package/lib-dist/assets/fonts/Avara-Bold.woff +0 -0
- package/lib-dist/assets/fonts/Avara-Bold.woff2 +0 -0
- package/lib-dist/assets/fonts/Avara-BoldItalic.woff +0 -0
- package/lib-dist/assets/fonts/Avara-BoldItalic.woff2 +0 -0
- package/lib-dist/assets/fonts/InterVariable-Italic-latin-20260728.woff2 +0 -0
- package/lib-dist/assets/fonts/InterVariable-latin-20260728.woff2 +0 -0
- package/lib-dist/assets/fonts/OFL-1.1.txt +93 -0
- package/lib-dist/assets/fonts/README.md +7 -0
- package/lib-dist/assets/fonts/licenses/Inter-OFL-1.1.txt +92 -0
- package/lib-dist/assets/fonts/licenses/OFL-1.1.txt +93 -0
- package/lib-dist/components/Docs.d.ts +22 -0
- package/lib-dist/components/Docs.d.ts.map +1 -0
- package/lib-dist/components/Docs.js +9 -0
- package/lib-dist/components/Docs.js.map +1 -0
- package/lib-dist/components/LocalDocsWorkspace.d.ts +37 -0
- package/lib-dist/components/LocalDocsWorkspace.d.ts.map +1 -0
- package/lib-dist/components/LocalDocsWorkspace.js +207 -0
- package/lib-dist/components/LocalDocsWorkspace.js.map +1 -0
- package/lib-dist/components/NotFound.d.ts +8 -0
- package/lib-dist/components/NotFound.d.ts.map +1 -0
- package/lib-dist/components/NotFound.js +6 -0
- package/lib-dist/components/NotFound.js.map +1 -0
- package/lib-dist/components/SiteLayout.d.ts +25 -0
- package/lib-dist/components/SiteLayout.d.ts.map +1 -0
- package/lib-dist/components/SiteLayout.js +12 -0
- package/lib-dist/components/SiteLayout.js.map +1 -0
- package/lib-dist/components/StaticWorkspace.d.ts +25 -0
- package/lib-dist/components/StaticWorkspace.d.ts.map +1 -0
- package/lib-dist/components/StaticWorkspace.js +245 -0
- package/lib-dist/components/StaticWorkspace.js.map +1 -0
- package/lib-dist/components/StrictLocalWorkspaceHarness.d.ts +10 -0
- package/lib-dist/components/StrictLocalWorkspaceHarness.d.ts.map +1 -0
- package/lib-dist/components/StrictLocalWorkspaceHarness.js +12 -0
- package/lib-dist/components/StrictLocalWorkspaceHarness.js.map +1 -0
- package/lib-dist/components/blocks.d.ts +23 -0
- package/lib-dist/components/blocks.d.ts.map +1 -0
- package/lib-dist/components/blocks.js +396 -0
- package/lib-dist/components/blocks.js.map +1 -0
- package/lib-dist/components/navigation.d.ts +18 -0
- package/lib-dist/components/navigation.d.ts.map +1 -0
- package/lib-dist/components/navigation.js +9 -0
- package/lib-dist/components/navigation.js.map +1 -0
- package/lib-dist/components/terra/Workspace.d.ts +5 -0
- package/lib-dist/components/terra/Workspace.d.ts.map +1 -0
- package/lib-dist/components/terra/Workspace.js +190 -0
- package/lib-dist/components/terra/Workspace.js.map +1 -0
- package/lib-dist/components/terra/editor/TerraContentEditor.d.ts +15 -0
- package/lib-dist/components/terra/editor/TerraContentEditor.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/TerraContentEditor.js +358 -0
- package/lib-dist/components/terra/editor/TerraContentEditor.js.map +1 -0
- package/lib-dist/components/terra/editor/_blocks.d.ts +70 -0
- package/lib-dist/components/terra/editor/_blocks.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/_blocks.js +120 -0
- package/lib-dist/components/terra/editor/_blocks.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/BlockContext.d.ts +7 -0
- package/lib-dist/components/terra/editor/docs/BlockContext.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/BlockContext.js +60 -0
- package/lib-dist/components/terra/editor/docs/BlockContext.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.d.ts +12 -0
- package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.js +66 -0
- package/lib-dist/components/terra/editor/docs/DocsAttachmentPicker.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/TerraToolbar.d.ts +12 -0
- package/lib-dist/components/terra/editor/docs/TerraToolbar.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/TerraToolbar.js +169 -0
- package/lib-dist/components/terra/editor/docs/TerraToolbar.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Callout.d.ts +14 -0
- package/lib-dist/components/terra/editor/docs/_Callout.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Callout.js +45 -0
- package/lib-dist/components/terra/editor/docs/_Callout.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_CodeBlock.d.ts +39 -0
- package/lib-dist/components/terra/editor/docs/_CodeBlock.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_CodeBlock.js +560 -0
- package/lib-dist/components/terra/editor/docs/_CodeBlock.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_DocsCode.d.ts +14 -0
- package/lib-dist/components/terra/editor/docs/_DocsCode.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_DocsCode.js +128 -0
- package/lib-dist/components/terra/editor/docs/_DocsCode.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_DocsImage.d.ts +18 -0
- package/lib-dist/components/terra/editor/docs/_DocsImage.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_DocsImage.js +62 -0
- package/lib-dist/components/terra/editor/docs/_DocsImage.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Embed.d.ts +17 -0
- package/lib-dist/components/terra/editor/docs/_Embed.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Embed.js +73 -0
- package/lib-dist/components/terra/editor/docs/_Embed.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Math.d.ts +31 -0
- package/lib-dist/components/terra/editor/docs/_Math.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Math.js +138 -0
- package/lib-dist/components/terra/editor/docs/_Math.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Nodes.d.ts +15 -0
- package/lib-dist/components/terra/editor/docs/_Nodes.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Nodes.js +62 -0
- package/lib-dist/components/terra/editor/docs/_Nodes.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Raw.d.ts +15 -0
- package/lib-dist/components/terra/editor/docs/_Raw.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Raw.js +31 -0
- package/lib-dist/components/terra/editor/docs/_Raw.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Table.d.ts +12 -0
- package/lib-dist/components/terra/editor/docs/_Table.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Table.js +99 -0
- package/lib-dist/components/terra/editor/docs/_Table.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Tabs.d.ts +14 -0
- package/lib-dist/components/terra/editor/docs/_Tabs.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_Tabs.js +125 -0
- package/lib-dist/components/terra/editor/docs/_Tabs.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_TsDocs.d.ts +15 -0
- package/lib-dist/components/terra/editor/docs/_TsDocs.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_TsDocs.js +83 -0
- package/lib-dist/components/terra/editor/docs/_TsDocs.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/_math_inline.d.ts +14 -0
- package/lib-dist/components/terra/editor/docs/_math_inline.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/_math_inline.js +30 -0
- package/lib-dist/components/terra/editor/docs/_math_inline.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/heading.d.ts +23 -0
- package/lib-dist/components/terra/editor/docs/heading.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/heading.js +63 -0
- package/lib-dist/components/terra/editor/docs/heading.js.map +1 -0
- package/lib-dist/components/terra/editor/docs/index.d.ts +13 -0
- package/lib-dist/components/terra/editor/docs/index.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/docs/index.js +14 -0
- package/lib-dist/components/terra/editor/docs/index.js.map +1 -0
- package/lib-dist/components/terra/editor/terra-content.styles.d.ts +3 -0
- package/lib-dist/components/terra/editor/terra-content.styles.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/terra-content.styles.js +3 -0
- package/lib-dist/components/terra/editor/terra-content.styles.js.map +1 -0
- package/lib-dist/components/terra/editor/types.d.ts +40 -0
- package/lib-dist/components/terra/editor/types.d.ts.map +1 -0
- package/lib-dist/components/terra/editor/types.js +11 -0
- package/lib-dist/components/terra/editor/types.js.map +1 -0
- package/lib-dist/components/terra/flow/Nodes.d.ts +78 -0
- package/lib-dist/components/terra/flow/Nodes.d.ts.map +1 -0
- package/lib-dist/components/terra/flow/Nodes.js +1019 -0
- package/lib-dist/components/terra/flow/Nodes.js.map +1 -0
- package/lib-dist/components/terra/flow/_chrome.d.ts +267 -0
- package/lib-dist/components/terra/flow/_chrome.d.ts.map +1 -0
- package/lib-dist/components/terra/flow/_chrome.js +1009 -0
- package/lib-dist/components/terra/flow/_chrome.js.map +1 -0
- package/lib-dist/components/terra/flow/menuContext.d.ts +13 -0
- package/lib-dist/components/terra/flow/menuContext.d.ts.map +1 -0
- package/lib-dist/components/terra/flow/menuContext.js +10 -0
- package/lib-dist/components/terra/flow/menuContext.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_attachments.d.ts +20 -0
- package/lib-dist/components/terra/pages/docs/_attachments.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_attachments.js +1148 -0
- package/lib-dist/components/terra/pages/docs/_attachments.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_blocks.d.ts +48 -0
- package/lib-dist/components/terra/pages/docs/_blocks.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_blocks.js +203 -0
- package/lib-dist/components/terra/pages/docs/_blocks.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_editable.d.ts +61 -0
- package/lib-dist/components/terra/pages/docs/_editable.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_editable.js +442 -0
- package/lib-dist/components/terra/pages/docs/_editable.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_export-dialog.d.ts +19 -0
- package/lib-dist/components/terra/pages/docs/_export-dialog.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_export-dialog.js +78 -0
- package/lib-dist/components/terra/pages/docs/_export-dialog.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_icons.d.ts +20 -0
- package/lib-dist/components/terra/pages/docs/_icons.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_icons.js +29 -0
- package/lib-dist/components/terra/pages/docs/_icons.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_main.d.ts +54 -0
- package/lib-dist/components/terra/pages/docs/_main.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_main.js +710 -0
- package/lib-dist/components/terra/pages/docs/_main.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.d.ts +10 -0
- package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.js +597 -0
- package/lib-dist/components/terra/pages/docs/_manage-attachments-dialog.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_sidebar.d.ts +33 -0
- package/lib-dist/components/terra/pages/docs/_sidebar.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_sidebar.js +1437 -0
- package/lib-dist/components/terra/pages/docs/_sidebar.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toc.d.ts +4 -0
- package/lib-dist/components/terra/pages/docs/_toc.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toc.js +212 -0
- package/lib-dist/components/terra/pages/docs/_toc.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.d.ts +15 -0
- package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.js +207 -0
- package/lib-dist/components/terra/pages/docs/_toolbar-find-replace.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toolbar.d.ts +22 -0
- package/lib-dist/components/terra/pages/docs/_toolbar.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_toolbar.js +1508 -0
- package/lib-dist/components/terra/pages/docs/_toolbar.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/_tree.d.ts +178 -0
- package/lib-dist/components/terra/pages/docs/_tree.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/_tree.js +1123 -0
- package/lib-dist/components/terra/pages/docs/_tree.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-block-nav.d.ts +5 -0
- package/lib-dist/components/terra/pages/docs/use-block-nav.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-block-nav.js +1306 -0
- package/lib-dist/components/terra/pages/docs/use-block-nav.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-media-paste.d.ts +5 -0
- package/lib-dist/components/terra/pages/docs/use-media-paste.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-media-paste.js +391 -0
- package/lib-dist/components/terra/pages/docs/use-media-paste.js.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-render-tripwire.d.ts +2 -0
- package/lib-dist/components/terra/pages/docs/use-render-tripwire.d.ts.map +1 -0
- package/lib-dist/components/terra/pages/docs/use-render-tripwire.js +25 -0
- package/lib-dist/components/terra/pages/docs/use-render-tripwire.js.map +1 -0
- package/lib-dist/components/terra/ui.d.ts +28 -0
- package/lib-dist/components/terra/ui.d.ts.map +1 -0
- package/lib-dist/components/terra/ui.js +20 -0
- package/lib-dist/components/terra/ui.js.map +1 -0
- package/lib-dist/components/workspace-demo-fixture.d.ts +35 -0
- package/lib-dist/components/workspace-demo-fixture.d.ts.map +1 -0
- package/lib-dist/components/workspace-demo-fixture.js +820 -0
- package/lib-dist/components/workspace-demo-fixture.js.map +1 -0
- package/lib-dist/fonts/KaTeX_AMS-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_AMS-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_AMS-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Bold.woff +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Main-Bold.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Main-Bold.woff +0 -0
- package/lib-dist/fonts/KaTeX_Main-Bold.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Main-BoldItalic.woff +0 -0
- package/lib-dist/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Main-Italic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Main-Italic.woff +0 -0
- package/lib-dist/fonts/KaTeX_Main-Italic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Main-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Main-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Main-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Math-BoldItalic.woff +0 -0
- package/lib-dist/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Math-Italic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Math-Italic.woff +0 -0
- package/lib-dist/fonts/KaTeX_Math-Italic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Bold.woff +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Italic.woff +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Script-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Script-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Script-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Size1-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Size1-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Size1-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Size2-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Size2-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Size2-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Size3-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Size3-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Size3-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Size4-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Size4-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Size4-Regular.woff2 +0 -0
- package/lib-dist/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
- package/lib-dist/fonts/KaTeX_Typewriter-Regular.woff +0 -0
- package/lib-dist/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
- package/lib-dist/lib/astro.d.ts +8 -0
- package/lib-dist/lib/astro.d.ts.map +1 -0
- package/lib-dist/lib/astro.js +27 -0
- package/lib-dist/lib/astro.js.map +1 -0
- package/lib-dist/lib/docs-catalog.d.ts +5 -0
- package/lib-dist/lib/docs-catalog.d.ts.map +1 -0
- package/lib-dist/lib/docs-catalog.js +75 -0
- package/lib-dist/lib/docs-catalog.js.map +1 -0
- package/lib-dist/lib/docs-theme.d.ts +7 -0
- package/lib-dist/lib/docs-theme.d.ts.map +1 -0
- package/lib-dist/lib/docs-theme.js +51 -0
- package/lib-dist/lib/docs-theme.js.map +1 -0
- package/lib-dist/lib/host-runtime.d.ts +5 -0
- package/lib-dist/lib/host-runtime.d.ts.map +1 -0
- package/lib-dist/lib/host-runtime.js +23 -0
- package/lib-dist/lib/host-runtime.js.map +1 -0
- package/lib-dist/lib/host.d.ts +190 -0
- package/lib-dist/lib/host.d.ts.map +1 -0
- package/lib-dist/lib/host.js +2 -0
- package/lib-dist/lib/host.js.map +1 -0
- package/lib-dist/lib/index.d.ts +34 -0
- package/lib-dist/lib/index.d.ts.map +1 -0
- package/lib-dist/lib/index.js +27 -0
- package/lib-dist/lib/index.js.map +1 -0
- package/lib-dist/lib/markdown-model.d.ts +7 -0
- package/lib-dist/lib/markdown-model.d.ts.map +1 -0
- package/lib-dist/lib/markdown-model.js +2031 -0
- package/lib-dist/lib/markdown-model.js.map +1 -0
- package/lib-dist/lib/markdown.d.ts +3 -0
- package/lib-dist/lib/markdown.d.ts.map +1 -0
- package/lib-dist/lib/markdown.js +222 -0
- package/lib-dist/lib/markdown.js.map +1 -0
- package/lib-dist/lib/schema.d.ts +167 -0
- package/lib-dist/lib/schema.d.ts.map +1 -0
- package/lib-dist/lib/schema.js +63 -0
- package/lib-dist/lib/schema.js.map +1 -0
- package/lib-dist/lib/terra/custom-components.d.ts +5 -0
- package/lib-dist/lib/terra/custom-components.d.ts.map +1 -0
- package/lib-dist/lib/terra/custom-components.js +6 -0
- package/lib-dist/lib/terra/custom-components.js.map +1 -0
- package/lib-dist/lib/terra/docs/archive.d.ts +3 -0
- package/lib-dist/lib/terra/docs/archive.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/archive.js +654 -0
- package/lib-dist/lib/terra/docs/archive.js.map +1 -0
- package/lib-dist/lib/terra/docs/assets.d.ts +26 -0
- package/lib-dist/lib/terra/docs/assets.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/assets.js +74 -0
- package/lib-dist/lib/terra/docs/assets.js.map +1 -0
- package/lib-dist/lib/terra/docs/attachments.d.ts +4 -0
- package/lib-dist/lib/terra/docs/attachments.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/attachments.js +5 -0
- package/lib-dist/lib/terra/docs/attachments.js.map +1 -0
- package/lib-dist/lib/terra/docs/editor-dom.d.ts +50 -0
- package/lib-dist/lib/terra/docs/editor-dom.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/editor-dom.js +236 -0
- package/lib-dist/lib/terra/docs/editor-dom.js.map +1 -0
- package/lib-dist/lib/terra/docs/mutations.d.ts +10 -0
- package/lib-dist/lib/terra/docs/mutations.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/mutations.js +105 -0
- package/lib-dist/lib/terra/docs/mutations.js.map +1 -0
- package/lib-dist/lib/terra/docs/navigation.d.ts +6 -0
- package/lib-dist/lib/terra/docs/navigation.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/navigation.js +21 -0
- package/lib-dist/lib/terra/docs/navigation.js.map +1 -0
- package/lib-dist/lib/terra/docs/state.d.ts +186 -0
- package/lib-dist/lib/terra/docs/state.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/state.js +255 -0
- package/lib-dist/lib/terra/docs/state.js.map +1 -0
- package/lib-dist/lib/terra/docs/toolbar.d.ts +11 -0
- package/lib-dist/lib/terra/docs/toolbar.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/toolbar.js +41 -0
- package/lib-dist/lib/terra/docs/toolbar.js.map +1 -0
- package/lib-dist/lib/terra/docs/tree.d.ts +15 -0
- package/lib-dist/lib/terra/docs/tree.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/tree.js +61 -0
- package/lib-dist/lib/terra/docs/tree.js.map +1 -0
- package/lib-dist/lib/terra/docs/workspace.d.ts +396 -0
- package/lib-dist/lib/terra/docs/workspace.d.ts.map +1 -0
- package/lib-dist/lib/terra/docs/workspace.js +923 -0
- package/lib-dist/lib/terra/docs/workspace.js.map +1 -0
- package/lib-dist/lib/terra/flow/_layout.d.ts +30 -0
- package/lib-dist/lib/terra/flow/_layout.d.ts.map +1 -0
- package/lib-dist/lib/terra/flow/_layout.js +63 -0
- package/lib-dist/lib/terra/flow/_layout.js.map +1 -0
- package/lib-dist/lib/terra/flow/powerSource.d.ts +16 -0
- package/lib-dist/lib/terra/flow/powerSource.d.ts.map +1 -0
- package/lib-dist/lib/terra/flow/powerSource.js +65 -0
- package/lib-dist/lib/terra/flow/powerSource.js.map +1 -0
- package/lib-dist/lib/terra/regex.mjs +403 -0
- package/lib-dist/lib/terra/runtime/action-proxy.d.ts +45 -0
- package/lib-dist/lib/terra/runtime/action-proxy.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/action-proxy.js +19 -0
- package/lib-dist/lib/terra/runtime/action-proxy.js.map +1 -0
- package/lib-dist/lib/terra/runtime/content/block-jsx.d.ts +23 -0
- package/lib-dist/lib/terra/runtime/content/block-jsx.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/content/block-jsx.js +225 -0
- package/lib-dist/lib/terra/runtime/content/block-jsx.js.map +1 -0
- package/lib-dist/lib/terra/runtime/content/document-markdown.d.ts +41 -0
- package/lib-dist/lib/terra/runtime/content/document-markdown.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/content/document-markdown.js +536 -0
- package/lib-dist/lib/terra/runtime/content/document-markdown.js.map +1 -0
- package/lib-dist/lib/terra/runtime/content/markdown.d.ts +109 -0
- package/lib-dist/lib/terra/runtime/content/markdown.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/content/markdown.js +428 -0
- package/lib-dist/lib/terra/runtime/content/markdown.js.map +1 -0
- package/lib-dist/lib/terra/runtime/content.d.ts +150 -0
- package/lib-dist/lib/terra/runtime/content.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/content.js +1256 -0
- package/lib-dist/lib/terra/runtime/content.js.map +1 -0
- package/lib-dist/lib/terra/runtime/leaf.d.ts +5 -0
- package/lib-dist/lib/terra/runtime/leaf.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/leaf.js +13 -0
- package/lib-dist/lib/terra/runtime/leaf.js.map +1 -0
- package/lib-dist/lib/terra/runtime/nodes.d.ts +112 -0
- package/lib-dist/lib/terra/runtime/nodes.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/nodes.js +606 -0
- package/lib-dist/lib/terra/runtime/nodes.js.map +1 -0
- package/lib-dist/lib/terra/runtime/runtime.d.ts +31 -0
- package/lib-dist/lib/terra/runtime/runtime.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/runtime.js +86 -0
- package/lib-dist/lib/terra/runtime/runtime.js.map +1 -0
- package/lib-dist/lib/terra/runtime/shared.d.ts +35 -0
- package/lib-dist/lib/terra/runtime/shared.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/shared.js +124 -0
- package/lib-dist/lib/terra/runtime/shared.js.map +1 -0
- package/lib-dist/lib/terra/runtime/types.d.ts +529 -0
- package/lib-dist/lib/terra/runtime/types.d.ts.map +1 -0
- package/lib-dist/lib/terra/runtime/types.js +44 -0
- package/lib-dist/lib/terra/runtime/types.js.map +1 -0
- package/lib-dist/lib/workspace-types.d.ts +29 -0
- package/lib-dist/lib/workspace-types.d.ts.map +1 -0
- package/lib-dist/lib/workspace-types.js +2 -0
- package/lib-dist/lib/workspace-types.js.map +1 -0
- package/lib-dist/style.css +237 -0
- package/package.json +108 -3
- package/src/components/NotFound.astro +6 -0
- package/src/components/NotFound.tsx +48 -0
- package/src/components/SiteLayout.astro +42 -0
- package/src/components/navigation.tsx +48 -0
|
@@ -0,0 +1,654 @@
|
|
|
1
|
+
/** Downloads selected Docs pages and attachments in a ZIP archive. */
|
|
2
|
+
import { toast } from 'sonner';
|
|
3
|
+
import { actions } from '../runtime/action-proxy.js';
|
|
4
|
+
import * as TerraQualityRegex from '../regex.mjs';
|
|
5
|
+
import { dirname, docsRootPath } from '../runtime/shared.js';
|
|
6
|
+
import { isIndexFile, sanitizeName } from './tree.js';
|
|
7
|
+
export async function archiveDocs(v, r, f, o, d, n = []) {
|
|
8
|
+
console.info('[archive] start', { paths: v, rootDir: r, filenameBase: f, opts: o, nodeIds: n });
|
|
9
|
+
if (!v?.length && !r)
|
|
10
|
+
throw new Error('No docs files found to download.');
|
|
11
|
+
let allPaths = v && v.length > 0 ? [...v] : [];
|
|
12
|
+
const isMdFile = TerraQualityRegex.REGEX_MD_MDX_I_REGEX().test(r) || !r.includes('.');
|
|
13
|
+
if (allPaths.length === 0) {
|
|
14
|
+
if (isMdFile) {
|
|
15
|
+
if (isIndexFile(r)) {
|
|
16
|
+
const dir = dirname(r);
|
|
17
|
+
const { data: entries, error: listErr } = await actions.read.doc.list({
|
|
18
|
+
type: 'folderEntries',
|
|
19
|
+
path: dir === '.' ? '' : dir,
|
|
20
|
+
});
|
|
21
|
+
if (listErr || !entries)
|
|
22
|
+
throw listErr || new Error('Failed to fetch structural archive entries.');
|
|
23
|
+
allPaths = entries.filter((p) => p === r || dirname(p) === dir);
|
|
24
|
+
}
|
|
25
|
+
else
|
|
26
|
+
allPaths = [r];
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const { data: entries, error: listErr } = await actions.read.doc.list({
|
|
30
|
+
type: 'folderEntries',
|
|
31
|
+
path: r === '.' ? '' : r,
|
|
32
|
+
});
|
|
33
|
+
if (listErr || !entries)
|
|
34
|
+
throw listErr || new Error('Failed to fetch structural archive entries.');
|
|
35
|
+
allPaths = entries;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (isMdFile && !allPaths.includes(r))
|
|
39
|
+
allPaths.push(r);
|
|
40
|
+
const attchPaths = [];
|
|
41
|
+
const assetNameMap = new Map();
|
|
42
|
+
// Create a combined list of paths explicitly for fetching attachments
|
|
43
|
+
await Promise.allSettled([...new Set([...allPaths, ...n])].map(async (p) => {
|
|
44
|
+
const c = p.split('?')[0] || p;
|
|
45
|
+
if (TerraQualityRegex.REGEX_MD_MDX_I_REGEX().test(c) || !c.includes('.')) {
|
|
46
|
+
try {
|
|
47
|
+
const { data: atts, error: err } = await actions.read.doc.attachments({ path: p });
|
|
48
|
+
if (!err && Array.isArray(atts)) {
|
|
49
|
+
for (const att of atts) {
|
|
50
|
+
if (att && typeof att === 'object' && 'path' in att && typeof att.path === 'string') {
|
|
51
|
+
if ('name' in att && typeof att.name === 'string') {
|
|
52
|
+
assetNameMap.set(att.path, att.name);
|
|
53
|
+
assetNameMap.set(att.path.split('?')[0] || att.path, att.name);
|
|
54
|
+
}
|
|
55
|
+
if (!allPaths.includes(att.path) && !attchPaths.includes(att.path))
|
|
56
|
+
attchPaths.push(att.path);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (err)
|
|
61
|
+
console.warn(`[archive] Error fetching attachments for ${p}:`, err);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
console.error(`[archive] Exception fetching attachments for ${p}:`, e);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}));
|
|
68
|
+
if (attchPaths.length > 0) {
|
|
69
|
+
allPaths.push(...attchPaths);
|
|
70
|
+
allPaths = [...new Set(allPaths)];
|
|
71
|
+
}
|
|
72
|
+
console.info('[archive] discovered paths', {
|
|
73
|
+
allPaths,
|
|
74
|
+
attachmentPaths: attchPaths,
|
|
75
|
+
assetNames: [...assetNameMap.entries()],
|
|
76
|
+
});
|
|
77
|
+
const zip = new (await import('jszip')).default();
|
|
78
|
+
let mergedPdf = null;
|
|
79
|
+
const wantsPdfMerge = (o.filters.pdfs && o.merges.pdfs) ||
|
|
80
|
+
(o.filters.images && o.merges.images) ||
|
|
81
|
+
(o.filters.pages && o.merges.pages && o.format === 'pdf');
|
|
82
|
+
console.info('[archive] merge plan', {
|
|
83
|
+
wantsPdfMerge,
|
|
84
|
+
textMerge: o.filters.pages && o.merges.pages && o.format === 'raw',
|
|
85
|
+
pdfMerge: o.filters.pdfs && o.merges.pdfs,
|
|
86
|
+
});
|
|
87
|
+
if (wantsPdfMerge) {
|
|
88
|
+
const { PDFDocument } = await import('pdf-lib');
|
|
89
|
+
mergedPdf = await PDFDocument.create();
|
|
90
|
+
}
|
|
91
|
+
const gJson = {};
|
|
92
|
+
const textJson = [];
|
|
93
|
+
const failures = [];
|
|
94
|
+
// Helper to accurately identify file types, prioritizing Sanity's explicit filename when available
|
|
95
|
+
/**
|
|
96
|
+
* Checks whether ext match.
|
|
97
|
+
*
|
|
98
|
+
* @param p - Value passed to the helper.
|
|
99
|
+
* @param regex - Value passed to the helper.
|
|
100
|
+
*/
|
|
101
|
+
const isExtMatch = (p, regex) => {
|
|
102
|
+
if (regex.test(p.split('?')[0] || p))
|
|
103
|
+
return true;
|
|
104
|
+
const filename = assetNameMap.get(p.split('?')[0] || p);
|
|
105
|
+
if (filename && regex.test(filename))
|
|
106
|
+
return true;
|
|
107
|
+
return false;
|
|
108
|
+
};
|
|
109
|
+
const mdPaths = [];
|
|
110
|
+
const textPaths = [];
|
|
111
|
+
const pdfPaths = [];
|
|
112
|
+
const imgPaths = [];
|
|
113
|
+
const ytPaths = [];
|
|
114
|
+
const refPaths = [];
|
|
115
|
+
const otherPaths = [];
|
|
116
|
+
for (const p of allPaths) {
|
|
117
|
+
const c = p.split('?')[0] || p;
|
|
118
|
+
const isTsDoc = p.includes(`${docsRootPath()}/tsdocs/`);
|
|
119
|
+
const isHttp = p.startsWith('http');
|
|
120
|
+
const noDot = !assetNameMap.has(p) && !c.includes('.');
|
|
121
|
+
if (!isHttp && !isTsDoc && (TerraQualityRegex.REGEX_MD_MDX_I_REGEX().test(c) || noDot))
|
|
122
|
+
mdPaths.push(p);
|
|
123
|
+
let matched = false;
|
|
124
|
+
if (!isHttp &&
|
|
125
|
+
!isTsDoc &&
|
|
126
|
+
(/\.(md|mdx|txt|json|cpp|c|h|hpp|js|jsx|ts|tsx|astro|yaml|yml|xml|csv|html|css|scss|sh|py|java|rs|go|rb|swift)$/i.test(assetNameMap.get(c) || c) ||
|
|
127
|
+
noDot)) {
|
|
128
|
+
textPaths.push(p);
|
|
129
|
+
matched = true;
|
|
130
|
+
}
|
|
131
|
+
if (isExtMatch(p, TerraQualityRegex.REGEX_PDF_I_REGEX())) {
|
|
132
|
+
pdfPaths.push(p);
|
|
133
|
+
matched = true;
|
|
134
|
+
}
|
|
135
|
+
if (isExtMatch(p, TerraQualityRegex.REGEX_PNG_JPE_G_GIF_WEBP_SVG_AVIF_I_REGEX_2())) {
|
|
136
|
+
imgPaths.push(p);
|
|
137
|
+
matched = true;
|
|
138
|
+
}
|
|
139
|
+
if (p.endsWith('youtube_transcripts.json') ||
|
|
140
|
+
p.includes('youtube.com/') ||
|
|
141
|
+
p.includes('youtu.be/')) {
|
|
142
|
+
ytPaths.push(p);
|
|
143
|
+
matched = true;
|
|
144
|
+
}
|
|
145
|
+
if (isTsDoc) {
|
|
146
|
+
refPaths.push(p);
|
|
147
|
+
matched = true;
|
|
148
|
+
}
|
|
149
|
+
if (!matched)
|
|
150
|
+
otherPaths.push(p);
|
|
151
|
+
}
|
|
152
|
+
const tasks = [];
|
|
153
|
+
if (o.filters.pages)
|
|
154
|
+
textPaths.forEach((p) => tasks.push({ path: p, type: 'pages' }));
|
|
155
|
+
if (o.filters.pdfs)
|
|
156
|
+
pdfPaths.forEach((p) => tasks.push({ path: p, type: 'pdfs' }));
|
|
157
|
+
if (o.filters.images)
|
|
158
|
+
imgPaths.forEach((p) => tasks.push({ path: p, type: 'images' }));
|
|
159
|
+
if (o.filters.youtube)
|
|
160
|
+
ytPaths.forEach((p) => tasks.push({ path: p, type: 'youtube' }));
|
|
161
|
+
if (o.filters.tsdocs)
|
|
162
|
+
refPaths.forEach((p) => tasks.push({ path: p, type: 'tsdocs' }));
|
|
163
|
+
if (o.filters.other)
|
|
164
|
+
otherPaths.forEach((p) => tasks.push({ path: p, type: 'other' }));
|
|
165
|
+
console.info('[archive] classified tasks', {
|
|
166
|
+
total: tasks.length,
|
|
167
|
+
tasks,
|
|
168
|
+
textPaths,
|
|
169
|
+
pdfPaths,
|
|
170
|
+
imgPaths,
|
|
171
|
+
otherPaths,
|
|
172
|
+
});
|
|
173
|
+
if (tasks.length === 0)
|
|
174
|
+
throw new Error('No files match the selected filters.');
|
|
175
|
+
let completed = 0;
|
|
176
|
+
/**
|
|
177
|
+
* Updates the update Progress for the docs.
|
|
178
|
+
*/
|
|
179
|
+
const updateProgress = () => {
|
|
180
|
+
completed++;
|
|
181
|
+
console.info('[archive] progress', {
|
|
182
|
+
completed,
|
|
183
|
+
total: tasks.length,
|
|
184
|
+
percent: Math.round((completed / tasks.length) * 100),
|
|
185
|
+
});
|
|
186
|
+
if (d)
|
|
187
|
+
d(Math.round((completed / tasks.length) * 100));
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Resolves the Path.
|
|
191
|
+
*
|
|
192
|
+
* @param p - Value passed to the helper.
|
|
193
|
+
* @param forceExt - Value passed to the helper.
|
|
194
|
+
*/
|
|
195
|
+
const resolvePath = (p, forceExt) => {
|
|
196
|
+
let rel = p;
|
|
197
|
+
if (assetNameMap.has(p.split('?')[0] || p))
|
|
198
|
+
rel = assetNameMap.get(p.split('?')[0] || p);
|
|
199
|
+
else if (rel.startsWith('http://') || rel.startsWith('https://')) {
|
|
200
|
+
// prettier-ignore
|
|
201
|
+
try {
|
|
202
|
+
const urlObj = new URL(rel);
|
|
203
|
+
let baseName = urlObj.pathname.split('/').pop() || 'downloaded-file';
|
|
204
|
+
if (urlObj.search) {
|
|
205
|
+
const sQuery = urlObj.search.replace(/[^a-zA-Z0-9]/g, '-').replace(TerraQualityRegex.REGEX_G_REGEX_3(), '-').replace(TerraQualityRegex.REGEX_G_REGEX_20(), '');
|
|
206
|
+
if (sQuery)
|
|
207
|
+
baseName = `${baseName}-${sQuery}`;
|
|
208
|
+
}
|
|
209
|
+
rel = baseName;
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
rel = rel.split('/').pop()?.replace(/[^a-zA-Z0-9.-]/g, '-') || 'downloaded-file';
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
if (!isMdFile && p.startsWith(`${r}/`))
|
|
217
|
+
rel = p.slice(r.length + 1);
|
|
218
|
+
else if (isMdFile)
|
|
219
|
+
rel = p.split('/').pop() || p;
|
|
220
|
+
}
|
|
221
|
+
if (o.flatten) {
|
|
222
|
+
if (/(?:\/|^)index\.[^.]+$/i.test(p) && p.includes('/')) {
|
|
223
|
+
const parts = p.split('/');
|
|
224
|
+
rel = `${parts[parts.length - 2]}${p.match(TerraQualityRegex.REGEX_PATTERN_REGEX())?.[0] || ''}`;
|
|
225
|
+
}
|
|
226
|
+
else
|
|
227
|
+
rel = p.split('/').pop() || rel;
|
|
228
|
+
}
|
|
229
|
+
if (forceExt) {
|
|
230
|
+
if (rel.match(TerraQualityRegex.REGEX_A_Z0_9_I_REGEX_2()))
|
|
231
|
+
rel = rel.replace(TerraQualityRegex.REGEX_A_Z0_9_I_REGEX_2(), forceExt);
|
|
232
|
+
else
|
|
233
|
+
rel = `${rel}${forceExt}`;
|
|
234
|
+
}
|
|
235
|
+
return rel || 'untitled-file';
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Fetches the fetch Asset Data.
|
|
239
|
+
*
|
|
240
|
+
* @param p - Value passed to the helper.
|
|
241
|
+
*
|
|
242
|
+
* @returns fetch Asset Data.
|
|
243
|
+
*/
|
|
244
|
+
const fetchAssetData = async (p) => {
|
|
245
|
+
if (TerraQualityRegex.REGEX_HTTPS_I_REGEX().test(p)) {
|
|
246
|
+
try {
|
|
247
|
+
console.info('[archive] fetching remote asset directly', { path: p });
|
|
248
|
+
const res = await fetch(p, { signal: AbortSignal.timeout(20_000) });
|
|
249
|
+
if (res.ok) {
|
|
250
|
+
const buffer = await res.arrayBuffer();
|
|
251
|
+
console.info('[archive] remote asset fetched directly', {
|
|
252
|
+
path: p,
|
|
253
|
+
bytes: buffer.byteLength,
|
|
254
|
+
});
|
|
255
|
+
return { buffer, contentType: res.headers.get('content-type') || '' };
|
|
256
|
+
}
|
|
257
|
+
console.warn('[archive] direct remote asset fetch failed; trying server proxy', {
|
|
258
|
+
path: p,
|
|
259
|
+
status: res.status,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
console.warn('[archive] direct remote asset fetch threw; trying server proxy', {
|
|
264
|
+
path: p,
|
|
265
|
+
err,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const { data, error } = await actions.read.asset.get({ path: p });
|
|
270
|
+
if (error || !data) {
|
|
271
|
+
console.error('[archive] Failed to fetch asset through Docs read action', {
|
|
272
|
+
path: p,
|
|
273
|
+
error,
|
|
274
|
+
});
|
|
275
|
+
throw error || new Error('Failed to read asset');
|
|
276
|
+
}
|
|
277
|
+
console.info('[archive] asset fetched', { path: p, bytes: data.byteLength });
|
|
278
|
+
return { buffer: data, contentType: '' };
|
|
279
|
+
};
|
|
280
|
+
for (const task of tasks) {
|
|
281
|
+
const { path: p, type } = task;
|
|
282
|
+
console.info('[archive] processing task', {
|
|
283
|
+
path: p,
|
|
284
|
+
type,
|
|
285
|
+
filename: assetNameMap.get(p.split('?')[0] || p),
|
|
286
|
+
merge: o.merges[type],
|
|
287
|
+
});
|
|
288
|
+
if (type === 'pages' && !mdPaths.includes(p)) {
|
|
289
|
+
try {
|
|
290
|
+
const res = await fetchAssetData(p);
|
|
291
|
+
if (res) {
|
|
292
|
+
if (o.merges.pages)
|
|
293
|
+
textJson.push({
|
|
294
|
+
path: p,
|
|
295
|
+
filename: resolvePath(p),
|
|
296
|
+
value: new TextDecoder().decode(res.buffer),
|
|
297
|
+
});
|
|
298
|
+
else
|
|
299
|
+
zip.file(resolvePath(p), res.buffer);
|
|
300
|
+
console.info('[archive] text attachment processed', {
|
|
301
|
+
path: p,
|
|
302
|
+
filename: resolvePath(p),
|
|
303
|
+
bytes: res.buffer.byteLength,
|
|
304
|
+
merged: o.merges.pages,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch (e) {
|
|
309
|
+
console.error(`[archive] Error fetching text attachment for ${p}:`, e);
|
|
310
|
+
failures.push({
|
|
311
|
+
filename: assetNameMap.get(p.split('?')[0] || p) || resolvePath(p),
|
|
312
|
+
path: p,
|
|
313
|
+
reason: e instanceof Error ? e.message : String(e),
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
else if (type === 'pages') {
|
|
318
|
+
if (o.format === 'pdf') {
|
|
319
|
+
try {
|
|
320
|
+
const { data: routeData } = await actions.read.util.pathname({ path: p });
|
|
321
|
+
if (routeData) {
|
|
322
|
+
const url = `${window.location.origin}${routeData}`;
|
|
323
|
+
const { data, error } = await actions.read.external.pdf({ url });
|
|
324
|
+
if (!error && data && data.pdfBase64) {
|
|
325
|
+
const byteChars = atob(data.pdfBase64);
|
|
326
|
+
const byteNums = new Array(byteChars.length);
|
|
327
|
+
for (let i = 0; i < byteChars.length; i++)
|
|
328
|
+
byteNums[i] = byteChars.charCodeAt(i);
|
|
329
|
+
const byteArray = new Uint8Array(byteNums);
|
|
330
|
+
if (o.merges.pages && mergedPdf) {
|
|
331
|
+
const { PDFDocument } = await import('pdf-lib');
|
|
332
|
+
const pdfDoc = await PDFDocument.load(byteArray);
|
|
333
|
+
(await mergedPdf.copyPages(pdfDoc, pdfDoc.getPageIndices())).forEach((p) => mergedPdf.addPage(p));
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
zip.file(resolvePath(p, '.pdf'), byteArray);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
else if (error)
|
|
340
|
+
console.error(`[archive] PDF Conversion Error for ${url}:`, error);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
catch (e) {
|
|
344
|
+
console.error(`[archive] Pages -> PDF exception for ${p}:`, e);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
else {
|
|
348
|
+
const { data, error } = await actions.read.doc.get({ path: p });
|
|
349
|
+
if (!error && data) {
|
|
350
|
+
const doc = data;
|
|
351
|
+
const fm = ['---'];
|
|
352
|
+
if (doc.title)
|
|
353
|
+
fm.push(`title: "${doc.title.replace(TerraQualityRegex.REGEX_G_REGEX_5(), '\\"')}"`);
|
|
354
|
+
if (doc.description)
|
|
355
|
+
fm.push(`description: "${doc.description.replace(TerraQualityRegex.REGEX_G_REGEX_5(), '\\"')}"`);
|
|
356
|
+
fm.push('---');
|
|
357
|
+
let localSrc = typeof doc.source === 'string' ? doc.source : '';
|
|
358
|
+
localSrc = localSrc.replace(/\]\((http[^)]+)\)/g, (m, l) => {
|
|
359
|
+
const basename = l.split('/').pop()?.split('?')[0];
|
|
360
|
+
return basename ? `](${basename})` : m;
|
|
361
|
+
});
|
|
362
|
+
localSrc = localSrc.replace(/src=["'](http[^"']+)["']/g, (m, l) => {
|
|
363
|
+
const basename = l.split('/').pop()?.split('?')[0];
|
|
364
|
+
return basename ? `src="${basename}"` : m;
|
|
365
|
+
});
|
|
366
|
+
if (o.merges.pages) {
|
|
367
|
+
let relPath = p;
|
|
368
|
+
if (!isMdFile && p.startsWith(`${r}/`))
|
|
369
|
+
relPath = p.slice(r.length + 1);
|
|
370
|
+
else if (isMdFile)
|
|
371
|
+
relPath = p.split('/').pop() || p;
|
|
372
|
+
const dir = relPath.includes('/')
|
|
373
|
+
? relPath.substring(0, relPath.lastIndexOf('/'))
|
|
374
|
+
: '.';
|
|
375
|
+
const fname = relPath.split('/').pop() || '';
|
|
376
|
+
const key = dir === '.' ? fname.replace(TerraQualityRegex.REGEX_PATTERN_REGEX(), '') : dir;
|
|
377
|
+
if (!gJson[key])
|
|
378
|
+
gJson[key] = [];
|
|
379
|
+
let src = typeof doc.source === 'string' ? doc.source : '';
|
|
380
|
+
src = src.replace(/\]\((?!http|#)([^)]+)\)/g, (m, l) => {
|
|
381
|
+
const basename = l.split('/').pop();
|
|
382
|
+
return basename ? `](${basename})` : m;
|
|
383
|
+
});
|
|
384
|
+
src = src.replace(/src=["'](?!http|#)([^"']+)["']/g, (m, l) => {
|
|
385
|
+
const basename = l.split('/').pop();
|
|
386
|
+
return basename ? `src="${basename}"` : m;
|
|
387
|
+
});
|
|
388
|
+
gJson[key].push({
|
|
389
|
+
title: fname,
|
|
390
|
+
...(doc.description !== undefined ? { description: doc.description } : {}),
|
|
391
|
+
source: src,
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
zip.file(resolvePath(p, '.mdx'), `${fm.join('\n')}\n\n${localSrc}`);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
else if (error)
|
|
399
|
+
console.error(`[archive] Error fetching doc content for ${p}:`, error);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
else if (type === 'pdfs') {
|
|
403
|
+
try {
|
|
404
|
+
const res = await fetchAssetData(p);
|
|
405
|
+
if (res && res.buffer) {
|
|
406
|
+
if (o.merges.pdfs && mergedPdf) {
|
|
407
|
+
try {
|
|
408
|
+
const { PDFDocument } = await import('pdf-lib');
|
|
409
|
+
const pdfDoc = await PDFDocument.load(res.buffer);
|
|
410
|
+
const copiedPages = await mergedPdf.copyPages(pdfDoc, pdfDoc.getPageIndices());
|
|
411
|
+
copiedPages.forEach((p) => mergedPdf.addPage(p));
|
|
412
|
+
console.info('[archive] PDF merged', { path: p, pages: copiedPages.length });
|
|
413
|
+
}
|
|
414
|
+
catch (err) {
|
|
415
|
+
console.error('[archive] PDF merge failed; preserving standalone PDF', {
|
|
416
|
+
path: p,
|
|
417
|
+
err,
|
|
418
|
+
});
|
|
419
|
+
zip.file(resolvePath(p, '.pdf'), res.buffer);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
zip.file(resolvePath(p, '.pdf'), res.buffer);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
catch (e) {
|
|
428
|
+
console.error(`[archive] Exception processing PDF ${p}:`, e, {
|
|
429
|
+
filename: assetNameMap.get(p.split('?')[0] || p),
|
|
430
|
+
merge: o.merges.pdfs,
|
|
431
|
+
});
|
|
432
|
+
failures.push({
|
|
433
|
+
filename: assetNameMap.get(p.split('?')[0] || p) || resolvePath(p),
|
|
434
|
+
path: p,
|
|
435
|
+
reason: e instanceof Error ? e.message : String(e),
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
else if (type === 'images') {
|
|
440
|
+
try {
|
|
441
|
+
const res = await fetchAssetData(p);
|
|
442
|
+
if (res && res.buffer) {
|
|
443
|
+
if (o.merges.images && mergedPdf) {
|
|
444
|
+
try {
|
|
445
|
+
let img;
|
|
446
|
+
if (p.match(/\.(jpe?g)$/i))
|
|
447
|
+
img = await mergedPdf.embedJpg(res.buffer);
|
|
448
|
+
else if (p.match(/\.(png)$/i))
|
|
449
|
+
img = await mergedPdf.embedPng(res.buffer);
|
|
450
|
+
if (img) {
|
|
451
|
+
mergedPdf
|
|
452
|
+
.addPage([img.width, img.height])
|
|
453
|
+
.drawImage(img, { x: 0, y: 0, width: img.width, height: img.height });
|
|
454
|
+
}
|
|
455
|
+
else {
|
|
456
|
+
console.warn(`[archive] Unsupported image type for PDF merge, zipping standalone: ${p}`);
|
|
457
|
+
zip.file(resolvePath(p), res.buffer);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
catch (e) {
|
|
461
|
+
console.error(`[archive] Failed to embed image ${p} into PDF, zipping instead:`, e);
|
|
462
|
+
zip.file(resolvePath(p), res.buffer);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
zip.file(resolvePath(p), res.buffer);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
catch (e) {
|
|
471
|
+
console.error(`[archive] Exception processing Image ${p}:`, e);
|
|
472
|
+
failures.push({
|
|
473
|
+
filename: assetNameMap.get(p.split('?')[0] || p) || resolvePath(p),
|
|
474
|
+
path: p,
|
|
475
|
+
reason: e instanceof Error ? e.message : String(e),
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
else if (type === 'youtube') {
|
|
480
|
+
try {
|
|
481
|
+
if (p.includes('youtube.com/') || p.includes('youtu.be/')) {
|
|
482
|
+
const { data: ytData, error: ytErr } = await actions.read.external.youtube({ url: p });
|
|
483
|
+
if (!ytErr && ytData) {
|
|
484
|
+
const cTitle = ytData.title || 'video';
|
|
485
|
+
if (o.merges.youtube) {
|
|
486
|
+
if (!gJson['youtube'])
|
|
487
|
+
gJson['youtube'] = [];
|
|
488
|
+
gJson['youtube'].push({
|
|
489
|
+
title: cTitle,
|
|
490
|
+
source: ytData.transcript || '',
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
zip.file(resolvePath(`${sanitizeName(cTitle)}.txt`), ytData.transcript || '');
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
else if (ytErr)
|
|
498
|
+
console.error(`[archive] Error fetching YouTube transcript for ${p}:`, ytErr);
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
const res = await fetchAssetData(p);
|
|
502
|
+
if (res && res.buffer) {
|
|
503
|
+
const videos = JSON.parse(new TextDecoder().decode(res.buffer));
|
|
504
|
+
if (Array.isArray(videos)) {
|
|
505
|
+
for (const video of videos) {
|
|
506
|
+
if (video.sourceUrl) {
|
|
507
|
+
const { data: ytData, error: ytErr } = await actions.read.external.youtube({
|
|
508
|
+
url: video.sourceUrl,
|
|
509
|
+
});
|
|
510
|
+
if (!ytErr && ytData) {
|
|
511
|
+
const cTitle = ytData.title || video.title || 'video';
|
|
512
|
+
if (o.merges.youtube) {
|
|
513
|
+
if (!gJson['youtube'])
|
|
514
|
+
gJson['youtube'] = [];
|
|
515
|
+
gJson['youtube'].push({
|
|
516
|
+
title: cTitle,
|
|
517
|
+
source: ytData.transcript || '',
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
zip.file(resolvePath(`${sanitizeName(cTitle)}.txt`), ytData.transcript || '');
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
catch (e) {
|
|
531
|
+
console.error(`[archive] Exception processing YouTube resource ${p}:`, e);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
else if (type === 'tsdocs') {
|
|
535
|
+
try {
|
|
536
|
+
const scopeMatch = p.match(TerraQualityRegex.REGEX_DOCS_TSDOCS_REGEX());
|
|
537
|
+
const scope = scopeMatch?.[1] ?? p;
|
|
538
|
+
const { data: tsData, error: tsErr } = await actions.read.tsdocs({ scope });
|
|
539
|
+
if (!tsErr && tsData && tsData.docs) {
|
|
540
|
+
const items = tsData.docs;
|
|
541
|
+
if (o.merges.tsdocs) {
|
|
542
|
+
const existing = Array.isArray(gJson['tsdocs']) ? gJson['tsdocs'] : [];
|
|
543
|
+
gJson['tsdocs'] = [
|
|
544
|
+
...existing,
|
|
545
|
+
...items.map((d) => ({ title: d.title, slug: d.slug, source: d.body })),
|
|
546
|
+
];
|
|
547
|
+
}
|
|
548
|
+
else {
|
|
549
|
+
// prettier-ignore
|
|
550
|
+
zip.file(resolvePath(`${sanitizeName(scope.replace(TerraQualityRegex.REGEX_G_REGEX_10(), '-'))}.json`), JSON.stringify(items.map(d => ({ title: d.title, slug: d.slug, source: d.body })), null, 2));
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
else if (tsErr)
|
|
554
|
+
console.error(`[archive] Error fetching TSDocs for scope ${scope}:`, tsErr);
|
|
555
|
+
}
|
|
556
|
+
catch (e) {
|
|
557
|
+
console.error(`[archive] Exception processing TSDocs ${p}:`, e);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
else {
|
|
561
|
+
try {
|
|
562
|
+
const res = await fetchAssetData(p);
|
|
563
|
+
if (res && res.buffer) {
|
|
564
|
+
let tgtPath = resolvePath(p);
|
|
565
|
+
if (!TerraQualityRegex.REGEX_A_Z0_9_I_REGEX_2().test(tgtPath)) {
|
|
566
|
+
let forcedExt = '';
|
|
567
|
+
if (res.contentType.includes('application/pdf'))
|
|
568
|
+
forcedExt = '.pdf';
|
|
569
|
+
else if (res.contentType.includes('image/jpeg'))
|
|
570
|
+
forcedExt = '.jpg';
|
|
571
|
+
else if (res.contentType.includes('image/png'))
|
|
572
|
+
forcedExt = '.png';
|
|
573
|
+
else if (res.contentType.includes('image/webp'))
|
|
574
|
+
forcedExt = '.webp';
|
|
575
|
+
else if (res.contentType.includes('application/json'))
|
|
576
|
+
forcedExt = '.json';
|
|
577
|
+
else {
|
|
578
|
+
const arr = new Uint8Array(res.buffer.slice(0, 4));
|
|
579
|
+
if (arr[0] === 0x25 && arr[1] === 0x50 && arr[2] === 0x44 && arr[3] === 0x44)
|
|
580
|
+
forcedExt = '.pdf';
|
|
581
|
+
}
|
|
582
|
+
if (forcedExt)
|
|
583
|
+
tgtPath = resolvePath(p, forcedExt);
|
|
584
|
+
if (forcedExt === '.pdf' && o.merges.pdfs && mergedPdf) {
|
|
585
|
+
const { PDFDocument } = await import('pdf-lib');
|
|
586
|
+
const pdfDoc = await PDFDocument.load(res.buffer);
|
|
587
|
+
(await mergedPdf.copyPages(pdfDoc, pdfDoc.getPageIndices())).forEach((p) => mergedPdf.addPage(p));
|
|
588
|
+
updateProgress();
|
|
589
|
+
continue;
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
zip.file(tgtPath, res.buffer);
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
catch (e) {
|
|
596
|
+
console.error(`[archive] Exception processing Other attachment ${p}:`, e);
|
|
597
|
+
failures.push({
|
|
598
|
+
filename: assetNameMap.get(p.split('?')[0] || p) || resolvePath(p),
|
|
599
|
+
path: p,
|
|
600
|
+
reason: e instanceof Error ? e.message : String(e),
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
updateProgress();
|
|
605
|
+
}
|
|
606
|
+
// FINALISE MERGES
|
|
607
|
+
// Write distinct JSON files for merged categories to prevent structural collisions
|
|
608
|
+
// and isolate domain concerns when consumed by external tools.
|
|
609
|
+
if (o.merges.tsdocs && gJson['tsdocs']) {
|
|
610
|
+
zip.file(`${f}-tsdocs.json`, JSON.stringify(gJson['tsdocs'], null, 2));
|
|
611
|
+
delete gJson['tsdocs'];
|
|
612
|
+
}
|
|
613
|
+
if (o.merges.youtube && gJson['youtube']) {
|
|
614
|
+
zip.file(`${f}-youtube.json`, JSON.stringify(gJson['youtube'], null, 2));
|
|
615
|
+
delete gJson['youtube'];
|
|
616
|
+
}
|
|
617
|
+
if (o.merges.pages && o.format === 'raw' && Object.keys(gJson).length > 0)
|
|
618
|
+
zip.file(`${f}-mdx.json`, JSON.stringify(gJson, null, 2));
|
|
619
|
+
if (o.merges.pages && textJson.length > 0)
|
|
620
|
+
zip.file(`${f}-text.json`, JSON.stringify(textJson, null, 2));
|
|
621
|
+
console.info('[archive] merged text summary', {
|
|
622
|
+
count: textJson.length,
|
|
623
|
+
files: textJson.map((i) => i.filename),
|
|
624
|
+
});
|
|
625
|
+
if (failures.length) {
|
|
626
|
+
console.warn('[archive] export completed with failures', {
|
|
627
|
+
count: failures.length,
|
|
628
|
+
failures,
|
|
629
|
+
});
|
|
630
|
+
toast.warning(`${failures.length} attachment${failures.length === 1 ? '' : 's'} failed. See the browser console for details.`);
|
|
631
|
+
}
|
|
632
|
+
else
|
|
633
|
+
toast.success('Export completed.');
|
|
634
|
+
if (wantsPdfMerge && mergedPdf && mergedPdf.getPageCount() > 0) {
|
|
635
|
+
try {
|
|
636
|
+
const mergedPdfBytes = await mergedPdf.save();
|
|
637
|
+
zip.file(`${f}-merged.pdf`, mergedPdfBytes);
|
|
638
|
+
console.info('[archive] merged PDF finalized', {
|
|
639
|
+
pages: mergedPdf.getPageCount(),
|
|
640
|
+
bytes: mergedPdfBytes.length,
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
catch (e) {
|
|
644
|
+
console.error(`[archive] Error generating Master PDF:`, e);
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
const href = URL.createObjectURL(await zip.generateAsync({ type: 'blob' }));
|
|
648
|
+
const link = document.createElement('a');
|
|
649
|
+
link.href = href;
|
|
650
|
+
link.download = `${f}.zip`;
|
|
651
|
+
link.click();
|
|
652
|
+
URL.revokeObjectURL(href);
|
|
653
|
+
}
|
|
654
|
+
//# sourceMappingURL=archive.js.map
|