@signalwire/web-components 4.0.0-beta.10 → 4.0.0-beta.12
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/README.md +48 -55
- package/dist/_virtual/_commonjsHelpers.js +9 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/prism-python.js +28 -0
- package/dist/_virtual/prism-python.js.map +1 -0
- package/dist/_virtual/prism-python2.js +5 -0
- package/dist/_virtual/prism-python2.js.map +1 -0
- package/dist/_virtual/prism-typescript.js +28 -0
- package/dist/_virtual/prism-typescript.js.map +1 -0
- package/dist/_virtual/prism-typescript2.js +5 -0
- package/dist/_virtual/prism-typescript2.js.map +1 -0
- package/dist/_virtual/prism.js +28 -0
- package/dist/_virtual/prism.js.map +1 -0
- package/dist/_virtual/prism2.js +5 -0
- package/dist/_virtual/prism2.js.map +1 -0
- package/dist/assets/sw_background.webp.js +5 -0
- package/dist/assets/sw_background.webp.js.map +1 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.d.ts +4 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.d.ts.map +1 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.js +5 -0
- package/dist/components/UI/DEFAULT_BACKGROUND.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-control-bar.d.ts +114 -0
- package/dist/components/UI/controls/sw-ui-control-bar.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-control-bar.js +324 -0
- package/dist/components/UI/controls/sw-ui-control-bar.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-dialpad.d.ts +67 -0
- package/dist/components/UI/controls/sw-ui-dialpad.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-dialpad.js +359 -0
- package/dist/components/UI/controls/sw-ui-dialpad.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-dropup.d.ts +42 -0
- package/dist/components/UI/controls/sw-ui-dropup.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-dropup.js +137 -0
- package/dist/components/UI/controls/sw-ui-dropup.js.map +1 -0
- package/dist/components/UI/controls/sw-ui-split-button.d.ts +44 -0
- package/dist/components/UI/controls/sw-ui-split-button.d.ts.map +1 -0
- package/dist/components/UI/controls/sw-ui-split-button.js +177 -0
- package/dist/components/UI/controls/sw-ui-split-button.js.map +1 -0
- package/dist/components/UI/icons/backspace.svg.js +10 -0
- package/dist/components/UI/icons/backspace.svg.js.map +1 -0
- package/dist/components/UI/icons/camera-off.svg.js +8 -0
- package/dist/components/UI/icons/camera-off.svg.js.map +1 -0
- package/dist/components/UI/icons/camera-on.svg.js +8 -0
- package/dist/components/UI/icons/camera-on.svg.js.map +1 -0
- package/dist/components/UI/icons/check-circle.svg.js +6 -0
- package/dist/components/UI/icons/check-circle.svg.js.map +1 -0
- package/dist/components/UI/icons/chevron-up.svg.js +8 -0
- package/dist/components/UI/icons/chevron-up.svg.js.map +1 -0
- package/dist/components/UI/icons/close.svg.js +6 -0
- package/dist/components/UI/icons/close.svg.js.map +1 -0
- package/dist/components/UI/icons/copy.svg.js +6 -0
- package/dist/components/UI/icons/copy.svg.js.map +1 -0
- package/dist/components/UI/icons/download.svg.js +6 -0
- package/dist/components/UI/icons/download.svg.js.map +1 -0
- package/dist/components/UI/icons/fullscreen-exit.svg.js +8 -0
- package/dist/components/UI/icons/fullscreen-exit.svg.js.map +1 -0
- package/dist/components/UI/icons/fullscreen.svg.js +8 -0
- package/dist/components/UI/icons/fullscreen.svg.js.map +1 -0
- package/dist/components/UI/icons/hand-raise.svg.js +6 -0
- package/dist/components/UI/icons/hand-raise.svg.js.map +1 -0
- package/dist/components/UI/icons/icons.d.ts +31 -0
- package/dist/components/UI/icons/icons.d.ts.map +1 -0
- package/dist/components/UI/icons/icons.js +60 -0
- package/dist/components/UI/icons/icons.js.map +1 -0
- package/dist/components/UI/icons/index.d.ts +4 -0
- package/dist/components/UI/icons/index.d.ts.map +1 -0
- package/dist/components/UI/icons/info-circle.svg.js +6 -0
- package/dist/components/UI/icons/info-circle.svg.js.map +1 -0
- package/dist/components/UI/icons/mic-off.svg.js +8 -0
- package/dist/components/UI/icons/mic-off.svg.js.map +1 -0
- package/dist/components/UI/icons/mic-on.svg.js +8 -0
- package/dist/components/UI/icons/mic-on.svg.js.map +1 -0
- package/dist/components/UI/icons/person.svg.js +8 -0
- package/dist/components/UI/icons/person.svg.js.map +1 -0
- package/dist/components/UI/icons/phone-call.svg.js +8 -0
- package/dist/components/UI/icons/phone-call.svg.js.map +1 -0
- package/dist/components/UI/icons/phone-end.svg.js +8 -0
- package/dist/components/UI/icons/phone-end.svg.js.map +1 -0
- package/dist/components/UI/icons/room.svg.js +8 -0
- package/dist/components/UI/icons/room.svg.js.map +1 -0
- package/dist/components/UI/icons/screen-share-off.svg.js +9 -0
- package/dist/components/UI/icons/screen-share-off.svg.js.map +1 -0
- package/dist/components/UI/icons/screen-share.svg.js +9 -0
- package/dist/components/UI/icons/screen-share.svg.js.map +1 -0
- package/dist/components/UI/icons/sendIcon.svg.js +9 -0
- package/dist/components/UI/icons/sendIcon.svg.js.map +1 -0
- package/dist/components/UI/icons/settings.svg.js +8 -0
- package/dist/components/UI/icons/settings.svg.js.map +1 -0
- package/dist/components/UI/icons/speaker-off.svg.js +8 -0
- package/dist/components/UI/icons/speaker-off.svg.js.map +1 -0
- package/dist/components/UI/icons/speaker-on.svg.js +8 -0
- package/dist/components/UI/icons/speaker-on.svg.js.map +1 -0
- package/dist/components/UI/icons/spinner.svg.js +9 -0
- package/dist/components/UI/icons/spinner.svg.js.map +1 -0
- package/dist/components/UI/icons/sw-logo.svg.js +11 -0
- package/dist/components/UI/icons/sw-logo.svg.js.map +1 -0
- package/dist/components/UI/icons/sw-ui-icon.d.ts +28 -0
- package/dist/components/UI/icons/sw-ui-icon.d.ts.map +1 -0
- package/dist/components/UI/icons/sw-ui-icon.js +47 -0
- package/dist/components/UI/icons/sw-ui-icon.js.map +1 -0
- package/dist/components/UI/icons/transcript.svg.js +10 -0
- package/dist/components/UI/icons/transcript.svg.js.map +1 -0
- package/dist/components/UI/index.d.ts +18 -0
- package/dist/components/UI/index.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-background.d.ts +33 -0
- package/dist/components/UI/layout/sw-ui-background.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-background.js +106 -0
- package/dist/components/UI/layout/sw-ui-background.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-call-layout.d.ts +69 -0
- package/dist/components/UI/layout/sw-ui-call-layout.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-call-layout.js +278 -0
- package/dist/components/UI/layout/sw-ui-call-layout.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.d.ts +50 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.js +413 -0
- package/dist/components/UI/layout/sw-ui-content-drawer.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-modal.d.ts +31 -0
- package/dist/components/UI/layout/sw-ui-modal.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-modal.js +150 -0
- package/dist/components/UI/layout/sw-ui-modal.js.map +1 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.d.ts +15 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.d.ts.map +1 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.js +78 -0
- package/dist/components/UI/layout/sw-ui-responsive-container.js.map +1 -0
- package/dist/components/UI/sw-ui-alert.d.ts +37 -0
- package/dist/components/UI/sw-ui-alert.d.ts.map +1 -0
- package/dist/components/UI/sw-ui-alert.js +126 -0
- package/dist/components/UI/sw-ui-alert.js.map +1 -0
- package/dist/components/UI/sw-ui-transcript-view.d.ts +56 -0
- package/dist/components/UI/sw-ui-transcript-view.d.ts.map +1 -0
- package/dist/components/UI/sw-ui-transcript-view.js +341 -0
- package/dist/components/UI/sw-ui-transcript-view.js.map +1 -0
- package/dist/components/{audio-level.d.ts → sw-audio-level.d.ts} +44 -4
- package/dist/components/sw-audio-level.d.ts.map +1 -0
- package/dist/components/sw-audio-level.js +252 -0
- package/dist/components/sw-audio-level.js.map +1 -0
- package/dist/components/sw-call-controls.d.ts +58 -0
- package/dist/components/sw-call-controls.d.ts.map +1 -0
- package/dist/components/sw-call-controls.js +186 -0
- package/dist/components/sw-call-controls.js.map +1 -0
- package/dist/components/sw-call-dialpad.d.ts +52 -0
- package/dist/components/sw-call-dialpad.d.ts.map +1 -0
- package/dist/components/sw-call-dialpad.js +70 -0
- package/dist/components/sw-call-dialpad.js.map +1 -0
- package/dist/components/sw-call-media.d.ts +68 -0
- package/dist/components/sw-call-media.d.ts.map +1 -0
- package/dist/components/sw-call-media.js +220 -0
- package/dist/components/sw-call-media.js.map +1 -0
- package/dist/components/sw-call-provider.d.ts +41 -0
- package/dist/components/sw-call-provider.d.ts.map +1 -0
- package/dist/components/sw-call-provider.js +37 -0
- package/dist/components/sw-call-provider.js.map +1 -0
- package/dist/components/sw-call-status.d.ts +50 -0
- package/dist/components/sw-call-status.d.ts.map +1 -0
- package/dist/components/sw-call-status.js +203 -0
- package/dist/components/sw-call-status.js.map +1 -0
- package/dist/components/sw-call-widget/client-factory.d.ts +6 -0
- package/dist/components/sw-call-widget/client-factory.d.ts.map +1 -0
- package/dist/components/sw-call-widget/client-factory.js +25 -0
- package/dist/components/sw-call-widget/client-factory.js.map +1 -0
- package/dist/components/sw-call-widget/sw-call-widget.d.ts +110 -0
- package/dist/components/sw-call-widget/sw-call-widget.d.ts.map +1 -0
- package/dist/components/sw-call-widget/sw-call-widget.js +250 -0
- package/dist/components/sw-call-widget/sw-call-widget.js.map +1 -0
- package/dist/components/sw-call-widget/sw-call-widget.templates.d.ts +17 -0
- package/dist/components/sw-call-widget/sw-call-widget.templates.d.ts.map +1 -0
- package/dist/components/sw-call-widget/sw-call-widget.templates.js +80 -0
- package/dist/components/sw-call-widget/sw-call-widget.templates.js.map +1 -0
- package/dist/components/sw-click-to-call.d.ts +39 -0
- package/dist/components/sw-click-to-call.d.ts.map +1 -0
- package/dist/components/sw-click-to-call.js +87 -0
- package/dist/components/sw-click-to-call.js.map +1 -0
- package/dist/components/sw-device-selector/index.d.ts +2 -0
- package/dist/components/sw-device-selector/index.d.ts.map +1 -0
- package/dist/components/sw-device-selector/sw-device-selector.d.ts +69 -0
- package/dist/components/sw-device-selector/sw-device-selector.d.ts.map +1 -0
- package/dist/components/sw-device-selector/sw-device-selector.js +277 -0
- package/dist/components/sw-device-selector/sw-device-selector.js.map +1 -0
- package/dist/components/sw-device-selector/sw-device-selector.styles.d.ts +2 -0
- package/dist/components/sw-device-selector/sw-device-selector.styles.d.ts.map +1 -0
- package/dist/components/sw-device-selector/sw-device-selector.styles.js +238 -0
- package/dist/components/sw-device-selector/sw-device-selector.styles.js.map +1 -0
- package/dist/components/{directory.d.ts → sw-directory.d.ts} +17 -3
- package/dist/components/sw-directory.d.ts.map +1 -0
- package/dist/components/sw-directory.js +434 -0
- package/dist/components/sw-directory.js.map +1 -0
- package/dist/components/sw-local-camera.d.ts +53 -0
- package/dist/components/sw-local-camera.d.ts.map +1 -0
- package/dist/components/sw-local-camera.js +147 -0
- package/dist/components/sw-local-camera.js.map +1 -0
- package/dist/components/sw-participant-controls.d.ts +58 -0
- package/dist/components/sw-participant-controls.d.ts.map +1 -0
- package/dist/components/sw-participant-controls.js +305 -0
- package/dist/components/sw-participant-controls.js.map +1 -0
- package/dist/components/sw-participants.d.ts +55 -0
- package/dist/components/sw-participants.d.ts.map +1 -0
- package/dist/components/sw-participants.js +319 -0
- package/dist/components/sw-participants.js.map +1 -0
- package/dist/components/sw-self-media.d.ts +46 -0
- package/dist/components/sw-self-media.d.ts.map +1 -0
- package/dist/components/sw-self-media.js +106 -0
- package/dist/components/sw-self-media.js.map +1 -0
- package/dist/context/CallStateContextController.d.ts +31 -0
- package/dist/context/CallStateContextController.d.ts.map +1 -0
- package/dist/context/CallStateContextController.js +125 -0
- package/dist/context/CallStateContextController.js.map +1 -0
- package/dist/context/DevicesContextController.d.ts +38 -0
- package/dist/context/DevicesContextController.d.ts.map +1 -0
- package/dist/context/DevicesContextController.js +124 -0
- package/dist/context/DevicesContextController.js.map +1 -0
- package/dist/context/TranscriptController.d.ts +32 -0
- package/dist/context/TranscriptController.d.ts.map +1 -0
- package/dist/context/TranscriptController.js +113 -0
- package/dist/context/TranscriptController.js.map +1 -0
- package/dist/context/UserEventController.d.ts +26 -0
- package/dist/context/UserEventController.d.ts.map +1 -0
- package/dist/context/UserEventController.js +55 -0
- package/dist/context/UserEventController.js.map +1 -0
- package/dist/context/call-state-context.d.ts +75 -0
- package/dist/context/call-state-context.d.ts.map +1 -0
- package/dist/context/call-state-context.js +39 -0
- package/dist/context/call-state-context.js.map +1 -0
- package/dist/context/chat-state.d.ts +41 -0
- package/dist/context/chat-state.d.ts.map +1 -0
- package/dist/context/chat-state.js +61 -0
- package/dist/context/chat-state.js.map +1 -0
- package/dist/context/devices-context.d.ts +28 -0
- package/dist/context/devices-context.d.ts.map +1 -0
- package/dist/context/devices-context.js +6 -0
- package/dist/context/devices-context.js.map +1 -0
- package/dist/context/index.d.ts +9 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/transcript-context.d.ts +9 -0
- package/dist/context/transcript-context.d.ts.map +1 -0
- package/dist/context/transcript-context.js +6 -0
- package/dist/context/transcript-context.js.map +1 -0
- package/dist/context/types.d.ts +9 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/embed/signalwire-web-components-embed.iife.js +3225 -0
- package/dist/embed/signalwire-web-components-embed.iife.js.map +1 -0
- package/dist/embed/signalwire-web-components-embed.umd.cjs +3225 -0
- package/dist/embed/signalwire-web-components-embed.umd.cjs.map +1 -0
- package/dist/embed.d.ts +20 -0
- package/dist/embed.d.ts.map +1 -0
- package/dist/index.d.ts +19 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +83 -34
- package/dist/index.js.map +1 -1
- package/dist/node_modules/dompurify/dist/purify.es.js +597 -0
- package/dist/node_modules/dompurify/dist/purify.es.js.map +1 -0
- package/dist/node_modules/marked/lib/marked.esm.js +1475 -0
- package/dist/node_modules/marked/lib/marked.esm.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-bash.js +220 -0
- package/dist/node_modules/prismjs/components/prism-bash.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-css.js +56 -0
- package/dist/node_modules/prismjs/components/prism-css.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-javascript.js +138 -0
- package/dist/node_modules/prismjs/components/prism-javascript.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-json.js +26 -0
- package/dist/node_modules/prismjs/components/prism-json.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-markdown.js +301 -0
- package/dist/node_modules/prismjs/components/prism-markdown.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-python.js +69 -0
- package/dist/node_modules/prismjs/components/prism-python.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-sql.js +34 -0
- package/dist/node_modules/prismjs/components/prism-sql.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-typescript.js +53 -0
- package/dist/node_modules/prismjs/components/prism-typescript.js.map +1 -0
- package/dist/node_modules/prismjs/components/prism-yaml.js +67 -0
- package/dist/node_modules/prismjs/components/prism-yaml.js.map +1 -0
- package/dist/node_modules/prismjs/prism.js +1165 -0
- package/dist/node_modules/prismjs/prism.js.map +1 -0
- package/dist/react.d.ts +96 -46
- package/dist/theme.css +451 -0
- package/dist/theme.css.js +5 -0
- package/dist/theme.css.js.map +1 -0
- package/dist/types/index.d.ts +9 -33
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/prism.d.ts +4 -0
- package/dist/utils/prism.d.ts.map +1 -0
- package/dist/utils/prism.js +34 -0
- package/dist/utils/prism.js.map +1 -0
- package/dist/utils/theme-loader.d.ts +11 -0
- package/dist/utils/theme-loader.d.ts.map +1 -0
- package/dist/utils/theme-loader.js +17 -0
- package/dist/utils/theme-loader.js.map +1 -0
- package/dist/utils/transcriptToMarkdown.d.ts +14 -0
- package/dist/utils/transcriptToMarkdown.d.ts.map +1 -0
- package/dist/utils/transcriptToMarkdown.js +59 -0
- package/dist/utils/transcriptToMarkdown.js.map +1 -0
- package/dist/utils/use-google-font.d.ts +18 -0
- package/dist/utils/use-google-font.d.ts.map +1 -0
- package/dist/utils/use-google-font.js +12 -0
- package/dist/utils/use-google-font.js.map +1 -0
- package/dist/utils/user-variables.d.ts +20 -0
- package/dist/utils/user-variables.d.ts.map +1 -0
- package/dist/utils/user-variables.js +37 -0
- package/dist/utils/user-variables.js.map +1 -0
- package/package.json +104 -41
- package/dist/components/audio-level.d.ts.map +0 -1
- package/dist/components/audio-level.js +0 -203
- package/dist/components/audio-level.js.map +0 -1
- package/dist/components/call-controls.d.ts +0 -163
- package/dist/components/call-controls.d.ts.map +0 -1
- package/dist/components/call-controls.js +0 -606
- package/dist/components/call-controls.js.map +0 -1
- package/dist/components/call-media.d.ts +0 -114
- package/dist/components/call-media.d.ts.map +0 -1
- package/dist/components/call-media.js +0 -219
- package/dist/components/call-media.js.map +0 -1
- package/dist/components/call-status.d.ts +0 -68
- package/dist/components/call-status.d.ts.map +0 -1
- package/dist/components/call-status.js +0 -254
- package/dist/components/call-status.js.map +0 -1
- package/dist/components/click-to-call.d.ts +0 -123
- package/dist/components/click-to-call.d.ts.map +0 -1
- package/dist/components/click-to-call.js +0 -428
- package/dist/components/click-to-call.js.map +0 -1
- package/dist/components/device-selector.d.ts +0 -224
- package/dist/components/device-selector.d.ts.map +0 -1
- package/dist/components/device-selector.js +0 -685
- package/dist/components/device-selector.js.map +0 -1
- package/dist/components/dialpad.d.ts +0 -60
- package/dist/components/dialpad.d.ts.map +0 -1
- package/dist/components/dialpad.js +0 -372
- package/dist/components/dialpad.js.map +0 -1
- package/dist/components/directory.d.ts.map +0 -1
- package/dist/components/directory.js +0 -503
- package/dist/components/directory.js.map +0 -1
- package/dist/components/example-button.d.ts +0 -20
- package/dist/components/example-button.d.ts.map +0 -1
- package/dist/components/example-button.js +0 -74
- package/dist/components/example-button.js.map +0 -1
- package/dist/components/participant-controls.d.ts +0 -94
- package/dist/components/participant-controls.d.ts.map +0 -1
- package/dist/components/participant-controls.js +0 -468
- package/dist/components/participant-controls.js.map +0 -1
- package/dist/components/participants.d.ts +0 -116
- package/dist/components/participants.d.ts.map +0 -1
- package/dist/components/participants.js +0 -394
- package/dist/components/participants.js.map +0 -1
- package/dist/components/self-media.d.ts +0 -78
- package/dist/components/self-media.d.ts.map +0 -1
- package/dist/components/self-media.js +0 -129
- package/dist/components/self-media.js.map +0 -1
- package/dist/context/call-context.d.ts +0 -13
- package/dist/context/call-context.d.ts.map +0 -1
- package/dist/context/call-context.js +0 -6
- package/dist/context/call-context.js.map +0 -1
- package/dist/types/index.js +0 -12
- package/dist/types/index.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marked.esm.js","sources":["../../../../../../node_modules/marked/lib/marked.esm.js"],"sourcesContent":["/**\n * marked v9.1.6 - a markdown parser\n * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\n/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nfunction unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nfunction edit(regex, opt) {\n regex = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n val = typeof val === 'object' && 'source' in val ? val.source : val;\n val = val.replace(caret, '$1');\n regex = regex.replace(name, val);\n return obj;\n },\n getRegex: () => {\n return new RegExp(regex, opt);\n }\n };\n return obj;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nconst noopTest = { exec: () => null };\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n // TODO: Fix this rules type\n rules;\n lexer;\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n list.items[list.items.length - 1].text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (cap) {\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const item = {\n type: 'table',\n raw: cap[0],\n header: splitCells(cap[1]).map(c => {\n return { text: c, tokens: [] };\n }),\n align: cap[2].replace(/^\\||\\| *$/g, '').split('|'),\n rows: cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : []\n };\n if (item.header.length === item.align.length) {\n let l = item.align.length;\n let i, j, k, row;\n for (i = 0; i < l; i++) {\n const align = item.align[i];\n if (align) {\n if (/^ *-+: *$/.test(align)) {\n item.align[i] = 'right';\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align[i] = 'center';\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align[i] = 'left';\n }\n else {\n item.align[i] = null;\n }\n }\n }\n l = item.rows.length;\n for (i = 0; i < l; i++) {\n item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => {\n return { text: c, tokens: [] };\n });\n }\n // parse child tokens inside headers and cells\n // header child tokens\n l = item.header.length;\n for (j = 0; j < l; j++) {\n item.header[j].tokens = this.lexer.inline(item.header[j].text);\n }\n // cell child tokens\n l = item.rows.length;\n for (j = 0; j < l; j++) {\n row = item.rows[j];\n for (k = 0; k < row.length; k++) {\n row[k].tokens = this.lexer.inline(row[k].text);\n }\n }\n return item;\n }\n }\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && /^<\\/a>/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^</.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(/>$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^</.test(href)) {\n if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline._escapes, '$1') : href,\n title: title ? title.replace(this.rules.inline._escapes, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n let link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = links[link.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrong.lDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n\n/**\n * Block-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst block = {\n newline: /^(?: *(?:\\n|$))+/,\n code: /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/,\n fences: /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,\n hr: /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,\n heading: /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,\n blockquote: /^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/,\n list: /^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/,\n html: '^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')',\n def: /^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/,\n table: noopTest,\n lheading: /^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n // regex template, placeholders will be replaced according to different paragraph\n // interruption rules of commonmark and the original markdown spec:\n _paragraph: /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,\n text: /^[^\\n]+/\n};\nblock._label = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nblock._title = /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/;\nblock.def = edit(block.def)\n .replace('label', block._label)\n .replace('title', block._title)\n .getRegex();\nblock.bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nblock.listItemStart = edit(/^( *)(bull) */)\n .replace('bull', block.bullet)\n .getRegex();\nblock.list = edit(block.list)\n .replace(/bull/g, block.bullet)\n .replace('hr', '\\\\n+(?=\\\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$))')\n .replace('def', '\\\\n+(?=' + block.def.source + ')')\n .getRegex();\nblock._tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nblock._comment = /<!--(?!-?>)[\\s\\S]*?(?:-->|$)/;\nblock.html = edit(block.html, 'i')\n .replace('comment', block._comment)\n .replace('tag', block._tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nblock.lheading = edit(block.lheading)\n .replace(/bull/g, block.bullet) // lists can interrupt\n .getRegex();\nblock.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nblock.blockquote = edit(block.blockquote)\n .replace('paragraph', block.paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nblock.normal = { ...block };\n/**\n * GFM Block Grammar\n */\nblock.gfm = {\n ...block.normal,\n table: '^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)' // Cells\n};\nblock.gfm.table = edit(block.gfm.table)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nblock.gfm.paragraph = edit(block._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', block.gfm.table) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nblock.pedantic = {\n ...block.normal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', block._comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest,\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(block.normal._paragraph)\n .replace('hr', block.hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', block.lheading)\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\n// Not all rules are defined in the object literal\n// @ts-expect-error\nconst inline = {\n escape: /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,\n autolink: /^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/,\n url: noopTest,\n tag: '^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>',\n link: /^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/,\n reflink: /^!?\\[(label)\\]\\[(ref)\\]/,\n nolink: /^!?\\[(ref)\\](?:\\[\\])?/,\n reflinkSearch: 'reflink|nolink(?!\\\\()',\n emStrong: {\n lDelim: /^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/,\n // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.\n // | Skip orphan inside strong | Consume to delim | (1) #*** | (2) a***#, a*** | (3) #***a, ***a | (4) ***# | (5) #***# | (6) a***a\n rDelimAst: /^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)[punct](\\*+)(?=[\\s]|$)|[^punct\\s](\\*+)(?!\\*)(?=[punct\\s]|$)|(?!\\*)[punct\\s](\\*+)(?=[^punct\\s])|[\\s](\\*+)(?!\\*)(?=[punct])|(?!\\*)[punct](\\*+)(?!\\*)(?=[punct])|[^punct\\s](\\*+)(?=[^punct\\s])/,\n rDelimUnd: /^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)[punct](_+)(?=[\\s]|$)|[^punct\\s](_+)(?!_)(?=[punct\\s]|$)|(?!_)[punct\\s](_+)(?=[^punct\\s])|[\\s](_+)(?!_)(?=[punct])|(?!_)[punct](_+)(?!_)(?=[punct])/ // ^- Not allowed for _\n },\n code: /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,\n br: /^( {2,}|\\\\)\\n(?!\\s*$)/,\n del: noopTest,\n text: /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,\n punctuation: /^((?![*_])[\\spunctuation])/\n};\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\ninline._punctuation = '\\\\p{P}$+<=>`^|~';\ninline.punctuation = edit(inline.punctuation, 'u').replace(/punctuation/g, inline._punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, <html>\ninline.blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\ninline.anyPunctuation = /\\\\[punct]/g;\ninline._escapes = /\\\\([punct])/g;\ninline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();\ninline.emStrong.lDelim = edit(inline.emStrong.lDelim, 'u')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline.anyPunctuation = edit(inline.anyPunctuation, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._escapes = edit(inline._escapes, 'gu')\n .replace(/punct/g, inline._punctuation)\n .getRegex();\ninline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;\ninline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;\ninline.autolink = edit(inline.autolink)\n .replace('scheme', inline._scheme)\n .replace('email', inline._email)\n .getRegex();\ninline._attribute = /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/;\ninline.tag = edit(inline.tag)\n .replace('comment', inline._comment)\n .replace('attribute', inline._attribute)\n .getRegex();\ninline._label = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\ninline._href = /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/;\ninline._title = /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/;\ninline.link = edit(inline.link)\n .replace('label', inline._label)\n .replace('href', inline._href)\n .replace('title', inline._title)\n .getRegex();\ninline.reflink = edit(inline.reflink)\n .replace('label', inline._label)\n .replace('ref', block._label)\n .getRegex();\ninline.nolink = edit(inline.nolink)\n .replace('ref', block._label)\n .getRegex();\ninline.reflinkSearch = edit(inline.reflinkSearch, 'g')\n .replace('reflink', inline.reflink)\n .replace('nolink', inline.nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\ninline.normal = { ...inline };\n/**\n * Pedantic Inline Grammar\n */\ninline.pedantic = {\n ...inline.normal,\n strong: {\n start: /^__|\\*\\*/,\n middle: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n endAst: /\\*\\*(?!\\*)/g,\n endUnd: /__(?!_)/g\n },\n em: {\n start: /^_|\\*/,\n middle: /^()\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)|^_(?=\\S)([\\s\\S]*?\\S)_(?!_)/,\n endAst: /\\*(?!\\*)/g,\n endUnd: /_(?!_)/g\n },\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', inline._label)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', inline._label)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\ninline.gfm = {\n ...inline.normal,\n escape: edit(inline.escape).replace('])', '~|])').getRegex(),\n _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,\n url: /^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/\n};\ninline.gfm.url = edit(inline.gfm.url, 'i')\n .replace('email', inline.gfm._extended_email)\n .getRegex();\n/**\n * GFM + Line Breaks Inline Grammar\n */\ninline.breaks = {\n ...inline.gfm,\n br: edit(inline.br).replace('{2,}', '*').getRegex(),\n text: edit(inline.gfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex()\n};\n\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n // @ts-expect-error\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true\n };\n const rules = {\n block: block.normal,\n inline: inline.normal\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n');\n this.blockTokens(src, this.tokens);\n let next;\n while (next = this.inlineQueue.shift()) {\n this.inlineTokens(next.src, next.tokens);\n }\n return this.tokens;\n }\n blockTokens(src, tokens = []) {\n if (this.options.pedantic) {\n src = src.replace(/\\t/g, ' ').replace(/^ +$/gm, '');\n }\n else {\n src = src.replace(/^( *)(\\t+)/gm, (_, leading, tabs) => {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-'\n + escape(lang)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote(quote) {\n return `<blockquote>\\n${quote}</blockquote>\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `<h${level}>${text}</h${level}>\\n`;\n }\n hr() {\n return '<hr>\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(text, task, checked) {\n return `<li>${text}</li>\\n`;\n }\n checkbox(checked) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph(text) {\n return `<p>${text}</p>\\n`;\n }\n table(header, body) {\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow(content) {\n return `<tr>\\n${content}</tr>\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `<strong>${text}</strong>`;\n }\n em(text) {\n return `<em>${text}</em>`;\n }\n codespan(text) {\n return `<code>${text}</code>`;\n }\n br() {\n return '<br>';\n }\n del(text) {\n return `<del>${text}</del>`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + title + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${title}\"`;\n }\n out += '>';\n return out;\n }\n text(text) {\n return text;\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong(text) {\n return text;\n }\n em(text) {\n return text;\n }\n codespan(text) {\n return text;\n }\n del(text) {\n return text;\n }\n html(text) {\n return text;\n }\n text(text) {\n return text;\n }\n link(href, title, text) {\n return '' + text;\n }\n image(href, title, text) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const genericToken = token;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'space': {\n continue;\n }\n case 'hr': {\n out += this.renderer.hr();\n continue;\n }\n case 'heading': {\n const headingToken = token;\n out += this.renderer.heading(this.parseInline(headingToken.tokens), headingToken.depth, unescape(this.parseInline(headingToken.tokens, this.textRenderer)));\n continue;\n }\n case 'code': {\n const codeToken = token;\n out += this.renderer.code(codeToken.text, codeToken.lang, !!codeToken.escaped);\n continue;\n }\n case 'table': {\n const tableToken = token;\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < tableToken.header.length; j++) {\n cell += this.renderer.tablecell(this.parseInline(tableToken.header[j].tokens), { header: true, align: tableToken.align[j] });\n }\n header += this.renderer.tablerow(cell);\n let body = '';\n for (let j = 0; j < tableToken.rows.length; j++) {\n const row = tableToken.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.renderer.tablecell(this.parseInline(row[k].tokens), { header: false, align: tableToken.align[k] });\n }\n body += this.renderer.tablerow(cell);\n }\n out += this.renderer.table(header, body);\n continue;\n }\n case 'blockquote': {\n const blockquoteToken = token;\n const body = this.parse(blockquoteToken.tokens);\n out += this.renderer.blockquote(body);\n continue;\n }\n case 'list': {\n const listToken = token;\n const ordered = listToken.ordered;\n const start = listToken.start;\n const loose = listToken.loose;\n let body = '';\n for (let j = 0; j < listToken.items.length; j++) {\n const item = listToken.items[j];\n const checked = item.checked;\n const task = item.task;\n let itemBody = '';\n if (item.task) {\n const checkbox = this.renderer.checkbox(!!checked);\n if (loose) {\n if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n const rendererFunc = pack.renderer[prop];\n const rendererKey = prop;\n const prevRenderer = renderer[rendererKey];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererKey] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n const tokenizerFunc = pack.tokenizer[prop];\n const tokenizerKey = prop;\n const prevTokenizer = tokenizer[tokenizerKey];\n // Replace tokenizer with func to run extension, but fall back if false\n tokenizer[tokenizerKey] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n const hooksFunc = pack.hooks[prop];\n const hooksKey = prop;\n const prevHook = hooks[hooksKey];\n if (_Hooks.passThroughHooks.has(prop)) {\n hooks[hooksKey] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n hooks[hooksKey] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n const tokens = lexer(src, opt);\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n"],"names":["_getDefaults","_defaults","changeDefaults","newDefaults","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","escapeReplacements","getEscapeReplacement","ch","escape","html","encode","unescapeTest","unescape","_","n","caret","edit","regex","opt","obj","name","val","cleanUrl","href","noopTest","splitCells","tableRow","count","row","match","offset","str","escaped","curr","cells","i","rtrim","c","invert","l","suffLen","findClosingBracket","b","level","outputLink","cap","link","raw","lexer","title","text","token","indentCodeCompensation","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","_Tokenizer","options","__publicField","src","trimmed","top","tokens","bull","isordered","list","itemRegex","itemContents","endsWithBlankLine","endEarly","line","t","nextLine","indent","blankLine","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","rawLine","istask","ischecked","spacers","hasMultipleLineBreaks","tag","item","j","k","align","trimmedUrl","rtrimSlash","lastParenIndex","linkLen","links","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastCharLength","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","block","inline","_Lexer","rules","next","leading","tabs","lastToken","cutSrc","lastParagraphClipped","extTokenizer","startIndex","tempSrc","tempStart","getStartIndex","errMsg","keepPrevChar","_Renderer","code","infostring","_a","lang","quote","body","ordered","start","type","startatt","task","checked","header","content","flags","cleanHref","out","_TextRenderer","_Parser","genericToken","ret","headingToken","codeToken","tableToken","cell","blockquoteToken","listToken","loose","itemBody","checkbox","htmlToken","paragraphToken","textToken","renderer","escapeToken","tagToken","linkToken","imageToken","strongToken","emToken","codespanToken","delToken","_Hooks","markdown","_Marked_instances","parseMarkdown_fn","onError_fn","Marked","args","__privateAdd","__privateMethod","callback","_b","values","childTokens","extensions","pack","opts","ext","prevRenderer","extLevel","prop","rendererFunc","rendererKey","tokenizer","tokenizerFunc","tokenizerKey","prevTokenizer","hooks","hooksFunc","hooksKey","prevHook","arg","walkTokens","packWalktokens","parser","origOpt","throwError","e","silent","async","msg","markedInstance","marked","setOptions","use","parseInline","parse"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
(function(e) {
|
|
2
|
+
var a = "\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b", r = {
|
|
3
|
+
pattern: /(^(["']?)\w+\2)[ \t]+\S.*/,
|
|
4
|
+
lookbehind: !0,
|
|
5
|
+
alias: "punctuation",
|
|
6
|
+
// this looks reasonably well in all themes
|
|
7
|
+
inside: null
|
|
8
|
+
// see below
|
|
9
|
+
}, t = {
|
|
10
|
+
bash: r,
|
|
11
|
+
environment: {
|
|
12
|
+
pattern: RegExp("\\$" + a),
|
|
13
|
+
alias: "constant"
|
|
14
|
+
},
|
|
15
|
+
variable: [
|
|
16
|
+
// [0]: Arithmetic Environment
|
|
17
|
+
{
|
|
18
|
+
pattern: /\$?\(\([\s\S]+?\)\)/,
|
|
19
|
+
greedy: !0,
|
|
20
|
+
inside: {
|
|
21
|
+
// If there is a $ sign at the beginning highlight $(( and )) as variable
|
|
22
|
+
variable: [
|
|
23
|
+
{
|
|
24
|
+
pattern: /(^\$\(\([\s\S]+)\)\)/,
|
|
25
|
+
lookbehind: !0
|
|
26
|
+
},
|
|
27
|
+
/^\$\(\(/
|
|
28
|
+
],
|
|
29
|
+
number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,
|
|
30
|
+
// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic
|
|
31
|
+
operator: /--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,
|
|
32
|
+
// If there is no $ sign at the beginning highlight (( and )) as punctuation
|
|
33
|
+
punctuation: /\(\(?|\)\)?|,|;/
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
// [1]: Command Substitution
|
|
37
|
+
{
|
|
38
|
+
pattern: /\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,
|
|
39
|
+
greedy: !0,
|
|
40
|
+
inside: {
|
|
41
|
+
variable: /^\$\(|^`|\)$|`$/
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
// [2]: Brace expansion
|
|
45
|
+
{
|
|
46
|
+
pattern: /\$\{[^}]+\}/,
|
|
47
|
+
greedy: !0,
|
|
48
|
+
inside: {
|
|
49
|
+
operator: /:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,
|
|
50
|
+
punctuation: /[\[\]]/,
|
|
51
|
+
environment: {
|
|
52
|
+
pattern: RegExp("(\\{)" + a),
|
|
53
|
+
lookbehind: !0,
|
|
54
|
+
alias: "constant"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
/\$(?:\w+|[#?*!@$])/
|
|
59
|
+
],
|
|
60
|
+
// Escape sequences from echo and printf's manuals, and escaped quotes.
|
|
61
|
+
entity: /\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/
|
|
62
|
+
};
|
|
63
|
+
e.languages.bash = {
|
|
64
|
+
shebang: {
|
|
65
|
+
pattern: /^#!\s*\/.*/,
|
|
66
|
+
alias: "important"
|
|
67
|
+
},
|
|
68
|
+
comment: {
|
|
69
|
+
pattern: /(^|[^"{\\$])#.*/,
|
|
70
|
+
lookbehind: !0
|
|
71
|
+
},
|
|
72
|
+
"function-name": [
|
|
73
|
+
// a) function foo {
|
|
74
|
+
// b) foo() {
|
|
75
|
+
// c) function foo() {
|
|
76
|
+
// but not “foo {”
|
|
77
|
+
{
|
|
78
|
+
// a) and c)
|
|
79
|
+
pattern: /(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,
|
|
80
|
+
lookbehind: !0,
|
|
81
|
+
alias: "function"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
// b)
|
|
85
|
+
pattern: /\b[\w-]+(?=\s*\(\s*\)\s*\{)/,
|
|
86
|
+
alias: "function"
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
// Highlight variable names as variables in for and select beginnings.
|
|
90
|
+
"for-or-select": {
|
|
91
|
+
pattern: /(\b(?:for|select)\s+)\w+(?=\s+in\s)/,
|
|
92
|
+
alias: "variable",
|
|
93
|
+
lookbehind: !0
|
|
94
|
+
},
|
|
95
|
+
// Highlight variable names as variables in the left-hand part
|
|
96
|
+
// of assignments (“=” and “+=”).
|
|
97
|
+
"assign-left": {
|
|
98
|
+
pattern: /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/,
|
|
99
|
+
inside: {
|
|
100
|
+
environment: {
|
|
101
|
+
pattern: RegExp("(^|[\\s;|&]|[<>]\\()" + a),
|
|
102
|
+
lookbehind: !0,
|
|
103
|
+
alias: "constant"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
alias: "variable",
|
|
107
|
+
lookbehind: !0
|
|
108
|
+
},
|
|
109
|
+
// Highlight parameter names as variables
|
|
110
|
+
parameter: {
|
|
111
|
+
pattern: /(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/,
|
|
112
|
+
alias: "variable",
|
|
113
|
+
lookbehind: !0
|
|
114
|
+
},
|
|
115
|
+
string: [
|
|
116
|
+
// Support for Here-documents https://en.wikipedia.org/wiki/Here_document
|
|
117
|
+
{
|
|
118
|
+
pattern: /((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,
|
|
119
|
+
lookbehind: !0,
|
|
120
|
+
greedy: !0,
|
|
121
|
+
inside: t
|
|
122
|
+
},
|
|
123
|
+
// Here-document with quotes around the tag
|
|
124
|
+
// → No expansion (so no “inside”).
|
|
125
|
+
{
|
|
126
|
+
pattern: /((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,
|
|
127
|
+
lookbehind: !0,
|
|
128
|
+
greedy: !0,
|
|
129
|
+
inside: {
|
|
130
|
+
bash: r
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
// “Normal” string
|
|
134
|
+
{
|
|
135
|
+
// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html
|
|
136
|
+
pattern: /(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,
|
|
137
|
+
lookbehind: !0,
|
|
138
|
+
greedy: !0,
|
|
139
|
+
inside: t
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html
|
|
143
|
+
pattern: /(^|[^$\\])'[^']*'/,
|
|
144
|
+
lookbehind: !0,
|
|
145
|
+
greedy: !0
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html
|
|
149
|
+
pattern: /\$'(?:[^'\\]|\\[\s\S])*'/,
|
|
150
|
+
greedy: !0,
|
|
151
|
+
inside: {
|
|
152
|
+
entity: t.entity
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
],
|
|
156
|
+
environment: {
|
|
157
|
+
pattern: RegExp("\\$?" + a),
|
|
158
|
+
alias: "constant"
|
|
159
|
+
},
|
|
160
|
+
variable: t.variable,
|
|
161
|
+
function: {
|
|
162
|
+
pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,
|
|
163
|
+
lookbehind: !0
|
|
164
|
+
},
|
|
165
|
+
keyword: {
|
|
166
|
+
pattern: /(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,
|
|
167
|
+
lookbehind: !0
|
|
168
|
+
},
|
|
169
|
+
// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html
|
|
170
|
+
builtin: {
|
|
171
|
+
pattern: /(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,
|
|
172
|
+
lookbehind: !0,
|
|
173
|
+
// Alias added to make those easier to distinguish from strings.
|
|
174
|
+
alias: "class-name"
|
|
175
|
+
},
|
|
176
|
+
boolean: {
|
|
177
|
+
pattern: /(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,
|
|
178
|
+
lookbehind: !0
|
|
179
|
+
},
|
|
180
|
+
"file-descriptor": {
|
|
181
|
+
pattern: /\B&\d\b/,
|
|
182
|
+
alias: "important"
|
|
183
|
+
},
|
|
184
|
+
operator: {
|
|
185
|
+
// Lots of redirections here, but not just that.
|
|
186
|
+
pattern: /\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,
|
|
187
|
+
inside: {
|
|
188
|
+
"file-descriptor": {
|
|
189
|
+
pattern: /^\d/,
|
|
190
|
+
alias: "important"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
punctuation: /\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,
|
|
195
|
+
number: {
|
|
196
|
+
pattern: /(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,
|
|
197
|
+
lookbehind: !0
|
|
198
|
+
}
|
|
199
|
+
}, r.inside = e.languages.bash;
|
|
200
|
+
for (var o = [
|
|
201
|
+
"comment",
|
|
202
|
+
"function-name",
|
|
203
|
+
"for-or-select",
|
|
204
|
+
"assign-left",
|
|
205
|
+
"parameter",
|
|
206
|
+
"string",
|
|
207
|
+
"environment",
|
|
208
|
+
"function",
|
|
209
|
+
"keyword",
|
|
210
|
+
"builtin",
|
|
211
|
+
"boolean",
|
|
212
|
+
"file-descriptor",
|
|
213
|
+
"operator",
|
|
214
|
+
"punctuation",
|
|
215
|
+
"number"
|
|
216
|
+
], s = t.variable[1].inside, n = 0; n < o.length; n++)
|
|
217
|
+
s[o[n]] = e.languages.bash[o[n]];
|
|
218
|
+
e.languages.sh = e.languages.bash, e.languages.shell = e.languages.bash;
|
|
219
|
+
})(Prism);
|
|
220
|
+
//# sourceMappingURL=prism-bash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prism-bash.js","sources":["../../../../../../node_modules/prismjs/components/prism-bash.js"],"sourcesContent":["(function (Prism) {\n\t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n\t// + LC_ALL, RANDOM, REPLY, SECONDS.\n\t// + make sure PS1..4 are here as they are not always set,\n\t// - some useless things.\n\tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n\n\tvar commandAfterHeredoc = {\n\t\tpattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n\t\tlookbehind: true,\n\t\talias: 'punctuation', // this looks reasonably well in all themes\n\t\tinside: null // see below\n\t};\n\n\tvar insideString = {\n\t\t'bash': commandAfterHeredoc,\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': [\n\t\t\t// [0]: Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [1]: Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [2]: Brace expansion\n\t\t\t{\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n\t\t\t\t\t'punctuation': /[\\[\\]]/,\n\t\t\t\t\t'environment': {\n\t\t\t\t\t\tpattern: RegExp('(\\\\{)' + envVars),\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'constant'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:\\w+|[#?*!@$])/\n\t\t],\n\t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n\t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/.*/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function-name': [\n\t\t\t// a) function foo {\n\t\t\t// b) foo() {\n\t\t\t// c) function foo() {\n\t\t\t// but not “foo {”\n\t\t\t{\n\t\t\t\t// a) and c)\n\t\t\t\tpattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'function'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// b)\n\t\t\t\tpattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n\t\t\t\talias: 'function'\n\t\t\t}\n\t\t],\n\t\t// Highlight variable names as variables in for and select beginnings.\n\t\t'for-or-select': {\n\t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight variable names as variables in the left-hand part\n\t\t// of assignments (“=” and “+=”).\n\t\t'assign-left': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n\t\t\tinside: {\n\t\t\t\t'environment': {\n\t\t\t\t\tpattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'constant'\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight parameter names as variables\n\t\t'parameter': {\n\t\t\tpattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t// Here-document with quotes around the tag\n\t\t\t// → No expansion (so no “inside”).\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'bash': commandAfterHeredoc\n\t\t\t\t}\n\t\t\t},\n\t\t\t// “Normal” string\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n\t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n\t\t\t\tpattern: /(^|[^$\\\\])'[^']*'/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n\t\t\t\tpattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'entity': insideString.entity\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$?' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': insideString.variable,\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n\t\t'builtin': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true,\n\t\t\t// Alias added to make those easier to distinguish from strings.\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'file-descriptor': {\n\t\t\tpattern: /\\B&\\d\\b/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'operator': {\n\t\t\t// Lots of redirections here, but not just that.\n\t\t\tpattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n\t\t\tinside: {\n\t\t\t\t'file-descriptor': {\n\t\t\t\t\tpattern: /^\\d/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n\t\t'number': {\n\t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t};\n\n\tcommandAfterHeredoc.inside = Prism.languages.bash;\n\n\t/* Patterns in command substitution. */\n\tvar toBeCopied = [\n\t\t'comment',\n\t\t'function-name',\n\t\t'for-or-select',\n\t\t'assign-left',\n\t\t'parameter',\n\t\t'string',\n\t\t'environment',\n\t\t'function',\n\t\t'keyword',\n\t\t'builtin',\n\t\t'boolean',\n\t\t'file-descriptor',\n\t\t'operator',\n\t\t'punctuation',\n\t\t'number'\n\t];\n\tvar inside = insideString.variable[1].inside;\n\tfor (var i = 0; i < toBeCopied.length; i++) {\n\t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n\t}\n\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.shell = Prism.languages.bash;\n}(Prism));\n"],"names":["Prism","envVars","commandAfterHeredoc","insideString","toBeCopied","inside","i"],"mappings":"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","x_google_ignoreList":[0]}
|