chrome-devtools-frontend 1.0.1636056 → 1.0.1640418

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.
Files changed (171) hide show
  1. package/front_end/core/common/Color.ts +0 -4
  2. package/front_end/core/host/AidaClientTypes.ts +8 -6
  3. package/front_end/core/root/Runtime.ts +2 -2
  4. package/front_end/core/sdk/DOMStorageModel.ts +1 -1
  5. package/front_end/core/sdk/SourceMap.ts +8 -3
  6. package/front_end/core/sdk/TargetManager.ts +14 -1
  7. package/front_end/entrypoints/heap_snapshot_worker/HeapSnapshot.ts +147 -0
  8. package/front_end/generated/ARIAProperties.js +17 -4
  9. package/front_end/generated/InspectorBackendCommands.ts +13 -7
  10. package/front_end/generated/SupportedCSSProperties.js +1 -0
  11. package/front_end/generated/protocol-mapping.d.ts +7 -0
  12. package/front_end/generated/protocol-proxy-api.d.ts +14 -0
  13. package/front_end/generated/protocol.ts +120 -2
  14. package/front_end/global_typings/global_defs.d.ts +13 -0
  15. package/front_end/models/ai_assistance/AiAgent2.ts +116 -0
  16. package/front_end/models/ai_assistance/AiConversation.ts +22 -36
  17. package/front_end/models/ai_assistance/AiHistoryStorage.ts +0 -1
  18. package/front_end/models/ai_assistance/AiOrigins.ts +46 -0
  19. package/front_end/models/ai_assistance/AiUtils.ts +9 -0
  20. package/front_end/models/ai_assistance/README.md +16 -0
  21. package/front_end/models/ai_assistance/StorageItem.ts +30 -26
  22. package/front_end/models/ai_assistance/agents/AccessibilityAgent.ts +12 -5
  23. package/front_end/models/ai_assistance/agents/AiAgent.ts +86 -32
  24. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.snapshot.txt +2 -2
  25. package/front_end/models/ai_assistance/agents/ContextSelectionAgent.ts +31 -10
  26. package/front_end/models/ai_assistance/agents/ConversationSummaryAgent.ts +1 -1
  27. package/front_end/models/ai_assistance/agents/FileAgent.ts +2 -2
  28. package/front_end/models/ai_assistance/agents/GreenDevAgent.ts +1 -3
  29. package/front_end/models/ai_assistance/agents/NetworkAgent.snapshot.txt +19 -0
  30. package/front_end/models/ai_assistance/agents/NetworkAgent.ts +9 -4
  31. package/front_end/models/ai_assistance/agents/PerformanceAgent.snapshot.txt +2 -2
  32. package/front_end/models/ai_assistance/agents/PerformanceAgent.ts +41 -12
  33. package/front_end/models/ai_assistance/agents/StorageAgent.ts +442 -122
  34. package/front_end/models/ai_assistance/agents/StylingAgent.ts +2 -2
  35. package/front_end/models/ai_assistance/ai_assistance.ts +4 -2
  36. package/front_end/models/ai_assistance/data_formatters/PerformanceTraceFormatter.snapshot.txt +2 -2
  37. package/front_end/models/ai_assistance/performance/AIContext.ts +7 -8
  38. package/front_end/models/ai_assistance/skills/README.md +40 -0
  39. package/front_end/models/ai_assistance/skills/Skill.ts +13 -0
  40. package/front_end/models/ai_assistance/skills/SkillRegistry.ts +10 -0
  41. package/front_end/models/ai_assistance/skills/styling.md +6 -0
  42. package/front_end/models/bindings/CompilerScriptMapping.ts +12 -4
  43. package/front_end/models/breakpoints/BreakpointManager.ts +54 -2
  44. package/front_end/models/greendev/Prototypes.ts +0 -7
  45. package/front_end/models/heap_snapshot/HeapSnapshotModel.ts +20 -0
  46. package/front_end/models/heap_snapshot/HeapSnapshotProxy.ts +5 -0
  47. package/front_end/models/issues_manager/EmailVerificationRequestIssue.ts +293 -0
  48. package/front_end/models/issues_manager/IssuesManager.ts +5 -0
  49. package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsFetchFailed.md +1 -0
  50. package/front_end/models/issues_manager/descriptions/emailVerificationRequestDnsInvalidRecord.md +1 -0
  51. package/front_end/models/issues_manager/descriptions/emailVerificationRequestInvalidEmail.md +1 -0
  52. package/front_end/models/issues_manager/descriptions/emailVerificationRequestKeyBindingSigningFailed.md +1 -0
  53. package/front_end/models/issues_manager/descriptions/emailVerificationRequestRpOriginIsOpaque.md +1 -0
  54. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenHttpNotFound.md +1 -0
  55. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidContentType.md +1 -0
  56. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidResponse.md +1 -0
  57. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenInvalidSdJwt.md +1 -0
  58. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenMalformedSdJwt.md +1 -0
  59. package/front_end/models/issues_manager/descriptions/emailVerificationRequestTokenNoResponse.md +1 -0
  60. package/front_end/models/issues_manager/descriptions/emailVerificationRequestUserLoggedOut.md +1 -0
  61. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownAccountsEndpointCrossOrigin.md +1 -0
  62. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownHttpNotFound.md +1 -0
  63. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidContentType.md +1 -0
  64. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownInvalidResponse.md +1 -0
  65. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownIssuanceEndpointCrossOrigin.md +1 -0
  66. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownListEmpty.md +1 -0
  67. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingAccountsEndpoint.md +1 -0
  68. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownMissingIssuanceEndpoint.md +1 -0
  69. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownNoResponse.md +1 -0
  70. package/front_end/models/issues_manager/descriptions/emailVerificationRequestWellKnownUnsupportedSigningAlgorithm.md +1 -0
  71. package/front_end/models/issues_manager/issues_manager.ts +2 -0
  72. package/front_end/models/javascript_metadata/NativeFunctions.js +1748 -1739
  73. package/front_end/models/live-metrics/web-vitals-injected/web-vitals-injected.ts +1 -1
  74. package/front_end/models/stack_trace/DetailedErrorStackParser.ts +9 -1
  75. package/front_end/models/stack_trace/StackTraceImpl.ts +29 -9
  76. package/front_end/models/stack_trace/StackTraceModel.ts +23 -11
  77. package/front_end/models/stack_trace/Trie.ts +11 -1
  78. package/front_end/models/trace/extras/TraceTree.ts +20 -1
  79. package/front_end/models/trace/insights/Common.ts +9 -0
  80. package/front_end/models/trace/lantern/core/NetworkAnalyzer.ts +21 -25
  81. package/front_end/panels/ai_assistance/AiAssistancePanel.ts +19 -75
  82. package/front_end/panels/ai_assistance/components/AccessibilityAgentMarkdownRenderer.ts +10 -3
  83. package/front_end/panels/ai_assistance/components/ChatMessage.ts +148 -2
  84. package/front_end/panels/ai_assistance/components/PerformanceAgentMarkdownRenderer.ts +2 -3
  85. package/front_end/panels/ai_assistance/components/chatMessage.css +27 -0
  86. package/front_end/panels/application/CookieItemsView.ts +24 -0
  87. package/front_end/panels/application/DOMStorageItemsView.ts +9 -4
  88. package/front_end/panels/application/preloading/components/PreloadingString.ts +6 -0
  89. package/front_end/panels/application/preloading/components/UsedPreloadingView.ts +4 -4
  90. package/front_end/panels/console/ConsoleViewMessage.ts +13 -102
  91. package/front_end/panels/elements/StandaloneStylesContainer.ts +10 -0
  92. package/front_end/panels/elements/StylePropertiesSection.ts +6 -2
  93. package/front_end/panels/elements/StylePropertyTreeElement.ts +30 -1
  94. package/front_end/panels/elements/StylesContainer.ts +3 -0
  95. package/front_end/panels/elements/StylesSidebarPane.ts +54 -4
  96. package/front_end/panels/elements/elements-meta.ts +14 -0
  97. package/front_end/panels/layer_viewer/layerDetailsView.css +1 -1
  98. package/front_end/panels/lighthouse/LighthouseController.ts +1 -1
  99. package/front_end/panels/lighthouse/LighthouseProtocolService.ts +4 -4
  100. package/front_end/panels/network/NetworkDataGridNode.ts +14 -0
  101. package/front_end/panels/network/NetworkLogViewColumns.ts +2 -2
  102. package/front_end/panels/network/RequestHeadersView.ts +55 -19
  103. package/front_end/panels/network/networkTimingTable.css +2 -4
  104. package/front_end/panels/recorder/components/ReplaySection.ts +28 -16
  105. package/front_end/panels/recorder/converters/LighthouseConverter.snapshot.txt +47 -0
  106. package/front_end/panels/recorder/converters/PuppeteerConverter.snapshot.txt +49 -0
  107. package/front_end/panels/recorder/converters/PuppeteerReplayConverter.snapshot.txt +33 -0
  108. package/front_end/panels/settings/SettingsScreen.ts +1 -2
  109. package/front_end/panels/sources/BreakpointsView.ts +23 -42
  110. package/front_end/panels/sources/DebuggerPlugin.ts +12 -5
  111. package/front_end/panels/sources/ScopeChainSidebarPane.ts +169 -106
  112. package/front_end/panels/timeline/components/IgnoreListSetting.ts +1 -0
  113. package/front_end/third_party/chromium/README.chromium +1 -1
  114. package/front_end/third_party/lighthouse/lighthouse-dt-bundle.js +2 -2
  115. package/front_end/third_party/marked/README.chromium +3 -6
  116. package/front_end/third_party/marked/package/README.md +5 -5
  117. package/front_end/third_party/marked/package/bin/main.js +27 -22
  118. package/front_end/third_party/marked/package/bin/marked.js +2 -1
  119. package/front_end/third_party/marked/package/lib/marked.esm.d.ts +346 -256
  120. package/front_end/third_party/marked/package/lib/marked.esm.js +67 -2698
  121. package/front_end/third_party/marked/package/lib/marked.esm.js.map +7 -1
  122. package/front_end/third_party/marked/package/lib/marked.umd.js +69 -2722
  123. package/front_end/third_party/marked/package/lib/marked.umd.js.map +7 -1
  124. package/front_end/third_party/marked/package/man/marked.1 +4 -2
  125. package/front_end/third_party/marked/package/man/marked.1.md +2 -1
  126. package/front_end/third_party/marked/package/package.json +49 -57
  127. package/front_end/third_party/puppeteer-replay/README.chromium +2 -2
  128. package/front_end/third_party/puppeteer-replay/package/lib/cli.js +84 -80
  129. package/front_end/third_party/puppeteer-replay/package/lib/cli.js.map +1 -1
  130. package/front_end/third_party/puppeteer-replay/package/lib/extension-test.js +79 -83
  131. package/front_end/third_party/puppeteer-replay/package/lib/extension-test.js.map +1 -1
  132. package/front_end/third_party/puppeteer-replay/package/lib/main.d.ts +43 -171
  133. package/front_end/third_party/puppeteer-replay/package/lib/main.js +51 -206
  134. package/front_end/third_party/puppeteer-replay/package/lib/main.js.map +1 -1
  135. package/front_end/third_party/puppeteer-replay/package/package.json +37 -67
  136. package/front_end/tsconfig.json +1 -1
  137. package/front_end/ui/components/markdown_view/CodeBlock.ts +17 -6
  138. package/front_end/ui/components/markdown_view/MarkdownView.ts +39 -3
  139. package/front_end/ui/components/markdown_view/codeBlock.css +11 -0
  140. package/front_end/ui/components/markdown_view/markdownView.css +17 -0
  141. package/front_end/ui/legacy/components/object_ui/ObjectPropertiesSection.ts +0 -79
  142. package/front_end/ui/legacy/components/object_ui/RemoteObjectPreviewFormatter.ts +16 -4
  143. package/front_end/ui/visual_logging/KnownContextValues.ts +4 -0
  144. package/inspector_overlay/testing/InspectorOverlayHelpers.ts +2 -0
  145. package/mcp/mcp.ts +1 -6
  146. package/package.json +14 -16
  147. package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgent.ts +0 -1015
  148. package/front_end/models/ai_assistance/agents/BreakpointDebuggerAgentOverlay.ts +0 -87
  149. package/front_end/third_party/marked/package/bin/marked +0 -215
  150. package/front_end/third_party/marked/package/lib/marked.cjs +0 -2726
  151. package/front_end/third_party/marked/package/lib/marked.cjs.map +0 -1
  152. package/front_end/third_party/marked/package/lib/marked.d.cts +0 -670
  153. package/front_end/third_party/marked/package/lib/marked.js +0 -2780
  154. package/front_end/third_party/marked/package/man/marked.1.txt +0 -86
  155. package/front_end/third_party/marked/package/marked.min.js +0 -6
  156. package/front_end/third_party/marked/package/src/Lexer.js +0 -492
  157. package/front_end/third_party/marked/package/src/Parser.js +0 -286
  158. package/front_end/third_party/marked/package/src/Renderer.js +0 -166
  159. package/front_end/third_party/marked/package/src/Slugger.js +0 -49
  160. package/front_end/third_party/marked/package/src/TextRenderer.js +0 -42
  161. package/front_end/third_party/marked/package/src/Tokenizer.js +0 -755
  162. package/front_end/third_party/marked/package/src/defaults.js +0 -29
  163. package/front_end/third_party/marked/package/src/helpers.js +0 -249
  164. package/front_end/third_party/marked/package/src/marked.js +0 -350
  165. package/front_end/third_party/marked/package/src/rules.js +0 -285
  166. package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.cjs +0 -2099
  167. package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.cjs.map +0 -1
  168. package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.d.cts +0 -686
  169. package/front_end/third_party/puppeteer-replay/package/lib/cjs/main.d.ts +0 -35
  170. package/mcp/HostBindings.ts +0 -319
  171. /package/front_end/third_party/marked/package/{LICENSE.md → LICENSE} +0 -0
