@axerity/cli 0.1.3 → 0.2.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/bin/axerity.js +67 -194
- package/dist/client/_app/immutable/assets/0.jCJXzoiy.css +1 -0
- package/dist/client/_app/immutable/assets/2.DZRzHaE1.css +1 -0
- package/dist/client/_app/immutable/assets/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-cyrillic-wght-normal.BEAKL7Jp.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-latin-ext-wght-normal.DC-KSUi6.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-latin-wght-normal.BgDaEnEv.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-mono-cyrillic-ext-wght-normal.I4S5GZfc.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-mono-cyrillic-wght-normal.BmXc_FBt.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-mono-latin-ext-wght-normal.DrnZ1wKl.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-mono-latin-wght-normal.B_7UjwxQ.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-mono-symbols2-wght-normal.GZpp1pK2.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-mono-vietnamese-wght-normal.D8KDMBhC.woff2 +0 -0
- package/dist/client/_app/immutable/assets/geist-vietnamese-wght-normal.6IgcOCM7.woff2 +0 -0
- package/dist/client/_app/immutable/chunks/0CIKaoUA.js +139 -0
- package/dist/client/_app/immutable/chunks/0tC8Ubqr.js +2 -0
- package/dist/client/_app/immutable/chunks/29nvmPLe2.js +1 -0
- package/dist/client/_app/immutable/chunks/9IV9o0dV2.js +4 -0
- package/dist/client/_app/immutable/chunks/B-elEOLV.js +24 -0
- package/dist/client/_app/immutable/chunks/B1R9-4vu.js +89 -0
- package/dist/client/_app/immutable/chunks/B1eXHGII2.js +10 -0
- package/dist/client/_app/immutable/chunks/B2NKIbe62.js +206 -0
- package/dist/client/_app/immutable/chunks/B5Brrqz92.js +1 -0
- package/dist/client/_app/immutable/chunks/B6nymVS3.js +1 -0
- package/dist/client/_app/immutable/chunks/B8E5l9fg2.js +1 -0
- package/dist/client/_app/immutable/chunks/B8gBHxth2.js +1 -0
- package/dist/client/_app/immutable/chunks/BC8A8xkk.js +2 -0
- package/dist/client/_app/immutable/chunks/BGU5ZGjx.js +1 -0
- package/dist/client/_app/immutable/chunks/BLhBgXDr2.js +1 -0
- package/dist/client/_app/immutable/chunks/BNdlLOgu2.js +2 -0
- package/dist/client/_app/immutable/chunks/BQyPqLag.js +84 -0
- package/dist/client/_app/immutable/chunks/BRQspS80.js +162 -0
- package/dist/client/_app/immutable/chunks/BVz-DmJs2.js +132 -0
- package/dist/client/_app/immutable/chunks/BWPyau1x.js +1 -0
- package/dist/client/_app/immutable/chunks/BXD4L9Ly.js +9 -0
- package/dist/client/_app/immutable/chunks/B_Yg36qy2.js +1 -0
- package/dist/client/_app/immutable/chunks/BcuUc08l.js +292 -0
- package/dist/client/_app/immutable/chunks/BdsP84LY.js +231 -0
- package/dist/client/_app/immutable/chunks/Bie0X5s02.js +62 -0
- package/dist/client/_app/immutable/chunks/BifhSqXX.js +1 -0
- package/dist/client/_app/immutable/chunks/BjVjgMFk2.js +15 -0
- package/dist/client/_app/immutable/chunks/BpwmCo88.js +1 -0
- package/dist/client/_app/immutable/chunks/BxQVBtgJ.js +1 -0
- package/dist/client/_app/immutable/chunks/C2oEw9bf.js +34 -0
- package/dist/client/_app/immutable/chunks/C6Oj8XFW.js +1 -0
- package/dist/client/_app/immutable/chunks/C6v0vZRT2.js +36 -0
- package/dist/client/_app/immutable/chunks/C7H7uo1r.js +70 -0
- package/dist/client/_app/immutable/chunks/C8Fc0cco.js +1 -0
- package/dist/client/_app/immutable/chunks/CDfHwfr9.js +1 -0
- package/dist/client/_app/immutable/chunks/CEW3xh3M.js +124 -0
- package/dist/client/_app/immutable/chunks/CFNmf5NX.js +1 -0
- package/dist/client/_app/immutable/chunks/CGhzzHe4.js +1 -0
- package/dist/client/_app/immutable/chunks/CJMWL00f.js +1 -0
- package/dist/client/_app/immutable/chunks/CLrCY0qQ2.js +1 -0
- package/dist/client/_app/immutable/chunks/COu5VFF2.js +78 -0
- package/dist/client/_app/immutable/chunks/CSKSodPl2.js +1 -0
- package/dist/client/_app/immutable/chunks/CVNFCEpi.js +1 -0
- package/dist/client/_app/immutable/chunks/CWUJwgR2.js +1 -0
- package/dist/client/_app/immutable/chunks/CXC42hVj.js +70 -0
- package/dist/client/_app/immutable/chunks/CZqBFf11.js +30 -0
- package/dist/client/_app/immutable/chunks/CaWcga612.js +1 -0
- package/dist/client/_app/immutable/chunks/CcX7Oofq.js +1 -0
- package/dist/client/_app/immutable/chunks/Chn8RaCU2.js +1 -0
- package/dist/client/_app/immutable/chunks/CtmfIXf-.js +161 -0
- package/dist/client/_app/immutable/chunks/D0Co2O6p.js +7 -0
- package/dist/client/_app/immutable/chunks/D1O9pT8r.js +1 -0
- package/dist/client/_app/immutable/chunks/D1z0eUZA.js +3 -0
- package/dist/client/_app/immutable/chunks/D5KVydqU.js +1 -0
- package/dist/client/_app/immutable/chunks/D6jRqBbL.js +1 -0
- package/dist/client/_app/immutable/chunks/DDXR3Aw12.js +1 -0
- package/dist/client/_app/immutable/chunks/DG5yTEkY.js +1 -0
- package/dist/client/_app/immutable/chunks/DGHybmkM2.js +1 -0
- package/dist/client/_app/immutable/chunks/DITdNjTm.js +7 -0
- package/dist/client/_app/immutable/chunks/D_nZbl6c.js +162 -0
- package/dist/client/_app/immutable/chunks/Dg6QheNk.js +85 -0
- package/dist/client/_app/immutable/chunks/Dn1BfjD4.js +1 -0
- package/dist/client/_app/immutable/chunks/DpEnPnBc.js +1 -0
- package/dist/client/_app/immutable/chunks/Drl36yuV.js +40 -0
- package/dist/client/_app/immutable/chunks/ED9-GWAc2.js +10 -0
- package/dist/client/_app/immutable/chunks/FqbQrHcz2.js +321 -0
- package/dist/client/_app/immutable/chunks/PLsDE8Xa.js +24 -0
- package/dist/client/_app/immutable/chunks/PwGqCEPd.js +106 -0
- package/dist/client/_app/immutable/chunks/QmWylQL4.js +96 -0
- package/dist/client/_app/immutable/chunks/SbORYBuH.js +1 -0
- package/dist/client/_app/immutable/chunks/Vhh-h91d.js +257 -0
- package/dist/client/_app/immutable/chunks/Y3d8lUBM.js +120 -0
- package/dist/client/_app/immutable/chunks/aheLp5ES.js +32 -0
- package/dist/client/_app/immutable/chunks/dcFrWhgf.js +1 -0
- package/dist/client/_app/immutable/chunks/dqbyyLvi2.js +10 -0
- package/dist/client/_app/immutable/chunks/hFfQmBrk2.js +1 -0
- package/dist/client/_app/immutable/chunks/m89wIWMZ.js +1 -0
- package/dist/client/_app/immutable/chunks/mktnrgVa.js +1 -0
- package/dist/client/_app/immutable/chunks/qD2cSsUD2.js +1 -0
- package/dist/client/_app/immutable/chunks/v-V-aVm52.js +43 -0
- package/dist/client/_app/immutable/chunks/v97jXyQK.js +3 -0
- package/dist/client/_app/immutable/chunks/wCc4pE4l.js +3 -0
- package/dist/client/_app/immutable/chunks/xihTtKlq.js +1 -0
- package/dist/client/_app/immutable/entry/app.BxBJhrll.js +2 -0
- package/dist/client/_app/immutable/entry/start.mAPciu1x.js +1 -0
- package/dist/client/_app/immutable/nodes/0.C7MOOY8s.js +1 -0
- package/dist/client/_app/immutable/nodes/1.C1SZKZS6.js +1 -0
- package/dist/client/_app/immutable/nodes/2.C9w6NQmI.js +28 -0
- package/dist/client/_app/version.json +1 -0
- package/dist/env.js +94 -0
- package/dist/handler.js +1494 -0
- package/dist/index.js +345 -0
- package/dist/server/chunks/0-lMxIppsX.js +40 -0
- package/dist/server/chunks/0-lMxIppsX.js.map +1 -0
- package/dist/server/chunks/1-CyLqCHnY.js +9 -0
- package/dist/server/chunks/1-CyLqCHnY.js.map +1 -0
- package/dist/server/chunks/2-B-CcMKoh.js +54 -0
- package/dist/server/chunks/2-B-CcMKoh.js.map +1 -0
- package/dist/server/chunks/Icon-B5VFrlh0.js +186 -0
- package/dist/server/chunks/Icon-B5VFrlh0.js.map +1 -0
- package/dist/server/chunks/_error.svelte-COifK9P1.js +48 -0
- package/dist/server/chunks/_error.svelte-COifK9P1.js.map +1 -0
- package/dist/server/chunks/_layout.svelte-DTQwWfEr.js +31 -0
- package/dist/server/chunks/_layout.svelte-DTQwWfEr.js.map +1 -0
- package/dist/server/chunks/_page.svelte-gMTRy91w.js +2206 -0
- package/dist/server/chunks/_page.svelte-gMTRy91w.js.map +1 -0
- package/dist/server/chunks/_server.ts-BBt3KS4Z.js +32 -0
- package/dist/server/chunks/_server.ts-BBt3KS4Z.js.map +1 -0
- package/dist/server/chunks/_server.ts-BaIDzhzq.js +26 -0
- package/dist/server/chunks/_server.ts-BaIDzhzq.js.map +1 -0
- package/dist/server/chunks/_server.ts-BtzVXaCw.js +29 -0
- package/dist/server/chunks/_server.ts-BtzVXaCw.js.map +1 -0
- package/dist/server/chunks/_server.ts-BuKSyj8m.js +37 -0
- package/dist/server/chunks/_server.ts-BuKSyj8m.js.map +1 -0
- package/dist/server/chunks/_server.ts-Cfw-nQ4-.js +31 -0
- package/dist/server/chunks/_server.ts-Cfw-nQ4-.js.map +1 -0
- package/dist/server/chunks/_server.ts-DlaxEvWB.js +53 -0
- package/dist/server/chunks/_server.ts-DlaxEvWB.js.map +1 -0
- package/dist/server/chunks/_server.ts-DnjaLdrg.js +195 -0
- package/dist/server/chunks/_server.ts-DnjaLdrg.js.map +1 -0
- package/dist/server/chunks/_server.ts-T58MO2wL.js +41 -0
- package/dist/server/chunks/_server.ts-T58MO2wL.js.map +1 -0
- package/dist/server/chunks/content-store-DPJsj8gD.js +5252 -0
- package/dist/server/chunks/content-store-DPJsj8gD.js.map +1 -0
- package/dist/server/chunks/docpage-BkHysAhp.js +5 -0
- package/dist/server/chunks/docpage-BkHysAhp.js.map +1 -0
- package/dist/server/chunks/exports-ZnEJ4gG9.js +758 -0
- package/dist/server/chunks/exports-ZnEJ4gG9.js.map +1 -0
- package/dist/server/chunks/hooks.server-nz527EC9.js +42 -0
- package/dist/server/chunks/hooks.server-nz527EC9.js.map +1 -0
- package/dist/server/chunks/internal-CvDbuC7W.js +5374 -0
- package/dist/server/chunks/internal-CvDbuC7W.js.map +1 -0
- package/dist/server/chunks/mdfile-DBiwGtNY.js +5 -0
- package/dist/server/chunks/mdfile-DBiwGtNY.js.map +1 -0
- package/dist/server/chunks/site-BfALkgJ-.js +52 -0
- package/dist/server/chunks/site-BfALkgJ-.js.map +1 -0
- package/dist/server/index.js +4356 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/manifest.js +103 -0
- package/dist/server/manifest.js.map +1 -0
- package/dist/shims.js +32 -0
- package/package.json +24 -16
- package/runtime/crawl.js +48 -0
- package/runtime/preview.js +42 -0
- package/runtime/serve.js +69 -0
- package/mdsvex.config.js +0 -261
- package/scripts/prepare-engine.mjs +0 -20
- package/src/app.d.ts +0 -17
- package/src/app.html +0 -39
- package/src/content/demo/api/meta.json +0 -5
- package/src/content/demo/api/pet/add-pet.md +0 -105
- package/src/content/demo/api/pet/delete-pet.md +0 -70
- package/src/content/demo/api/pet/find-by-status.md +0 -72
- package/src/content/demo/api/pet/find-by-tags.md +0 -64
- package/src/content/demo/api/pet/get-pet.md +0 -99
- package/src/content/demo/api/pet/meta.json +0 -15
- package/src/content/demo/api/pet/pet-object.md +0 -112
- package/src/content/demo/api/pet/update-pet-with-form.md +0 -69
- package/src/content/demo/api/pet/update-pet.md +0 -79
- package/src/content/demo/api/pet/upload-image.md +0 -79
- package/src/content/demo/api/store/delete-order.md +0 -62
- package/src/content/demo/api/store/get-order.md +0 -70
- package/src/content/demo/api/store/inventory.md +0 -54
- package/src/content/demo/api/store/meta.json +0 -5
- package/src/content/demo/api/store/order-object.md +0 -77
- package/src/content/demo/api/store/place-order.md +0 -83
- package/src/content/demo/api/user/create-user.md +0 -69
- package/src/content/demo/api/user/create-with-list.md +0 -57
- package/src/content/demo/api/user/delete-user.md +0 -61
- package/src/content/demo/api/user/get-user.md +0 -69
- package/src/content/demo/api/user/login.md +0 -80
- package/src/content/demo/api/user/logout.md +0 -45
- package/src/content/demo/api/user/meta.json +0 -14
- package/src/content/demo/api/user/update-user.md +0 -69
- package/src/content/demo/api/user/user-object.md +0 -85
- package/src/content/demo/changelog.md +0 -44
- package/src/content/demo/components/accordion.md +0 -70
- package/src/content/demo/components/api.md +0 -185
- package/src/content/demo/components/badge.md +0 -34
- package/src/content/demo/components/callout.md +0 -83
- package/src/content/demo/components/cards.md +0 -88
- package/src/content/demo/components/code-group.md +0 -55
- package/src/content/demo/components/columns.md +0 -42
- package/src/content/demo/components/frame.md +0 -51
- package/src/content/demo/components/icon.md +0 -54
- package/src/content/demo/components/kbd.md +0 -28
- package/src/content/demo/components/meta.json +0 -26
- package/src/content/demo/components/roadmap.md +0 -86
- package/src/content/demo/components/steps.md +0 -72
- package/src/content/demo/components/tabs.md +0 -146
- package/src/content/demo/components/tooltip.md +0 -44
- package/src/content/demo/components/tree.md +0 -83
- package/src/content/demo/components/type-table.md +0 -77
- package/src/content/demo/components/update.md +0 -48
- package/src/content/demo/components/video.md +0 -56
- package/src/content/demo/components/webhooks.md +0 -109
- package/src/content/demo/components/websockets.md +0 -101
- package/src/content/demo/configuration/ai.md +0 -40
- package/src/content/demo/configuration/cli.md +0 -48
- package/src/content/demo/configuration/deployment.md +0 -105
- package/src/content/demo/configuration/index.md +0 -92
- package/src/content/demo/configuration/layouts.md +0 -51
- package/src/content/demo/configuration/meta.json +0 -5
- package/src/content/demo/configuration/navigation.md +0 -167
- package/src/content/demo/configuration/openapi.md +0 -103
- package/src/content/demo/configuration/search.md +0 -36
- package/src/content/demo/index.md +0 -59
- package/src/content/demo/installation.md +0 -66
- package/src/content/demo/meta.json +0 -15
- package/src/content/demo/quick-start.md +0 -47
- package/src/content/demo/theming/advanced.md +0 -116
- package/src/content/demo/theming/code.md +0 -66
- package/src/content/demo/theming/colors.md +0 -103
- package/src/content/demo/theming/index.md +0 -88
- package/src/content/demo/theming/layout.md +0 -71
- package/src/content/demo/theming/meta.json +0 -5
- package/src/content/demo/theming/themes.md +0 -99
- package/src/content/demo/theming/typography.md +0 -83
- package/src/content/demo/writing/code-blocks.md +0 -154
- package/src/content/demo/writing/diagrams.md +0 -44
- package/src/content/demo/writing/frontmatter.md +0 -33
- package/src/content/demo/writing/markdown.md +0 -62
- package/src/content/demo/writing/meta.json +0 -5
- package/src/hooks.server.ts +0 -49
- package/src/lib/assets/favicon.svg +0 -1
- package/src/lib/base.ts +0 -12
- package/src/lib/components/DynamicIcon.svelte +0 -41
- package/src/lib/components/docs/Analytics.svelte +0 -38
- package/src/lib/components/docs/Banner.svelte +0 -44
- package/src/lib/components/docs/Breadcrumbs.svelte +0 -38
- package/src/lib/components/docs/CopyPageMenu.svelte +0 -119
- package/src/lib/components/docs/DocsLayout.svelte +0 -192
- package/src/lib/components/docs/Footer.svelte +0 -60
- package/src/lib/components/docs/Mermaid.svelte +0 -39
- package/src/lib/components/docs/Navbar.svelte +0 -144
- package/src/lib/components/docs/PageMeta.svelte +0 -35
- package/src/lib/components/docs/PageNav.svelte +0 -44
- package/src/lib/components/docs/SearchDialog.svelte +0 -182
- package/src/lib/components/docs/Sidebar.svelte +0 -85
- package/src/lib/components/docs/SidebarDropdown.svelte +0 -56
- package/src/lib/components/docs/SidebarFooterLinks.svelte +0 -19
- package/src/lib/components/docs/SidebarGroup.svelte +0 -54
- package/src/lib/components/docs/SidebarLink.svelte +0 -67
- package/src/lib/components/docs/TableOfContents.svelte +0 -77
- package/src/lib/components/docs/ThemeToggle.svelte +0 -19
- package/src/lib/components/docs/VersionSwitcher.svelte +0 -80
- package/src/lib/components/kit/Accordion.svelte +0 -60
- package/src/lib/components/kit/AccordionGroup.svelte +0 -13
- package/src/lib/components/kit/Badge.svelte +0 -32
- package/src/lib/components/kit/Callout.svelte +0 -51
- package/src/lib/components/kit/Card.svelte +0 -72
- package/src/lib/components/kit/CardGroup.svelte +0 -21
- package/src/lib/components/kit/CodeGroup.svelte +0 -65
- package/src/lib/components/kit/Columns.svelte +0 -26
- package/src/lib/components/kit/Event.svelte +0 -23
- package/src/lib/components/kit/EventList.svelte +0 -9
- package/src/lib/components/kit/File.svelte +0 -15
- package/src/lib/components/kit/Folder.svelte +0 -46
- package/src/lib/components/kit/Frame.svelte +0 -81
- package/src/lib/components/kit/Icon.svelte +0 -17
- package/src/lib/components/kit/Kbd.svelte +0 -11
- package/src/lib/components/kit/Roadmap.svelte +0 -15
- package/src/lib/components/kit/RoadmapItem.svelte +0 -109
- package/src/lib/components/kit/Step.svelte +0 -63
- package/src/lib/components/kit/Steps.svelte +0 -16
- package/src/lib/components/kit/Tab.svelte +0 -27
- package/src/lib/components/kit/Tabs.svelte +0 -75
- package/src/lib/components/kit/Tooltip.svelte +0 -33
- package/src/lib/components/kit/Tree.svelte +0 -11
- package/src/lib/components/kit/TypeTable.svelte +0 -187
- package/src/lib/components/kit/Update.svelte +0 -32
- package/src/lib/components/kit/Video.svelte +0 -64
- package/src/lib/components/kit/accordion-context.ts +0 -1
- package/src/lib/components/kit/api/Api.svelte +0 -80
- package/src/lib/components/kit/api/ApiExamplePanel.svelte +0 -100
- package/src/lib/components/kit/api/ApiField.svelte +0 -124
- package/src/lib/components/kit/api/Channel.svelte +0 -121
- package/src/lib/components/kit/api/Endpoint.svelte +0 -116
- package/src/lib/components/kit/api/Enum.svelte +0 -44
- package/src/lib/components/kit/api/EnumValues.svelte +0 -35
- package/src/lib/components/kit/api/Expandable.svelte +0 -70
- package/src/lib/components/kit/api/Message.svelte +0 -67
- package/src/lib/components/kit/api/ObjectExample.svelte +0 -11
- package/src/lib/components/kit/api/RequestExample.svelte +0 -11
- package/src/lib/components/kit/api/ResponseExample.svelte +0 -11
- package/src/lib/components/kit/api/Webhook.svelte +0 -115
- package/src/lib/components/kit/api/api-context.ts +0 -15
- package/src/lib/components/kit/tabs-context.ts +0 -8
- package/src/lib/components/kit/tabs-store.svelte.ts +0 -28
- package/src/lib/config/site.ts +0 -34
- package/src/lib/content/index.ts +0 -50
- package/src/lib/content/raw.ts +0 -21
- package/src/lib/content/tree.ts +0 -169
- package/src/lib/index.ts +0 -79
- package/src/lib/nav-match.ts +0 -23
- package/src/lib/openapi/generate.ts +0 -629
- package/src/lib/server/og.ts +0 -140
- package/src/lib/state/search.svelte.ts +0 -9
- package/src/lib/state/theme.svelte.ts +0 -58
- package/src/lib/types.ts +0 -216
- package/src/params/docpage.ts +0 -3
- package/src/params/mdfile.ts +0 -3
- package/src/routes/+error.svelte +0 -46
- package/src/routes/+layout.svelte +0 -25
- package/src/routes/[...path=mdfile]/+server.ts +0 -21
- package/src/routes/[...slug=docpage]/+page.svelte +0 -63
- package/src/routes/[...slug=docpage]/+page.ts +0 -44
- package/src/routes/layout.css +0 -897
- package/src/routes/llms-full.txt/+server.ts +0 -22
- package/src/routes/llms.txt/+server.ts +0 -20
- package/src/routes/og/[...slug]/+server.ts +0 -77
- package/src/routes/rss.xml/+server.ts +0 -65
- package/src/routes/search.json/+server.ts +0 -54
- package/src/routes/sitemap.xml/+server.ts +0 -21
- package/svelte.config.js +0 -35
- package/tsconfig.json +0 -20
- package/vite.config.ts +0 -46
- /package/{static → dist/client}/favicon-dark.svg +0 -0
- /package/{static → dist/client}/favicon-light.svg +0 -0
- /package/{static → dist/client}/favicon.svg +0 -0
- /package/{static → dist/client}/fonts/geist-400.ttf +0 -0
- /package/{static → dist/client}/fonts/geist-600.ttf +0 -0
- /package/{static → dist/client}/fonts/geist-700.ttf +0 -0
- /package/{static → dist/client}/og-image.png +0 -0
- /package/{static → dist/client}/robots.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-store-DPJsj8gD.js","sources":["../../../node_modules/.pnpm/github-slugger@2.0.0/node_modules/github-slugger/regex.js","../../../node_modules/.pnpm/github-slugger@2.0.0/node_modules/github-slugger/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/blockquote.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/break.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/code.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/delete.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/emphasis.js","../../../node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/index.js","../../../node_modules/.pnpm/micromark-util-sanitize-uri@2.0.1/node_modules/micromark-util-sanitize-uri/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/heading.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/html.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/revert.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/image-reference.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/image.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/inline-code.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/link-reference.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/link.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/list-item.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/list.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/paragraph.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/root.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/strong.js","../../../node_modules/.pnpm/unist-util-position@5.0.0/node_modules/unist-util-position/lib/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table-row.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/table-cell.js","../../../node_modules/.pnpm/trim-lines@3.0.1/node_modules/trim-lines/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/text.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/handlers/index.js","../../../node_modules/.pnpm/@ungap+structured-clone@1.3.1/node_modules/@ungap/structured-clone/esm/types.js","../../../node_modules/.pnpm/@ungap+structured-clone@1.3.1/node_modules/@ungap/structured-clone/esm/deserialize.js","../../../node_modules/.pnpm/@ungap+structured-clone@1.3.1/node_modules/@ungap/structured-clone/esm/serialize.js","../../../node_modules/.pnpm/@ungap+structured-clone@1.3.1/node_modules/@ungap/structured-clone/esm/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/footer.js","../../../node_modules/.pnpm/unist-util-is@6.0.1/node_modules/unist-util-is/lib/index.js","../../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/color.node.js","../../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/index.js","../../../node_modules/.pnpm/unist-util-visit@5.1.0/node_modules/unist-util-visit/lib/index.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/state.js","../../../node_modules/.pnpm/mdast-util-to-hast@13.2.1/node_modules/mdast-util-to-hast/lib/index.js","../../../node_modules/.pnpm/nlcst-to-string@4.0.0/node_modules/nlcst-to-string/lib/index.js","../../../node_modules/.pnpm/array-iterate@2.0.1/node_modules/array-iterate/lib/index.js","../../../node_modules/.pnpm/unist-util-modify-children@4.0.0/node_modules/unist-util-modify-children/lib/index.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-affix-exceptions.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/expressions.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-affix-symbol.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/break-implicit-sentences.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/make-final-white-space-siblings.js","../../../node_modules/.pnpm/unist-util-visit-children@3.0.0/node_modules/unist-util-visit-children/lib/index.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/make-initial-white-space-siblings.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-final-word-symbol.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-initial-digit-sentences.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-initial-lower-case-letter-sentences.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-initial-word-symbol.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-initialisms.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-inner-word-symbol.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-inner-word-slash.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-non-word-sentences.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-prefix-exceptions.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/merge-remaining-full-stops.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/remove-empty-nodes.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/plugin/patch-position.js","../../../node_modules/.pnpm/parse-latin@7.0.0/node_modules/parse-latin/lib/index.js","../../../node_modules/.pnpm/retext-latin@4.0.0/node_modules/retext-latin/lib/index.js","../../../node_modules/.pnpm/retext-stringify@4.0.0/node_modules/retext-stringify/lib/index.js","../../../node_modules/.pnpm/retext@9.0.0/node_modules/retext/index.js","../../../node_modules/.pnpm/retext-smartypants@6.2.0/node_modules/retext-smartypants/lib/index.js","../../../node_modules/.pnpm/remark-smartypants@3.0.2/node_modules/remark-smartypants/dist/plugin.js","../../../.svelte-kit/adapter-node/chunks/content-store.js"],"sourcesContent":["// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nexport const regex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n","import { regex } from './regex.js'\n\nconst own = Object.hasOwnProperty\n\n/**\n * Slugger.\n */\nexport default class BananaSlug {\n /**\n * Create a new slug class.\n */\n constructor () {\n /** @type {Record<string, number>} */\n // eslint-disable-next-line no-unused-expressions\n this.occurrences\n\n this.reset()\n }\n\n /**\n * Generate a unique slug.\n *\n * Tracks previously generated slugs: repeated calls with the same value\n * will result in different slugs.\n * Use the `slug` function to get same slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\n slug (value, maintainCase) {\n const self = this\n let result = slug(value, maintainCase === true)\n const originalSlug = result\n\n while (own.call(self.occurrences, result)) {\n self.occurrences[originalSlug]++\n result = originalSlug + '-' + self.occurrences[originalSlug]\n }\n\n self.occurrences[result] = 0\n\n return result\n }\n\n /**\n * Reset - Forget all previous slugs\n *\n * @return void\n */\n reset () {\n this.occurrences = Object.create(null)\n }\n}\n\n/**\n * Generate a slug.\n *\n * Does not track previously generated slugs: repeated calls with the same value\n * will result in the exact same slug.\n * Use the `GithubSlugger` class to get unique slugs.\n *\n * @param {string} value\n * String of text to slugify\n * @param {boolean} [maintainCase=false]\n * Keep the current case, otherwise make all lowercase\n * @return {string}\n * A unique slug string\n */\nexport function slug (value, maintainCase) {\n if (typeof value !== 'string') return ''\n if (!maintainCase) value = value.toLowerCase()\n return value.replace(regex, '').replace(/ /g, '-')\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Blockquote} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Blockquote} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function blockquote(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'blockquote',\n properties: {},\n children: state.wrap(state.all(node), true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {Break} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Break} node\n * mdast node.\n * @returns {Array<Element | Text>}\n * hast element content.\n */\nexport function hardBreak(state, node) {\n /** @type {Element} */\n const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n state.patch(node, result)\n return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Code} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Code} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function code(state, node) {\n const value = node.value ? node.value + '\\n' : ''\n /** @type {Properties} */\n const properties = {}\n // Someone can write `js python	ruby`.\n const language = node.lang ? node.lang.split(/\\s+/) : []\n\n // GH/CM still drop the non-first languages.\n if (language.length > 0) {\n properties.className = ['language-' + language[0]]\n }\n\n // Create `<code>`.\n /** @type {Element} */\n let result = {\n type: 'element',\n tagName: 'code',\n properties,\n children: [{type: 'text', value}]\n }\n\n if (node.meta) {\n result.data = {meta: node.meta}\n }\n\n state.patch(node, result)\n result = state.applyData(node, result)\n\n // Create `<pre>`.\n result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n state.patch(node, result)\n return result\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Delete} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Delete} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strikethrough(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'del',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Emphasis} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Emphasis} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function emphasis(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'em',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code !== null && (code < 32 || code === 127)\n );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEnding(code) {\n return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n * Code.\n * @returns {boolean}\n * Whether it matches.\n */\nexport function markdownSpace(code) {\n return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n * Code.\n * @returns\n * Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n * Expression.\n * @returns {(code: Code) => boolean}\n * Check.\n */\nfunction regexCheck(regex) {\n return check;\n\n /**\n * Check whether a code matches the bound regex.\n *\n * @param {Code} code\n * Character code.\n * @returns {boolean}\n * Whether the character code matches the bound regex.\n */\n function check(code) {\n return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n }\n}","import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n * URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n * Allowed protocols.\n * @returns {string}\n * Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n const value = encode(normalizeUri(url || ''));\n if (!protocol) {\n return value;\n }\n const colon = value.indexOf(':');\n const questionMark = value.indexOf('?');\n const numberSign = value.indexOf('#');\n const slash = value.indexOf('/');\n if (\n // If there is no protocol, it’s relative.\n colon < 0 ||\n // If the first colon is after a `?`, `#`, or `/`, it’s not a protocol.\n slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n // It is a protocol, it should be allowed.\n protocol.test(value.slice(0, colon))) {\n return value;\n }\n return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n * URI to normalize.\n * @returns {string}\n * Normalized URI.\n */\nexport function normalizeUri(value) {\n /** @type {Array<string>} */\n const result = [];\n let index = -1;\n let start = 0;\n let skip = 0;\n while (++index < value.length) {\n const code = value.charCodeAt(index);\n /** @type {string} */\n let replace = '';\n\n // A correct percent encoded value.\n if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n skip = 2;\n }\n // ASCII.\n else if (code < 128) {\n if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n replace = String.fromCharCode(code);\n }\n }\n // Astral.\n else if (code > 55_295 && code < 57_344) {\n const next = value.charCodeAt(index + 1);\n\n // A correct surrogate pair.\n if (code < 56_320 && next > 56_319 && next < 57_344) {\n replace = String.fromCharCode(code, next);\n skip = 1;\n }\n // Lone surrogate.\n else {\n replace = \"\\uFFFD\";\n }\n }\n // Unicode.\n else {\n replace = String.fromCharCode(code);\n }\n if (replace) {\n result.push(value.slice(start, index), encodeURIComponent(replace));\n start = index + skip + 1;\n replace = '';\n }\n if (skip) {\n index += skip;\n skip = 0;\n }\n }\n return result.join('') + value.slice(start);\n}","/**\n * @import {Element} from 'hast'\n * @import {FootnoteReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {FootnoteReference} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function footnoteReference(state, node) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const id = String(node.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n const index = state.footnoteOrder.indexOf(id)\n /** @type {number} */\n let counter\n\n let reuseCounter = state.footnoteCounts.get(id)\n\n if (reuseCounter === undefined) {\n reuseCounter = 0\n state.footnoteOrder.push(id)\n counter = state.footnoteOrder.length\n } else {\n counter = index + 1\n }\n\n reuseCounter += 1\n state.footnoteCounts.set(id, reuseCounter)\n\n /** @type {Element} */\n const link = {\n type: 'element',\n tagName: 'a',\n properties: {\n href: '#' + clobberPrefix + 'fn-' + safeId,\n id:\n clobberPrefix +\n 'fnref-' +\n safeId +\n (reuseCounter > 1 ? '-' + reuseCounter : ''),\n dataFootnoteRef: true,\n ariaDescribedBy: ['footnote-label']\n },\n children: [{type: 'text', value: String(counter)}]\n }\n state.patch(node, link)\n\n /** @type {Element} */\n const sup = {\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [link]\n }\n state.patch(node, sup)\n return state.applyData(node, sup)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Heading} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Heading} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function heading(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'h' + node.depth,\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Html} from 'mdast'\n * @import {State} from '../state.js'\n * @import {Raw} from '../../index.js'\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n * Info passed around.\n * @param {Html} node\n * mdast node.\n * @returns {Element | Raw | undefined}\n * hast node.\n */\nexport function html(state, node) {\n if (state.options.allowDangerousHtml) {\n /** @type {Raw} */\n const result = {type: 'raw', value: node.value}\n state.patch(node, result)\n return state.applyData(node, result)\n }\n\n return undefined\n}\n","/**\n * @import {ElementContent} from 'hast'\n * @import {Reference, Nodes} from 'mdast'\n * @import {State} from './state.js'\n */\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n * Info passed around.\n * @param {Extract<Nodes, Reference>} node\n * Reference node (image, link).\n * @returns {Array<ElementContent>}\n * hast content.\n */\nexport function revert(state, node) {\n const subtype = node.referenceType\n let suffix = ']'\n\n if (subtype === 'collapsed') {\n suffix += '[]'\n } else if (subtype === 'full') {\n suffix += '[' + (node.label || node.identifier) + ']'\n }\n\n if (node.type === 'imageReference') {\n return [{type: 'text', value: '![' + node.alt + suffix}]\n }\n\n const contents = state.all(node)\n const head = contents[0]\n\n if (head && head.type === 'text') {\n head.value = '[' + head.value\n } else {\n contents.unshift({type: 'text', value: '['})\n }\n\n const tail = contents[contents.length - 1]\n\n if (tail && tail.type === 'text') {\n tail.value += suffix\n } else {\n contents.push({type: 'text', value: suffix})\n }\n\n return contents\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ImageReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ImageReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function imageReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Image} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Image} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function image(state, node) {\n /** @type {Properties} */\n const properties = {src: normalizeUri(node.url)}\n\n if (node.alt !== null && node.alt !== undefined) {\n properties.alt = node.alt\n }\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'img', properties, children: []}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Text} from 'hast'\n * @import {InlineCode} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {InlineCode} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function inlineCode(state, node) {\n /** @type {Text} */\n const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n state.patch(node, text)\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'code',\n properties: {},\n children: [text]\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {LinkReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {LinkReference} node\n * mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n * hast node.\n */\nexport function linkReference(state, node) {\n const id = String(node.identifier).toUpperCase()\n const definition = state.definitionById.get(id)\n\n if (!definition) {\n return revert(state, node)\n }\n\n /** @type {Properties} */\n const properties = {href: normalizeUri(definition.url || '')}\n\n if (definition.title !== null && definition.title !== undefined) {\n properties.title = definition.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {Link} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Link} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function link(state, node) {\n /** @type {Properties} */\n const properties = {href: normalizeUri(node.url)}\n\n if (node.title !== null && node.title !== undefined) {\n properties.title = node.title\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'a',\n properties,\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ListItem, Parents} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ListItem} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function listItem(state, node, parent) {\n const results = state.all(node)\n const loose = parent ? listLoose(parent) : listItemLoose(node)\n /** @type {Properties} */\n const properties = {}\n /** @type {Array<ElementContent>} */\n const children = []\n\n if (typeof node.checked === 'boolean') {\n const head = results[0]\n /** @type {Element} */\n let paragraph\n\n if (head && head.type === 'element' && head.tagName === 'p') {\n paragraph = head\n } else {\n paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n results.unshift(paragraph)\n }\n\n if (paragraph.children.length > 0) {\n paragraph.children.unshift({type: 'text', value: ' '})\n }\n\n paragraph.children.unshift({\n type: 'element',\n tagName: 'input',\n properties: {type: 'checkbox', checked: node.checked, disabled: true},\n children: []\n })\n\n // According to github-markdown-css, this class hides bullet.\n // See: <https://github.com/sindresorhus/github-markdown-css>.\n properties.className = ['task-list-item']\n }\n\n let index = -1\n\n while (++index < results.length) {\n const child = results[index]\n\n // Add eols before nodes, except if this is a loose, first paragraph.\n if (\n loose ||\n index !== 0 ||\n child.type !== 'element' ||\n child.tagName !== 'p'\n ) {\n children.push({type: 'text', value: '\\n'})\n }\n\n if (child.type === 'element' && child.tagName === 'p' && !loose) {\n children.push(...child.children)\n } else {\n children.push(child)\n }\n }\n\n const tail = results[results.length - 1]\n\n // Add a final eol.\n if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n children.push({type: 'text', value: '\\n'})\n }\n\n /** @type {Element} */\n const result = {type: 'element', tagName: 'li', properties, children}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n let loose = false\n if (node.type === 'list') {\n loose = node.spread || false\n const children = node.children\n let index = -1\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index])\n }\n }\n\n return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n const spread = node.spread\n\n return spread === null || spread === undefined\n ? node.children.length > 1\n : spread\n}\n","/**\n * @import {Element, Properties} from 'hast'\n * @import {List} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {List} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function list(state, node) {\n /** @type {Properties} */\n const properties = {}\n const results = state.all(node)\n let index = -1\n\n if (typeof node.start === 'number' && node.start !== 1) {\n properties.start = node.start\n }\n\n // Like GitHub, add a class for custom styling.\n while (++index < results.length) {\n const child = results[index]\n\n if (\n child.type === 'element' &&\n child.tagName === 'li' &&\n child.properties &&\n Array.isArray(child.properties.className) &&\n child.properties.className.includes('task-list-item')\n ) {\n properties.className = ['contains-task-list']\n break\n }\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: node.ordered ? 'ol' : 'ul',\n properties,\n children: state.wrap(results, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Paragraph} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Paragraph} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function paragraph(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Parents as HastParents, Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastRoot} node\n * mdast node.\n * @returns {HastParents}\n * hast node.\n */\nexport function root(state, node) {\n /** @type {HastRoot} */\n const result = {type: 'root', children: state.wrap(state.all(node))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {Strong} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Strong} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function strong(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'strong',\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n * Node.\n * @returns\n * Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n * Side.\n * @returns\n * Getter.\n */\nfunction point(type) {\n return point\n\n /**\n * Get the point info of `node` at a bound side.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * @returns {Point | undefined}\n */\n function point(node) {\n const point = (node && node.position && node.position[type]) || {}\n\n if (\n typeof point.line === 'number' &&\n point.line > 0 &&\n typeof point.column === 'number' &&\n point.column > 0\n ) {\n return {\n line: point.line,\n column: point.column,\n offset:\n typeof point.offset === 'number' && point.offset > -1\n ? point.offset\n : undefined\n }\n }\n }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n * Node.\n * @returns {Position | undefined}\n * Position.\n */\nexport function position(node) {\n const start = pointStart(node)\n const end = pointEnd(node)\n\n if (start && end) {\n return {start, end}\n }\n}\n","/**\n * @import {Table} from 'mdast'\n * @import {Element} from 'hast'\n * @import {State} from '../state.js'\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {Table} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function table(state, node) {\n const rows = state.all(node)\n const firstRow = rows.shift()\n /** @type {Array<Element>} */\n const tableContent = []\n\n if (firstRow) {\n /** @type {Element} */\n const head = {\n type: 'element',\n tagName: 'thead',\n properties: {},\n children: state.wrap([firstRow], true)\n }\n state.patch(node.children[0], head)\n tableContent.push(head)\n }\n\n if (rows.length > 0) {\n /** @type {Element} */\n const body = {\n type: 'element',\n tagName: 'tbody',\n properties: {},\n children: state.wrap(rows, true)\n }\n\n const start = pointStart(node.children[1])\n const end = pointEnd(node.children[node.children.length - 1])\n if (start && end) body.position = {start, end}\n tableContent.push(body)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'table',\n properties: {},\n children: state.wrap(tableContent, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element, ElementContent, Properties} from 'hast'\n * @import {Parents, TableRow} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableRow} node\n * mdast node.\n * @param {Parents | undefined} parent\n * Parent of `node`.\n * @returns {Element}\n * hast node.\n */\nexport function tableRow(state, node, parent) {\n const siblings = parent ? parent.children : undefined\n // Generate a body row when without parent.\n const rowIndex = siblings ? siblings.indexOf(node) : 1\n const tagName = rowIndex === 0 ? 'th' : 'td'\n // To do: option to use `style`?\n const align = parent && parent.type === 'table' ? parent.align : undefined\n const length = align ? align.length : node.children.length\n let cellIndex = -1\n /** @type {Array<ElementContent>} */\n const cells = []\n\n while (++cellIndex < length) {\n // Note: can also be undefined.\n const cell = node.children[cellIndex]\n /** @type {Properties} */\n const properties = {}\n const alignValue = align ? align[cellIndex] : undefined\n\n if (alignValue) {\n properties.align = alignValue\n }\n\n /** @type {Element} */\n let result = {type: 'element', tagName, properties, children: []}\n\n if (cell) {\n result.children = state.all(cell)\n state.patch(cell, result)\n result = state.applyData(cell, result)\n }\n\n cells.push(result)\n }\n\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'tr',\n properties: {},\n children: state.wrap(cells, true)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {TableCell} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {TableCell} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function tableCell(state, node) {\n // Note: this function is normally not called: see `table-row` for how rows\n // and their cells are compiled.\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'td', // Assume body cell.\n properties: {},\n children: state.all(node)\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Trimmed value.\n */\nexport function trimLines(value) {\n const source = String(value)\n const search = /\\r?\\n|\\r/g\n let match = search.exec(source)\n let last = 0\n /** @type {Array<string>} */\n const lines = []\n\n while (match) {\n lines.push(\n trimLine(source.slice(last, match.index), last > 0, true),\n match[0]\n )\n\n last = match.index + match[0].length\n match = search.exec(source)\n }\n\n lines.push(trimLine(source.slice(last), last > 0, false))\n\n return lines.join('')\n}\n\n/**\n * @param {string} value\n * Line to trim.\n * @param {boolean} start\n * Whether to trim the start of the line.\n * @param {boolean} end\n * Whether to trim the end of the line.\n * @returns {string}\n * Trimmed line.\n */\nfunction trimLine(value, start, end) {\n let startIndex = 0\n let endIndex = value.length\n\n if (start) {\n let code = value.codePointAt(startIndex)\n\n while (code === tab || code === space) {\n startIndex++\n code = value.codePointAt(startIndex)\n }\n }\n\n if (end) {\n let code = value.codePointAt(endIndex - 1)\n\n while (code === tab || code === space) {\n endIndex--\n code = value.codePointAt(endIndex - 1)\n }\n }\n\n return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n","/**\n * @import {Element as HastElement, Text as HastText} from 'hast'\n * @import {Text as MdastText} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastText} node\n * mdast node.\n * @returns {HastElement | HastText}\n * hast node.\n */\nexport function text(state, node) {\n /** @type {HastText} */\n const result = {type: 'text', value: trimLines(String(node.value))}\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Element} from 'hast'\n * @import {ThematicBreak} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n * Info passed around.\n * @param {ThematicBreak} node\n * mdast node.\n * @returns {Element}\n * hast node.\n */\nexport function thematicBreak(state, node) {\n /** @type {Element} */\n const result = {\n type: 'element',\n tagName: 'hr',\n properties: {},\n children: []\n }\n state.patch(node, result)\n return state.applyData(node, result)\n}\n","/**\n * @import {Handlers} from '../state.js'\n */\n\nimport {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {Handlers}\n */\nexport const handlers = {\n blockquote,\n break: hardBreak,\n code,\n delete: strikethrough,\n emphasis,\n footnoteReference,\n heading,\n html,\n imageReference,\n image,\n inlineCode,\n linkReference,\n link,\n listItem,\n list,\n paragraph,\n // @ts-expect-error: root is different, but hard to type.\n root,\n strong,\n table,\n tableCell,\n tableRow,\n text,\n thematicBreak,\n toml: ignore,\n yaml: ignore,\n definition: ignore,\n footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n return undefined\n}\n","export const VOID = -1;\nexport const PRIMITIVE = 0;\nexport const ARRAY = 1;\nexport const OBJECT = 2;\nexport const DATE = 3;\nexport const REGEXP = 4;\nexport const MAP = 5;\nexport const SET = 6;\nexport const ERROR = 7;\nexport const BIGINT = 8;\n// export const SYMBOL = 9;\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst guard = (name, init) => {\n switch (name) {\n case 'Function':\n case 'SharedWorker':\n case 'Worker':\n case 'eval':\n case 'setInterval':\n case 'setTimeout':\n throw new TypeError('unable to deserialize ' + name);\n }\n return new env[name](init);\n};\n\nconst deserializer = ($, _) => {\n const as = (out, index) => {\n $.set(index, out);\n return out;\n };\n\n const unpair = index => {\n if ($.has(index))\n return $.get(index);\n\n const [type, value] = _[index];\n switch (type) {\n case PRIMITIVE:\n case VOID:\n return as(value, index);\n case ARRAY: {\n const arr = as([], index);\n for (const index of value)\n arr.push(unpair(index));\n return arr;\n }\n case OBJECT: {\n const object = as({}, index);\n for (const [key, index] of value)\n object[unpair(key)] = unpair(index);\n return object;\n }\n case DATE:\n return as(new Date(value), index);\n case REGEXP: {\n const {source, flags} = value;\n return as(new RegExp(source, flags), index);\n }\n case MAP: {\n const map = as(new Map, index);\n for (const [key, index] of value)\n map.set(unpair(key), unpair(index));\n return map;\n }\n case SET: {\n const set = as(new Set, index);\n for (const index of value)\n set.add(unpair(index));\n return set;\n }\n case ERROR: {\n const {name, message} = value;\n return as(guard(name, message), index);\n }\n case BIGINT:\n return as(BigInt(value), index);\n case 'BigInt':\n return as(Object(BigInt(value)), index);\n case 'ArrayBuffer':\n return as(new Uint8Array(value).buffer, value);\n case 'DataView': {\n const { buffer } = new Uint8Array(value);\n return as(new DataView(buffer), value);\n }\n }\n return as(guard(type, value), index);\n };\n\n return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n","import {\n VOID, PRIMITIVE,\n ARRAY, OBJECT,\n DATE, REGEXP, MAP, SET,\n ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys} = Object;\n\nconst typeOf = value => {\n const type = typeof value;\n if (type !== 'object' || !value)\n return [PRIMITIVE, type];\n\n const asString = toString.call(value).slice(8, -1);\n switch (asString) {\n case 'Array':\n return [ARRAY, EMPTY];\n case 'Object':\n return [OBJECT, EMPTY];\n case 'Date':\n return [DATE, EMPTY];\n case 'RegExp':\n return [REGEXP, EMPTY];\n case 'Map':\n return [MAP, EMPTY];\n case 'Set':\n return [SET, EMPTY];\n case 'DataView':\n return [ARRAY, asString];\n }\n\n if (asString.includes('Array'))\n return [ARRAY, asString];\n\n if (asString.includes('Error'))\n return [ERROR, asString];\n\n return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n TYPE === PRIMITIVE &&\n (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n const as = (out, value) => {\n const index = _.push(out) - 1;\n $.set(value, index);\n return index;\n };\n\n const pair = value => {\n if ($.has(value))\n return $.get(value);\n\n let [TYPE, type] = typeOf(value);\n switch (TYPE) {\n case PRIMITIVE: {\n let entry = value;\n switch (type) {\n case 'bigint':\n TYPE = BIGINT;\n entry = value.toString();\n break;\n case 'function':\n case 'symbol':\n if (strict)\n throw new TypeError('unable to serialize ' + type);\n entry = null;\n break;\n case 'undefined':\n return as([VOID], value);\n }\n return as([TYPE, entry], value);\n }\n case ARRAY: {\n if (type) {\n let spread = value;\n if (type === 'DataView') {\n spread = new Uint8Array(value.buffer);\n }\n else if (type === 'ArrayBuffer') {\n spread = new Uint8Array(value);\n }\n return as([type, [...spread]], value);\n }\n\n const arr = [];\n const index = as([TYPE, arr], value);\n for (const entry of value)\n arr.push(pair(entry));\n return index;\n }\n case OBJECT: {\n if (type) {\n switch (type) {\n case 'BigInt':\n return as([type, value.toString()], value);\n case 'Boolean':\n case 'Number':\n case 'String':\n return as([type, value.valueOf()], value);\n }\n }\n\n if (json && ('toJSON' in value))\n return pair(value.toJSON());\n\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const key of keys(value)) {\n if (strict || !shouldSkip(typeOf(value[key])))\n entries.push([pair(key), pair(value[key])]);\n }\n return index;\n }\n case DATE:\n return as([TYPE, value.toISOString()], value);\n case REGEXP: {\n const {source, flags} = value;\n return as([TYPE, {source, flags}], value);\n }\n case MAP: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const [key, entry] of value) {\n if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n entries.push([pair(key), pair(entry)]);\n }\n return index;\n }\n case SET: {\n const entries = [];\n const index = as([TYPE, entries], value);\n for (const entry of value) {\n if (strict || !shouldSkip(typeOf(entry)))\n entries.push(pair(entry));\n }\n return index;\n }\n }\n\n const {message} = value;\n return as([TYPE, {name: type, message}], value);\n };\n\n return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n * if `true`, will not throw errors on incompatible types, and behave more\n * like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n const _ = [];\n return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n","import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n /* c8 ignore start */\n (any, options) => (\n options && ('json' in options || 'lossy' in options) ?\n deserialize(serialize(any, options)) : structuredClone(any)\n ) :\n (any, options) => deserialize(serialize(any, options));\n /* c8 ignore stop */\n\nexport {deserialize, serialize};\n","/**\n * @import {ElementContent, Element} from 'hast'\n * @import {State} from './state.js'\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n * Generate content for the backreference dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n * Content for the backreference when linking back from definitions to their\n * reference.\n *\n * @callback FootnoteBackLabelTemplate\n * Generate a back label dynamically.\n *\n * For the following markdown:\n *\n * ```markdown\n * Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n * [^remark]: things about remark\n * [^micromark]: things about micromark\n * ```\n *\n * This function will be called with:\n *\n * * `0` and `0` for the backreference from `things about micromark` to\n * `alpha`, as it is the first used definition, and the first call to it\n * * `0` and `1` for the backreference from `things about micromark` to\n * `bravo`, as it is the first used definition, and the second call to it\n * * `1` and `0` for the backreference from `things about remark` to\n * `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n * Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n /** @type {Array<ElementContent>} */\n const result = [{type: 'text', value: '↩'}]\n\n if (rereferenceIndex > 1) {\n result.push({\n type: 'element',\n tagName: 'sup',\n properties: {},\n children: [{type: 'text', value: String(rereferenceIndex)}]\n })\n }\n\n return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n * Index of the definition in the order that they are first referenced,\n * 0-indexed.\n * @param {number} rereferenceIndex\n * Index of calls to the same definition, 0-indexed.\n * @returns {string}\n * Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n return (\n 'Back to reference ' +\n (referenceIndex + 1) +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n * Info passed around.\n * @returns {Element | undefined}\n * `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n const clobberPrefix =\n typeof state.options.clobberPrefix === 'string'\n ? state.options.clobberPrefix\n : 'user-content-'\n const footnoteBackContent =\n state.options.footnoteBackContent || defaultFootnoteBackContent\n const footnoteBackLabel =\n state.options.footnoteBackLabel || defaultFootnoteBackLabel\n const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n className: ['sr-only']\n }\n /** @type {Array<ElementContent>} */\n const listItems = []\n let referenceIndex = -1\n\n while (++referenceIndex < state.footnoteOrder.length) {\n const definition = state.footnoteById.get(\n state.footnoteOrder[referenceIndex]\n )\n\n if (!definition) {\n continue\n }\n\n const content = state.all(definition)\n const id = String(definition.identifier).toUpperCase()\n const safeId = normalizeUri(id.toLowerCase())\n let rereferenceIndex = 0\n /** @type {Array<ElementContent>} */\n const backReferences = []\n const counts = state.footnoteCounts.get(id)\n\n // eslint-disable-next-line no-unmodified-loop-condition\n while (counts !== undefined && ++rereferenceIndex <= counts) {\n if (backReferences.length > 0) {\n backReferences.push({type: 'text', value: ' '})\n }\n\n let children =\n typeof footnoteBackContent === 'string'\n ? footnoteBackContent\n : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n if (typeof children === 'string') {\n children = {type: 'text', value: children}\n }\n\n backReferences.push({\n type: 'element',\n tagName: 'a',\n properties: {\n href:\n '#' +\n clobberPrefix +\n 'fnref-' +\n safeId +\n (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n dataFootnoteBackref: '',\n ariaLabel:\n typeof footnoteBackLabel === 'string'\n ? footnoteBackLabel\n : footnoteBackLabel(referenceIndex, rereferenceIndex),\n className: ['data-footnote-backref']\n },\n children: Array.isArray(children) ? children : [children]\n })\n }\n\n const tail = content[content.length - 1]\n\n if (tail && tail.type === 'element' && tail.tagName === 'p') {\n const tailTail = tail.children[tail.children.length - 1]\n if (tailTail && tailTail.type === 'text') {\n tailTail.value += ' '\n } else {\n tail.children.push({type: 'text', value: ' '})\n }\n\n tail.children.push(...backReferences)\n } else {\n content.push(...backReferences)\n }\n\n /** @type {Element} */\n const listItem = {\n type: 'element',\n tagName: 'li',\n properties: {id: clobberPrefix + 'fn-' + safeId},\n children: state.wrap(content, true)\n }\n\n state.patch(definition, listItem)\n\n listItems.push(listItem)\n }\n\n if (listItems.length === 0) {\n return\n }\n\n return {\n type: 'element',\n tagName: 'section',\n properties: {dataFootnotes: true, className: ['footnotes']},\n children: [\n {\n type: 'element',\n tagName: footnoteLabelTagName,\n properties: {\n ...structuredClone(footnoteLabelProperties),\n id: 'footnote-label'\n },\n children: [{type: 'text', value: footnoteLabel}]\n },\n {type: 'text', value: '\\n'},\n {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: state.wrap(listItems, true)\n },\n {type: 'text', value: '\\n'}\n ]\n }\n}\n","/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n * Check that an arbitrary value is a node.\n * @param {unknown} this\n * The given context.\n * @param {unknown} [node]\n * Anything (typically a node).\n * @param {number | null | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | null | undefined} [parent]\n * The node’s parent.\n * @returns {boolean}\n * Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n * Object to check for equivalence.\n *\n * Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n * Check for an arbitrary node.\n *\n * @callback TestFunction\n * Check if a node passes a test.\n * @param {unknown} this\n * The given context.\n * @param {Node} node\n * A node.\n * @param {number | undefined} [index]\n * The node’s position in its parent.\n * @param {Parent | undefined} [parent]\n * The node’s parent.\n * @returns {boolean | undefined | void}\n * Whether this node passes the test.\n *\n * Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n * Thing to check, typically `Node`.\n * @param {Test} test\n * A check for a specific node.\n * @param {number | null | undefined} index\n * The node’s position in its parent.\n * @param {Parent | null | undefined} parent\n * The node’s parent.\n * @param {unknown} context\n * Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n * Whether `node` is a node and passes a test.\n */\nexport const is =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n * (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((node?: null | undefined) => false) &\n * ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n * )}\n */\n (\n /**\n * @param {unknown} [node]\n * @param {Test} [test]\n * @param {number | null | undefined} [index]\n * @param {Parent | null | undefined} [parent]\n * @param {unknown} [context]\n * @returns {boolean}\n */\n // eslint-disable-next-line max-params\n function (node, test, index, parent, context) {\n const check = convert(test)\n\n if (\n index !== undefined &&\n index !== null &&\n (typeof index !== 'number' ||\n index < 0 ||\n index === Number.POSITIVE_INFINITY)\n ) {\n throw new Error('Expected positive finite index')\n }\n\n if (\n parent !== undefined &&\n parent !== null &&\n (!is(parent) || !parent.children)\n ) {\n throw new Error('Expected parent node')\n }\n\n if (\n (parent === undefined || parent === null) !==\n (index === undefined || index === null)\n ) {\n throw new Error('Expected both parent and index')\n }\n\n return looksLikeANode(node)\n ? check.call(context, node, index, parent)\n : false\n }\n )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you’re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n * * when nullish, checks if `node` is a `Node`.\n * * when `string`, works like passing `(node) => node.type === test`.\n * * when `function` checks if function passed the node is true.\n * * when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n * * when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n * An assertion.\n */\nexport const convert =\n // Note: overloads in JSDoc can’t yet use different `@template`s.\n /**\n * @type {(\n * (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n * (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n * (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n * ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n * ((test?: Test) => Check)\n * )}\n */\n (\n /**\n * @param {Test} [test]\n * @returns {Check}\n */\n function (test) {\n if (test === null || test === undefined) {\n return ok\n }\n\n if (typeof test === 'function') {\n return castFactory(test)\n }\n\n if (typeof test === 'object') {\n return Array.isArray(test)\n ? anyFactory(test)\n : // Cast because `ReadonlyArray` goes into the above but `isArray`\n // narrows to `Array`.\n propertiesFactory(/** @type {Props} */ (test))\n }\n\n if (typeof test === 'string') {\n return typeFactory(test)\n }\n\n throw new Error('Expected function, string, or object as test')\n }\n )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n /** @type {Array<Check>} */\n const checks = []\n let index = -1\n\n while (++index < tests.length) {\n checks[index] = convert(tests[index])\n }\n\n return castFactory(any)\n\n /**\n * @this {unknown}\n * @type {TestFunction}\n */\n function any(...parameters) {\n let index = -1\n\n while (++index < checks.length) {\n if (checks[index].apply(this, parameters)) return true\n }\n\n return false\n }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n return castFactory(all)\n\n /**\n * @param {Node} node\n * @returns {boolean}\n */\n function all(node) {\n const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n /** @type {unknown} */ (node)\n )\n\n /** @type {string} */\n let key\n\n for (key in check) {\n if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n }\n\n return true\n }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n return castFactory(type)\n\n /**\n * @param {Node} node\n */\n function type(node) {\n return node && node.type === check\n }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n return check\n\n /**\n * @this {unknown}\n * @type {Check}\n */\n function check(value, index, parent) {\n return Boolean(\n looksLikeANode(value) &&\n testFunction.call(\n this,\n value,\n typeof index === 'number' ? index : undefined,\n parent || undefined\n )\n )\n }\n}\n\nfunction ok() {\n return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n return value !== null && typeof value === 'object' && 'type' in value\n}\n","/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n return '\\u001B[33m' + d + '\\u001B[39m'\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<infer T>\n * ? MatchesOne<Value, T>\n * : Check extends Array<infer T>\n * ? MatchesOne<Value, T>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n * Union of the action types.\n *\n * @typedef {number} Index\n * Move to the sibling at `index` next (after node itself is completely\n * traversed).\n *\n * Useful if mutating the tree, such as removing the node the visitor is\n * currently on, or any of its previous siblings.\n * Results less than 0 or greater than or equal to `children.length` stop\n * traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n * List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n * Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform the parent of node (the last of `ancestors`).\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of an ancestor still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Array<VisitedParents>} ancestors\n * Ancestors of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n * Tree type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node’s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} test\n * `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n * Handle each node.\n * @param {boolean | null | undefined} [reverse]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n /** @type {Test} */\n let check\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n // @ts-expect-error no visitor given, so `visitor` is test.\n visitor = test\n } else {\n // @ts-expect-error visitor given, so `test` isn’t a visitor.\n check = test\n }\n\n const is = convert(check)\n const step = reverse ? -1 : 1\n\n factory(tree, undefined, [])()\n\n /**\n * @param {UnistNode} node\n * @param {number | undefined} index\n * @param {Array<UnistParent>} parents\n */\n function factory(node, index, parents) {\n const value = /** @type {Record<string, unknown>} */ (\n node && typeof node === 'object' ? node : {}\n )\n\n if (typeof value.type === 'string') {\n const name =\n // `hast`\n typeof value.tagName === 'string'\n ? value.tagName\n : // `xast`\n typeof value.name === 'string'\n ? value.name\n : undefined\n\n Object.defineProperty(visit, 'name', {\n value:\n 'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n })\n }\n\n return visit\n\n function visit() {\n /** @type {Readonly<ActionTuple>} */\n let result = empty\n /** @type {Readonly<ActionTuple>} */\n let subresult\n /** @type {number} */\n let offset\n /** @type {Array<UnistParent>} */\n let grandparents\n\n if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n // @ts-expect-error: `visitor` is now a visitor.\n result = toResult(visitor(node, parents))\n\n if (result[0] === EXIT) {\n return result\n }\n }\n\n if ('children' in node && node.children) {\n const nodeAsParent = /** @type {UnistParent} */ (node)\n\n if (nodeAsParent.children && result[0] !== SKIP) {\n offset = (reverse ? nodeAsParent.children.length : -1) + step\n grandparents = parents.concat(nodeAsParent)\n\n while (offset > -1 && offset < nodeAsParent.children.length) {\n const child = nodeAsParent.children[offset]\n\n subresult = factory(child, offset, grandparents)()\n\n if (subresult[0] === EXIT) {\n return subresult\n }\n\n offset =\n typeof subresult[1] === 'number' ? subresult[1] : offset + step\n }\n }\n }\n\n return result\n }\n }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n * Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n * Clean result.\n */\nfunction toResult(value) {\n if (Array.isArray(value)) {\n return value\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value]\n }\n\n return value === null || value === undefined ? empty : [value]\n}\n","/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n * Test from `unist-util-is`.\n *\n * Note: we have remove and add `undefined`, because otherwise when generating\n * automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n * which doesn’t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it’s released.\n\n/**\n * @typedef {(\n * Fn extends (value: any) => value is infer Thing\n * ? Thing\n * : Fallback\n * )} Predicate\n * Get the value of a type guard `Fn`.\n * @template Fn\n * Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n * Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n * Check extends null | undefined // No test.\n * ? Value\n * : Value extends {type: Check} // String (type) test.\n * ? Value\n * : Value extends Check // Partial test.\n * ? Value\n * : Check extends Function // Function test.\n * ? Predicate<Check, Value> extends Value\n * ? Predicate<Check, Value>\n * : never\n * : never // Some other test?\n * )} MatchesOne\n * Check whether a node matches a primitive check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n * Check extends ReadonlyArray<any>\n * ? MatchesOne<Value, Check[number]>\n * : MatchesOne<Value, Check>\n * )} Matches\n * Check whether a node matches a check in the type system.\n * @template Value\n * Value; typically unist `Node`.\n * @template Check\n * Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n * Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n * Increment a number in the type system.\n * @template {Uint} [I=0]\n * Index.\n */\n\n/**\n * @typedef {(\n * Node extends UnistParent\n * ? Node extends {children: Array<infer Children>}\n * ? Child extends Children ? Node : never\n * : never\n * : never\n * )} InternalParent\n * Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n * Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n */\n\n/**\n * @typedef {(\n * Depth extends Max\n * ? never\n * :\n * | InternalParent<Node, Child>\n * | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n * Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n * All node types in a tree.\n * @template {UnistNode} Child\n * Node to search for.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @typedef {(\n * Tree extends UnistParent\n * ? Depth extends Max\n * ? Tree\n * : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n * : Tree\n * )} InclusiveDescendant\n * Collect all (inclusive) descendants of `Tree`.\n *\n * > 👉 **Note**: for performance reasons, this seems to be the fastest way to\n * > recurse without actually running into an infinite loop, which the\n * > previous version did.\n * >\n * > Practically, a max of `2` is typically enough assuming a `Root` is\n * > passed, but it doesn’t improve performance.\n * > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n * > Using up to `10` doesn’t hurt or help either.\n * @template {UnistNode} Tree\n * Tree type.\n * @template {Uint} [Max=10]\n * Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n * Current depth.\n */\n\n/**\n * @callback Visitor\n * Handle a node (matching `test`, if given).\n *\n * Visitors are free to transform `node`.\n * They can also transform `parent`.\n *\n * Replacing `node` itself, if `SKIP` is not returned, still causes its\n * descendants to be walked (which is a bug).\n *\n * When adding or removing previous siblings of `node` (or next siblings, in\n * case of reverse), the `Visitor` should return a new `Index` to specify the\n * sibling to traverse after `node` is traversed.\n * Adding or removing next siblings of `node` (or previous siblings, in case\n * of reverse) is handled as expected without needing to return a new `Index`.\n *\n * Removing the children property of `parent` still results in them being\n * traversed.\n * @param {Visited} node\n * Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n * Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n * Parent of `node`.\n * @returns {VisitorResult}\n * What to do next.\n *\n * An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n * An `Action` is treated as a tuple of `[Action]`.\n *\n * Passing a tuple back only makes sense if the `Action` is `SKIP`.\n * When the `Action` is `EXIT`, that action can be returned.\n * When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n * Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n * Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n * Build a typed `Visitor` function from a node and all possible parents.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n * Node type.\n * @template {UnistParent} Ancestor\n * Parent type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromMatch<\n * Matches<Descendant, Check>,\n * Extract<Descendant, UnistParent>\n * >\n * )} BuildVisitorFromDescendants\n * Build a typed `Visitor` function from a list of descendants and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n * Node type.\n * @template {Test} Check\n * Test type.\n */\n\n/**\n * @typedef {(\n * BuildVisitorFromDescendants<\n * InclusiveDescendant<Tree>,\n * Check\n * >\n * )} BuildVisitor\n * Build a typed `Visitor` function from a tree and a test.\n *\n * It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n * Node type.\n * @template {Test} [Check=Test]\n * Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n * Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n * `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n * Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n * Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n * Nothing.\n *\n * @template {UnistNode} Tree\n * Node type.\n * @template {Test} Check\n * `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n /** @type {boolean | null | undefined} */\n let reverse\n /** @type {Test} */\n let test\n /** @type {Visitor} */\n let visitor\n\n if (\n typeof testOrVisitor === 'function' &&\n typeof visitorOrReverse !== 'function'\n ) {\n test = undefined\n visitor = testOrVisitor\n reverse = visitorOrReverse\n } else {\n // @ts-expect-error: assume the overload with test was given.\n test = testOrVisitor\n // @ts-expect-error: assume the overload with test was given.\n visitor = visitorOrReverse\n reverse = maybeReverse\n }\n\n visitParents(tree, test, overload, reverse)\n\n /**\n * @param {UnistNode} node\n * @param {Array<UnistParent>} parents\n */\n function overload(node, parents) {\n const parent = parents[parents.length - 1]\n const index = parent ? parent.children.indexOf(node) : undefined\n return visitor(node, index, parent)\n }\n}\n","/**\n * @import {\n * ElementContent as HastElementContent,\n * Element as HastElement,\n * Nodes as HastNodes,\n * Properties as HastProperties,\n * RootContent as HastRootContent,\n * Text as HastText\n * } from 'hast'\n * @import {\n * Definition as MdastDefinition,\n * FootnoteDefinition as MdastFootnoteDefinition,\n * Nodes as MdastNodes,\n * Parents as MdastParents\n * } from 'mdast'\n * @import {VFile} from 'vfile'\n * @import {\n * FootnoteBackContentTemplate,\n * FootnoteBackLabelTemplate\n * } from './footer.js'\n */\n\n/**\n * @callback Handler\n * Handle a node.\n * @param {State} state\n * Info passed around.\n * @param {any} node\n * mdast node to handle.\n * @param {MdastParents | undefined} parent\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n * Handle nodes.\n *\n * @typedef Options\n * Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n * Whether to persist raw HTML in markdown in the hast tree (default:\n * `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n * Prefix to use before the `id` property on footnotes to prevent them from\n * *clobbering* (default: `'user-content-'`).\n *\n * Pass `''` for trusted markdown and when you are careful with\n * polyfilling.\n * You could pass a different prefix.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=\"x\"></p>\n * <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n * ```\n *\n * The above example shows that elements are made available by browsers, by\n * their ID, on the `window` object.\n * This is a security risk because you might be expecting some other variable\n * at that place.\n * It can also break polyfills.\n * Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n * Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n * Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackContent(_, rereferenceIndex) {\n * const result = [{type: 'text', value: '↩'}]\n *\n * if (rereferenceIndex > 1) {\n * result.push({\n * type: 'element',\n * tagName: 'sup',\n * properties: {},\n * children: [{type: 'text', value: String(rereferenceIndex)}]\n * })\n * }\n *\n * return result\n * }\n * ```\n *\n * This content is used in the `a` element of each backreference (the `↩`\n * links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n * Label to describe the backreference back to references (default:\n * `defaultFootnoteBackLabel`).\n *\n * The default value is:\n *\n * ```js\n * function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n * return (\n * 'Back to reference ' +\n * (referenceIndex + 1) +\n * (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n * )\n * }\n * ```\n *\n * Change it when the markdown is not in English.\n *\n * This label is used in the `ariaLabel` property on each backreference\n * (the `↩` links).\n * It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n * Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n * Change it when the markdown is not in English.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n * Properties to use on the footnote label (default: `{className:\n * ['sr-only']}`).\n *\n * Change it to show the label and add other properties.\n *\n * This label is typically hidden visually (assuming an `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass an empty string.\n * You can also add different properties.\n *\n * > **Note**: `id: 'footnote-label'` is always added, because footnote\n * > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n * HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n * Change it to match your document structure.\n *\n * This label is typically hidden visually (assuming a `sr-only` CSS class\n * is defined that does that) and so affects screen readers only.\n * If you do have such a class, but want to show this section to everyone,\n * pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n * Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n * List of custom mdast node types to pass through (keep) in hast (note that\n * the node itself is passed, but eventual children are transformed)\n * (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n * Handler for all unknown nodes (optional).\n *\n * @typedef State\n * Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n * Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n * Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n * Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n * Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n * Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n * Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n * Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n * Transform an mdast node to hast.\n * @property {Options} options\n * Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n * Copy a node’s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n * Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n * mdast node to transform.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {State}\n * `state` function.\n */\nexport function createState(tree, options) {\n const settings = options || emptyOptions\n /** @type {Map<string, MdastDefinition>} */\n const definitionById = new Map()\n /** @type {Map<string, MdastFootnoteDefinition>} */\n const footnoteById = new Map()\n /** @type {Map<string, number>} */\n const footnoteCounts = new Map()\n /** @type {Handlers} */\n // @ts-expect-error: the root handler returns a root.\n // Hard to type.\n const handlers = {...defaultHandlers, ...settings.handlers}\n\n /** @type {State} */\n const state = {\n all,\n applyData,\n definitionById,\n footnoteById,\n footnoteCounts,\n footnoteOrder: [],\n handlers,\n one,\n options: settings,\n patch,\n wrap\n }\n\n visit(tree, function (node) {\n if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n const map = node.type === 'definition' ? definitionById : footnoteById\n const id = String(node.identifier).toUpperCase()\n\n // Mimick CM behavior of link definitions.\n // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n if (!map.has(id)) {\n // @ts-expect-error: node type matches map.\n map.set(id, node)\n }\n }\n })\n\n return state\n\n /**\n * Transform an mdast node into a hast node.\n *\n * @param {MdastNodes} node\n * mdast node.\n * @param {MdastParents | undefined} [parent]\n * Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n * Resulting hast node.\n */\n function one(node, parent) {\n const type = node.type\n const handle = state.handlers[type]\n\n if (own.call(state.handlers, type) && handle) {\n return handle(state, node, parent)\n }\n\n if (state.options.passThrough && state.options.passThrough.includes(type)) {\n if ('children' in node) {\n const {children, ...shallow} = node\n const result = structuredClone(shallow)\n // @ts-expect-error: TS doesn’t understand…\n result.children = state.all(node)\n // @ts-expect-error: TS doesn’t understand…\n return result\n }\n\n // @ts-expect-error: it’s custom.\n return structuredClone(node)\n }\n\n const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n return unknown(state, node, parent)\n }\n\n /**\n * Transform the children of an mdast node into hast nodes.\n *\n * @param {MdastNodes} parent\n * mdast node to compile\n * @returns {Array<HastElementContent>}\n * Resulting hast nodes.\n */\n function all(parent) {\n /** @type {Array<HastElementContent>} */\n const values = []\n\n if ('children' in parent) {\n const nodes = parent.children\n let index = -1\n while (++index < nodes.length) {\n const result = state.one(nodes[index], parent)\n\n // To do: see if we van clean this? Can we merge texts?\n if (result) {\n if (index && nodes[index - 1].type === 'break') {\n if (!Array.isArray(result) && result.type === 'text') {\n result.value = trimMarkdownSpaceStart(result.value)\n }\n\n if (!Array.isArray(result) && result.type === 'element') {\n const head = result.children[0]\n\n if (head && head.type === 'text') {\n head.value = trimMarkdownSpaceStart(head.value)\n }\n }\n }\n\n if (Array.isArray(result)) {\n values.push(...result)\n } else {\n values.push(result)\n }\n }\n }\n }\n\n return values\n }\n}\n\n/**\n * Copy a node’s positional info.\n *\n * @param {MdastNodes} from\n * mdast node to copy from.\n * @param {HastNodes} to\n * hast node to copy into.\n * @returns {undefined}\n * Nothing.\n */\nfunction patch(from, to) {\n if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n * Node type.\n * @param {MdastNodes} from\n * mdast node to use data from.\n * @param {Type} to\n * hast node to change.\n * @returns {HastElement | Type}\n * Nothing.\n */\nfunction applyData(from, to) {\n /** @type {HastElement | Type} */\n let result = to\n\n // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n if (from && from.data) {\n const hName = from.data.hName\n const hChildren = from.data.hChildren\n const hProperties = from.data.hProperties\n\n if (typeof hName === 'string') {\n // Transforming the node resulted in an element with a different name\n // than wanted:\n if (result.type === 'element') {\n result.tagName = hName\n }\n // Transforming the node resulted in a non-element, which happens for\n // raw, text, and root nodes (unless custom handlers are passed).\n // The intent of `hName` is to create an element, but likely also to keep\n // the content around (otherwise: pass `hChildren`).\n else {\n /** @type {Array<HastElementContent>} */\n // @ts-expect-error: assume no doctypes in `root`.\n const children = 'children' in result ? result.children : [result]\n result = {type: 'element', tagName: hName, properties: {}, children}\n }\n }\n\n if (result.type === 'element' && hProperties) {\n Object.assign(result.properties, structuredClone(hProperties))\n }\n\n if (\n 'children' in result &&\n result.children &&\n hChildren !== null &&\n hChildren !== undefined\n ) {\n result.children = hChildren\n }\n }\n\n return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n * Info passed around.\n * @param {MdastNodes} node\n * Unknown mdast node.\n * @returns {HastElement | HastText}\n * Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n const data = node.data || {}\n /** @type {HastElement | HastText} */\n const result =\n 'value' in node &&\n !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n ? {type: 'text', value: node.value}\n : {\n type: 'element',\n tagName: 'div',\n properties: {},\n children: state.all(node)\n }\n\n state.patch(node, result)\n return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n * Node type.\n * @param {Array<Type>} nodes\n * List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n * Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n * Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n /** @type {Array<HastText | Type>} */\n const result = []\n let index = -1\n\n if (loose) {\n result.push({type: 'text', value: '\\n'})\n }\n\n while (++index < nodes.length) {\n if (index) result.push({type: 'text', value: '\\n'})\n result.push(nodes[index])\n }\n\n if (loose && nodes.length > 0) {\n result.push({type: 'text', value: '\\n'})\n }\n\n return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n * Value to trim.\n * @returns {string}\n * Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n let index = 0\n let code = value.charCodeAt(index)\n\n while (code === 9 || code === 32) {\n index++\n code = value.charCodeAt(index)\n }\n\n return value.slice(index)\n}\n","/**\n * @import {Nodes as HastNodes} from 'hast'\n * @import {Nodes as MdastNodes} from 'mdast'\n * @import {Options} from './state.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don’t:\n *\n * * `hast-util-to-html` also has an option `allowDangerousHtml` which will\n * output the raw HTML.\n * This is typically discouraged as noted by the option name but is useful\n * if you completely trust authors\n * * `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n * into standard hast nodes (`element`, `text`, etc).\n * This is a heavy task as it needs a full HTML parser, but it is the only\n * way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn’t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value` (and doesn’t have `data.hName`,\n * `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n * node\n * * otherwise, create a `<div>` element (which could be changed with\n * `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n * mdast tree.\n * @param {Options | null | undefined} [options]\n * Configuration (optional).\n * @returns {HastNodes}\n * hast tree.\n */\nexport function toHast(tree, options) {\n const state = createState(tree, options)\n const node = state.one(tree, undefined)\n const foot = footer(state)\n /** @type {HastNodes} */\n const result = Array.isArray(node)\n ? {type: 'root', children: node}\n : node || {type: 'root', children: []}\n\n if (foot) {\n // If there’s a footer, there were definitions, meaning block\n // content.\n // So `result` is a parent node.\n assert('children' in result)\n result.children.push({type: 'text', value: '\\n'}, foot)\n }\n\n return result\n}\n","/**\n * @typedef {import('nlcst').Nodes} Nodes\n */\n\n/** @type {Readonly<Array<Nodes>>} */\nconst emptyNodes = []\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node’s plain-text fields, otherwise serializes its children, and\n * if the given value is an array, serialize the nodes in it.\n *\n * @param {Array<Nodes> | Nodes} value\n * Node or list of nodes to serialize.\n * @returns {string}\n * Result.\n */\nexport function toString(value) {\n let index = -1\n\n if (!value || (!Array.isArray(value) && !value.type)) {\n throw new Error('Expected node, not `' + value + '`')\n }\n\n if ('value' in value) return value.value\n\n const children = (Array.isArray(value) ? value : value.children) || emptyNodes\n\n /** @type {Array<string>} */\n const values = []\n\n while (++index < children.length) {\n values[index] = toString(children[index])\n }\n\n return values.join('')\n}\n","const own = {}.hasOwnProperty\n\n/**\n * Perform the specified action for each element in an array.\n * When `callbackFn` returns a `number`, moves to the element at that index\n * next.\n *\n * @param {unknown[]} values\n * Values to iterate over.\n * @param {(this: unknown, value: unknown, index: number, array: unknown[]) => number | void} callbackFn\n * Function called for each element.\n * Can return the `index` to move to next.\n * @param {unknown} [thisArg]\n * Optional object assigned as `this` in `callbackFn`.\n * @returns {void}\n */\nexport function arrayIterate(values, callbackFn, thisArg) {\n let index = -1\n\n if (!values) {\n throw new Error('Iterate requires that |this| not be ' + values)\n }\n\n if (!own.call(values, 'length')) {\n throw new Error('Iterate requires that |this| has a `length`')\n }\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError('`callback` must be a function')\n }\n\n // The length might change, so we do not cache it.\n while (++index < values.length) {\n // Skip missing values.\n if (!(index in values)) {\n continue\n }\n\n const result = callbackFn.call(thisArg, values[index], index, values)\n\n // If `callback` returns a `number`, move `index` over to `number`.\n if (typeof result === 'number') {\n // Make sure that negative numbers do not break the loop.\n if (result < 0) {\n index = 0\n }\n\n index = result - 1\n }\n }\n}\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template {Parent} Kind\n * Node type.\n * @callback Modifier\n * Callback called for each `child` in `parent` later given to `modify`.\n * @param {Kind['children'][number]} child\n * Child of `parent`.\n * @param {number} index\n * Position of `child` in `parent`.\n * @param {Kind} parent\n * Parent node.\n * @returns {number | undefined | void}\n * Position to move to next (optional).\n */\n\n/**\n * @template {Parent} Kind\n * Node type.\n * @callback Modify\n * Modify children of `parent`.\n * @param {Kind} parent\n * Parent node.\n * @returns {undefined}\n * Nothing.\n */\n\nimport {arrayIterate} from 'array-iterate'\n\n/**\n * Wrap `modifier` to be called for each child in the nodes later given to\n * `modify`.\n *\n * @template {Parent} Kind\n * Node type.\n * @param {Modifier<Kind>} modifier\n * Callback called for each `child` in `parent` later given to `modify`.\n * @returns {Modify<Kind>}\n * Modify children of `parent`.\n */\nexport function modifyChildren(modifier) {\n return modify\n\n /** @type {Modify<Kind>} */\n function modify(parent) {\n if (!parent || !parent.children) {\n throw new Error('Missing children in `parent` for `modifier`')\n }\n\n arrayIterate(parent.children, iteratee, parent)\n }\n\n /**\n * Pass the context as the third argument to `modifier`.\n *\n * @this {Kind}\n * @param {Node} node\n * @param {number} index\n * @returns {number | undefined | void}\n */\n function iteratee(node, index) {\n return modifier(node, index, this)\n }\n}\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge a sentence into its previous sentence, when the sentence starts with a\n// comma.\nexport const mergeAffixExceptions = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n */\n function (child, index, parent) {\n const previous = parent.children[index - 1]\n\n if (\n previous &&\n 'children' in previous &&\n 'children' in child &&\n child.children.length > 0\n ) {\n let position = -1\n\n while (child.children[++position]) {\n const node = child.children[position]\n\n if (node.type === 'WordNode') {\n return\n }\n\n if (node.type === 'SymbolNode' || node.type === 'PunctuationNode') {\n const value = toString(node)\n\n if (value !== ',' && value !== ';') {\n return\n }\n\n previous.children.push(...child.children)\n\n // Update position.\n if (previous.position && child.position) {\n previous.position.end = child.position.end\n }\n\n parent.children.splice(index, 1)\n\n // Next, iterate over the node *now* at the current position.\n return index\n }\n }\n }\n }\n)\n","// This module is generated by `script/build-expressions.js`.\nexport const affixSymbol =\n /^([!\"').?\\u0F3B\\u0F3D\\u169C\\u2019\\u201D\\u2026\\u203A\\u203D\\u2046\\u207E\\u208E\\u2309\\u230B\\u232A\\u2769\\u276B\\u276D\\u276F\\u2771\\u2773\\u2775\\u27C6\\u27E7\\u27E9\\u27EB\\u27ED\\u27EF\\u2984\\u2986\\u2988\\u298A\\u298C\\u298E\\u2990\\u2992\\u2994\\u2996\\u2998\\u29D9\\u29DB\\u29FD\\u2E03\\u2E05\\u2E0A\\u2E0D\\u2E1D\\u2E21\\u2E23\\u2E25\\u2E27\\u2E29\\u2E56\\u2E58\\u2E5A\\u2E5C\\u3009\\u300B\\u300D\\u300F\\u3011\\u3015\\u3017\\u3019\\u301B\\u301E\\u301F\\uFD3E\\uFE18\\uFE36\\uFE38\\uFE3A\\uFE3C\\uFE3E\\uFE40\\uFE42\\uFE44\\uFE48\\uFE5A\\uFE5C\\uFE5E\\uFF09\\uFF3D\\uFF5D\\uFF60\\uFF63\\u00BB\\]}])\\1*$/\nexport const newLine = /^[ \\t]*((\\r?\\n|\\r)[\\t ]*)+$/\nexport const terminalMarker = /^([!.?\\u2026\\u203D]+)$/\nexport const wordSymbolInner =\n /^([&'\\-.:=?@\\u00AD\\u00B7\\u2010\\u2011\\u2019\\u2027]|_+)$/\nexport const numerical =\n /^(?:[\\d\\u00B2\\u00B3\\u00B9\\u00BC-\\u00BE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]|\\uD800[\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD801[\\uDCA0-\\uDCA9]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE48\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDF1D-\\uDF26\\uDF51-\\uDF54\\uDFC5-\\uDFCB]|\\uD804[\\uDC52-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDDE1-\\uDDF4\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF3B]|\\uD806[\\uDCE0-\\uDCF2\\uDD50-\\uDD59]|\\uD807[\\uDC50-\\uDC6C\\uDD50-\\uDD59\\uDDA0-\\uDDA9\\uDF50-\\uDF59\\uDFC0-\\uDFD4]|\\uD809[\\uDC00-\\uDC6E]|\\uD81A[\\uDE60-\\uDE69\\uDEC0-\\uDEC9\\uDF50-\\uDF59\\uDF5B-\\uDF61]|\\uD81B[\\uDE80-\\uDE96]|\\uD834[\\uDEC0-\\uDED3\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDFCE-\\uDFFF]|\\uD838[\\uDD40-\\uDD49\\uDEF0-\\uDEF9]|\\uD839[\\uDCF0-\\uDCF9]|\\uD83A[\\uDCC7-\\uDCCF\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9])+$/\nexport const digitStart = /^\\d/\nexport const lowerInitial =\n /^(?:[a-z\\u00B5\\u00DF-\\u00F6\\u00F8-\\u00FF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0560-\\u0588\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5F\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7AF\\uA7B5\\uA7B7\\uA7B9\\uA7BB\\uA7BD\\uA7BF\\uA7C1\\uA7C3\\uA7C8\\uA7CA\\uA7D1\\uA7D3\\uA7D5\\uA7D7\\uA7D9\\uA7F6\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB68\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A]|\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD81B[\\uDE60-\\uDE7F]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD837[\\uDF00-\\uDF09\\uDF0B-\\uDF1E\\uDF25-\\uDF2A]|\\uD83A[\\uDD22-\\uDD43])/\nexport const surrogates = /[\\uD800-\\uDFFF]/\nexport const punctuation =\n /[!\"'-),-/:;?[-\\]_{}\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061D-\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1B7D\\u1B7E\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u201F\\u2022-\\u2027\\u2032-\\u203A\\u203C-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52-\\u2E5D\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]|\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDEAD\\uDF55-\\uDF59\\uDF86-\\uDF89]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDEB9\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDD44-\\uDD46\\uDDE2\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2\\uDF00-\\uDF09]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8\\uDF43-\\uDF4F\\uDFFF]|\\uD809[\\uDC70-\\uDC74]|\\uD80B[\\uDFF1\\uDFF2]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A\\uDFE2]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]/\nexport const word =\n /[\\dA-Za-z\\u00AA\\u00B2\\u00B3\\u00B5\\u00B9\\u00BA\\u00BC-\\u00BE\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u0898-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09F4-\\u09F9\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71-\\u0B77\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BF2\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D63\\u0D66-\\u0D78\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F33\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u137C\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1715\\u171F-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u180B-\\u180D\\u180F-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2070\\u2071\\u2074-\\u2079\\u207F-\\u2089\\u2090-\\u209C\\u20D0-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2150-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2C00-\\u2CE4\\u2CEB-\\u2CF3\\u2CFD\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u3192-\\u3195\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA672\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA827\\uA82C\\uA830-\\uA835\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0-\\uDEFB\\uDF00-\\uDF23\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC58-\\uDC76\\uDC79-\\uDC9E\\uDCA7-\\uDCAF\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDD1B\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F-\\uDE48\\uDE60-\\uDE7E\\uDE80-\\uDE9F\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDEEB-\\uDEEF\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF58-\\uDF72\\uDF78-\\uDF91\\uDFA9-\\uDFAF]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDD27\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDEFD-\\uDF27\\uDF30-\\uDF54\\uDF70-\\uDF85\\uDFB0-\\uDFCB\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC52-\\uDC75\\uDC7F-\\uDCBA\\uDCC2\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDDE1-\\uDDF4\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E-\\uDE41\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF3B\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCF2\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC6C\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDF00-\\uDF10\\uDF12-\\uDF3A\\uDF3E-\\uDF42\\uDF50-\\uDF59\\uDFB0\\uDFC0-\\uDFD4]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC40-\\uDC55]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE96\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44\\uDEC0-\\uDED3\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC30-\\uDC6D\\uDC8F\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAE\\uDEC0-\\uDEF9]|\\uD839[\\uDCD0-\\uDCF9\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4\\uDD01-\\uDD2D\\uDD2F-\\uDD3D\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD00-\\uDD0C]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF]|\\uDB40[\\uDD00-\\uDDEF]/\nexport const whiteSpace =\n /[\\t-\\r \\u0085\\u00A0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n// Closing or final punctuation, or terminal markers that should still be\n// included in the previous sentence, even though they follow the sentence’s\n// terminal marker.\nimport {affixSymbol} from '../expressions.js'\n\n// Move certain punctuation following a terminal marker (thus in the next\n// sentence) to the previous sentence.\nexport const mergeAffixSymbol = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n */\n function (child, index, parent) {\n if ('children' in child && child.children.length > 0 && index > 0) {\n const previous = parent.children[index - 1]\n const first = child.children[0]\n const second = child.children[1]\n\n if (\n previous &&\n previous.type === 'SentenceNode' &&\n (first.type === 'SymbolNode' || first.type === 'PunctuationNode') &&\n affixSymbol.test(toString(first))\n ) {\n child.children.shift() // Remove `first`.\n previous.children.push(first)\n\n // Update position.\n if (first.position && previous.position) {\n previous.position.end = first.position.end\n }\n\n if (second && second.position && child.position) {\n child.position.start = second.position.start\n }\n\n // Next, iterate over the previous node again.\n return index - 1\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Break a sentence if a white space with more than one new-line is found.\nexport const breakImplicitSentences = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n */\n\n function (child, index, parent) {\n if (child.type !== 'SentenceNode') {\n return\n }\n\n const children = child.children\n\n // Ignore first and last child.\n let position = 0\n\n while (++position < children.length - 1) {\n const node = children[position]\n\n if (\n node.type !== 'WhiteSpaceNode' ||\n toString(node).split(/\\r\\n|\\r|\\n/).length < 3\n ) {\n continue\n }\n\n child.children = children.slice(0, position)\n\n /** @type {Sentence} */\n const insertion = {\n type: 'SentenceNode',\n children: children.slice(position + 1)\n }\n\n const tail = children[position - 1]\n const head = children[position + 1]\n\n parent.children.splice(index + 1, 0, node, insertion)\n\n if (child.position && tail.position && head.position) {\n const end = child.position.end\n\n child.position.end = tail.position.end\n\n insertion.position = {start: head.position.start, end}\n }\n\n return index + 1\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Move white space ending a paragraph up, so they are the siblings of\n// paragraphs.\nexport const makeFinalWhiteSpaceSiblings = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph | Root>}\n */\n\n function (child, index, parent) {\n if ('children' in child) {\n const tail = child.children[child.children.length - 1]\n\n if (tail && tail.type === 'WhiteSpaceNode') {\n child.children.pop() // Remove `tail`.\n parent.children.splice(index + 1, 0, tail)\n const previous = child.children[child.children.length - 1]\n\n if (previous && previous.position && child.position) {\n child.position.end = previous.position.end\n }\n\n // Next, iterate over the current node again.\n return index\n }\n }\n }\n)\n","/**\n * @typedef {import('unist').Parent} Parent\n */\n\n/**\n * @template {Parent} Kind\n * Node type.\n * @callback Visitor\n * Callback called for each `child` in `parent` later given to `visit`.\n * @param {Kind['children'][number]} child\n * Child of parent.\n * @param {number} index\n * Position of `child` in parent.\n * @param {Kind} parent\n * Parent node.\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * @template {Parent} Kind\n * Node type.\n * @callback Visit\n * Function to call the bound `visitor` for each child in `parent`.\n * @param {Kind} node\n * Parent node.\n * @returns {undefined}\n * Nothing.\n */\n\n/**\n * Wrap `visitor` to be called for each child in the nodes later given to\n * `visit`.\n *\n * @template {Parent} Kind\n * Node type.\n * @param {Visitor<Kind>} visitor\n * Callback called for each `child` in `parent` later given to `visit`.\n * @returns {Visit<Kind>}\n * Function to call the bound `visitor` for each child in `parent`.\n */\nexport function visitChildren(visitor) {\n return visit\n\n /** @type {Visit<Kind>} */\n function visit(parent) {\n const children = parent && parent.children\n let index = -1\n\n if (!children) {\n throw new Error('Missing children in `parent` for `visit`')\n }\n\n while (++index in children) {\n visitor(children[index], index, parent)\n }\n }\n}\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {visitChildren} from 'unist-util-visit-children'\n\n// Move white space starting a sentence up, so they are the siblings of\n// sentences.\nexport const makeInitialWhiteSpaceSiblings = visitChildren(\n /**\n * @type {import('unist-util-visit-children').Visitor<Paragraph | Root>}\n */\n function (child, index, parent) {\n if ('children' in child && child.children) {\n const head = child.children[0]\n if (head && head.type === 'WhiteSpaceNode') {\n child.children.shift()\n parent.children.splice(index, 0, head)\n const next = child.children[0]\n\n if (next && next.position && child.position) {\n child.position.start = next.position.start\n }\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge certain punctuation marks into their preceding words.\nexport const mergeFinalWordSymbol = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Sentence>}\n */\n function (child, index, parent) {\n if (\n index > 0 &&\n (child.type === 'SymbolNode' || child.type === 'PunctuationNode') &&\n toString(child) === '-'\n ) {\n const children = parent.children\n const previous = children[index - 1]\n const next = children[index + 1]\n\n if (\n (!next || next.type !== 'WordNode') &&\n previous &&\n previous.type === 'WordNode'\n ) {\n // Remove `child` from parent.\n children.splice(index, 1)\n\n // Add the punctuation mark at the end of the previous node.\n previous.children.push(child)\n\n // Update position.\n if (previous.position && child.position) {\n previous.position.end = child.position.end\n }\n\n // Next, iterate over the node *now* at the current position (which was\n // the next node).\n return index\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\nimport {digitStart} from '../expressions.js'\n\n// Merge a sentence into its previous sentence, when the sentence starts with a\n// lower case letter.\nexport const mergeInitialDigitSentences = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n */\n function (child, index, parent) {\n const previous = parent.children[index - 1]\n\n if (\n previous &&\n previous.type === 'SentenceNode' &&\n child.type === 'SentenceNode'\n ) {\n const head = child.children[0]\n\n if (head && head.type === 'WordNode' && digitStart.test(toString(head))) {\n previous.children.push(...child.children)\n parent.children.splice(index, 1)\n\n // Update position.\n if (previous.position && child.position) {\n previous.position.end = child.position.end\n }\n\n // Next, iterate over the node *now* at the current position.\n return index\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n// Initial lowercase letter.\nimport {lowerInitial} from '../expressions.js'\n\n// Merge a sentence into its previous sentence, when the sentence starts with a\n// lower case letter.\nexport const mergeInitialLowerCaseLetterSentences = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n */\n function (child, index, parent) {\n if (child.type === 'SentenceNode' && index > 0) {\n const previous = parent.children[index - 1]\n const children = child.children\n\n if (children.length > 0 && previous.type === 'SentenceNode') {\n let position = -1\n\n while (children[++position]) {\n const node = children[position]\n\n if (node.type === 'WordNode') {\n if (!lowerInitial.test(toString(node))) {\n return\n }\n\n previous.children.push(...children)\n\n parent.children.splice(index, 1)\n\n // Update position.\n if (previous.position && child.position) {\n previous.position.end = child.position.end\n }\n\n // Next, iterate over the node *now* at the current position.\n return index\n }\n\n if (node.type === 'SymbolNode' || node.type === 'PunctuationNode') {\n return\n }\n }\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge certain punctuation marks into their following words.\nexport const mergeInitialWordSymbol = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Sentence>}\n */\n function (child, index, parent) {\n if (\n (child.type !== 'SymbolNode' && child.type !== 'PunctuationNode') ||\n toString(child) !== '&'\n ) {\n return\n }\n\n const children = parent.children\n const next = children[index + 1]\n\n // If either a previous word, or no following word, exists, exit early.\n if (\n (index > 0 && children[index - 1].type === 'WordNode') ||\n !(next && next.type === 'WordNode')\n ) {\n return\n }\n\n // Remove `child` from parent.\n children.splice(index, 1)\n\n // Add the punctuation mark at the start of the next node.\n next.children.unshift(child)\n\n // Update position.\n if (next.position && child.position) {\n next.position.start = child.position.start\n }\n\n // Next, iterate over the node at the previous position, as it's now adjacent\n // to a following word.\n return index - 1\n }\n)\n","/**\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\nimport {numerical} from '../expressions.js'\n\n// Merge initialisms.\nexport const mergeInitialisms = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Sentence>}\n */\n function (child, index, parent) {\n if (\n index > 0 &&\n child.type === 'PunctuationNode' &&\n toString(child) === '.'\n ) {\n const previous = parent.children[index - 1]\n\n if (\n previous.type === 'WordNode' &&\n previous.children &&\n previous.children.length !== 1 &&\n previous.children.length % 2 !== 0\n ) {\n let position = previous.children.length\n let isAllDigits = true\n\n while (previous.children[--position]) {\n const otherChild = previous.children[position]\n\n const value = toString(otherChild)\n\n if (position % 2 === 0) {\n // Initialisms consist of one character values.\n if (value.length > 1) {\n return\n }\n\n if (!numerical.test(value)) {\n isAllDigits = false\n }\n } else if (value !== '.') {\n if (position < previous.children.length - 2) {\n break\n } else {\n return\n }\n }\n }\n\n if (!isAllDigits) {\n // Remove `child` from parent.\n parent.children.splice(index, 1)\n\n // Add child to the previous children.\n previous.children.push(child)\n\n // Update position.\n if (previous.position && child.position) {\n previous.position.end = child.position.end\n }\n\n // Next, iterate over the node *now* at the current position.\n return index\n }\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Sentence} Sentence\n * @typedef {import('nlcst').WordContent} WordContent\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n// Symbols part of surrounding words.\nimport {wordSymbolInner} from '../expressions.js'\n\n// Merge words joined by certain punctuation marks.\nexport const mergeInnerWordSymbol = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Sentence>}\n */\n function (child, index, parent) {\n if (\n index > 0 &&\n (child.type === 'SymbolNode' || child.type === 'PunctuationNode')\n ) {\n const siblings = parent.children\n const previous = siblings[index - 1]\n\n if (previous && previous.type === 'WordNode') {\n let position = index - 1\n /** @type {Array<WordContent>} */\n const tokens = []\n /** @type {Array<WordContent>} */\n let queue = []\n\n // - If a token which is neither word nor inner word symbol is found,\n // the loop is broken\n // - If an inner word symbol is found, it’s queued\n // - If a word is found, it’s queued (and the queue stored and emptied)\n while (siblings[++position]) {\n const sibling = siblings[position]\n\n if (sibling.type === 'WordNode') {\n tokens.push(...queue, ...sibling.children)\n\n queue = []\n } else if (\n (sibling.type === 'SymbolNode' ||\n sibling.type === 'PunctuationNode') &&\n wordSymbolInner.test(toString(sibling))\n ) {\n queue.push(sibling)\n } else {\n break\n }\n }\n\n if (tokens.length > 0) {\n // If there is a queue, remove its length from `position`.\n if (queue.length > 0) {\n position -= queue.length\n }\n\n // Remove every (one or more) inner-word punctuation marks and children\n // of words.\n siblings.splice(index, position - index)\n\n // Add all found tokens to `prev`s children.\n previous.children.push(...tokens)\n\n const last = tokens[tokens.length - 1]\n\n // Update position.\n if (previous.position && last.position) {\n previous.position.end = last.position.end\n }\n\n // Next, iterate over the node *now* at the current position.\n return index\n }\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Sentence} Sentence\n * @typedef {import('nlcst').SentenceContent} SentenceContent\n * @typedef {import('nlcst').WordContent} WordContent\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge words joined by certain punctuation marks.\nexport const mergeInnerWordSlash = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Sentence>}\n */\n function (child, index, parent) {\n const siblings = parent.children\n const previous = siblings[index - 1]\n\n if (\n previous &&\n previous.type === 'WordNode' &&\n (child.type === 'SymbolNode' || child.type === 'PunctuationNode') &&\n toString(child) === '/'\n ) {\n const previousValue = toString(previous)\n /** @type {SentenceContent} */\n let tail = child\n /** @type {Array<WordContent>} */\n const queue = [child]\n let count = 1\n let nextValue = ''\n const next = siblings[index + 1]\n\n if (next && next.type === 'WordNode') {\n nextValue = toString(next)\n tail = next\n queue.push(...next.children)\n count++\n }\n\n if (previousValue.length < 3 && (!nextValue || nextValue.length < 3)) {\n // Add all found tokens to `prev`s children.\n previous.children.push(...queue)\n\n siblings.splice(index, count)\n\n // Update position.\n if (previous.position && tail.position) {\n previous.position.end = tail.position.end\n }\n\n // Next, iterate over the node *now* at the current position.\n return index\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Merge a sentence into the following sentence, when the sentence does not\n// contain word tokens.\nexport const mergeNonWordSentences = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n */\n function (child, index, parent) {\n if ('children' in child) {\n let position = -1\n\n while (child.children[++position]) {\n if (child.children[position].type === 'WordNode') {\n return\n }\n }\n\n const previous = parent.children[index - 1]\n\n if (previous && 'children' in previous) {\n previous.children.push(...child.children)\n\n // Remove the child.\n parent.children.splice(index, 1)\n\n // Patch position.\n if (previous.position && child.position) {\n previous.position.end = child.position.end\n }\n\n // Next, iterate over the node *now* at the current position (which was the\n // next node).\n return index\n }\n\n const next = parent.children[index + 1]\n\n if (next && 'children' in next) {\n next.children.unshift(...child.children)\n\n // Patch position.\n if (next.position && child.position) {\n next.position.start = child.position.start\n }\n\n // Remove the child.\n parent.children.splice(index, 1)\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Full stop characters that should not be treated as terminal sentence markers:\n// A case-insensitive abbreviation.\nconst abbreviationPrefix = new RegExp(\n '^(' +\n '[0-9]{1,3}|' +\n '[a-z]|' +\n // Common Latin Abbreviations:\n // Based on: <https://en.wikipedia.org/wiki/List_of_Latin_abbreviations>.\n // Where only the abbreviations written without joining full stops,\n // but with a final full stop, were extracted.\n //\n // circa, capitulus, confer, compare, centum weight, eadem, (et) alii,\n // et cetera, floruit, foliis, ibidem, idem, nemine && contradicente,\n // opere && citato, (per) cent, (per) procurationem, (pro) tempore,\n // sic erat scriptum, (et) sequentia, statim, videlicet. */\n 'al|ca|cap|cca|cent|cf|cit|con|cp|cwt|ead|etc|ff|' +\n 'fl|ibid|id|nem|op|pro|seq|sic|stat|tem|viz' +\n ')$'\n)\n\n// Merge a sentence into its next sentence, when the sentence ends with a\n// certain word.\nexport const mergePrefixExceptions = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph>}\n */\n function (child, index, parent) {\n if ('children' in child && child.children.length > 1) {\n const period = child.children[child.children.length - 1]\n\n if (\n period &&\n (period.type === 'PunctuationNode' || period.type === 'SymbolNode') &&\n toString(period) === '.'\n ) {\n const node = child.children[child.children.length - 2]\n\n if (\n node &&\n node.type === 'WordNode' &&\n abbreviationPrefix.test(toString(node).toLowerCase())\n ) {\n // Merge period into abbreviation.\n node.children.push(period)\n child.children.pop()\n\n // Update position.\n if (period.position && node.position) {\n node.position.end = period.position.end\n }\n\n // Merge sentences.\n const next = parent.children[index + 1]\n\n if (next && next.type === 'SentenceNode') {\n child.children.push(...next.children)\n parent.children.splice(index + 1, 1)\n\n // Update position.\n if (next.position && child.position) {\n child.position.end = next.position.end\n }\n\n // Next, iterate over the current node again.\n return index - 1\n }\n }\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {visitChildren} from 'unist-util-visit-children'\n// Full stop characters that should not be treated as terminal sentence markers:\n// A case-insensitive abbreviation.\nimport {terminalMarker} from '../expressions.js'\n\n// Merge non-terminal-marker full stops into the previous word (if available),\n// or the next word (if available).\nexport const mergeRemainingFullStops = visitChildren(\n /**\n * @type {import('unist-util-visit-children').Visitor<Paragraph>}\n */\n // eslint-disable-next-line complexity\n function (child, _, _parent) {\n if ('children' in child) {\n let position = child.children.length\n let hasFoundDelimiter = false\n\n while (child.children[--position]) {\n const grandchild = child.children[position]\n\n if (\n grandchild.type !== 'SymbolNode' &&\n grandchild.type !== 'PunctuationNode'\n ) {\n // This is a sentence without terminal marker, so we 'fool' the code to\n // make it think we have found one.\n if (grandchild.type === 'WordNode') {\n hasFoundDelimiter = true\n }\n\n continue\n }\n\n // Exit when this token is not a terminal marker.\n if (!terminalMarker.test(toString(grandchild))) {\n continue\n }\n\n // Ignore the first terminal marker found (starting at the end), as it\n // should not be merged.\n if (!hasFoundDelimiter) {\n hasFoundDelimiter = true\n continue\n }\n\n // Only merge a single full stop.\n if (toString(grandchild) !== '.') {\n continue\n }\n\n const previous = child.children[position - 1]\n const next = child.children[position + 1]\n\n if (previous && previous.type === 'WordNode') {\n const nextNext = child.children[position + 2]\n\n // Continue when the full stop is followed by a space and another full\n // stop, such as: `{.} .`\n if (\n next &&\n nextNext &&\n next.type === 'WhiteSpaceNode' &&\n toString(nextNext) === '.'\n ) {\n continue\n }\n\n // Remove `child` from parent.\n child.children.splice(position, 1)\n\n // Add the punctuation mark at the end of the previous node.\n previous.children.push(grandchild)\n\n // Update position.\n if (grandchild.position && previous.position) {\n previous.position.end = grandchild.position.end\n }\n\n position--\n } else if (next && next.type === 'WordNode') {\n // Remove `child` from parent.\n child.children.splice(position, 1)\n\n // Add the punctuation mark at the start of the next node.\n next.children.unshift(grandchild)\n\n if (grandchild.position && next.position) {\n next.position.start = grandchild.position.start\n }\n }\n }\n }\n }\n)\n","/**\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {modifyChildren} from 'unist-util-modify-children'\n\n// Remove empty children.\nexport const removeEmptyNodes = modifyChildren(\n /**\n * @type {import('unist-util-modify-children').Modifier<Paragraph | Root>}\n */\n\n function (child, index, parent) {\n if ('children' in child && child.children.length === 0) {\n parent.children.splice(index, 1)\n\n // Next, iterate over the node *now* at the current position (which was the\n // next node).\n return index\n }\n }\n)\n","/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('unist').Position} Position\n * @typedef {import('nlcst').Root} Root\n * @typedef {import('nlcst').Sentence} Sentence\n */\n\nimport {visitChildren} from 'unist-util-visit-children'\n\n// Patch the position on a parent node based on its first and last child.\nexport const patchPosition = visitChildren(\n /**\n * @type {import('unist-util-visit-children').Visitor<Paragraph | Root | Sentence>}\n */\n function (child, index, node) {\n const siblings = node.children\n\n if (\n child.position &&\n index < 1 &&\n /* c8 ignore next */\n (!node.position || !node.position.start)\n ) {\n patch(node)\n node.position.start = child.position.start\n }\n\n if (\n child.position &&\n index === siblings.length - 1 &&\n (!node.position || !node.position.end)\n ) {\n patch(node)\n node.position.end = child.position.end\n }\n }\n)\n\n/**\n * @param {Node} node\n * @returns {asserts node is Node & {position: Position}}\n */\nfunction patch(node) {\n if (!node.position) {\n // @ts-expect-error: fine, we’ll fill it later.\n node.position = {}\n }\n}\n","/**\n * @typedef {import('nlcst').Nodes} Nodes\n * @typedef {import('nlcst').Parents} Parents\n * @typedef {import('nlcst').Paragraph} Paragraph\n * @typedef {import('nlcst').Root} Root\n * @typedef {import('nlcst').RootContent} RootContent\n * @typedef {import('nlcst').Sentence} Sentence\n * @typedef {import('nlcst').SentenceContent} SentenceContent\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @template {Nodes} Node\n * Node type.\n * @callback Plugin\n * Transform a node.\n * @param {Node} node\n * The node.\n * @returns {undefined | void}\n * Nothing.\n */\n\nimport {toString} from 'nlcst-to-string'\nimport {mergeAffixExceptions} from './plugin/merge-affix-exceptions.js'\nimport {mergeAffixSymbol} from './plugin/merge-affix-symbol.js'\nimport {breakImplicitSentences} from './plugin/break-implicit-sentences.js'\nimport {makeFinalWhiteSpaceSiblings} from './plugin/make-final-white-space-siblings.js'\nimport {makeInitialWhiteSpaceSiblings} from './plugin/make-initial-white-space-siblings.js'\nimport {mergeFinalWordSymbol} from './plugin/merge-final-word-symbol.js'\nimport {mergeInitialDigitSentences} from './plugin/merge-initial-digit-sentences.js'\nimport {mergeInitialLowerCaseLetterSentences} from './plugin/merge-initial-lower-case-letter-sentences.js'\nimport {mergeInitialWordSymbol} from './plugin/merge-initial-word-symbol.js'\nimport {mergeInitialisms} from './plugin/merge-initialisms.js'\nimport {mergeInnerWordSymbol} from './plugin/merge-inner-word-symbol.js'\nimport {mergeInnerWordSlash} from './plugin/merge-inner-word-slash.js'\nimport {mergeNonWordSentences} from './plugin/merge-non-word-sentences.js'\nimport {mergePrefixExceptions} from './plugin/merge-prefix-exceptions.js'\nimport {mergeRemainingFullStops} from './plugin/merge-remaining-full-stops.js'\nimport {removeEmptyNodes} from './plugin/remove-empty-nodes.js'\nimport {patchPosition} from './plugin/patch-position.js'\nimport {\n newLine,\n punctuation,\n surrogates,\n terminalMarker,\n whiteSpace,\n word\n} from './expressions.js'\n\n// PARSE LATIN\n\n/**\n * Create a new parser.\n */\nexport class ParseLatin {\n /**\n * Create a new parser.\n *\n * This additionally supports `retext`-like call: where an instance is\n * created for each file, and the file is given on construction.\n *\n * @param {string | null | undefined} [doc]\n * Value to parse (optional).\n * @param {VFile | null | undefined} [file]\n * Corresponding file (optional).\n */\n constructor(doc, file) {\n const value = file || doc\n\n /** @type {string | undefined} */\n this.doc = value ? String(value) : undefined\n\n /** @type {Array<Plugin<Root>>} */\n this.tokenizeRootPlugins = [...this.tokenizeRootPlugins]\n /** @type {Array<Plugin<Paragraph>>} */\n this.tokenizeParagraphPlugins = [...this.tokenizeParagraphPlugins]\n /** @type {Array<Plugin<Sentence>>} */\n this.tokenizeSentencePlugins = [...this.tokenizeSentencePlugins]\n }\n\n /**\n * Turn natural language into a syntax tree.\n *\n * @param {string | null | undefined} [value]\n * Value to parse (optional).\n * @returns {Root}\n * Tree.\n */\n parse(value) {\n return this.tokenizeRoot(value || this.doc)\n }\n\n /**\n * Parse as a root.\n *\n * @param {string | null | undefined} [value]\n * Value to parse (optional).\n * @returns {Root}\n * Built tree.\n */\n tokenizeRoot(value) {\n const paragraph = this.tokenizeParagraph(value)\n /** @type {Root} */\n const result = {\n type: 'RootNode',\n children: splitNode(paragraph, 'WhiteSpaceNode', newLine)\n }\n\n let index = -1\n while (this.tokenizeRootPlugins[++index]) {\n this.tokenizeRootPlugins[index](result)\n }\n\n return result\n }\n\n /**\n * Parse as a paragraph.\n *\n * @param {string | null | undefined} [value]\n * Value to parse (optional).\n * @returns {Paragraph}\n * Built tree.\n */\n tokenizeParagraph(value) {\n const sentence = this.tokenizeSentence(value)\n /** @type {Paragraph} */\n const result = {\n type: 'ParagraphNode',\n children: splitNode(sentence, 'PunctuationNode', terminalMarker)\n }\n\n let index = -1\n while (this.tokenizeParagraphPlugins[++index]) {\n this.tokenizeParagraphPlugins[index](result)\n }\n\n return result\n }\n\n /**\n * Parse as a sentence.\n *\n * @param {string | null | undefined} [value]\n * Value to parse (optional).\n * @returns {Sentence}\n * Built tree.\n */\n tokenizeSentence(value) {\n const children = this.tokenize(value)\n /** @type {Sentence} */\n const result = {type: 'SentenceNode', children}\n\n let index = -1\n while (this.tokenizeSentencePlugins[++index]) {\n this.tokenizeSentencePlugins[index](result)\n }\n\n return result\n }\n\n /**\n * Transform a `value` into a list of nlcsts.\n *\n * @param {string | null | undefined} [value]\n * Value to parse (optional).\n * @returns {Array<SentenceContent>}\n * Built sentence content.\n */\n tokenize(value) {\n /** @type {Array<SentenceContent>} */\n const children = []\n\n if (!value) {\n return children\n }\n\n const currentPoint = {line: 1, column: 1, offset: 0}\n let from = 0\n let index = 0\n let start = {...currentPoint}\n /** @type {SentenceContent['type'] | undefined} */\n let previousType\n /** @type {string | undefined} */\n let previous\n\n while (index < value.length) {\n const current = value.charAt(index)\n const currentType = whiteSpace.test(current)\n ? 'WhiteSpaceNode'\n : punctuation.test(current)\n ? 'PunctuationNode'\n : word.test(current)\n ? 'WordNode'\n : 'SymbolNode'\n\n if (\n from < index &&\n previousType &&\n currentType &&\n !(\n previousType === currentType &&\n // Words or white space continue.\n (previousType === 'WordNode' ||\n previousType === 'WhiteSpaceNode' ||\n // Same character of punctuation or symbol also continues.\n current === previous ||\n // Surrogates of punctuation or symbol also continue.\n surrogates.test(current))\n )\n ) {\n // Flush the previous queue.\n children.push(createNode(previousType, value.slice(from, index)))\n from = index\n start = {...currentPoint}\n }\n\n if (current === '\\r' || (current === '\\n' && previous !== '\\r')) {\n currentPoint.line++\n currentPoint.column = 1\n } else if (current !== '\\n') {\n currentPoint.column++\n }\n\n currentPoint.offset++\n previousType = currentType\n previous = current\n index++\n }\n\n if (previousType && from < index) {\n children.push(createNode(previousType, value.slice(from, index)))\n }\n\n return children\n\n /**\n * @param {SentenceContent['type']} type\n * Node type to build.\n * @param {string} value\n * Value.\n * @returns {SentenceContent}\n * Node.\n */\n function createNode(type, value) {\n return type === 'WordNode'\n ? {\n type: 'WordNode',\n children: [\n {\n type: 'TextNode',\n value,\n position: {start, end: {...currentPoint}}\n }\n ],\n position: {start, end: {...currentPoint}}\n }\n : {type, value, position: {start, end: {...currentPoint}}}\n }\n }\n}\n\n/**\n * List of transforms handling a sentence.\n */\nParseLatin.prototype.tokenizeSentencePlugins = [\n mergeInitialWordSymbol,\n mergeFinalWordSymbol,\n mergeInnerWordSymbol,\n mergeInnerWordSlash,\n mergeInitialisms,\n patchPosition\n]\n\n/**\n * List of transforms handling a paragraph.\n */\nParseLatin.prototype.tokenizeParagraphPlugins = [\n mergeNonWordSentences,\n mergeAffixSymbol,\n mergeInitialLowerCaseLetterSentences,\n mergeInitialDigitSentences,\n mergePrefixExceptions,\n mergeAffixExceptions,\n mergeRemainingFullStops,\n makeInitialWhiteSpaceSiblings,\n makeFinalWhiteSpaceSiblings,\n breakImplicitSentences,\n removeEmptyNodes,\n patchPosition\n]\n\n/**\n * List of transforms handling a root.\n */\nParseLatin.prototype.tokenizeRootPlugins = [\n makeInitialWhiteSpaceSiblings,\n makeFinalWhiteSpaceSiblings,\n removeEmptyNodes,\n patchPosition\n]\n\n/**\n * A function that splits one node into several nodes.\n *\n * @template {Parents} Node\n * Node type.\n * @param {Node} node\n * Node to split.\n * @param {RegExp} expression\n * Split on this regex.\n * @param {Node['children'][number]['type']} childType\n * Split this node type.\n * @returns {Array<Node>}\n * The given node, split into several nodes.\n */\nfunction splitNode(node, childType, expression) {\n /** @type {Array<Node>} */\n const result = []\n let index = -1\n let start = 0\n\n while (++index < node.children.length) {\n const token = node.children[index]\n\n if (\n index === node.children.length - 1 ||\n (token.type === childType && expression.test(toString(token)))\n ) {\n /** @type {Node} */\n // @ts-expect-error: fine\n const parent = {\n type: node.type,\n children: node.children.slice(start, index + 1)\n }\n\n const first = node.children[start]\n const last = token\n if (first.position && last.position) {\n parent.position = {\n start: first.position.start,\n end: last.position.end\n }\n }\n\n result.push(parent)\n start = index + 1\n }\n }\n\n return result\n}\n","/**\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {ParseLatin} from 'parse-latin'\n\n/**\n * Add support for parsing Latin-script natural language.\n *\n * @returns {undefined}\n * Nothing.\n */\nexport default function retextLatin() {\n // @ts-expect-error -- TS in JSDoc doesn’t understand `this`.\n // eslint-disable-next-line unicorn/no-this-assignment\n const self = /** @type {import('unified').Processor<Root>} */ (this)\n\n self.parser = parser\n\n /** @type {import('unified').Parser<Root>} */\n function parser(value) {\n const parser = new ParseLatin()\n add(parser.tokenizeParagraphPlugins, self.data('nlcstParagraphExtensions'))\n add(parser.tokenizeRootPlugins, self.data('nlcstRootExtensions'))\n add(parser.tokenizeSentencePlugins, self.data('nlcstSentenceExtensions'))\n return parser.parse(value)\n }\n}\n\n/**\n * @template T\n * @param {Array<T>} list\n * @param {Array<T> | undefined} values\n */\nfunction add(list, values) {\n if (values) list.unshift(...values)\n}\n","/**\n * @typedef {import('nlcst').Root} Root\n */\n\nimport {toString} from 'nlcst-to-string'\n\n/**\n * Add support for serializing natural language.\n *\n * @returns {undefined}\n * Nothing.\n */\nexport default function retextStringify() {\n // eslint-disable-next-line unicorn/no-this-assignment\n const self =\n /** @type {import('unified').Processor<undefined, undefined, undefined, Root, string>} */ (\n // @ts-expect-error -- TS in JSDoc doesn’t understand `this`.\n this\n )\n\n self.compiler = compiler\n}\n\n/** @type {import('unified').Compiler<Root, string>} */\nfunction compiler(tree) {\n return toString(tree)\n}\n","// Note: types exposed from `index.d.ts`.\nimport {unified} from 'unified'\nimport retextLatin from 'retext-latin'\nimport retextStringify from 'retext-stringify'\n\nexport const retext = unified().use(retextLatin).use(retextStringify).freeze()\n","/**\n * @import {Parents, Punctuation, Root, SentenceContent, Symbol} from 'nlcst'\n */\n\n/**\n * @callback Method\n * Transform.\n * @param {State} state\n * Info passed around.\n * @param {Punctuation | Symbol} node\n * Node.\n * @param {number} index\n * Position of `node` in `parent`.\n * @param {Parents} parent\n * Parent of `node`.\n * @returns {boolean | undefined | void}\n * Whether to remove the node (`true`); or not (otherwise).\n *\n * @typedef Options\n * Configuration.\n * @property {'all' | boolean | null | undefined} [backticks=true]\n * Transform backticks (default: `true`); when `true`, turns double\n * backticks into an opening double quote and double straight single quotes\n * into a closing double quote; when `'all'`, does that and turns single\n * backticks into an opening single quote and a straight single quotes into\n * a closing single smart quote; `quotes: false` must be used with\n * `backticks: 'all'`.\n * @property {QuoteCharacterMap | null | undefined} [closingQuotes]\n * Closing quotes to use (default: `{double: '”', single: '’'}`).\n * @property {'inverted' | 'oldschool' | boolean | null | undefined} [dashes=true]\n * Transform dashes (default: `true`);\n * when `true`, turns two dashes into an em dash character;\n * when `'oldschool'`, turns three dashes into an em dash and two into an en\n * dash;\n * when `'inverted'`, turns three dashes into an en dash and two into an em\n * dash.\n * @property {'spaced' | 'unspaced' | boolean | null | undefined} [ellipses=true]\n * Transform triple dots (default: `true`).\n * when `'spaced'`, turns triple dots with spaces into ellipses;\n * when `'unspaced'`, turns triple dots without spaces into ellipses;\n * when `true`, turns triple dots with or without spaces into ellipses.\n * @property {QuoteCharacterMap | null | undefined} [openingQuotes]\n * Opening quotes to use (default: `{double: '“', single: '‘'}`).\n * @property {boolean | null | undefined} [quotes=true]\n * Transform straight quotes into smart quotes (default: `true`).\n *\n * @typedef State\n * Info passed around.\n * @property {Quotes} close\n * Closing quotes.\n * @property {Quotes} open\n * Opening quotes.\n *\n * @typedef QuoteCharacterMap\n * Quote characters.\n * @property {string} double\n * Character to use for double quotes.\n * @property {string} single\n * Character to use for single quotes.\n *\n * @typedef {[string, string]} Quotes\n * Quotes.\n */\n\nimport {visit} from 'unist-util-visit'\nimport {toString} from 'nlcst-to-string'\n\n/** @type {Quotes} */\nconst defaultClosingQuotes = ['”', '’']\n/** @type {Quotes} */\nconst defaultOpeningQuotes = ['“', '‘']\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Replace straight punctuation marks with curly ones.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n * Configuration (optional).\n * @returns\n * Transform.\n */\nexport default function retextSmartypants(options) {\n const settings = options || emptyOptions\n /** @type {Array<Method>} */\n const methods = []\n\n if (settings.quotes !== false) {\n methods.push(quotesDefault)\n }\n\n if (settings.ellipses === 'spaced') {\n methods.push(ellipsesSpaced)\n } else if (settings.ellipses === 'unspaced') {\n methods.push(ellipsesUnspaced)\n } else if (settings.ellipses !== false) {\n methods.push(ellipsesDefault)\n }\n\n if (settings.backticks === 'all') {\n if (settings.quotes !== false) {\n throw new Error(\"Cannot accept `backticks: 'all'` with `quotes: true`\")\n }\n\n methods.push(backticksAll)\n } else if (settings.backticks !== false) {\n methods.push(backticksDefault)\n }\n\n if (settings.dashes === 'inverted') {\n methods.push(dashesInverted)\n } else if (settings.dashes === 'oldschool') {\n methods.push(dashesOldschool)\n } else if (settings.dashes !== false) {\n methods.push(dashesDefault)\n }\n\n /** @type {State} */\n const state = {\n close: settings.closingQuotes\n ? [settings.closingQuotes.double, settings.closingQuotes.single]\n : defaultClosingQuotes,\n open: settings.openingQuotes\n ? [settings.openingQuotes.double, settings.openingQuotes.single]\n : defaultOpeningQuotes\n }\n\n /**\n * Transform.\n *\n * @param {Root} tree\n * Tree.\n * @returns {undefined}\n * Nothing.\n */\n return function (tree) {\n visit(tree, function (node, position, parent) {\n let index = -1\n\n if (\n parent &&\n position !== undefined &&\n (node.type === 'PunctuationNode' || node.type === 'SymbolNode')\n ) {\n while (++index < methods.length) {\n const result = methods[index](state, node, position, parent)\n if (result === true) {\n console.log('drop', node)\n parent.children.splice(position, 1)\n return position\n }\n }\n }\n })\n }\n}\n\n/**\n * Transform single and double backticks and single quotes into smart quotes.\n *\n * @type {Method}\n */\nfunction backticksAll(state, node, index, parent) {\n backticksDefault(state, node, index, parent)\n\n if (node.value === '`') {\n node.value = '‘'\n } else if (node.value === \"'\") {\n node.value = '’'\n }\n}\n\n/**\n * Transform double backticks and single quotes into smart quotes.\n *\n * @type {Method}\n */\nfunction backticksDefault(_, node) {\n if (node.value === '``') {\n node.value = '“'\n } else if (node.value === \"''\") {\n node.value = '”'\n }\n}\n\n/**\n * Transform two dashes into an em dash.\n *\n * @type {Method}\n */\nfunction dashesDefault(_, node) {\n if (node.value === '--') {\n node.value = '—'\n }\n}\n\n/**\n * Transform three dashes into an en dash, and two into an em dash.\n *\n * @type {Method}\n */\nfunction dashesInverted(_, node, index, parent) {\n const next = parent.children[index + 1]\n\n if (\n node.value === '—' &&\n next &&\n next.type === 'PunctuationNode' &&\n next.value === '-'\n ) {\n next.value = '–'\n return true\n }\n\n if (node.value === '---') {\n node.value = '–'\n } else if (node.value === '--') {\n node.value = '—'\n }\n}\n\n/**\n * Transform three dashes into an em dash, and two into an en dash.\n *\n * @type {Method}\n */\nfunction dashesOldschool(_, node, index, parent) {\n const next = parent.children[index + 1]\n\n if (\n node.value === '–' &&\n next &&\n next.type === 'PunctuationNode' &&\n next.value === '-'\n ) {\n next.value = '—'\n return true\n }\n\n if (node.value === '---') {\n node.value = '—'\n } else if (node.value === '--') {\n node.value = '–'\n }\n}\n\n/**\n * Transform multiple dots into unicode ellipses.\n *\n * @type {Method}\n */\nfunction ellipsesDefault(_, node, index, parent) {\n ellipsesSpaced(_, node, index, parent)\n ellipsesUnspaced(_, node, index, parent)\n}\n\n/**\n * Transform multiple dots with spaces into unicode ellipses.\n *\n * @type {Method}\n */\nfunction ellipsesSpaced(_, node, index, parent) {\n const value = node.value\n const siblings = parent.children\n\n if (!/^\\.+$/.test(value)) {\n return\n }\n\n // Search for dot-nodes with whitespace between.\n /** @type {Array<SentenceContent>} */\n const nodes = []\n let position = index\n let count = 1\n\n // It’s possible that the node is merged with an adjacent word-node. In that\n // code, we cannot transform it because there’s no reference to the\n // grandparent.\n while (--position > 0) {\n let sibling = siblings[position]\n\n if (sibling.type !== 'WhiteSpaceNode') {\n break\n }\n\n const queue = sibling\n sibling = siblings[--position]\n\n if (\n sibling &&\n (sibling.type === 'PunctuationNode' || sibling.type === 'SymbolNode') &&\n /^\\.+$/.test(sibling.value)\n ) {\n nodes.push(queue, sibling)\n\n count++\n\n continue\n }\n\n break\n }\n\n if (count < 3) {\n return\n }\n\n siblings.splice(index - nodes.length, nodes.length)\n\n node.value = '…'\n}\n\n/**\n * Transform multiple dots without spaces into unicode ellipses.\n *\n * @type {Method}\n */\nfunction ellipsesUnspaced(_, node) {\n // Simple node with three dots and without whitespace.\n if (/^\\.{3,}$/.test(node.value)) {\n node.value = '…'\n }\n}\n\n/**\n * Transform straight single- and double quotes into smart quotes.\n *\n * @type {Method}\n */\n// eslint-disable-next-line complexity\nfunction quotesDefault(state, node, index, parent) {\n const siblings = parent.children\n const value = node.value\n\n if (value !== '\"' && value !== \"'\") {\n return\n }\n\n const quoteIndex = value === '\"' ? 0 : 1\n const previous = siblings[index - 1]\n const next = siblings[index + 1]\n const nextNext = siblings[index + 2]\n const nextValue = next ? toString(next) : ''\n\n if (\n next &&\n (next.type === 'PunctuationNode' || next.type === 'SymbolNode') &&\n (!nextNext || nextNext.type !== 'WordNode')\n ) {\n // Special case if the very first character is a quote followed by\n // punctuation at a non-word-break. Close the quotes by brute force.\n node.value = state.close[quoteIndex]\n } else if (\n next &&\n (next.type === 'PunctuationNode' || next.type === 'SymbolNode') &&\n (nextValue === '\"' || nextValue === \"'\") &&\n nextNext &&\n nextNext.type === 'WordNode'\n ) {\n // Special case for double sets of quotes:\n // `He said, \"'Quoted' words in a larger quote.\"`\n node.value = state.open[quoteIndex]\n next.value = state.open[nextValue === '\"' ? 0 : 1]\n } else if (next && /^\\d\\ds$/.test(nextValue)) {\n // Special case for decade abbreviations: `the '80s`\n node.value = state.close[quoteIndex]\n } else if (\n previous &&\n (previous.type === 'WhiteSpaceNode' ||\n previous.type === 'PunctuationNode' ||\n previous.type === 'SymbolNode') &&\n next &&\n next.type === 'WordNode'\n ) {\n // Get most opening single quotes.\n node.value = state.open[quoteIndex]\n } else if (\n previous &&\n previous.type !== 'WhiteSpaceNode' &&\n previous.type !== 'SymbolNode' &&\n previous.type !== 'PunctuationNode'\n ) {\n // Closing quotes.\n node.value = state.close[quoteIndex]\n } else if (\n !next ||\n next.type === 'WhiteSpaceNode' ||\n (value === \"'\" && nextValue === 's')\n ) {\n node.value = state.close[quoteIndex]\n } else {\n node.value = state.open[quoteIndex]\n }\n}\n","import { retext } from \"retext\";\nimport { visit } from \"unist-util-visit\";\nimport smartypants from \"retext-smartypants\";\nconst VISITED_NODES = new Set([\"text\", \"inlineCode\", \"paragraph\"]);\nconst IGNORED_HTML_ELEMENTS = new Set([\"style\", \"script\"]);\nconst check = (node, index, parent) => {\n return (parent &&\n (parent.type !== \"mdxJsxTextElement\" ||\n (\"name\" in parent &&\n typeof parent.name === \"string\" &&\n !IGNORED_HTML_ELEMENTS.has(parent.name))) &&\n VISITED_NODES.has(node.type) &&\n (isLiteral(node) || isParagraph(node)));\n};\n/**\n * remark plugin to implement SmartyPants.\n */\nconst remarkSmartypants = (options) => {\n const processor = retext().use(smartypants, {\n ...options,\n // Do not replace ellipses, dashes, backticks because they change string\n // length, and we couldn't guarantee right splice of text in second visit of\n // tree\n ellipses: false,\n dashes: false,\n backticks: false,\n });\n const processor2 = retext().use(smartypants, {\n ...options,\n // Do not replace quotes because they are already replaced in the first\n // processor\n quotes: false,\n });\n return (tree) => {\n let allText = \"\";\n let startIndex = 0;\n const nodes = [];\n visit(tree, check, (node) => {\n if (isLiteral(node)) {\n allText +=\n node.type === \"text\" ? node.value : \"A\".repeat(node.value.length);\n }\n else if (isParagraph(node)) {\n // Inject a \"fake\" space because otherwise, when concatenated below,\n // smartypants will fail to recognize opening quotes at the start of\n // paragraphs\n allText += \" \";\n }\n nodes.push(node);\n });\n // Concat all text into one string, to properly replace quotes around links\n // and bold text\n allText = processor.processSync(allText).toString();\n for (const node of nodes) {\n if (isLiteral(node)) {\n const endIndex = startIndex + node.value.length;\n if (node.type === \"text\") {\n const processedText = allText.slice(startIndex, endIndex);\n node.value = processor2.processSync(processedText).toString();\n }\n startIndex = endIndex;\n }\n else if (isParagraph(node)) {\n // Skip over the space we added above\n startIndex += 1;\n }\n }\n };\n};\nfunction isLiteral(node) {\n return \"value\" in node && typeof node.value === \"string\";\n}\nfunction isParagraph(node) {\n return node.type === \"paragraph\";\n}\nexport default remarkSmartypants;\n","import { Tt as base } from \"./environment.js\";\nimport \"./paths.js\";\nimport { existsSync, readFileSync, readdirSync, statSync } from \"node:fs\";\nimport { join, relative, resolve } from \"node:path\";\nimport { parse } from \"yaml\";\nimport * as acorn from \"acorn\";\nimport GithubSlugger from \"github-slugger\";\nimport { mdxJsx } from \"micromark-extension-mdx-jsx\";\nimport { mdxJsxFromMarkdown } from \"mdast-util-mdx-jsx\";\nimport { toHast } from \"mdast-util-to-hast\";\nimport remarkFrontmatter from \"remark-frontmatter\";\nimport remarkGfm from \"remark-gfm\";\nimport remarkParse from \"remark-parse\";\nimport remarkSmartypants from \"remark-smartypants\";\nimport { unified } from \"unified\";\nimport { createHighlighter } from \"shiki\";\nimport { transformerTwoslash } from \"@shikijs/twoslash\";\n//#region src/lib/content/tree.ts\nvar ROOT = \"/src/content/docs\";\nvar dirOf = (path) => path.slice(0, path.lastIndexOf(\"/\"));\nvar slugOf = (path) => path.slice(path.lastIndexOf(\"/\") + 1).replace(/\\.md$/, \"\");\nfunction buildSidebar(maps, rootFolder = ROOT) {\n\tconst metaFor = (folder) => maps.meta[`${folder}/meta.json`] ?? {};\n\tconst hrefFor = (folder, slug) => {\n\t\tconst rel = folder.slice(17);\n\t\tif (slug === \"index\") return base + (rel || \"/\");\n\t\treturn base + rel + \"/\" + slug;\n\t};\n\tconst byFolder = /* @__PURE__ */ new Map();\n\tfor (const [path, frontmatter] of Object.entries(maps.pages)) {\n\t\tconst folder = dirOf(path);\n\t\tif (!byFolder.has(folder)) byFolder.set(folder, /* @__PURE__ */ new Map());\n\t\tbyFolder.get(folder).set(slugOf(path), {\n\t\t\tslug: slugOf(path),\n\t\t\tfrontmatter: frontmatter ?? {}\n\t\t});\n\t}\n\tconst allFolders = new Set([...byFolder.keys(), ...Object.keys(maps.meta).map(dirOf)]);\n\tconst subfoldersOf = (folder) => [...allFolders].filter((f) => f !== folder && dirOf(f) === folder);\n\tconst linkFor = (folder, slug) => {\n\t\tconst { frontmatter } = byFolder.get(folder).get(slug);\n\t\treturn {\n\t\t\ttitle: frontmatter.title ?? slug,\n\t\t\thref: hrefFor(folder, slug),\n\t\t\ticon: frontmatter.icon,\n\t\t\tbadge: frontmatter.badge,\n\t\t\tdescription: frontmatter.description,\n\t\t\tmethod: frontmatter.method\n\t\t};\n\t};\n\tconst entriesFor = (folder, includeIndex = true) => {\n\t\tconst meta = metaFor(folder);\n\t\tconst pages = byFolder.get(folder) ?? /* @__PURE__ */ new Map();\n\t\tconst subfolders = subfoldersOf(folder);\n\t\tconst subByName = new Map(subfolders.map((f) => [f.slice(f.lastIndexOf(\"/\") + 1), f]));\n\t\tconst order = meta.pages ?? [];\n\t\tconst handledPages = /* @__PURE__ */ new Set();\n\t\tconst handledSubs = /* @__PURE__ */ new Set();\n\t\tconst entries = [];\n\t\tconst pushPage = (slug) => {\n\t\t\tif (!includeIndex && slug === \"index\") return;\n\t\t\tentries.push(linkFor(folder, slug));\n\t\t\thandledPages.add(slug);\n\t\t};\n\t\tfor (const name of order) if (pages.has(name)) pushPage(name);\n\t\telse if (subByName.has(name)) {\n\t\t\tentries.push(groupFor(subByName.get(name)));\n\t\t\thandledSubs.add(name);\n\t\t}\n\t\tfor (const slug of [...pages.keys()].filter((s) => !handledPages.has(s)).sort()) pushPage(slug);\n\t\tfor (const [name, path] of subByName) if (!handledSubs.has(name)) entries.push(groupFor(path));\n\t\treturn entries;\n\t};\n\tconst groupFor = (folder) => {\n\t\tconst meta = metaFor(folder);\n\t\treturn {\n\t\t\ttitle: meta.title ?? folder.slice(folder.lastIndexOf(\"/\") + 1),\n\t\t\ticon: meta.icon,\n\t\t\titems: entriesFor(folder),\n\t\t\tdefaultOpen: meta.defaultOpen\n\t\t};\n\t};\n\tconst rootMeta = metaFor(rootFolder);\n\tconst topSubfolders = subfoldersOf(rootFolder);\n\tconst subByName = new Map(topSubfolders.map((f) => [f.slice(f.lastIndexOf(\"/\") + 1), f]));\n\tconst named = (rootMeta.pages ?? []).filter((name) => subByName.has(name)).map((name) => subByName.get(name));\n\tconst rest = topSubfolders.filter((f) => !named.includes(f)).sort();\n\tconst sections = [];\n\tif (byFolder.has(rootFolder)) sections.push({\n\t\ttitle: rootMeta.title ?? \"Docs\",\n\t\ticon: rootMeta.icon,\n\t\titems: entriesFor(rootFolder).filter((entry) => \"href\" in entry)\n\t});\n\tfor (const folder of [...named, ...rest]) {\n\t\tconst meta = metaFor(folder);\n\t\tsections.push({\n\t\t\ttitle: meta.title ?? folder.slice(folder.lastIndexOf(\"/\") + 1),\n\t\t\ticon: meta.icon,\n\t\t\titems: entriesFor(folder)\n\t\t});\n\t}\n\treturn sections;\n}\nfunction flattenSections(sections) {\n\tconst out = [];\n\tconst walk = (entries) => {\n\t\tfor (const entry of entries) if (\"href\" in entry) out.push(entry);\n\t\telse walk(entry.items);\n\t};\n\tfor (const section of sections) walk(section.items);\n\treturn out;\n}\n//#endregion\n//#region src/lib/markdown/attr-grammar.ts\nvar AttrError = class extends Error {};\nfunction evaluateExpression(node) {\n\tswitch (node.type) {\n\t\tcase \"Literal\": {\n\t\t\tconst value = node.value;\n\t\t\tif (value instanceof RegExp) throw new AttrError(\"regex literals are not allowed\");\n\t\t\tif (value === void 0) return null;\n\t\t\treturn value;\n\t\t}\n\t\tcase \"ArrayExpression\": return node.elements.map((el) => {\n\t\t\tif (!el) throw new AttrError(\"sparse arrays are not allowed\");\n\t\t\tif (el.type === \"SpreadElement\") throw new AttrError(\"spread is not allowed\");\n\t\t\treturn evaluateExpression(el);\n\t\t});\n\t\tcase \"ObjectExpression\": return Object.fromEntries(node.properties.map((prop) => {\n\t\t\tconst p = prop;\n\t\t\tif (p.type !== \"Property\" || p.computed || p.kind && p.kind !== \"init\") throw new AttrError(\"only plain object properties are allowed\");\n\t\t\tconst key = p.key.type === \"Identifier\" ? p.key.name : p.key.type === \"Literal\" ? String(p.key.value) : null;\n\t\t\tif (key === null) throw new AttrError(\"unsupported object key\");\n\t\t\treturn [key, evaluateExpression(p.value)];\n\t\t}));\n\t\tcase \"TemplateLiteral\": {\n\t\t\tconst tpl = node;\n\t\t\tif (tpl.expressions.length) throw new AttrError(\"template interpolation is not allowed\");\n\t\t\treturn tpl.quasis.map((q) => q.value.cooked).join(\"\");\n\t\t}\n\t\tcase \"UnaryExpression\": {\n\t\t\tconst u = node;\n\t\t\tconst value = evaluateExpression(u.argument);\n\t\t\tif (u.operator === \"-\" && typeof value === \"number\") return -value;\n\t\t\tif (u.operator === \"+\" && typeof value === \"number\") return value;\n\t\t\tif (u.operator === \"!\") return !value;\n\t\t\tthrow new AttrError(`unary \"${u.operator}\" is not allowed`);\n\t\t}\n\t\tcase \"Identifier\": {\n\t\t\tconst name = node.name;\n\t\t\tif (name === \"undefined\") return null;\n\t\t\tthrow new AttrError(`identifier \"${name}\" is not allowed (use a literal)`);\n\t\t}\n\t\tdefault: throw new AttrError(`${node.type} is not allowed in an attribute`);\n\t}\n}\nfunction resolveAttributes(attributes, tag) {\n\tconst props = {};\n\tfor (const attr of attributes) {\n\t\tif (attr.type === \"mdxJsxExpressionAttribute\") throw new AttrError(`<${tag}>: spread attributes are not allowed`);\n\t\tif (attr.type !== \"mdxJsxAttribute\" || !attr.name) continue;\n\t\tconst name = attr.name;\n\t\tif (attr.value == null) {\n\t\t\tprops[name] = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (typeof attr.value === \"string\") {\n\t\t\tprops[name] = attr.value;\n\t\t\tcontinue;\n\t\t}\n\t\tconst statement = (attr.value.data?.estree)?.body[0];\n\t\tif (!statement || statement.type !== \"ExpressionStatement\") throw new AttrError(`<${tag}> attribute \"${name}\": unsupported expression`);\n\t\tprops[name] = evaluateExpression(statement.expression);\n\t}\n\treturn props;\n}\n//#endregion\n//#region src/lib/markdown/highlight.ts\nvar themes = {\n\tlight: \"github-light\",\n\tdark: \"vesper\"\n};\nvar langs = [\n\t\"svelte\",\n\t\"typescript\",\n\t\"javascript\",\n\t\"json\",\n\t\"yaml\",\n\t\"bash\",\n\t\"shell\",\n\t\"html\",\n\t\"css\",\n\t\"markdown\"\n];\nvar highlighterPromise;\nfunction getHighlighter() {\n\tif (!highlighterPromise) highlighterPromise = createHighlighter({\n\t\tthemes: Object.values(themes),\n\t\tlangs\n\t});\n\treturn highlighterPromise;\n}\nfunction escapeHtml(str) {\n\treturn str.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\").replace(/\"/g, \""\");\n}\nfunction parseTitle(meta) {\n\tconst match = meta.match(/title=(?:\"([^\"]*)\"|'([^']*)')/);\n\treturn match ? match[1] ?? match[2] : null;\n}\nfunction parseHighlightLines(meta) {\n\tconst match = meta.match(/\\{([\\d,\\s-]+)\\}/);\n\tconst lines = /* @__PURE__ */ new Set();\n\tif (!match) return lines;\n\tfor (const part of match[1].split(\",\")) {\n\t\tconst range = part.trim();\n\t\tif (!range) continue;\n\t\tconst [start, end] = range.split(\"-\").map((n) => parseInt(n, 10));\n\t\tfor (let i = start; i <= (end ?? start); i++) lines.add(i);\n\t}\n\treturn lines;\n}\nvar hasLineNumbers = (meta) => /\\bshowLineNumbers\\b/.test(meta);\nvar hasTwoslash = (meta) => /\\btwoslash\\b/.test(meta);\nvar twoslash = transformerTwoslash({ explicitTrigger: true });\nfunction transformerDimYamlMarkers() {\n\treturn {\n\t\tname: \"axerity:dim-yaml-markers\",\n\t\tspan(node) {\n\t\t\tconst text = node.children?.[0];\n\t\t\tif (text && text.type === \"text\" && text.value.trim() === \"---\") node.properties = {\n\t\t\t\t...node.properties,\n\t\t\t\tstyle: \"color:var(--fg-subtle)\"\n\t\t\t};\n\t\t}\n\t};\n}\nfunction transformerHighlightLines(lines) {\n\treturn {\n\t\tname: \"axerity:highlight-lines\",\n\t\tline(node, lineNumber) {\n\t\t\tif (lines.has(lineNumber)) this.addClassToHast(node, \"highlighted\");\n\t\t}\n\t};\n}\nfunction transformerRemoveLineBreaks() {\n\treturn {\n\t\tname: \"axerity:remove-line-breaks\",\n\t\tcode(node) {\n\t\t\tnode.children = node.children.filter((child) => !(child.type === \"text\" && child.value === \"\\n\"));\n\t\t}\n\t};\n}\nfunction transformerLineNumbers() {\n\treturn {\n\t\tname: \"axerity:line-numbers\",\n\t\tpre(node) {\n\t\t\tthis.addClassToHast(node, \"has-line-numbers\");\n\t\t}\n\t};\n}\nvar COPY_BUTTON = \"<button class=\\\"copy-button\\\" type=\\\"button\\\" aria-label=\\\"Copy code\\\"><svg class=\\\"icon-copy\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"15\\\" height=\\\"15\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><rect width=\\\"14\\\" height=\\\"14\\\" x=\\\"8\\\" y=\\\"8\\\" rx=\\\"2\\\"/><path d=\\\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\\\"/></svg><svg class=\\\"icon-check\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"15\\\" height=\\\"15\\\" viewBox=\\\"0 0 24 24\\\" fill=\\\"none\\\" stroke=\\\"currentColor\\\" stroke-width=\\\"2.5\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"><path d=\\\"M20 6 9 17l-5-5\\\"/></svg></button>\";\nasync function highlightCode(code, lang, meta = \"\") {\n\tif (lang === \"mermaid\") return {\n\t\thtml: `<pre class=\"mermaid\">${code.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/>/g, \">\")}</pre>`,\n\t\tmermaid: code\n\t};\n\tconst highlighter = await getHighlighter();\n\tconst language = lang && highlighter.getLoadedLanguages().includes(lang) && lang || \"text\";\n\tconst title = parseTitle(meta);\n\tconst highlightLines = parseHighlightLines(meta);\n\tconst twoslashEnabled = hasTwoslash(meta);\n\tconst transformers = [];\n\tif (twoslashEnabled) transformers.push(twoslash);\n\tif (language === \"yaml\") transformers.push(transformerDimYamlMarkers());\n\ttransformers.push(transformerRemoveLineBreaks());\n\tif (highlightLines.size) transformers.push(transformerHighlightLines(highlightLines));\n\tif (hasLineNumbers(meta)) transformers.push(transformerLineNumbers());\n\tconst html = highlighter.codeToHtml(code, {\n\t\tlang: language,\n\t\tmeta: { __raw: meta },\n\t\tthemes,\n\t\tdefaultColor: \"light\",\n\t\ttransformers\n\t});\n\tconst header = title ? `<div class=\"code-header\"><span class=\"code-title\">${escapeHtml(title)}</span>${COPY_BUTTON}</div>` : \"\";\n\treturn { html: `<div class=\"${(title ? \"code-block has-header\" : \"code-block\") + (twoslashEnabled ? \" has-twoslash\" : \"\")}\">${header}${title ? \"\" : COPY_BUTTON}${html}</div>` };\n}\n//#endregion\n//#region src/lib/markdown/parse.ts\nfunction remarkMdxJsx() {\n\tconst data = this.data();\n\tconst micromarkExtensions = data.micromarkExtensions ??= [];\n\tconst fromMarkdownExtensions = data.fromMarkdownExtensions ??= [];\n\tmicromarkExtensions.push({ disable: { null: [\"codeIndented\"] } });\n\tmicromarkExtensions.push(mdxJsx({\n\t\tacorn,\n\t\taddResult: true\n\t}));\n\tfromMarkdownExtensions.push(mdxJsxFromMarkdown());\n}\nvar processor = unified().use(remarkParse).use(remarkGfm).use(remarkSmartypants).use(remarkFrontmatter, [\"yaml\"]).use(remarkMdxJsx);\nvar SPECIAL = {\n\tclassName: \"class\",\n\thtmlFor: \"for\",\n\tcolSpan: \"colspan\",\n\trowSpan: \"rowspan\",\n\ttabIndex: \"tabindex\",\n\tsrcSet: \"srcset\"\n};\nfunction attrName(key) {\n\tif (SPECIAL[key]) return SPECIAL[key];\n\tif (/^(aria|data)[A-Z]/.test(key)) return key.replace(/([A-Z])/g, \"-$1\").toLowerCase();\n\treturn key.toLowerCase();\n}\nfunction hastProps(properties) {\n\tconst props = {};\n\tfor (const [key, value] of Object.entries(properties ?? {})) {\n\t\tif (value == null || value === false) continue;\n\t\tprops[attrName(key)] = Array.isArray(value) ? value.join(\" \") : value;\n\t}\n\treturn props;\n}\nvar HAST_OPTS = {\n\tallowDangerousHtml: true,\n\tpassThrough: [\"mdxJsxFlowElement\", \"mdxJsxTextElement\"]\n};\nvar isMdxJsx = (type) => type === \"mdxJsxFlowElement\" || type === \"mdxJsxTextElement\";\nfunction childrenToDoc(children) {\n\treturn (children ?? []).flatMap(mdastToDoc);\n}\nfunction mdastToDoc(node) {\n\tif (isMdxJsx(node.type)) {\n\t\tconst name = node.name;\n\t\tconst children = childrenToDoc(node.children);\n\t\tif (!name) return children;\n\t\tconst props = resolveAttributes(node.attributes ?? [], name);\n\t\tif (/^[a-z]/.test(name)) return [{\n\t\t\ttype: \"element\",\n\t\t\ttag: name,\n\t\t\tprops,\n\t\t\tchildren\n\t\t}];\n\t\treturn [{\n\t\t\ttype: \"component\",\n\t\t\tname,\n\t\t\tprops,\n\t\t\tchildren\n\t\t}];\n\t}\n\tif (node.type === \"html\") return [{\n\t\ttype: \"raw\",\n\t\thtml: node.value\n\t}];\n\tif (node.type === \"text\") return [{\n\t\ttype: \"text\",\n\t\tvalue: node.value\n\t}];\n\tif (node.type === \"root\") return childrenToDoc(node.children);\n\tif (node.type === \"paragraph\") {\n\t\tconst kids = node.children ?? [];\n\t\tconst components = kids.filter((c) => isMdxJsx(c.type));\n\t\tconst onlyComponents = kids.every((c) => isMdxJsx(c.type) || c.type === \"text\" && !c.value.trim());\n\t\tif (components.length && onlyComponents) return components.flatMap(mdastToDoc);\n\t}\n\tconst hast = toHast(node, HAST_OPTS);\n\treturn hast ? hastToDoc(hast) : [];\n}\nfunction hastToDoc(node) {\n\tif (node.type === \"root\") return (node.children ?? []).flatMap(hastToDoc);\n\tif (node.type === \"text\") return [{\n\t\ttype: \"text\",\n\t\tvalue: node.value\n\t}];\n\tif (node.type === \"raw\") return [{\n\t\ttype: \"raw\",\n\t\thtml: node.value\n\t}];\n\tif (isMdxJsx(node.type)) return mdastToDoc(node);\n\tif (node.type === \"element\") return [{\n\t\ttype: \"element\",\n\t\ttag: node.tagName,\n\t\tprops: hastProps(node.properties),\n\t\tchildren: (node.children ?? []).flatMap(hastToDoc)\n\t}];\n\treturn [];\n}\nfunction textOf(node) {\n\tif (node.type === \"text\") return node.value;\n\tif (node.type === \"element\" || node.type === \"component\") return node.children.map(textOf).join(\"\");\n\treturn \"\";\n}\nvar HEADINGS = new Set([\n\t\"h1\",\n\t\"h2\",\n\t\"h3\",\n\t\"h4\",\n\t\"h5\",\n\t\"h6\"\n]);\nfunction transform(nodes, ctx) {\n\treturn nodes.map((node) => {\n\t\tif (node.type === \"element\") {\n\t\t\tif (node.tag === \"table\") return {\n\t\t\t\ttype: \"element\",\n\t\t\t\ttag: \"div\",\n\t\t\t\tprops: { class: \"table-wrapper\" },\n\t\t\t\tchildren: [{\n\t\t\t\t\t...node,\n\t\t\t\t\tchildren: transform(node.children, ctx)\n\t\t\t\t}]\n\t\t\t};\n\t\t\tconst next = {\n\t\t\t\t...node,\n\t\t\t\tchildren: transform(node.children, ctx)\n\t\t\t};\n\t\t\tif (HEADINGS.has(next.tag)) {\n\t\t\t\tif (typeof next.props.id !== \"string\") next.props.id = ctx.slugger.slug(textOf(next));\n\t\t\t\tconst depth = Number(next.tag.slice(1));\n\t\t\t\tif (depth === 2 || depth === 3) ctx.toc.push({\n\t\t\t\t\tid: next.props.id,\n\t\t\t\t\ttitle: textOf(next),\n\t\t\t\t\tdepth\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (next.tag === \"a\") {\n\t\t\t\tconst href = next.props.href;\n\t\t\t\tif (typeof href === \"string\") {\n\t\t\t\t\tif (/^https?:\\/\\//.test(href)) {\n\t\t\t\t\t\tnext.props.rel = \"noreferrer noopener\";\n\t\t\t\t\t\tnext.props.target = \"_blank\";\n\t\t\t\t\t} else if (ctx.basePath && href.startsWith(\"/\") && !href.startsWith(\"//\") && !href.startsWith(`${ctx.basePath}/`)) next.props.href = ctx.basePath + href;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn next;\n\t\t}\n\t\tif (node.type === \"component\") return {\n\t\t\t...node,\n\t\t\tchildren: transform(node.children, ctx)\n\t\t};\n\t\treturn node;\n\t});\n}\nfunction cleanRaw(markdown) {\n\treturn markdown.replace(/^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n/, \"\").replace(/<script[\\s\\S]*?<\\/script>\\s*/g, \"\").trim();\n}\nasync function highlightAll(tree) {\n\tconst codeNodes = [];\n\tconst collect = (node) => {\n\t\tif (node.type === \"code\") codeNodes.push(node);\n\t\tfor (const child of node.children ?? []) collect(child);\n\t};\n\tcollect(tree);\n\tawait Promise.all(codeNodes.map(async (node) => {\n\t\tconst result = await highlightCode(node.value, node.lang ?? \"\", node.meta ?? \"\");\n\t\tnode.type = \"html\";\n\t\tnode.value = result.html;\n\t}));\n}\nfunction stripScripts(markdown) {\n\tconst lines = markdown.split(\"\\n\");\n\tconst out = [];\n\tlet fence = \"\";\n\tlet inScript = false;\n\tfor (const line of lines) {\n\t\tconst marker = inScript ? null : line.match(/^\\s*(`{3,}|~{3,})/)?.[1];\n\t\tif (marker) {\n\t\t\tif (!fence) fence = marker;\n\t\t\telse if (marker[0] === fence[0] && marker.length >= fence.length) fence = \"\";\n\t\t\tout.push(line);\n\t\t\tcontinue;\n\t\t}\n\t\tif (fence) {\n\t\t\tout.push(line);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!inScript && /^\\s*<script[\\s>]/.test(line)) {\n\t\t\tinScript = !/<\\/script>/.test(line);\n\t\t\tcontinue;\n\t\t}\n\t\tif (inScript) {\n\t\t\tif (/<\\/script>/.test(line)) inScript = false;\n\t\t\tcontinue;\n\t\t}\n\t\tout.push(line);\n\t}\n\treturn out.join(\"\\n\");\n}\nasync function parseMarkdown(markdown, basePath = \"\") {\n\tconst source = stripScripts(markdown);\n\tconst tree = processor.runSync(processor.parse(source));\n\tlet frontmatter = {};\n\tconst children = tree.children ?? [];\n\tif (children[0]?.type === \"yaml\") {\n\t\tfrontmatter = parse(children[0].value) ?? {};\n\t\tchildren.shift();\n\t}\n\tawait highlightAll(tree);\n\tconst doc = childrenToDoc(children);\n\tconst ctx = {\n\t\tslugger: new GithubSlugger(),\n\t\ttoc: [],\n\t\tbasePath\n\t};\n\tconst transformed = transform(doc, ctx);\n\treturn {\n\t\tfrontmatter,\n\t\ttoc: ctx.toc,\n\t\tdoc: transformed,\n\t\traw: cleanRaw(markdown)\n\t};\n}\n//#endregion\n//#region src/lib/server/content-store.ts\nvar CONTENT_DIR = resolve(process.env.AXERITY_CONTENT_DIR ?? \"src/content/docs\");\nvar BASE_KEY = `${ROOT}/`;\nvar DEV = process.env.AXERITY_DEV === \"1\";\nfunction tryJson(text) {\n\ttry {\n\t\treturn JSON.parse(text);\n\t} catch {\n\t\treturn null;\n\t}\n}\nfunction readFrontmatter(text) {\n\tconst match = text.match(/^---\\r?\\n([\\s\\S]*?)\\r?\\n---/);\n\tif (!match) return {};\n\ttry {\n\t\treturn parse(match[1]) ?? {};\n\t} catch {\n\t\treturn {};\n\t}\n}\nfunction walk() {\n\tconst pages = {};\n\tconst meta = {};\n\tconst recurse = (dir) => {\n\t\tif (!existsSync(dir)) return;\n\t\tfor (const entry of readdirSync(dir)) {\n\t\t\tconst abs = join(dir, entry);\n\t\t\tif (statSync(abs).isDirectory()) {\n\t\t\t\trecurse(abs);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst key = `${ROOT}/${relative(CONTENT_DIR, abs).split(\"\\\\\").join(\"/\")}`;\n\t\t\tif (entry.endsWith(\".md\")) pages[key] = readFrontmatter(readFileSync(abs, \"utf8\"));\n\t\t\telse if (entry === \"meta.json\") {\n\t\t\t\tconst parsed = tryJson(readFileSync(abs, \"utf8\"));\n\t\t\t\tif (parsed) meta[key] = parsed;\n\t\t\t}\n\t\t}\n\t};\n\trecurse(CONTENT_DIR);\n\treturn {\n\t\tpages,\n\t\tmeta\n\t};\n}\nvar cache = null;\nfunction tree() {\n\tif (cache && !DEV) return cache;\n\tconst maps = walk();\n\tconst sidebar = buildSidebar(maps);\n\tconst fresh = {\n\t\tmaps,\n\t\tsidebar,\n\t\tflatPages: flattenSections(sidebar)\n\t};\n\tif (!DEV) cache = fresh;\n\treturn fresh;\n}\nfunction getNav() {\n\tconst { sidebar, flatPages } = tree();\n\treturn {\n\t\tsidebar,\n\t\tflatPages\n\t};\n}\nfunction pathToSlug(key) {\n\tconst rel = key.slice(BASE_KEY.length).replace(/\\.md$/, \"\");\n\treturn rel === \"index\" ? \"\" : rel.replace(/\\/index$/, \"\");\n}\nfunction allSlugs() {\n\treturn Object.keys(tree().maps.pages).map(pathToSlug);\n}\nfunction allSourcePaths() {\n\treturn Object.keys(tree().maps.pages).map((key) => key.slice(BASE_KEY.length));\n}\nfunction keyForSlug(slug) {\n\tconst { pages } = tree().maps;\n\treturn (slug ? [`${BASE_KEY}${slug}.md`, `${BASE_KEY}${slug}/index.md`] : [`${BASE_KEY}index.md`]).find((key) => key in pages) ?? null;\n}\nfunction frontmatterByPath(relNoExt) {\n\treturn tree().maps.pages[`${BASE_KEY}${relNoExt}.md`];\n}\nfunction allPages() {\n\treturn Object.entries(tree().maps.pages).map(([key, frontmatter]) => ({\n\t\tslug: pathToSlug(key),\n\t\tfrontmatter,\n\t\tsourcePath: key.slice(BASE_KEY.length)\n\t}));\n}\nvar renders = /* @__PURE__ */ new Map();\nasync function render(slug) {\n\tif (!DEV && renders.has(slug)) return renders.get(slug);\n\tconst key = keyForSlug(slug);\n\tif (!key) {\n\t\tif (!DEV) renders.set(slug, null);\n\t\treturn null;\n\t}\n\tconst sourcePath = key.slice(BASE_KEY.length);\n\tconst result = {\n\t\t...await parseMarkdown(readFileSync(join(CONTENT_DIR, sourcePath), \"utf8\"), base),\n\t\tsourcePath\n\t};\n\tif (!DEV) renders.set(slug, result);\n\treturn result;\n}\nfunction clean(markdown) {\n\treturn markdown.replace(/^---\\r?\\n[\\s\\S]*?\\r?\\n---\\r?\\n/, \"\").replace(/<script[\\s\\S]*?<\\/script>\\s*/g, \"\").trim();\n}\nasync function raw(slug) {\n\tconst key = keyForSlug(slug);\n\tif (!key) return null;\n\treturn clean(readFileSync(join(CONTENT_DIR, key.slice(BASE_KEY.length)), \"utf8\"));\n}\n//#endregion\nexport { getNav as a, frontmatterByPath as i, allSlugs as n, raw as o, allSourcePaths as r, render as s, allPages as t };\n"],"names":["own","toString","structuredClone","emptyOptions","handlers","defaultHandlers","patch","smartypants","GithubSlugger"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69]}
|