@@ -1,2780 +0,0 @@
1
- /**
2
- * marked - a markdown parser
3
- * Copyright (c) 2011-2021, Christopher Jeffrey. (MIT Licensed)
4
- * https://github.com/markedjs/marked
5
- */
6
-
7
- /**
8
- * DO NOT EDIT THIS FILE
9
- * The code in this file is generated from files in ./src/
10
- */
11
-
12
- (function (global, factory) {
13
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
14
- typeof define === 'function' && define.amd ? define(factory) :
15
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.marked = factory());
16
- }(this, (function () { 'use strict';
17
-
18
- function _defineProperties(target, props) {
19
- for (var i = 0; i < props.length; i++) {
20
- var descriptor = props[i];
21
- descriptor.enumerable = descriptor.enumerable || false;
22
- descriptor.configurable = true;
23
- if ("value" in descriptor) descriptor.writable = true;
24
- Object.defineProperty(target, descriptor.key, descriptor);
25
- }
26
- }
27
-
28
- function _createClass(Constructor, protoProps, staticProps) {
29
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
30
- if (staticProps) _defineProperties(Constructor, staticProps);
31
- return Constructor;
32
- }
33
-
34
- function _unsupportedIterableToArray(o, minLen) {
35
- if (!o) return;
36
- if (typeof o === "string") return _arrayLikeToArray(o, minLen);
37
- var n = Object.prototype.toString.call(o).slice(8, -1);
38
- if (n === "Object" && o.constructor) n = o.constructor.name;
39
- if (n === "Map" || n === "Set") return Array.from(o);
40
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
41
- }
42
-
43
- function _arrayLikeToArray(arr, len) {
44
- if (len == null || len > arr.length) len = arr.length;
45
-
46
- for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
47
-
48
- return arr2;
49
- }
50
-
51
- function _createForOfIteratorHelperLoose(o, allowArrayLike) {
52
- var it;
53
-
54
- if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) {
55
- if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
56
- if (it) o = it;
57
- var i = 0;
58
- return function () {
59
- if (i >= o.length) return {
60
- done: true
61
- };
62
- return {
63
- done: false,
64
- value: o[i++]
65
- };
66
- };
67
- }
68
-
69
- throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
70
- }
71
-
72
- it = o[Symbol.iterator]();
73
- return it.next.bind(it);
74
- }
75
-
76
- function createCommonjsModule(fn) {
77
- var module = { exports: {} };
78
- return fn(module, module.exports), module.exports;
79
- }
80
-
81
- var defaults$5 = createCommonjsModule(function (module) {
82
- function getDefaults() {
83
- return {
84
- baseUrl: null,
85
- breaks: false,
86
- gfm: true,
87
- headerIds: true,
88
- headerPrefix: '',
89
- highlight: null,
90
- langPrefix: 'language-',
91
- mangle: true,
92
- pedantic: false,
93
- renderer: null,
94
- sanitize: false,
95
- sanitizer: null,
96
- silent: false,
97
- smartLists: false,
98
- smartypants: false,
99
- tokenizer: null,
100
- walkTokens: null,
101
- xhtml: false
102
- };
103
- }
104
-
105
- function changeDefaults(newDefaults) {
106
- module.exports.defaults = newDefaults;
107
- }
108
-
109
- module.exports = {
110
- defaults: getDefaults(),
111
- getDefaults: getDefaults,
112
- changeDefaults: changeDefaults
113
- };
114
- });
115
-
116
- /**
117
- * Helpers
118
- */
119
- var escapeTest = /[&<>"']/;
120
- var escapeReplace = /[&<>"']/g;
121
- var escapeTestNoEncode = /[<>"']|&(?!#?\w+;)/;
122
- var escapeReplaceNoEncode = /[<>"']|&(?!#?\w+;)/g;
123
- var escapeReplacements = {
124
- '&': '&amp;',
125
- '<': '&lt;',
126
- '>': '&gt;',
127
- '"': '&quot;',
128
- "'": '&#39;'
129
- };
130
-
131
- var getEscapeReplacement = function getEscapeReplacement(ch) {
132
- return escapeReplacements[ch];
133
- };
134
-
135
- function escape$2(html, encode) {
136
- if (encode) {
137
- if (escapeTest.test(html)) {
138
- return html.replace(escapeReplace, getEscapeReplacement);
139
- }
140
- } else {
141
- if (escapeTestNoEncode.test(html)) {
142
- return html.replace(escapeReplaceNoEncode, getEscapeReplacement);
143
- }
144
- }
145
-
146
- return html;
147
- }
148
-
149
- var unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
150
-
151
- function unescape$1(html) {
152
- // explicitly match decimal, hex, and named HTML entities
153
- return html.replace(unescapeTest, function (_, n) {
154
- n = n.toLowerCase();
155
- if (n === 'colon') return ':';
156
-
157
- if (n.charAt(0) === '#') {
158
- return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));
159
- }
160
-
161
- return '';
162
- });
163
- }
164
-
165
- var caret = /(^|[^\[])\^/g;
166
-
167
- function edit$1(regex, opt) {
168
- regex = regex.source || regex;
169
- opt = opt || '';
170
- var obj = {
171
- replace: function replace(name, val) {
172
- val = val.source || val;
173
- val = val.replace(caret, '$1');
174
- regex = regex.replace(name, val);
175
- return obj;
176
- },
177
- getRegex: function getRegex() {
178
- return new RegExp(regex, opt);
179
- }
180
- };
181
- return obj;
182
- }
183
-
184
- var nonWordAndColonTest = /[^\w:]/g;
185
- var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
186
-
187
- function cleanUrl$1(sanitize, base, href) {
188
- if (sanitize) {
189
- var prot;
190
-
191
- try {
192
- prot = decodeURIComponent(unescape$1(href)).replace(nonWordAndColonTest, '').toLowerCase();
193
- } catch (e) {
194
- return null;
195
- }
196
-
197
- if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
198
- return null;
199
- }
200
- }
201
-
202
- if (base && !originIndependentUrl.test(href)) {
203
- href = resolveUrl(base, href);
204
- }
205
-
206
- try {
207
- href = encodeURI(href).replace(/%25/g, '%');
208
- } catch (e) {
209
- return null;
210
- }
211
-
212
- return href;
213
- }
214
-
215
- var baseUrls = {};
216
- var justDomain = /^[^:]+:\/*[^/]*$/;
217
- var protocol = /^([^:]+:)[\s\S]*$/;
218
- var domain = /^([^:]+:\/*[^/]*)[\s\S]*$/;
219
-
220
- function resolveUrl(base, href) {
221
- if (!baseUrls[' ' + base]) {
222
- // we can ignore everything in base after the last slash of its path component,
223
- // but we might need to add _that_
224
- // https://tools.ietf.org/html/rfc3986#section-3
225
- if (justDomain.test(base)) {
226
- baseUrls[' ' + base] = base + '/';
227
- } else {
228
- baseUrls[' ' + base] = rtrim$1(base, '/', true);
229
- }
230
- }
231
-
232
- base = baseUrls[' ' + base];
233
- var relativeBase = base.indexOf(':') === -1;
234
-
235
- if (href.substring(0, 2) === '//') {
236
- if (relativeBase) {
237
- return href;
238
- }
239
-
240
- return base.replace(protocol, '$1') + href;
241
- } else if (href.charAt(0) === '/') {
242
- if (relativeBase) {
243
- return href;
244
- }
245
-
246
- return base.replace(domain, '$1') + href;
247
- } else {
248
- return base + href;
249
- }
250
- }
251
-
252
- var noopTest$1 = {
253
- exec: function noopTest() {}
254
- };
255
-
256
- function merge$2(obj) {
257
- var i = 1,
258
- target,
259
- key;
260
-
261
- for (; i < arguments.length; i++) {
262
- target = arguments[i];
263
-
264
- for (key in target) {
265
- if (Object.prototype.hasOwnProperty.call(target, key)) {
266
- obj[key] = target[key];
267
- }
268
- }
269
- }
270
-
271
- return obj;
272
- }
273
-
274
- function splitCells$1(tableRow, count) {
275
- // ensure that every cell-delimiting pipe has a space
276
- // before it to distinguish it from an escaped pipe
277
- var row = tableRow.replace(/\|/g, function (match, offset, str) {
278
- var escaped = false,
279
- curr = offset;
280
-
281
- while (--curr >= 0 && str[curr] === '\\') {
282
- escaped = !escaped;
283
- }
284
-
285
- if (escaped) {
286
- // odd number of slashes means | is escaped
287
- // so we leave it alone
288
- return '|';
289
- } else {
290
- // add space before unescaped |
291
- return ' |';
292
- }
293
- }),
294
- cells = row.split(/ \|/);
295
- var i = 0;
296
-
297
- if (cells.length > count) {
298
- cells.splice(count);
299
- } else {
300
- while (cells.length < count) {
301
- cells.push('');
302
- }
303
- }
304
-
305
- for (; i < cells.length; i++) {
306
- // leading or trailing whitespace is ignored per the gfm spec
307
- cells[i] = cells[i].trim().replace(/\\\|/g, '|');
308
- }
309
-
310
- return cells;
311
- } // Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
312
- // /c*$/ is vulnerable to REDOS.
313
- // invert: Remove suffix of non-c chars instead. Default falsey.
314
-
315
-
316
- function rtrim$1(str, c, invert) {
317
- var l = str.length;
318
-
319
- if (l === 0) {
320
- return '';
321
- } // Length of suffix matching the invert condition.
322
-
323
-
324
- var suffLen = 0; // Step left until we fail to match the invert condition.
325
-
326
- while (suffLen < l) {
327
- var currChar = str.charAt(l - suffLen - 1);
328
-
329
- if (currChar === c && !invert) {
330
- suffLen++;
331
- } else if (currChar !== c && invert) {
332
- suffLen++;
333
- } else {
334
- break;
335
- }
336
- }
337
-
338
- return str.substr(0, l - suffLen);
339
- }
340
-
341
- function findClosingBracket$1(str, b) {
342
- if (str.indexOf(b[1]) === -1) {
343
- return -1;
344
- }
345
-
346
- var l = str.length;
347
- var level = 0,
348
- i = 0;
349
-
350
- for (; i < l; i++) {
351
- if (str[i] === '\\') {
352
- i++;
353
- } else if (str[i] === b[0]) {
354
- level++;
355
- } else if (str[i] === b[1]) {
356
- level--;
357
-
358
- if (level < 0) {
359
- return i;
360
- }
361
- }
362
- }
363
-
364
- return -1;
365
- }
366
-
367
- function checkSanitizeDeprecation$1(opt) {
368
- if (opt && opt.sanitize && !opt.silent) {
369
- console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');
370
- }
371
- } // copied from https://stackoverflow.com/a/5450113/806777
372
-
373
-
374
- function repeatString$1(pattern, count) {
375
- if (count < 1) {
376
- return '';
377
- }
378
-
379
- var result = '';
380
-
381
- while (count > 1) {
382
- if (count & 1) {
383
- result += pattern;
384
- }
385
-
386
- count >>= 1;
387
- pattern += pattern;
388
- }
389
-
390
- return result + pattern;
391
- }
392
-
393
- var helpers = {
394
- escape: escape$2,
395
- unescape: unescape$1,
396
- edit: edit$1,
397
- cleanUrl: cleanUrl$1,
398
- resolveUrl: resolveUrl,
399
- noopTest: noopTest$1,
400
- merge: merge$2,
401
- splitCells: splitCells$1,
402
- rtrim: rtrim$1,
403
- findClosingBracket: findClosingBracket$1,
404
- checkSanitizeDeprecation: checkSanitizeDeprecation$1,
405
- repeatString: repeatString$1
406
- };
407
-
408
- var defaults$4 = defaults$5.defaults;
409
- var rtrim = helpers.rtrim,
410
- splitCells = helpers.splitCells,
411
- _escape = helpers.escape,
412
- findClosingBracket = helpers.findClosingBracket;
413
-
414
- function outputLink(cap, link, raw) {
415
- var href = link.href;
416
- var title = link.title ? _escape(link.title) : null;
417
- var text = cap[1].replace(/\\([\[\]])/g, '$1');
418
-
419
- if (cap[0].charAt(0) !== '!') {
420
- return {
421
- type: 'link',
422
- raw: raw,
423
- href: href,
424
- title: title,
425
- text: text
426
- };
427
- } else {
428
- return {
429
- type: 'image',
430
- raw: raw,
431
- href: href,
432
- title: title,
433
- text: _escape(text)
434
- };
435
- }
436
- }
437
-
438
- function indentCodeCompensation(raw, text) {
439
- var matchIndentToCode = raw.match(/^(\s+)(?:```)/);
440
-
441
- if (matchIndentToCode === null) {
442
- return text;
443
- }
444
-
445
- var indentToCode = matchIndentToCode[1];
446
- return text.split('\n').map(function (node) {
447
- var matchIndentInNode = node.match(/^\s+/);
448
-
449
- if (matchIndentInNode === null) {
450
- return node;
451
- }
452
-
453
- var indentInNode = matchIndentInNode[0];
454
-
455
- if (indentInNode.length >= indentToCode.length) {
456
- return node.slice(indentToCode.length);
457
- }
458
-
459
- return node;
460
- }).join('\n');
461
- }
462
- /**
463
- * Tokenizer
464
- */
465
-
466
-
467
- var Tokenizer_1 = /*#__PURE__*/function () {
468
- function Tokenizer(options) {
469
- this.options = options || defaults$4;
470
- }
471
-
472
- var _proto = Tokenizer.prototype;
473
-
474
- _proto.space = function space(src) {
475
- var cap = this.rules.block.newline.exec(src);
476
-
477
- if (cap) {
478
- if (cap[0].length > 1) {
479
- return {
480
- type: 'space',
481
- raw: cap[0]
482
- };
483
- }
484
-
485
- return {
486
- raw: '\n'
487
- };
488
- }
489
- };
490
-
491
- _proto.code = function code(src) {
492
- var cap = this.rules.block.code.exec(src);
493
-
494
- if (cap) {
495
- var text = cap[0].replace(/^ {1,4}/gm, '');
496
- return {
497
- type: 'code',
498
- raw: cap[0],
499
- codeBlockStyle: 'indented',
500
- text: !this.options.pedantic ? rtrim(text, '\n') : text
501
- };
502
- }
503
- };
504
-
505
- _proto.fences = function fences(src) {
506
- var cap = this.rules.block.fences.exec(src);
507
-
508
- if (cap) {
509
- var raw = cap[0];
510
- var text = indentCodeCompensation(raw, cap[3] || '');
511
- return {
512
- type: 'code',
513
- raw: raw,
514
- lang: cap[2] ? cap[2].trim() : cap[2],
515
- text: text
516
- };
517
- }
518
- };
519
-
520
- _proto.heading = function heading(src) {
521
- var cap = this.rules.block.heading.exec(src);
522
-
523
- if (cap) {
524
- var text = cap[2].trim(); // remove trailing #s
525
-
526
- if (/#$/.test(text)) {
527
- var trimmed = rtrim(text, '#');
528
-
529
- if (this.options.pedantic) {
530
- text = trimmed.trim();
531
- } else if (!trimmed || / $/.test(trimmed)) {
532
- // CommonMark requires space before trailing #s
533
- text = trimmed.trim();
534
- }
535
- }
536
-
537
- return {
538
- type: 'heading',
539
- raw: cap[0],
540
- depth: cap[1].length,
541
- text: text
542
- };
543
- }
544
- };
545
-
546
- _proto.nptable = function nptable(src) {
547
- var cap = this.rules.block.nptable.exec(src);
548
-
549
- if (cap) {
550
- var item = {
551
- type: 'table',
552
- header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
553
- align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
554
- cells: cap[3] ? cap[3].replace(/\n$/, '').split('\n') : [],
555
- raw: cap[0]
556
- };
557
-
558
- if (item.header.length === item.align.length) {
559
- var l = item.align.length;
560
- var i;
561
-
562
- for (i = 0; i < l; i++) {
563
- if (/^ *-+: *$/.test(item.align[i])) {
564
- item.align[i] = 'right';
565
- } else if (/^ *:-+: *$/.test(item.align[i])) {
566
- item.align[i] = 'center';
567
- } else if (/^ *:-+ *$/.test(item.align[i])) {
568
- item.align[i] = 'left';
569
- } else {
570
- item.align[i] = null;
571
- }
572
- }
573
-
574
- l = item.cells.length;
575
-
576
- for (i = 0; i < l; i++) {
577
- item.cells[i] = splitCells(item.cells[i], item.header.length);
578
- }
579
-
580
- return item;
581
- }
582
- }
583
- };
584
-
585
- _proto.hr = function hr(src) {
586
- var cap = this.rules.block.hr.exec(src);
587
-
588
- if (cap) {
589
- return {
590
- type: 'hr',
591
- raw: cap[0]
592
- };
593
- }
594
- };
595
-
596
- _proto.blockquote = function blockquote(src) {
597
- var cap = this.rules.block.blockquote.exec(src);
598
-
599
- if (cap) {
600
- var text = cap[0].replace(/^ *> ?/gm, '');
601
- return {
602
- type: 'blockquote',
603
- raw: cap[0],
604
- text: text
605
- };
606
- }
607
- };
608
-
609
- _proto.list = function list(src) {
610
- var cap = this.rules.block.list.exec(src);
611
-
612
- if (cap) {
613
- var raw = cap[0];
614
- var bull = cap[2];
615
- var isordered = bull.length > 1;
616
- var list = {
617
- type: 'list',
618
- raw: raw,
619
- ordered: isordered,
620
- start: isordered ? +bull.slice(0, -1) : '',
621
- loose: false,
622
- items: []
623
- }; // Get each top-level item.
624
-
625
- var itemMatch = cap[0].match(this.rules.block.item);
626
- var next = false,
627
- item,
628
- space,
629
- bcurr,
630
- bnext,
631
- addBack,
632
- loose,
633
- istask,
634
- ischecked,
635
- endMatch;
636
- var l = itemMatch.length;
637
- bcurr = this.rules.block.listItemStart.exec(itemMatch[0]);
638
-
639
- for (var i = 0; i < l; i++) {
640
- item = itemMatch[i];
641
- raw = item;
642
-
643
- if (!this.options.pedantic) {
644
- // Determine if current item contains the end of the list
645
- endMatch = item.match(new RegExp('\\n\\s*\\n {0,' + (bcurr[0].length - 1) + '}\\S'));
646
-
647
- if (endMatch) {
648
- addBack = item.length - endMatch.index + itemMatch.slice(i + 1).join('\n').length;
649
- list.raw = list.raw.substring(0, list.raw.length - addBack);
650
- item = item.substring(0, endMatch.index);
651
- raw = item;
652
- l = i + 1;
653
- }
654
- } // Determine whether the next list item belongs here.
655
- // Backpedal if it does not belong in this list.
656
-
657
-
658
- if (i !== l - 1) {
659
- bnext = this.rules.block.listItemStart.exec(itemMatch[i + 1]);
660
-
661
- if (!this.options.pedantic ? bnext[1].length >= bcurr[0].length || bnext[1].length > 3 : bnext[1].length > bcurr[1].length) {
662
- // nested list or continuation
663
- itemMatch.splice(i, 2, itemMatch[i] + (!this.options.pedantic && bnext[1].length < bcurr[0].length && !itemMatch[i].match(/\n$/) ? '' : '\n') + itemMatch[i + 1]);
664
- i--;
665
- l--;
666
- continue;
667
- } else if ( // different bullet style
668
- !this.options.pedantic || this.options.smartLists ? bnext[2][bnext[2].length - 1] !== bull[bull.length - 1] : isordered === (bnext[2].length === 1)) {
669
- addBack = itemMatch.slice(i + 1).join('\n').length;
670
- list.raw = list.raw.substring(0, list.raw.length - addBack);
671
- i = l - 1;
672
- }
673
-
674
- bcurr = bnext;
675
- } // Remove the list item's bullet
676
- // so it is seen as the next token.
677
-
678
-
679
- space = item.length;
680
- item = item.replace(/^ *([*+-]|\d+[.)]) ?/, ''); // Outdent whatever the
681
- // list item contains. Hacky.
682
-
683
- if (~item.indexOf('\n ')) {
684
- space -= item.length;
685
- item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, '');
686
- } // trim item newlines at end
687
-
688
-
689
- item = rtrim(item, '\n');
690
-
691
- if (i !== l - 1) {
692
- raw = raw + '\n';
693
- } // Determine whether item is loose or not.
694
- // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
695
- // for discount behavior.
696
-
697
-
698
- loose = next || /\n\n(?!\s*$)/.test(raw);
699
-
700
- if (i !== l - 1) {
701
- next = raw.slice(-2) === '\n\n';
702
- if (!loose) loose = next;
703
- }
704
-
705
- if (loose) {
706
- list.loose = true;
707
- } // Check for task list items
708
-
709
-
710
- if (this.options.gfm) {
711
- istask = /^\[[ xX]\] /.test(item);
712
- ischecked = undefined;
713
-
714
- if (istask) {
715
- ischecked = item[1] !== ' ';
716
- item = item.replace(/^\[[ xX]\] +/, '');
717
- }
718
- }
719
-
720
- list.items.push({
721
- type: 'list_item',
722
- raw: raw,
723
- task: istask,
724
- checked: ischecked,
725
- loose: loose,
726
- text: item
727
- });
728
- }
729
-
730
- return list;
731
- }
732
- };
733
-
734
- _proto.html = function html(src) {
735
- var cap = this.rules.block.html.exec(src);
736
-
737
- if (cap) {
738
- return {
739
- type: this.options.sanitize ? 'paragraph' : 'html',
740
- raw: cap[0],
741
- pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
742
- text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]
743
- };
744
- }
745
- };
746
-
747
- _proto.def = function def(src) {
748
- var cap = this.rules.block.def.exec(src);
749
-
750
- if (cap) {
751
- if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1);
752
- var tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
753
- return {
754
- type: 'def',
755
- tag: tag,
756
- raw: cap[0],
757
- href: cap[2],
758
- title: cap[3]
759
- };
760
- }
761
- };
762
-
763
- _proto.table = function table(src) {
764
- var cap = this.rules.block.table.exec(src);
765
-
766
- if (cap) {
767
- var item = {
768
- type: 'table',
769
- header: splitCells(cap[1].replace(/^ *| *\| *$/g, '')),
770
- align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
771
- cells: cap[3] ? cap[3].replace(/\n$/, '').split('\n') : []
772
- };
773
-
774
- if (item.header.length === item.align.length) {
775
- item.raw = cap[0];
776
- var l = item.align.length;
777
- var i;
778
-
779
- for (i = 0; i < l; i++) {
780
- if (/^ *-+: *$/.test(item.align[i])) {
781
- item.align[i] = 'right';
782
- } else if (/^ *:-+: *$/.test(item.align[i])) {
783
- item.align[i] = 'center';
784
- } else if (/^ *:-+ *$/.test(item.align[i])) {
785
- item.align[i] = 'left';
786
- } else {
787
- item.align[i] = null;
788
- }
789
- }
790
-
791
- l = item.cells.length;
792
-
793
- for (i = 0; i < l; i++) {
794
- item.cells[i] = splitCells(item.cells[i].replace(/^ *\| *| *\| *$/g, ''), item.header.length);
795
- }
796
-
797
- return item;
798
- }
799
- }
800
- };
801
-
802
- _proto.lheading = function lheading(src) {
803
- var cap = this.rules.block.lheading.exec(src);
804
-
805
- if (cap) {
806
- return {
807
- type: 'heading',
808
- raw: cap[0],
809
- depth: cap[2].charAt(0) === '=' ? 1 : 2,
810
- text: cap[1]
811
- };
812
- }
813
- };
814
-
815
- _proto.paragraph = function paragraph(src) {
816
- var cap = this.rules.block.paragraph.exec(src);
817
-
818
- if (cap) {
819
- return {
820
- type: 'paragraph',
821
- raw: cap[0],
822
- text: cap[1].charAt(cap[1].length - 1) === '\n' ? cap[1].slice(0, -1) : cap[1]
823
- };
824
- }
825
- };
826
-
827
- _proto.text = function text(src) {
828
- var cap = this.rules.block.text.exec(src);
829
-
830
- if (cap) {
831
- return {
832
- type: 'text',
833
- raw: cap[0],
834
- text: cap[0]
835
- };
836
- }
837
- };
838
-
839
- _proto.escape = function escape(src) {
840
- var cap = this.rules.inline.escape.exec(src);
841
-
842
- if (cap) {
843
- return {
844
- type: 'escape',
845
- raw: cap[0],
846
- text: _escape(cap[1])
847
- };
848
- }
849
- };
850
-
851
- _proto.tag = function tag(src, inLink, inRawBlock) {
852
- var cap = this.rules.inline.tag.exec(src);
853
-
854
- if (cap) {
855
- if (!inLink && /^<a /i.test(cap[0])) {
856
- inLink = true;
857
- } else if (inLink && /^<\/a>/i.test(cap[0])) {
858
- inLink = false;
859
- }
860
-
861
- if (!inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
862
- inRawBlock = true;
863
- } else if (inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
864
- inRawBlock = false;
865
- }
866
-
867
- return {
868
- type: this.options.sanitize ? 'text' : 'html',
869
- raw: cap[0],
870
- inLink: inLink,
871
- inRawBlock: inRawBlock,
872
- text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0]
873
- };
874
- }
875
- };
876
-
877
- _proto.link = function link(src) {
878
- var cap = this.rules.inline.link.exec(src);
879
-
880
- if (cap) {
881
- var trimmedUrl = cap[2].trim();
882
-
883
- if (!this.options.pedantic && /^</.test(trimmedUrl)) {
884
- // commonmark requires matching angle brackets
885
- if (!/>$/.test(trimmedUrl)) {
886
- return;
887
- } // ending angle bracket cannot be escaped
888
-
889
-
890
- var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\');
891
-
892
- if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
893
- return;
894
- }
895
- } else {
896
- // find closing parenthesis
897
- var lastParenIndex = findClosingBracket(cap[2], '()');
898
-
899
- if (lastParenIndex > -1) {
900
- var start = cap[0].indexOf('!') === 0 ? 5 : 4;
901
- var linkLen = start + cap[1].length + lastParenIndex;
902
- cap[2] = cap[2].substring(0, lastParenIndex);
903
- cap[0] = cap[0].substring(0, linkLen).trim();
904
- cap[3] = '';
905
- }
906
- }
907
-
908
- var href = cap[2];
909
- var title = '';
910
-
911
- if (this.options.pedantic) {
912
- // split pedantic href and title
913
- var link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
914
-
915
- if (link) {
916
- href = link[1];
917
- title = link[3];
918
- }
919
- } else {
920
- title = cap[3] ? cap[3].slice(1, -1) : '';
921
- }
922
-
923
- href = href.trim();
924
-
925
- if (/^</.test(href)) {
926
- if (this.options.pedantic && !/>$/.test(trimmedUrl)) {
927
- // pedantic allows starting angle bracket without ending angle bracket
928
- href = href.slice(1);
929
- } else {
930
- href = href.slice(1, -1);
931
- }
932
- }
933
-
934
- return outputLink(cap, {
935
- href: href ? href.replace(this.rules.inline._escapes, '$1') : href,
936
- title: title ? title.replace(this.rules.inline._escapes, '$1') : title
937
- }, cap[0]);
938
- }
939
- };
940
-
941
- _proto.reflink = function reflink(src, links) {
942
- var cap;
943
-
944
- if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {
945
- var link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
946
- link = links[link.toLowerCase()];
947
-
948
- if (!link || !link.href) {
949
- var text = cap[0].charAt(0);
950
- return {
951
- type: 'text',
952
- raw: text,
953
- text: text
954
- };
955
- }
956
-
957
- return outputLink(cap, link, cap[0]);
958
- }
959
- };
960
-
961
- _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {
962
- if (prevChar === void 0) {
963
- prevChar = '';
964
- }
965
-
966
- var match = this.rules.inline.emStrong.lDelim.exec(src);
967
- if (!match) return;
968
- if (match[3] && prevChar.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82C[\uDC00-\uDD1E\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDD\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/)) return; // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
969
-
970
- var nextChar = match[1] || match[2] || '';
971
-
972
- if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
973
- var lLength = match[0].length - 1;
974
- var rDelim,
975
- rLength,
976
- delimTotal = lLength,
977
- midDelimTotal = 0;
978
- var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
979
- endReg.lastIndex = 0;
980
- maskedSrc = maskedSrc.slice(-1 * src.length + lLength); // Bump maskedSrc to same section of string as src (move to lexer?)
981
-
982
- while ((match = endReg.exec(maskedSrc)) != null) {
983
- rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
984
- if (!rDelim) continue; // matched the first alternative in rules.js (skip the * in __abc*abc__)
985
-
986
- rLength = rDelim.length;
987
-
988
- if (match[3] || match[4]) {
989
- // found another Left Delim
990
- delimTotal += rLength;
991
- continue;
992
- } else if (match[5] || match[6]) {
993
- // either Left or Right Delim
994
- if (lLength % 3 && !((lLength + rLength) % 3)) {
995
- midDelimTotal += rLength;
996
- continue; // CommonMark Emphasis Rules 9-10
997
- }
998
- }
999
-
1000
- delimTotal -= rLength;
1001
- if (delimTotal > 0) continue; // Haven't found enough closing delimiters
1002
- // If this is the last rDelimiter, remove extra characters. *a*** -> *a*
1003
-
1004
- if (delimTotal + midDelimTotal - rLength <= 0 && !maskedSrc.slice(endReg.lastIndex).match(endReg)) {
1005
- rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
1006
- }
1007
-
1008
- if (Math.min(lLength, rLength) % 2) {
1009
- return {
1010
- type: 'em',
1011
- raw: src.slice(0, lLength + match.index + rLength + 1),
1012
- text: src.slice(1, lLength + match.index + rLength)
1013
- };
1014
- }
1015
-
1016
- if (Math.min(lLength, rLength) % 2 === 0) {
1017
- return {
1018
- type: 'strong',
1019
- raw: src.slice(0, lLength + match.index + rLength + 1),
1020
- text: src.slice(2, lLength + match.index + rLength - 1)
1021
- };
1022
- }
1023
- }
1024
- }
1025
- };
1026
-
1027
- _proto.codespan = function codespan(src) {
1028
- var cap = this.rules.inline.code.exec(src);
1029
-
1030
- if (cap) {
1031
- var text = cap[2].replace(/\n/g, ' ');
1032
- var hasNonSpaceChars = /[^ ]/.test(text);
1033
- var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);
1034
-
1035
- if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
1036
- text = text.substring(1, text.length - 1);
1037
- }
1038
-
1039
- text = _escape(text, true);
1040
- return {
1041
- type: 'codespan',
1042
- raw: cap[0],
1043
- text: text
1044
- };
1045
- }
1046
- };
1047
-
1048
- _proto.br = function br(src) {
1049
- var cap = this.rules.inline.br.exec(src);
1050
-
1051
- if (cap) {
1052
- return {
1053
- type: 'br',
1054
- raw: cap[0]
1055
- };
1056
- }
1057
- };
1058
-
1059
- _proto.del = function del(src) {
1060
- var cap = this.rules.inline.del.exec(src);
1061
-
1062
- if (cap) {
1063
- return {
1064
- type: 'del',
1065
- raw: cap[0],
1066
- text: cap[2]
1067
- };
1068
- }
1069
- };
1070
-
1071
- _proto.autolink = function autolink(src, mangle) {
1072
- var cap = this.rules.inline.autolink.exec(src);
1073
-
1074
- if (cap) {
1075
- var text, href;
1076
-
1077
- if (cap[2] === '@') {
1078
- text = _escape(this.options.mangle ? mangle(cap[1]) : cap[1]);
1079
- href = 'mailto:' + text;
1080
- } else {
1081
- text = _escape(cap[1]);
1082
- href = text;
1083
- }
1084
-
1085
- return {
1086
- type: 'link',
1087
- raw: cap[0],
1088
- text: text,
1089
- href: href,
1090
- tokens: [{
1091
- type: 'text',
1092
- raw: text,
1093
- text: text
1094
- }]
1095
- };
1096
- }
1097
- };
1098
-
1099
- _proto.url = function url(src, mangle) {
1100
- var cap;
1101
-
1102
- if (cap = this.rules.inline.url.exec(src)) {
1103
- var text, href;
1104
-
1105
- if (cap[2] === '@') {
1106
- text = _escape(this.options.mangle ? mangle(cap[0]) : cap[0]);
1107
- href = 'mailto:' + text;
1108
- } else {
1109
- // do extended autolink path validation
1110
- var prevCapZero;
1111
-
1112
- do {
1113
- prevCapZero = cap[0];
1114
- cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];
1115
- } while (prevCapZero !== cap[0]);
1116
-
1117
- text = _escape(cap[0]);
1118
-
1119
- if (cap[1] === 'www.') {
1120
- href = 'http://' + text;
1121
- } else {
1122
- href = text;
1123
- }
1124
- }
1125
-
1126
- return {
1127
- type: 'link',
1128
- raw: cap[0],
1129
- text: text,
1130
- href: href,
1131
- tokens: [{
1132
- type: 'text',
1133
- raw: text,
1134
- text: text
1135
- }]
1136
- };
1137
- }
1138
- };
1139
-
1140
- _proto.inlineText = function inlineText(src, inRawBlock, smartypants) {
1141
- var cap = this.rules.inline.text.exec(src);
1142
-
1143
- if (cap) {
1144
- var text;
1145
-
1146
- if (inRawBlock) {
1147
- text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : _escape(cap[0]) : cap[0];
1148
- } else {
1149
- text = _escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);
1150
- }
1151
-
1152
- return {
1153
- type: 'text',
1154
- raw: cap[0],
1155
- text: text
1156
- };
1157
- }
1158
- };
1159
-
1160
- return Tokenizer;
1161
- }();
1162
-
1163
- var noopTest = helpers.noopTest,
1164
- edit = helpers.edit,
1165
- merge$1 = helpers.merge;
1166
- /**
1167
- * Block-Level Grammar
1168
- */
1169
-
1170
- var block$1 = {
1171
- newline: /^(?: *(?:\n|$))+/,
1172
- code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
1173
- fences: /^ {0,3}(`{3,}(?=[^`\n]*\n)|~{3,})([^\n]*)\n(?:|([\s\S]*?)\n)(?: {0,3}\1[~`]* *(?:\n+|$)|$)/,
1174
- hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/,
1175
- heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
1176
- blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
1177
- list: /^( {0,3})(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?! {0,3}bull )\n*|\s*$)/,
1178
- html: '^ {0,3}(?:' // optional indentation
1179
- + '<(script|pre|style)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
1180
- + '|comment[^\\n]*(\\n+|$)' // (2)
1181
- + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3)
1182
- + '|<![A-Z][\\s\\S]*?(?:>\\n*|$)' // (4)
1183
- + '|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)' // (5)
1184
- + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:\\n{2,}|$)' // (6)
1185
- + '|<(?!script|pre|style)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)' // (7) open tag
1186
- + '|</(?!script|pre|style)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:\\n{2,}|$)' // (7) closing tag
1187
- + ')',
1188
- def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/,
1189
- nptable: noopTest,
1190
- table: noopTest,
1191
- lheading: /^([^\n]+)\n {0,3}(=+|-+) *(?:\n+|$)/,
1192
- // regex template, placeholders will be replaced according to different paragraph
1193
- // interruption rules of commonmark and the original markdown spec:
1194
- _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html| +\n)[^\n]+)*)/,
1195
- text: /^[^\n]+/
1196
- };
1197
- block$1._label = /(?!\s*\])(?:\\[\[\]]|[^\[\]])+/;
1198
- block$1._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
1199
- block$1.def = edit(block$1.def).replace('label', block$1._label).replace('title', block$1._title).getRegex();
1200
- block$1.bullet = /(?:[*+-]|\d{1,9}[.)])/;
1201
- block$1.item = /^( *)(bull) ?[^\n]*(?:\n(?! *bull ?)[^\n]*)*/;
1202
- block$1.item = edit(block$1.item, 'gm').replace(/bull/g, block$1.bullet).getRegex();
1203
- block$1.listItemStart = edit(/^( *)(bull) */).replace('bull', block$1.bullet).getRegex();
1204
- block$1.list = edit(block$1.list).replace(/bull/g, block$1.bullet).replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))').replace('def', '\\n+(?=' + block$1.def.source + ')').getRegex();
1205
- block$1._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';
1206
- block$1._comment = /<!--(?!-?>)[\s\S]*?(?:-->|$)/;
1207
- block$1.html = edit(block$1.html, 'i').replace('comment', block$1._comment).replace('tag', block$1._tag).replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
1208
- block$1.paragraph = edit(block$1._paragraph).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
1209
- .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
1210
- .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // pars can be interrupted by type (6) html blocks
1211
- .getRegex();
1212
- block$1.blockquote = edit(block$1.blockquote).replace('paragraph', block$1.paragraph).getRegex();
1213
- /**
1214
- * Normal Block Grammar
1215
- */
1216
-
1217
- block$1.normal = merge$1({}, block$1);
1218
- /**
1219
- * GFM Block Grammar
1220
- */
1221
-
1222
- block$1.gfm = merge$1({}, block$1.normal, {
1223
- nptable: '^ *([^|\\n ].*\\|.*)\\n' // Header
1224
- + ' {0,3}([-:]+ *\\|[-| :]*)' // Align
1225
- + '(?:\\n((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)',
1226
- // Cells
1227
- table: '^ *\\|(.+)\\n' // Header
1228
- + ' {0,3}\\|?( *[-:]+[-| :]*)' // Align
1229
- + '(?:\\n *((?:(?!\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
1230
-
1231
- });
1232
- block$1.gfm.nptable = edit(block$1.gfm.nptable).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
1233
- .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks
1234
- .getRegex();
1235
- block$1.gfm.table = edit(block$1.gfm.table).replace('hr', block$1.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
1236
- .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|!--)').replace('tag', block$1._tag) // tables can be interrupted by type (6) html blocks
1237
- .getRegex();
1238
- /**
1239
- * Pedantic grammar (original John Gruber's loose markdown specification)
1240
- */
1241
-
1242
- block$1.pedantic = merge$1({}, block$1.normal, {
1243
- html: edit('^ *(?:comment *(?:\\n|\\s*$)' + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
1244
- + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))').replace('comment', block$1._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b').getRegex(),
1245
- def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
1246
- heading: /^(#{1,6})(.*)(?:\n+|$)/,
1247
- fences: noopTest,
1248
- // fences not supported
1249
- paragraph: edit(block$1.normal._paragraph).replace('hr', block$1.hr).replace('heading', ' *#{1,6} *[^\n]').replace('lheading', block$1.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()
1250
- });
1251
- /**
1252
- * Inline-Level Grammar
1253
- */
1254
-
1255
- var inline$1 = {
1256
- escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
1257
- autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
1258
- url: noopTest,
1259
- tag: '^comment' + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
1260
- + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
1261
- + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
1262
- + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
1263
- + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>',
1264
- // CDATA section
1265
- link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,
1266
- reflink: /^!?\[(label)\]\[(?!\s*\])((?:\\[\[\]]?|[^\[\]\\])+)\]/,
1267
- nolink: /^!?\[(?!\s*\])((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\](?:\[\])?/,
1268
- reflinkSearch: 'reflink|nolink(?!\\()',
1269
- emStrong: {
1270
- lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
1271
- // (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.
1272
- // () Skip other delimiter (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
1273
- rDelimAst: /\_\_[^_]*?\*[^_]*?\_\_|[punct_](\*+)(?=[\s]|$)|[^punct*_\s](\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|[^punct*_\s](\*+)(?=[^punct*_\s])/,
1274
- rDelimUnd: /\*\*[^*]*?\_[^*]*?\*\*|[punct*](\_+)(?=[\s]|$)|[^punct*_\s](\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
1275
-
1276
- },
1277
- code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
1278
- br: /^( {2,}|\\)\n(?!\s*$)/,
1279
- del: noopTest,
1280
- text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
1281
- punctuation: /^([\spunctuation])/
1282
- }; // list of punctuation marks from CommonMark spec
1283
- // without * and _ to handle the different emphasis markers * and _
1284
-
1285
- inline$1._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~';
1286
- inline$1.punctuation = edit(inline$1.punctuation).replace(/punctuation/g, inline$1._punctuation).getRegex(); // sequences em should skip over [title](link), `code`, <html>
1287
-
1288
- inline$1.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
1289
- inline$1.escapedEmSt = /\\\*|\\_/g;
1290
- inline$1._comment = edit(block$1._comment).replace('(?:-->|$)', '-->').getRegex();
1291
- inline$1.emStrong.lDelim = edit(inline$1.emStrong.lDelim).replace(/punct/g, inline$1._punctuation).getRegex();
1292
- inline$1.emStrong.rDelimAst = edit(inline$1.emStrong.rDelimAst, 'g').replace(/punct/g, inline$1._punctuation).getRegex();
1293
- inline$1.emStrong.rDelimUnd = edit(inline$1.emStrong.rDelimUnd, 'g').replace(/punct/g, inline$1._punctuation).getRegex();
1294
- inline$1._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
1295
- inline$1._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
1296
- inline$1._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])?)+(?![-_])/;
1297
- inline$1.autolink = edit(inline$1.autolink).replace('scheme', inline$1._scheme).replace('email', inline$1._email).getRegex();
1298
- inline$1._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
1299
- inline$1.tag = edit(inline$1.tag).replace('comment', inline$1._comment).replace('attribute', inline$1._attribute).getRegex();
1300
- inline$1._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;
1301
- inline$1._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;
1302
- inline$1._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
1303
- inline$1.link = edit(inline$1.link).replace('label', inline$1._label).replace('href', inline$1._href).replace('title', inline$1._title).getRegex();
1304
- inline$1.reflink = edit(inline$1.reflink).replace('label', inline$1._label).getRegex();
1305
- inline$1.reflinkSearch = edit(inline$1.reflinkSearch, 'g').replace('reflink', inline$1.reflink).replace('nolink', inline$1.nolink).getRegex();
1306
- /**
1307
- * Normal Inline Grammar
1308
- */
1309
-
1310
- inline$1.normal = merge$1({}, inline$1);
1311
- /**
1312
- * Pedantic Inline Grammar
1313
- */
1314
-
1315
- inline$1.pedantic = merge$1({}, inline$1.normal, {
1316
- strong: {
1317
- start: /^__|\*\*/,
1318
- middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
1319
- endAst: /\*\*(?!\*)/g,
1320
- endUnd: /__(?!_)/g
1321
- },
1322
- em: {
1323
- start: /^_|\*/,
1324
- middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,
1325
- endAst: /\*(?!\*)/g,
1326
- endUnd: /_(?!_)/g
1327
- },
1328
- link: edit(/^!?\[(label)\]\((.*?)\)/).replace('label', inline$1._label).getRegex(),
1329
- reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace('label', inline$1._label).getRegex()
1330
- });
1331
- /**
1332
- * GFM Inline Grammar
1333
- */
1334
-
1335
- inline$1.gfm = merge$1({}, inline$1.normal, {
1336
- escape: edit(inline$1.escape).replace('])', '~|])').getRegex(),
1337
- _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
1338
- url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
1339
- _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/,
1340
- del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
1341
- text: /^([`~]+|[^`~])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@))/
1342
- });
1343
- inline$1.gfm.url = edit(inline$1.gfm.url, 'i').replace('email', inline$1.gfm._extended_email).getRegex();
1344
- /**
1345
- * GFM + Line Breaks Inline Grammar
1346
- */
1347
-
1348
- inline$1.breaks = merge$1({}, inline$1.gfm, {
1349
- br: edit(inline$1.br).replace('{2,}', '*').getRegex(),
1350
- text: edit(inline$1.gfm.text).replace('\\b_', '\\b_| {2,}\\n').replace(/\{2,\}/g, '*').getRegex()
1351
- });
1352
- var rules = {
1353
- block: block$1,
1354
- inline: inline$1
1355
- };
1356
-
1357
- var defaults$3 = defaults$5.defaults;
1358
- var block = rules.block,
1359
- inline = rules.inline;
1360
- var repeatString = helpers.repeatString;
1361
- /**
1362
- * smartypants text replacement
1363
- */
1364
-
1365
- function smartypants(text) {
1366
- return text // em-dashes
1367
- .replace(/---/g, "\u2014") // en-dashes
1368
- .replace(/--/g, "\u2013") // opening singles
1369
- .replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018") // closing singles & apostrophes
1370
- .replace(/'/g, "\u2019") // opening doubles
1371
- .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201C") // closing doubles
1372
- .replace(/"/g, "\u201D") // ellipses
1373
- .replace(/\.{3}/g, "\u2026");
1374
- }
1375
- /**
1376
- * mangle email addresses
1377
- */
1378
-
1379
-
1380
- function mangle(text) {
1381
- var out = '',
1382
- i,
1383
- ch;
1384
- var l = text.length;
1385
-
1386
- for (i = 0; i < l; i++) {
1387
- ch = text.charCodeAt(i);
1388
-
1389
- if (Math.random() > 0.5) {
1390
- ch = 'x' + ch.toString(16);
1391
- }
1392
-
1393
- out += '&#' + ch + ';';
1394
- }
1395
-
1396
- return out;
1397
- }
1398
- /**
1399
- * Block Lexer
1400
- */
1401
-
1402
-
1403
- var Lexer_1 = /*#__PURE__*/function () {
1404
- function Lexer(options) {
1405
- this.tokens = [];
1406
- this.tokens.links = Object.create(null);
1407
- this.options = options || defaults$3;
1408
- this.options.tokenizer = this.options.tokenizer || new Tokenizer_1();
1409
- this.tokenizer = this.options.tokenizer;
1410
- this.tokenizer.options = this.options;
1411
- var rules = {
1412
- block: block.normal,
1413
- inline: inline.normal
1414
- };
1415
-
1416
- if (this.options.pedantic) {
1417
- rules.block = block.pedantic;
1418
- rules.inline = inline.pedantic;
1419
- } else if (this.options.gfm) {
1420
- rules.block = block.gfm;
1421
-
1422
- if (this.options.breaks) {
1423
- rules.inline = inline.breaks;
1424
- } else {
1425
- rules.inline = inline.gfm;
1426
- }
1427
- }
1428
-
1429
- this.tokenizer.rules = rules;
1430
- }
1431
- /**
1432
- * Expose Rules
1433
- */
1434
-
1435
-
1436
- /**
1437
- * Static Lex Method
1438
- */
1439
- Lexer.lex = function lex(src, options) {
1440
- var lexer = new Lexer(options);
1441
- return lexer.lex(src);
1442
- }
1443
- /**
1444
- * Static Lex Inline Method
1445
- */
1446
- ;
1447
-
1448
- Lexer.lexInline = function lexInline(src, options) {
1449
- var lexer = new Lexer(options);
1450
- return lexer.inlineTokens(src);
1451
- }
1452
- /**
1453
- * Preprocessing
1454
- */
1455
- ;
1456
-
1457
- var _proto = Lexer.prototype;
1458
-
1459
- _proto.lex = function lex(src) {
1460
- src = src.replace(/\r\n|\r/g, '\n').replace(/\t/g, ' ');
1461
- this.blockTokens(src, this.tokens, true);
1462
- this.inline(this.tokens);
1463
- return this.tokens;
1464
- }
1465
- /**
1466
- * Lexing
1467
- */
1468
- ;
1469
-
1470
- _proto.blockTokens = function blockTokens(src, tokens, top) {
1471
- if (tokens === void 0) {
1472
- tokens = [];
1473
- }
1474
-
1475
- if (top === void 0) {
1476
- top = true;
1477
- }
1478
-
1479
- if (this.options.pedantic) {
1480
- src = src.replace(/^ +$/gm, '');
1481
- }
1482
-
1483
- var token, i, l, lastToken;
1484
-
1485
- while (src) {
1486
- // newline
1487
- if (token = this.tokenizer.space(src)) {
1488
- src = src.substring(token.raw.length);
1489
-
1490
- if (token.type) {
1491
- tokens.push(token);
1492
- }
1493
-
1494
- continue;
1495
- } // code
1496
-
1497
-
1498
- if (token = this.tokenizer.code(src)) {
1499
- src = src.substring(token.raw.length);
1500
- lastToken = tokens[tokens.length - 1]; // An indented code block cannot interrupt a paragraph.
1501
-
1502
- if (lastToken && lastToken.type === 'paragraph') {
1503
- lastToken.raw += '\n' + token.raw;
1504
- lastToken.text += '\n' + token.text;
1505
- } else {
1506
- tokens.push(token);
1507
- }
1508
-
1509
- continue;
1510
- } // fences
1511
-
1512
-
1513
- if (token = this.tokenizer.fences(src)) {
1514
- src = src.substring(token.raw.length);
1515
- tokens.push(token);
1516
- continue;
1517
- } // heading
1518
-
1519
-
1520
- if (token = this.tokenizer.heading(src)) {
1521
- src = src.substring(token.raw.length);
1522
- tokens.push(token);
1523
- continue;
1524
- } // table no leading pipe (gfm)
1525
-
1526
-
1527
- if (token = this.tokenizer.nptable(src)) {
1528
- src = src.substring(token.raw.length);
1529
- tokens.push(token);
1530
- continue;
1531
- } // hr
1532
-
1533
-
1534
- if (token = this.tokenizer.hr(src)) {
1535
- src = src.substring(token.raw.length);
1536
- tokens.push(token);
1537
- continue;
1538
- } // blockquote
1539
-
1540
-
1541
- if (token = this.tokenizer.blockquote(src)) {
1542
- src = src.substring(token.raw.length);
1543
- token.tokens = this.blockTokens(token.text, [], top);
1544
- tokens.push(token);
1545
- continue;
1546
- } // list
1547
-
1548
-
1549
- if (token = this.tokenizer.list(src)) {
1550
- src = src.substring(token.raw.length);
1551
- l = token.items.length;
1552
-
1553
- for (i = 0; i < l; i++) {
1554
- token.items[i].tokens = this.blockTokens(token.items[i].text, [], false);
1555
- }
1556
-
1557
- tokens.push(token);
1558
- continue;
1559
- } // html
1560
-
1561
-
1562
- if (token = this.tokenizer.html(src)) {
1563
- src = src.substring(token.raw.length);
1564
- tokens.push(token);
1565
- continue;
1566
- } // def
1567
-
1568
-
1569
- if (top && (token = this.tokenizer.def(src))) {
1570
- src = src.substring(token.raw.length);
1571
-
1572
- if (!this.tokens.links[token.tag]) {
1573
- this.tokens.links[token.tag] = {
1574
- href: token.href,
1575
- title: token.title
1576
- };
1577
- }
1578
-
1579
- continue;
1580
- } // table (gfm)
1581
-
1582
-
1583
- if (token = this.tokenizer.table(src)) {
1584
- src = src.substring(token.raw.length);
1585
- tokens.push(token);
1586
- continue;
1587
- } // lheading
1588
-
1589
-
1590
- if (token = this.tokenizer.lheading(src)) {
1591
- src = src.substring(token.raw.length);
1592
- tokens.push(token);
1593
- continue;
1594
- } // top-level paragraph
1595
-
1596
-
1597
- if (top && (token = this.tokenizer.paragraph(src))) {
1598
- src = src.substring(token.raw.length);
1599
- tokens.push(token);
1600
- continue;
1601
- } // text
1602
-
1603
-
1604
- if (token = this.tokenizer.text(src)) {
1605
- src = src.substring(token.raw.length);
1606
- lastToken = tokens[tokens.length - 1];
1607
-
1608
- if (lastToken && lastToken.type === 'text') {
1609
- lastToken.raw += '\n' + token.raw;
1610
- lastToken.text += '\n' + token.text;
1611
- } else {
1612
- tokens.push(token);
1613
- }
1614
-
1615
- continue;
1616
- }
1617
-
1618
- if (src) {
1619
- var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
1620
-
1621
- if (this.options.silent) {
1622
- console.error(errMsg);
1623
- break;
1624
- } else {
1625
- throw new Error(errMsg);
1626
- }
1627
- }
1628
- }
1629
-
1630
- return tokens;
1631
- };
1632
-
1633
- _proto.inline = function inline(tokens) {
1634
- var i, j, k, l2, row, token;
1635
- var l = tokens.length;
1636
-
1637
- for (i = 0; i < l; i++) {
1638
- token = tokens[i];
1639
-
1640
- switch (token.type) {
1641
- case 'paragraph':
1642
- case 'text':
1643
- case 'heading':
1644
- {
1645
- token.tokens = [];
1646
- this.inlineTokens(token.text, token.tokens);
1647
- break;
1648
- }
1649
-
1650
- case 'table':
1651
- {
1652
- token.tokens = {
1653
- header: [],
1654
- cells: []
1655
- }; // header
1656
-
1657
- l2 = token.header.length;
1658
-
1659
- for (j = 0; j < l2; j++) {
1660
- token.tokens.header[j] = [];
1661
- this.inlineTokens(token.header[j], token.tokens.header[j]);
1662
- } // cells
1663
-
1664
-
1665
- l2 = token.cells.length;
1666
-
1667
- for (j = 0; j < l2; j++) {
1668
- row = token.cells[j];
1669
- token.tokens.cells[j] = [];
1670
-
1671
- for (k = 0; k < row.length; k++) {
1672
- token.tokens.cells[j][k] = [];
1673
- this.inlineTokens(row[k], token.tokens.cells[j][k]);
1674
- }
1675
- }
1676
-
1677
- break;
1678
- }
1679
-
1680
- case 'blockquote':
1681
- {
1682
- this.inline(token.tokens);
1683
- break;
1684
- }
1685
-
1686
- case 'list':
1687
- {
1688
- l2 = token.items.length;
1689
-
1690
- for (j = 0; j < l2; j++) {
1691
- this.inline(token.items[j].tokens);
1692
- }
1693
-
1694
- break;
1695
- }
1696
- }
1697
- }
1698
-
1699
- return tokens;
1700
- }
1701
- /**
1702
- * Lexing/Compiling
1703
- */
1704
- ;
1705
-
1706
- _proto.inlineTokens = function inlineTokens(src, tokens, inLink, inRawBlock) {
1707
- if (tokens === void 0) {
1708
- tokens = [];
1709
- }
1710
-
1711
- if (inLink === void 0) {
1712
- inLink = false;
1713
- }
1714
-
1715
- if (inRawBlock === void 0) {
1716
- inRawBlock = false;
1717
- }
1718
-
1719
- var token, lastToken; // String with links masked to avoid interference with em and strong
1720
-
1721
- var maskedSrc = src;
1722
- var match;
1723
- var keepPrevChar, prevChar; // Mask out reflinks
1724
-
1725
- if (this.tokens.links) {
1726
- var links = Object.keys(this.tokens.links);
1727
-
1728
- if (links.length > 0) {
1729
- while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
1730
- if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {
1731
- maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
1732
- }
1733
- }
1734
- }
1735
- } // Mask out other blocks
1736
-
1737
-
1738
- while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
1739
- maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
1740
- } // Mask out escaped em & strong delimiters
1741
-
1742
-
1743
- while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
1744
- maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
1745
- }
1746
-
1747
- while (src) {
1748
- if (!keepPrevChar) {
1749
- prevChar = '';
1750
- }
1751
-
1752
- keepPrevChar = false; // escape
1753
-
1754
- if (token = this.tokenizer.escape(src)) {
1755
- src = src.substring(token.raw.length);
1756
- tokens.push(token);
1757
- continue;
1758
- } // tag
1759
-
1760
-
1761
- if (token = this.tokenizer.tag(src, inLink, inRawBlock)) {
1762
- src = src.substring(token.raw.length);
1763
- inLink = token.inLink;
1764
- inRawBlock = token.inRawBlock;
1765
- var _lastToken = tokens[tokens.length - 1];
1766
-
1767
- if (_lastToken && token.type === 'text' && _lastToken.type === 'text') {
1768
- _lastToken.raw += token.raw;
1769
- _lastToken.text += token.text;
1770
- } else {
1771
- tokens.push(token);
1772
- }
1773
-
1774
- continue;
1775
- } // link
1776
-
1777
-
1778
- if (token = this.tokenizer.link(src)) {
1779
- src = src.substring(token.raw.length);
1780
-
1781
- if (token.type === 'link') {
1782
- token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
1783
- }
1784
-
1785
- tokens.push(token);
1786
- continue;
1787
- } // reflink, nolink
1788
-
1789
-
1790
- if (token = this.tokenizer.reflink(src, this.tokens.links)) {
1791
- src = src.substring(token.raw.length);
1792
- var _lastToken2 = tokens[tokens.length - 1];
1793
-
1794
- if (token.type === 'link') {
1795
- token.tokens = this.inlineTokens(token.text, [], true, inRawBlock);
1796
- tokens.push(token);
1797
- } else if (_lastToken2 && token.type === 'text' && _lastToken2.type === 'text') {
1798
- _lastToken2.raw += token.raw;
1799
- _lastToken2.text += token.text;
1800
- } else {
1801
- tokens.push(token);
1802
- }
1803
-
1804
- continue;
1805
- } // em & strong
1806
-
1807
-
1808
- if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
1809
- src = src.substring(token.raw.length);
1810
- token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);
1811
- tokens.push(token);
1812
- continue;
1813
- } // code
1814
-
1815
-
1816
- if (token = this.tokenizer.codespan(src)) {
1817
- src = src.substring(token.raw.length);
1818
- tokens.push(token);
1819
- continue;
1820
- } // br
1821
-
1822
-
1823
- if (token = this.tokenizer.br(src)) {
1824
- src = src.substring(token.raw.length);
1825
- tokens.push(token);
1826
- continue;
1827
- } // del (gfm)
1828
-
1829
-
1830
- if (token = this.tokenizer.del(src)) {
1831
- src = src.substring(token.raw.length);
1832
- token.tokens = this.inlineTokens(token.text, [], inLink, inRawBlock);
1833
- tokens.push(token);
1834
- continue;
1835
- } // autolink
1836
-
1837
-
1838
- if (token = this.tokenizer.autolink(src, mangle)) {
1839
- src = src.substring(token.raw.length);
1840
- tokens.push(token);
1841
- continue;
1842
- } // url (gfm)
1843
-
1844
-
1845
- if (!inLink && (token = this.tokenizer.url(src, mangle))) {
1846
- src = src.substring(token.raw.length);
1847
- tokens.push(token);
1848
- continue;
1849
- } // text
1850
-
1851
-
1852
- if (token = this.tokenizer.inlineText(src, inRawBlock, smartypants)) {
1853
- src = src.substring(token.raw.length);
1854
-
1855
- if (token.raw.slice(-1) !== '_') {
1856
- // Track prevChar before string of ____ started
1857
- prevChar = token.raw.slice(-1);
1858
- }
1859
-
1860
- keepPrevChar = true;
1861
- lastToken = tokens[tokens.length - 1];
1862
-
1863
- if (lastToken && lastToken.type === 'text') {
1864
- lastToken.raw += token.raw;
1865
- lastToken.text += token.text;
1866
- } else {
1867
- tokens.push(token);
1868
- }
1869
-
1870
- continue;
1871
- }
1872
-
1873
- if (src) {
1874
- var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
1875
-
1876
- if (this.options.silent) {
1877
- console.error(errMsg);
1878
- break;
1879
- } else {
1880
- throw new Error(errMsg);
1881
- }
1882
- }
1883
- }
1884
-
1885
- return tokens;
1886
- };
1887
-
1888
- _createClass(Lexer, null, [{
1889
- key: "rules",
1890
- get: function get() {
1891
- return {
1892
- block: block,
1893
- inline: inline
1894
- };
1895
- }
1896
- }]);
1897
-
1898
- return Lexer;
1899
- }();
1900
-
1901
- var defaults$2 = defaults$5.defaults;
1902
- var cleanUrl = helpers.cleanUrl,
1903
- escape$1 = helpers.escape;
1904
- /**
1905
- * Renderer
1906
- */
1907
-
1908
- var Renderer_1 = /*#__PURE__*/function () {
1909
- function Renderer(options) {
1910
- this.options = options || defaults$2;
1911
- }
1912
-
1913
- var _proto = Renderer.prototype;
1914
-
1915
- _proto.code = function code(_code, infostring, escaped) {
1916
- var lang = (infostring || '').match(/\S*/)[0];
1917
-
1918
- if (this.options.highlight) {
1919
- var out = this.options.highlight(_code, lang);
1920
-
1921
- if (out != null && out !== _code) {
1922
- escaped = true;
1923
- _code = out;
1924
- }
1925
- }
1926
-
1927
- _code = _code.replace(/\n$/, '') + '\n';
1928
-
1929
- if (!lang) {
1930
- return '<pre><code>' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\n';
1931
- }
1932
-
1933
- return '<pre><code class="' + this.options.langPrefix + escape$1(lang, true) + '">' + (escaped ? _code : escape$1(_code, true)) + '</code></pre>\n';
1934
- };
1935
-
1936
- _proto.blockquote = function blockquote(quote) {
1937
- return '<blockquote>\n' + quote + '</blockquote>\n';
1938
- };
1939
-
1940
- _proto.html = function html(_html) {
1941
- return _html;
1942
- };
1943
-
1944
- _proto.heading = function heading(text, level, raw, slugger) {
1945
- if (this.options.headerIds) {
1946
- return '<h' + level + ' id="' + this.options.headerPrefix + slugger.slug(raw) + '">' + text + '</h' + level + '>\n';
1947
- } // ignore IDs
1948
-
1949
-
1950
- return '<h' + level + '>' + text + '</h' + level + '>\n';
1951
- };
1952
-
1953
- _proto.hr = function hr() {
1954
- return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
1955
- };
1956
-
1957
- _proto.list = function list(body, ordered, start) {
1958
- var type = ordered ? 'ol' : 'ul',
1959
- startatt = ordered && start !== 1 ? ' start="' + start + '"' : '';
1960
- return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
1961
- };
1962
-
1963
- _proto.listitem = function listitem(text) {
1964
- return '<li>' + text + '</li>\n';
1965
- };
1966
-
1967
- _proto.checkbox = function checkbox(checked) {
1968
- return '<input ' + (checked ? 'checked="" ' : '') + 'disabled="" type="checkbox"' + (this.options.xhtml ? ' /' : '') + '> ';
1969
- };
1970
-
1971
- _proto.paragraph = function paragraph(text) {
1972
- return '<p>' + text + '</p>\n';
1973
- };
1974
-
1975
- _proto.table = function table(header, body) {
1976
- if (body) body = '<tbody>' + body + '</tbody>';
1977
- return '<table>\n' + '<thead>\n' + header + '</thead>\n' + body + '</table>\n';
1978
- };
1979
-
1980
- _proto.tablerow = function tablerow(content) {
1981
- return '<tr>\n' + content + '</tr>\n';
1982
- };
1983
-
1984
- _proto.tablecell = function tablecell(content, flags) {
1985
- var type = flags.header ? 'th' : 'td';
1986
- var tag = flags.align ? '<' + type + ' align="' + flags.align + '">' : '<' + type + '>';
1987
- return tag + content + '</' + type + '>\n';
1988
- } // span level renderer
1989
- ;
1990
-
1991
- _proto.strong = function strong(text) {
1992
- return '<strong>' + text + '</strong>';
1993
- };
1994
-
1995
- _proto.em = function em(text) {
1996
- return '<em>' + text + '</em>';
1997
- };
1998
-
1999
- _proto.codespan = function codespan(text) {
2000
- return '<code>' + text + '</code>';
2001
- };
2002
-
2003
- _proto.br = function br() {
2004
- return this.options.xhtml ? '<br/>' : '<br>';
2005
- };
2006
-
2007
- _proto.del = function del(text) {
2008
- return '<del>' + text + '</del>';
2009
- };
2010
-
2011
- _proto.link = function link(href, title, text) {
2012
- href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
2013
-
2014
- if (href === null) {
2015
- return text;
2016
- }
2017
-
2018
- var out = '<a href="' + escape$1(href) + '"';
2019
-
2020
- if (title) {
2021
- out += ' title="' + title + '"';
2022
- }
2023
-
2024
- out += '>' + text + '</a>';
2025
- return out;
2026
- };
2027
-
2028
- _proto.image = function image(href, title, text) {
2029
- href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
2030
-
2031
- if (href === null) {
2032
- return text;
2033
- }
2034
-
2035
- var out = '<img src="' + href + '" alt="' + text + '"';
2036
-
2037
- if (title) {
2038
- out += ' title="' + title + '"';
2039
- }
2040
-
2041
- out += this.options.xhtml ? '/>' : '>';
2042
- return out;
2043
- };
2044
-
2045
- _proto.text = function text(_text) {
2046
- return _text;
2047
- };
2048
-
2049
- return Renderer;
2050
- }();
2051
-
2052
- /**
2053
- * TextRenderer
2054
- * returns only the textual part of the token
2055
- */
2056
- var TextRenderer_1 = /*#__PURE__*/function () {
2057
- function TextRenderer() {}
2058
-
2059
- var _proto = TextRenderer.prototype;
2060
-
2061
- // no need for block level renderers
2062
- _proto.strong = function strong(text) {
2063
- return text;
2064
- };
2065
-
2066
- _proto.em = function em(text) {
2067
- return text;
2068
- };
2069
-
2070
- _proto.codespan = function codespan(text) {
2071
- return text;
2072
- };
2073
-
2074
- _proto.del = function del(text) {
2075
- return text;
2076
- };
2077
-
2078
- _proto.html = function html(text) {
2079
- return text;
2080
- };
2081
-
2082
- _proto.text = function text(_text) {
2083
- return _text;
2084
- };
2085
-
2086
- _proto.link = function link(href, title, text) {
2087
- return '' + text;
2088
- };
2089
-
2090
- _proto.image = function image(href, title, text) {
2091
- return '' + text;
2092
- };
2093
-
2094
- _proto.br = function br() {
2095
- return '';
2096
- };
2097
-
2098
- return TextRenderer;
2099
- }();
2100
-
2101
- /**
2102
- * Slugger generates header id
2103
- */
2104
- var Slugger_1 = /*#__PURE__*/function () {
2105
- function Slugger() {
2106
- this.seen = {};
2107
- }
2108
-
2109
- var _proto = Slugger.prototype;
2110
-
2111
- _proto.serialize = function serialize(value) {
2112
- return value.toLowerCase().trim() // remove html tags
2113
- .replace(/<[!\/a-z].*?>/ig, '') // remove unwanted chars
2114
- .replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, '').replace(/\s/g, '-');
2115
- }
2116
- /**
2117
- * Finds the next safe (unique) slug to use
2118
- */
2119
- ;
2120
-
2121
- _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {
2122
- var slug = originalSlug;
2123
- var occurenceAccumulator = 0;
2124
-
2125
- if (this.seen.hasOwnProperty(slug)) {
2126
- occurenceAccumulator = this.seen[originalSlug];
2127
-
2128
- do {
2129
- occurenceAccumulator++;
2130
- slug = originalSlug + '-' + occurenceAccumulator;
2131
- } while (this.seen.hasOwnProperty(slug));
2132
- }
2133
-
2134
- if (!isDryRun) {
2135
- this.seen[originalSlug] = occurenceAccumulator;
2136
- this.seen[slug] = 0;
2137
- }
2138
-
2139
- return slug;
2140
- }
2141
- /**
2142
- * Convert string to unique id
2143
- * @param {object} options
2144
- * @param {boolean} options.dryrun Generates the next unique slug without updating the internal accumulator.
2145
- */
2146
- ;
2147
-
2148
- _proto.slug = function slug(value, options) {
2149
- if (options === void 0) {
2150
- options = {};
2151
- }
2152
-
2153
- var slug = this.serialize(value);
2154
- return this.getNextSafeSlug(slug, options.dryrun);
2155
- };
2156
-
2157
- return Slugger;
2158
- }();
2159
-
2160
- var defaults$1 = defaults$5.defaults;
2161
- var unescape = helpers.unescape;
2162
- /**
2163
- * Parsing & Compiling
2164
- */
2165
-
2166
- var Parser_1 = /*#__PURE__*/function () {
2167
- function Parser(options) {
2168
- this.options = options || defaults$1;
2169
- this.options.renderer = this.options.renderer || new Renderer_1();
2170
- this.renderer = this.options.renderer;
2171
- this.renderer.options = this.options;
2172
- this.textRenderer = new TextRenderer_1();
2173
- this.slugger = new Slugger_1();
2174
- }
2175
- /**
2176
- * Static Parse Method
2177
- */
2178
-
2179
-
2180
- Parser.parse = function parse(tokens, options) {
2181
- var parser = new Parser(options);
2182
- return parser.parse(tokens);
2183
- }
2184
- /**
2185
- * Static Parse Inline Method
2186
- */
2187
- ;
2188
-
2189
- Parser.parseInline = function parseInline(tokens, options) {
2190
- var parser = new Parser(options);
2191
- return parser.parseInline(tokens);
2192
- }
2193
- /**
2194
- * Parse Loop
2195
- */
2196
- ;
2197
-
2198
- var _proto = Parser.prototype;
2199
-
2200
- _proto.parse = function parse(tokens, top) {
2201
- if (top === void 0) {
2202
- top = true;
2203
- }
2204
-
2205
- var out = '',
2206
- i,
2207
- j,
2208
- k,
2209
- l2,
2210
- l3,
2211
- row,
2212
- cell,
2213
- header,
2214
- body,
2215
- token,
2216
- ordered,
2217
- start,
2218
- loose,
2219
- itemBody,
2220
- item,
2221
- checked,
2222
- task,
2223
- checkbox;
2224
- var l = tokens.length;
2225
-
2226
- for (i = 0; i < l; i++) {
2227
- token = tokens[i];
2228
-
2229
- switch (token.type) {
2230
- case 'space':
2231
- {
2232
- continue;
2233
- }
2234
-
2235
- case 'hr':
2236
- {
2237
- out += this.renderer.hr();
2238
- continue;
2239
- }
2240
-
2241
- case 'heading':
2242
- {
2243
- out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);
2244
- continue;
2245
- }
2246
-
2247
- case 'code':
2248
- {
2249
- out += this.renderer.code(token.text, token.lang, token.escaped);
2250
- continue;
2251
- }
2252
-
2253
- case 'table':
2254
- {
2255
- header = ''; // header
2256
-
2257
- cell = '';
2258
- l2 = token.header.length;
2259
-
2260
- for (j = 0; j < l2; j++) {
2261
- cell += this.renderer.tablecell(this.parseInline(token.tokens.header[j]), {
2262
- header: true,
2263
- align: token.align[j]
2264
- });
2265
- }
2266
-
2267
- header += this.renderer.tablerow(cell);
2268
- body = '';
2269
- l2 = token.cells.length;
2270
-
2271
- for (j = 0; j < l2; j++) {
2272
- row = token.tokens.cells[j];
2273
- cell = '';
2274
- l3 = row.length;
2275
-
2276
- for (k = 0; k < l3; k++) {
2277
- cell += this.renderer.tablecell(this.parseInline(row[k]), {
2278
- header: false,
2279
- align: token.align[k]
2280
- });
2281
- }
2282
-
2283
- body += this.renderer.tablerow(cell);
2284
- }
2285
-
2286
- out += this.renderer.table(header, body);
2287
- continue;
2288
- }
2289
-
2290
- case 'blockquote':
2291
- {
2292
- body = this.parse(token.tokens);
2293
- out += this.renderer.blockquote(body);
2294
- continue;
2295
- }
2296
-
2297
- case 'list':
2298
- {
2299
- ordered = token.ordered;
2300
- start = token.start;
2301
- loose = token.loose;
2302
- l2 = token.items.length;
2303
- body = '';
2304
-
2305
- for (j = 0; j < l2; j++) {
2306
- item = token.items[j];
2307
- checked = item.checked;
2308
- task = item.task;
2309
- itemBody = '';
2310
-
2311
- if (item.task) {
2312
- checkbox = this.renderer.checkbox(checked);
2313
-
2314
- if (loose) {
2315
- if (item.tokens.length > 0 && item.tokens[0].type === 'text') {
2316
- item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;
2317
-
2318
- if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {
2319
- item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;
2320
- }
2321
- } else {
2322
- item.tokens.unshift({
2323
- type: 'text',
2324
- text: checkbox
2325
- });
2326
- }
2327
- } else {
2328
- itemBody += checkbox;
2329
- }
2330
- }
2331
-
2332
- itemBody += this.parse(item.tokens, loose);
2333
- body += this.renderer.listitem(itemBody, task, checked);
2334
- }
2335
-
2336
- out += this.renderer.list(body, ordered, start);
2337
- continue;
2338
- }
2339
-
2340
- case 'html':
2341
- {
2342
- // TODO parse inline content if parameter markdown=1
2343
- out += this.renderer.html(token.text);
2344
- continue;
2345
- }
2346
-
2347
- case 'paragraph':
2348
- {
2349
- out += this.renderer.paragraph(this.parseInline(token.tokens));
2350
- continue;
2351
- }
2352
-
2353
- case 'text':
2354
- {
2355
- body = token.tokens ? this.parseInline(token.tokens) : token.text;
2356
-
2357
- while (i + 1 < l && tokens[i + 1].type === 'text') {
2358
- token = tokens[++i];
2359
- body += '\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);
2360
- }
2361
-
2362
- out += top ? this.renderer.paragraph(body) : body;
2363
- continue;
2364
- }
2365
-
2366
- default:
2367
- {
2368
- var errMsg = 'Token with "' + token.type + '" type was not found.';
2369
-
2370
- if (this.options.silent) {
2371
- console.error(errMsg);
2372
- return;
2373
- } else {
2374
- throw new Error(errMsg);
2375
- }
2376
- }
2377
- }
2378
- }
2379
-
2380
- return out;
2381
- }
2382
- /**
2383
- * Parse Inline Tokens
2384
- */
2385
- ;
2386
-
2387
- _proto.parseInline = function parseInline(tokens, renderer) {
2388
- renderer = renderer || this.renderer;
2389
- var out = '',
2390
- i,
2391
- token;
2392
- var l = tokens.length;
2393
-
2394
- for (i = 0; i < l; i++) {
2395
- token = tokens[i];
2396
-
2397
- switch (token.type) {
2398
- case 'escape':
2399
- {
2400
- out += renderer.text(token.text);
2401
- break;
2402
- }
2403
-
2404
- case 'html':
2405
- {
2406
- out += renderer.html(token.text);
2407
- break;
2408
- }
2409
-
2410
- case 'link':
2411
- {
2412
- out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));
2413
- break;
2414
- }
2415
-
2416
- case 'image':
2417
- {
2418
- out += renderer.image(token.href, token.title, token.text);
2419
- break;
2420
- }
2421
-
2422
- case 'strong':
2423
- {
2424
- out += renderer.strong(this.parseInline(token.tokens, renderer));
2425
- break;
2426
- }
2427
-
2428
- case 'em':
2429
- {
2430
- out += renderer.em(this.parseInline(token.tokens, renderer));
2431
- break;
2432
- }
2433
-
2434
- case 'codespan':
2435
- {
2436
- out += renderer.codespan(token.text);
2437
- break;
2438
- }
2439
-
2440
- case 'br':
2441
- {
2442
- out += renderer.br();
2443
- break;
2444
- }
2445
-
2446
- case 'del':
2447
- {
2448
- out += renderer.del(this.parseInline(token.tokens, renderer));
2449
- break;
2450
- }
2451
-
2452
- case 'text':
2453
- {
2454
- out += renderer.text(token.text);
2455
- break;
2456
- }
2457
-
2458
- default:
2459
- {
2460
- var errMsg = 'Token with "' + token.type + '" type was not found.';
2461
-
2462
- if (this.options.silent) {
2463
- console.error(errMsg);
2464
- return;
2465
- } else {
2466
- throw new Error(errMsg);
2467
- }
2468
- }
2469
- }
2470
- }
2471
-
2472
- return out;
2473
- };
2474
-
2475
- return Parser;
2476
- }();
2477
-
2478
- var merge = helpers.merge,
2479
- checkSanitizeDeprecation = helpers.checkSanitizeDeprecation,
2480
- escape = helpers.escape;
2481
- var getDefaults = defaults$5.getDefaults,
2482
- changeDefaults = defaults$5.changeDefaults,
2483
- defaults = defaults$5.defaults;
2484
- /**
2485
- * Marked
2486
- */
2487
-
2488
- function marked(src, opt, callback) {
2489
- // throw error in case of non string input
2490
- if (typeof src === 'undefined' || src === null) {
2491
- throw new Error('marked(): input parameter is undefined or null');
2492
- }
2493
-
2494
- if (typeof src !== 'string') {
2495
- throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
2496
- }
2497
-
2498
- if (typeof opt === 'function') {
2499
- callback = opt;
2500
- opt = null;
2501
- }
2502
-
2503
- opt = merge({}, marked.defaults, opt || {});
2504
- checkSanitizeDeprecation(opt);
2505
-
2506
- if (callback) {
2507
- var highlight = opt.highlight;
2508
- var tokens;
2509
-
2510
- try {
2511
- tokens = Lexer_1.lex(src, opt);
2512
- } catch (e) {
2513
- return callback(e);
2514
- }
2515
-
2516
- var done = function done(err) {
2517
- var out;
2518
-
2519
- if (!err) {
2520
- try {
2521
- out = Parser_1.parse(tokens, opt);
2522
- } catch (e) {
2523
- err = e;
2524
- }
2525
- }
2526
-
2527
- opt.highlight = highlight;
2528
- return err ? callback(err) : callback(null, out);
2529
- };
2530
-
2531
- if (!highlight || highlight.length < 3) {
2532
- return done();
2533
- }
2534
-
2535
- delete opt.highlight;
2536
- if (!tokens.length) return done();
2537
- var pending = 0;
2538
- marked.walkTokens(tokens, function (token) {
2539
- if (token.type === 'code') {
2540
- pending++;
2541
- setTimeout(function () {
2542
- highlight(token.text, token.lang, function (err, code) {
2543
- if (err) {
2544
- return done(err);
2545
- }
2546
-
2547
- if (code != null && code !== token.text) {
2548
- token.text = code;
2549
- token.escaped = true;
2550
- }
2551
-
2552
- pending--;
2553
-
2554
- if (pending === 0) {
2555
- done();
2556
- }
2557
- });
2558
- }, 0);
2559
- }
2560
- });
2561
-
2562
- if (pending === 0) {
2563
- done();
2564
- }
2565
-
2566
- return;
2567
- }
2568
-
2569
- try {
2570
- var _tokens = Lexer_1.lex(src, opt);
2571
-
2572
- if (opt.walkTokens) {
2573
- marked.walkTokens(_tokens, opt.walkTokens);
2574
- }
2575
-
2576
- return Parser_1.parse(_tokens, opt);
2577
- } catch (e) {
2578
- e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2579
-
2580
- if (opt.silent) {
2581
- return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2582
- }
2583
-
2584
- throw e;
2585
- }
2586
- }
2587
- /**
2588
- * Options
2589
- */
2590
-
2591
-
2592
- marked.options = marked.setOptions = function (opt) {
2593
- merge(marked.defaults, opt);
2594
- changeDefaults(marked.defaults);
2595
- return marked;
2596
- };
2597
-
2598
- marked.getDefaults = getDefaults;
2599
- marked.defaults = defaults;
2600
- /**
2601
- * Use Extension
2602
- */
2603
-
2604
- marked.use = function (extension) {
2605
- var opts = merge({}, extension);
2606
-
2607
- if (extension.renderer) {
2608
- (function () {
2609
- var renderer = marked.defaults.renderer || new Renderer_1();
2610
-
2611
- var _loop = function _loop(prop) {
2612
- var prevRenderer = renderer[prop];
2613
-
2614
- renderer[prop] = function () {
2615
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2616
- args[_key] = arguments[_key];
2617
- }
2618
-
2619
- var ret = extension.renderer[prop].apply(renderer, args);
2620
-
2621
- if (ret === false) {
2622
- ret = prevRenderer.apply(renderer, args);
2623
- }
2624
-
2625
- return ret;
2626
- };
2627
- };
2628
-
2629
- for (var prop in extension.renderer) {
2630
- _loop(prop);
2631
- }
2632
-
2633
- opts.renderer = renderer;
2634
- })();
2635
- }
2636
-
2637
- if (extension.tokenizer) {
2638
- (function () {
2639
- var tokenizer = marked.defaults.tokenizer || new Tokenizer_1();
2640
-
2641
- var _loop2 = function _loop2(prop) {
2642
- var prevTokenizer = tokenizer[prop];
2643
-
2644
- tokenizer[prop] = function () {
2645
- for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
2646
- args[_key2] = arguments[_key2];
2647
- }
2648
-
2649
- var ret = extension.tokenizer[prop].apply(tokenizer, args);
2650
-
2651
- if (ret === false) {
2652
- ret = prevTokenizer.apply(tokenizer, args);
2653
- }
2654
-
2655
- return ret;
2656
- };
2657
- };
2658
-
2659
- for (var prop in extension.tokenizer) {
2660
- _loop2(prop);
2661
- }
2662
-
2663
- opts.tokenizer = tokenizer;
2664
- })();
2665
- }
2666
-
2667
- if (extension.walkTokens) {
2668
- var walkTokens = marked.defaults.walkTokens;
2669
-
2670
- opts.walkTokens = function (token) {
2671
- extension.walkTokens(token);
2672
-
2673
- if (walkTokens) {
2674
- walkTokens(token);
2675
- }
2676
- };
2677
- }
2678
-
2679
- marked.setOptions(opts);
2680
- };
2681
- /**
2682
- * Run callback for every token
2683
- */
2684
-
2685
-
2686
- marked.walkTokens = function (tokens, callback) {
2687
- for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
2688
- var token = _step.value;
2689
- callback(token);
2690
-
2691
- switch (token.type) {
2692
- case 'table':
2693
- {
2694
- for (var _iterator2 = _createForOfIteratorHelperLoose(token.tokens.header), _step2; !(_step2 = _iterator2()).done;) {
2695
- var cell = _step2.value;
2696
- marked.walkTokens(cell, callback);
2697
- }
2698
-
2699
- for (var _iterator3 = _createForOfIteratorHelperLoose(token.tokens.cells), _step3; !(_step3 = _iterator3()).done;) {
2700
- var row = _step3.value;
2701
-
2702
- for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
2703
- var _cell = _step4.value;
2704
- marked.walkTokens(_cell, callback);
2705
- }
2706
- }
2707
-
2708
- break;
2709
- }
2710
-
2711
- case 'list':
2712
- {
2713
- marked.walkTokens(token.items, callback);
2714
- break;
2715
- }
2716
-
2717
- default:
2718
- {
2719
- if (token.tokens) {
2720
- marked.walkTokens(token.tokens, callback);
2721
- }
2722
- }
2723
- }
2724
- }
2725
- };
2726
- /**
2727
- * Parse Inline
2728
- */
2729
-
2730
-
2731
- marked.parseInline = function (src, opt) {
2732
- // throw error in case of non string input
2733
- if (typeof src === 'undefined' || src === null) {
2734
- throw new Error('marked.parseInline(): input parameter is undefined or null');
2735
- }
2736
-
2737
- if (typeof src !== 'string') {
2738
- throw new Error('marked.parseInline(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected');
2739
- }
2740
-
2741
- opt = merge({}, marked.defaults, opt || {});
2742
- checkSanitizeDeprecation(opt);
2743
-
2744
- try {
2745
- var tokens = Lexer_1.lexInline(src, opt);
2746
-
2747
- if (opt.walkTokens) {
2748
- marked.walkTokens(tokens, opt.walkTokens);
2749
- }
2750
-
2751
- return Parser_1.parseInline(tokens, opt);
2752
- } catch (e) {
2753
- e.message += '\nPlease report this to https://github.com/markedjs/marked.';
2754
-
2755
- if (opt.silent) {
2756
- return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
2757
- }
2758
-
2759
- throw e;
2760
- }
2761
- };
2762
- /**
2763
- * Expose
2764
- */
2765
-
2766
-
2767
- marked.Parser = Parser_1;
2768
- marked.parser = Parser_1.parse;
2769
- marked.Renderer = Renderer_1;
2770
- marked.TextRenderer = TextRenderer_1;
2771
- marked.Lexer = Lexer_1;
2772
- marked.lexer = Lexer_1.lex;
2773
- marked.Tokenizer = Tokenizer_1;
2774
- marked.Slugger = Slugger_1;
2775
- marked.parse = marked;
2776
- var marked_1 = marked;
2777
-
2778
- return marked_1;
2779
-
2780
- })));