├── .eslintrc.json
├── LICENSE
├── README.md
├── demo.js
├── index.html
├── logo.svg
├── md-block.js
├── netlify.toml
├── package-lock.json
├── package.json
├── prism.css
├── prism.js
├── style.css
└── tests.html
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "parserOptions": {
3 | "ecmaVersion": 6,
4 | "sourceType": "module",
5 | "ecmaFeatures": {
6 | "impliedStrict": true
7 | }
8 | },
9 | "env": {
10 | "browser": true,
11 | "node": true
12 | },
13 | "rules": {
14 | "semi": 1,
15 | "no-dupe-args": 1,
16 | "no-dupe-keys": 1,
17 | "no-unreachable": 1,
18 | "valid-typeof": 1,
19 | "curly": 1,
20 | "no-useless-call": 1,
21 | "brace-style": [1, "stroustrup"],
22 | "no-mixed-spaces-and-tabs": [1, "smart-tabs"],
23 | "quotes": [1, "double", "avoid-escape"],
24 | "spaced-comment": [1, "always", {
25 | "block": {
26 | "exceptions": ["*"]
27 | }
28 | }],
29 | "arrow-spacing": 1,
30 | "comma-spacing": 1,
31 | "keyword-spacing": 1
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Lea Verou
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | # Motivation
4 |
5 | There are many web components these days to render Markdown to HTML. Here are a few:
6 |
7 | * [``](https://zerodevx.github.io/zero-md/)
8 | * [``](https://github.com/PolymerElements/marked-element)
9 | * …and I’m sure many others
10 |
11 | However, all render the resulting Markdown in Shadow DOM, making it painful to style like a regular part of the page, which my use cases required.
12 | `` supports opt-in light DOM rendering, but it's tedious to add an extra attribute per element.
13 |
14 | I also wanted a [few more things](#features) existing web components didn't have.
15 | Plus, making stuff is fun. 😅
16 |
17 | So I made my own. Feel free to use it. Or don't. 🤷🏽♀️
18 | I primarily wrote it to scratch my own itch anyway! 😊
19 |
20 |
21 |
22 |
23 | # Features
24 |
25 | * Zero dependencies (except marked, obvs, which is only loaded if a `` or `` element is actually used on the page)
26 | * Styleable with regular selectors, just like the rest of the page
27 | * Load external Markdown files or render inline content
28 | * Customize start heading level (e.g. so that `# Foo` becomes a `` and not an ``)
29 | * Also comes with ``, for lightweight inline markdown
30 | * [Prism](https://prismjs.com) is automatically used for syntax highlighting, if included ([but can be included dynamically too](#loading-prism-dynamically))
31 |
32 | [View demos](https://md-block.verou.me/#demos)
33 |
34 |
35 |
36 |
37 |
38 | # Usage
39 |
40 | Via HTML:
41 | ```html
42 |
43 | ```
44 |
45 | In JS:
46 | ```js
47 | import {MarkdownBlock, MarkdownSpan, MarkdownElement} from "https://md-block.verou.me/md-block.js";
48 | ```
49 |
50 | Of course you can also use npm if that's your jam:
51 |
52 | ```
53 | npm install md-block
54 | ```
55 | ```js
56 | import {MarkdownBlock, MarkdownSpan, MarkdownElement} from "md-block";
57 | ```
58 |
59 | Importing the module in any of these ways also registers two custom elements: `` for block level content and `` for inline content.
60 | If you additionally want to use other tag names, [you can](#using-different-tag-names).
61 |
62 |
63 |
64 |
65 |
66 | # API
67 |
68 | ## Both `` and ``
69 |
70 | | Attribute | Property | Type | Description |
71 | |-----------|----------|------|-------------|
72 | | - | `mdContent` | String | Actual Markdown code initially read from the HTML or fetched from `src`. Can also be set to render new Markdown code |
73 | | `rendered` | `rendered` *(Read-only)* | String | Added to the element after Markdown has been rendered. Thus, you can use `md-block:not([rendered])` in your CSS to style the element differently before rendering and minimize FOUC |
74 | | `untrusted` | `untrusted` *(Read-only)* | Boolean | Sanitize contents. [Read more](#handling-untrusted-content)
75 |
76 | ## ``
77 |
78 | | Attribute | Property | Type | Description |
79 | |-----------|----------|------|-------------|
80 | | `src` | `src` | String or URL | External Markdown file to load. If specified, original element content will be rendered and displayed while the file is loading (or if it fails to load). |
81 | | `hmin` | `hmin` | Number | Minimum heading level |
82 | | `hlinks` | `hlinks` | String | Whether to linkify headings. If present with no value, the entire heading text becomes the link, otherwise the symbol provided becomes the link. Note that this is only about displaying links, headings will get ids anyway |
83 |
84 | ## ``
85 |
86 | *(No attributes or properties at the moment)*
87 |
88 |
89 |
90 |
91 |
92 | # Recipes
93 |
94 | ## Updating the Markdown
95 |
96 | While you can provide initial Markdown inline, after the element is rendered, changing its contents will not cause it to re-render,
97 | since its contents are now the parsed HTML (this is a disadvantage of this approach, compared to the Shadow DOM ones).
98 |
99 | If you need to update its contents dynamically, use `element.mdContent`.
100 | You can also read that property to get access to the Markdown code that was last rendered, whether it came from the element's contents,
101 | or fetched from a URL.
102 |
103 | Note that setting `mdContent` will override any remote URL provided via `src`.
104 |
105 | ## Minimizing FOUC
106 |
107 | md-block adds a `rendered` attribute to elements whose Markdown has been rendered.
108 | This allows you to style unrendered content however you please, by using a `md-block:not([rendered])` CSS selector.
109 |
110 | - You could hide it entirely via `md-block:not([rendered]) { display: none }`
111 | - You could apply `white-space: pre-line` to it so that at least paragraphs are not all smushed together
112 | - …or you could do something fancier.
113 |
114 | I'd recommend you consider *how it fails* before deciding what to do. It's the Internet, 💩 happens.
115 | Do you want your content to not be visible if a script doesn't load?
116 |
117 | When loading remote content, there are two renders: First, any fallback content renders, then the remote content.
118 | Because we often want to style the element differently until the remote content renders, the `rendered` attribute has keyword values, depending on what happened:
119 |
120 | * `fallback` when only fallback content has been rendered
121 | * `remote` if remote content has been rendered
122 | * `content` if element content has been rendered and there is no `src` attribute present
123 | * `property` if content has been rendered by setting `this.mdContent` directly
124 |
125 | ## Using different tag names
126 |
127 | By default, md-block registers two custom elements: `` for block-level content and `` for inline content.
128 | You can use different names, but [since each class can only be associated with one tag name](https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/define#:~:text=Exceptions-,notsupportederror,-DOMException), you need to create your own subclass:
129 |
130 | ```js
131 | import {MarkdownBlock, MarkdownSpan, MarkdownElement} from "https://md-block.verou.me/md-block.js"
132 |
133 | customElements.define("md-content", class MarkdownContent extends MarkdownBlock {});
134 | ```
135 |
136 | ## Handling untrusted content
137 |
138 | By default md-block does not santize the Markdown you provide, since in most use cases the content is trusted.
139 |
140 | If you need to render untrusted content use the `untrusted` attribute, which will dynamically load [DOMPurify](https://github.com/cure53/DOMPurify) and use it.
141 | This is not dynamic, you need to add it in your actual markup (or before the element is connected, if dynamically generated).
142 | The reason is that it's unsafe to add it later: if the content has been already rendered once and treated as safe, it's pointless to sanitize it afterwards and re-render.
143 |
144 | Important: Do **not** rely on the `untrusted` attribute for inline Markdown! This is mainly useful for content linked via the `src` attribute.
145 | If there is potentially malicious code in the inline Markdown you are using, it will be picked up by the browser before md-block has the chance to do anything about it.
146 | Instead, use a regular `` element, and `MarkdownElement.sanitize()` for the untrusted content.
147 |
148 | ## Using different URLs for marked and DOMPurify
149 |
150 | By default, `md-block` dynamically loads marked and DOMPurify from a CDN. If you want to use different versions, there is a number of ways:
151 |
152 | Probably the easiest is if you use the versions of these libraries that create a global, md-block will use that instead of loading them.
153 |
154 | The URLs md-block uses to fetch these libraries reside on a separate `URLs` export. So theoretically you could do something like this:
155 |
156 | ```js
157 | import {URLs as MdBlockURLS, MarkdownBlock, MarkdownSpan, MarkdownElement} from "./md-block.js";
158 |
159 | MdBlockURLS.marked = "./marked.js";
160 | MdBlockURLS.DOMPurify = "./purify.es.js";
161 | ```
162 |
163 | But it's uncertain whether the new URLs will be picked up before the default ones load. In my tests that seems to work for DOMPurify but not marked.
164 | These libraries are loaded when the element is connected, so you *could* add the `` elements dynamically to the document after you set the URLs, but that's a bit of a hassle.
165 |
166 | You can also use the `URLs` export to import these modules yourself, in case you want to add plugins or whatnot.
167 |
168 | ## Loading Prism dynamically
169 |
170 | By default `md-block` will use Prism if it's available, but won’t load it dynamically if it isn't.
171 | You *could* tell it to load Prism dynamically, **only if there are actual code elements**, by providing a Prism URL:
172 |
173 | ```js
174 | import {URLs as MdBlockURLS, MarkdownBlock, MarkdownSpan, MarkdownElement} from "./md-block.js";
175 |
176 | MdBlockURLS.Prism = "./prism.js";
177 | // You can optionally also provide a Prism CSS URL:
178 | MdBlockURLS.PrismCSS = "./prism.css";
179 | ```
180 |
181 | ## `` inception
182 |
183 | Did you know you can actualy use `` *inside your Markdown* and it works correctly?
184 |
185 | For a cool example of this, check out [the Stretchy docs](https://stretchy.verou.me/#browser-support)
186 |
187 | ## How to set different Markdown options/flavor?
188 |
189 | Right now, this element uses GFM as a Markdown flavor and doesn’t expose a whole lot of options (besides `hmin` and `hlinks`).
190 | That’s because I originally wrote it for my own needs, and that’s what I needed.
191 | I’m not opposed to adding more customizability, if there are actual use cases that require it.
192 | If you have such use cases, please [open an issue](https://github.com/leaverou/md-block/issues/new).
193 |
194 |
195 |
--------------------------------------------------------------------------------
/demo.js:
--------------------------------------------------------------------------------
1 | import {URLs, MarkdownBlock, MarkdownSpan, MarkdownElement} from "./md-block.js";
2 |
3 | import create from "https://v2.blissfuljs.com/src/dom/create.js";
4 |
5 | // const importURL = new URL("md-block.js", location) + "";
6 | const importURL = "https://md-block.verou.me/md-block.js";
7 | let js = `import {MarkdownBlock, MarkdownSpan, MarkdownElement} from "${importURL}";`;
8 |
9 | for (let script of document.querySelectorAll("script[type='text/html'].md-block-demo")) {
10 | let html = script.textContent;
11 |
12 | html = Prism?.plugins.NormalizeWhitespace?.normalize(html);
13 | let description = script.previousElementSibling;
14 |
15 | let exampleContainer = create({
16 | tag: "article",
17 | className: "demo-container",
18 | contents: [
19 | {
20 | tag: "header",
21 | contents: [
22 | description,
23 | {
24 | tag: "form",
25 | action: "https://codepen.io/pen/define",
26 | method: "POST",
27 | target: "_blank",
28 | contents: [
29 | {
30 | tag: "input",
31 | type: "hidden",
32 | name: "data",
33 | value: JSON.stringify({
34 | title: description.textContent,
35 | html,
36 | css: "",
37 | js,
38 | editors: "1110",
39 | // head: ``
40 | })
41 | },
42 | {
43 | tag: "button",
44 | textContent: "Edit in CodePen ↗️"
45 | }
46 | ],
47 | after: script,
48 | }
49 | ]
50 | },
51 | {
52 | tag: "pre",
53 | class: "language-html demo-code",
54 | contents: {
55 | tag: "code",
56 | textContent: html
57 | }
58 | },
59 | {
60 | className: "demo-output",
61 | innerHTML: html
62 | }
63 | ],
64 | after: script
65 | });
66 | }
67 |
68 | import * as Stretchy from "https://stretchy.verou.me/dist/stretchy.min.js";
69 | Stretchy.selectors.filter = "#repl *";
70 | Stretchy.init();
71 |
72 | if (localStorage["md-block-demo"]){
73 | JSON.parse(localStorage["md-block-demo"]).forEach(([name, value]) => {
74 | let el = repl_container.elements[name];
75 |
76 | if (el) {
77 | el.value = value;
78 | el.dispatchEvent(new Event("input"));
79 | }
80 | });
81 | }
82 |
83 | repl.addEventListener("input", evt => {
84 | let {target} = evt;
85 | let f = repl_container;
86 | let html = `<${f.tag.value} ${f.attributes.value}>
87 | ${f.contents.value}
88 | ${f.tag.value}>`;
89 | // console.log(html);
90 | end_tag.textContent = f.tag.value;
91 |
92 | rendering.innerHTML = html;
93 |
94 | let values = [];
95 | for (let el of f.elements) {
96 | if (el.name) {
97 | values.push([el.name, el.value]);
98 | }
99 | }
100 |
101 | if (evt.isTrusted) {
102 | localStorage["md-block-demo"] = JSON.stringify(values);
103 | }
104 |
105 | });
106 |
107 | repl.dispatchEvent(new Event("input"));
108 |
109 | rendering.addEventListener("md-render", evt => {
110 | let code = output_html.querySelector("code");
111 | code.textContent = evt.target.outerHTML;
112 | Prism.highlightElement(code);
113 | });
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | md-block: Render styleable Markdown in your HTML
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 | <md-block>
21 |
22 |
23 | Render styleable Markdown in your HTML.
24 | Uses [marked](https://marked.js.org/) under the hood.
25 |
26 |
27 |
28 |
29 | Usage
30 | API
31 | Recipes
32 | Tests
33 | GitHub
34 |
35 |
36 |
37 |
38 |
39 | [Documentation on GitHub](https://github.com/leaverou/md-block/#readme)
40 |
41 |
42 |
43 | Demos
44 |
45 | Block
46 |
47 |
65 |
66 | Block with incorrect src and fallback content
67 |
68 |
73 |
74 | Minimum heading level:
75 |
76 |
85 |
86 | Heading links
87 |
99 |
100 | Inline. Note that block level syntax like headings, code blocks, or lists is not processed
101 |
102 |
120 |
121 | With and without [sanitization](#handling-untrusted-content).
122 |
123 |
128 |
129 | View source for more demos!
130 |
131 |
132 |
133 |
134 |
135 | Live demo
136 |
137 |
151 |
152 |
153 |
154 |
155 |
156 |
157 | Made in haste, by [Lea Verou](https://lea.verou.me). Use at your own risk.
158 | [Pull requests welcome](https://github.com/leaverou/md-block)
159 |
160 |
161 |
162 |
163 |
--------------------------------------------------------------------------------
/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 | *
10 |
11 | #
12 |
13 |
--------------------------------------------------------------------------------
/md-block.js:
--------------------------------------------------------------------------------
1 | /**
2 | * custom element
3 | * @author Lea Verou
4 | */
5 |
6 | let marked = window.marked;
7 | let DOMPurify = window.DOMPurify;
8 | let Prism = window.Prism;
9 |
10 | export const URLs = {
11 | marked: "https://cdn.jsdelivr.net/npm/marked/src/marked.min.js",
12 | DOMPurify: "https://cdn.jsdelivr.net/npm/dompurify@2.3.3/dist/purify.es.min.js"
13 | }
14 |
15 | // Fix indentation
16 | function deIndent(text) {
17 | let indent = text.match(/^[\r\n]*([\t ]+)/);
18 |
19 | if (indent) {
20 | indent = indent[1];
21 |
22 | text = text.replace(RegExp("^" + indent, "gm"), "");
23 | }
24 |
25 | return text;
26 | }
27 |
28 | export class MarkdownElement extends HTMLElement {
29 | constructor() {
30 | super();
31 |
32 | this.renderer = Object.assign({}, this.constructor.renderer);
33 |
34 | for (let property in this.renderer) {
35 | this.renderer[property] = this.renderer[property].bind(this);
36 | }
37 | }
38 |
39 | get rendered() {
40 | return this.getAttribute("rendered");
41 | }
42 |
43 | get mdContent () {
44 | return this._mdContent;
45 | }
46 |
47 | set mdContent (html) {
48 | this._mdContent = html;
49 | this._contentFromHTML = false;
50 |
51 | this.render();
52 | }
53 |
54 | connectedCallback() {
55 | Object.defineProperty(this, "untrusted", {
56 | value: this.hasAttribute("untrusted"),
57 | enumerable: true,
58 | configurable: false,
59 | writable: false
60 | });
61 |
62 | if (this._mdContent === undefined) {
63 | this._contentFromHTML = true;
64 | this._mdContent = deIndent(this.innerHTML);
65 | // https://github.com/markedjs/marked/issues/874#issuecomment-339995375
66 | // marked expects markdown quotes (>) to be un-escaped, otherwise they won't render correctly
67 | this._mdContent = this._mdContent.replace(/>/g, '>');
68 | }
69 |
70 | this.render();
71 | }
72 |
73 | async render () {
74 | if (!this.isConnected || this._mdContent === undefined) {
75 | return;
76 | }
77 |
78 | if (!marked) {
79 | marked = import(URLs.marked).then(m => m.marked);
80 | }
81 |
82 | marked = await marked;
83 |
84 | marked.setOptions({
85 | gfm: true,
86 | smartypants: true,
87 | langPrefix: "language-",
88 | });
89 |
90 | marked.use({renderer: this.renderer});
91 |
92 | let html = this._parse();
93 |
94 | if (this.untrusted) {
95 | let mdContent = this._mdContent;
96 | html = await MarkdownElement.sanitize(html);
97 | if (this._mdContent !== mdContent) {
98 | // While we were running this async call, the content changed
99 | // We don’t want to overwrite with old data. Abort mission!
100 | return;
101 | }
102 | }
103 |
104 | this.innerHTML = html;
105 |
106 | if (!Prism && URLs.Prism && this.querySelector("code")) {
107 | Prism = import(URLs.Prism);
108 |
109 | if (URLs.PrismCSS) {
110 | let link = document.createElement("link");
111 | link.rel = "stylesheet";
112 | link.href = URLs.PrismCSS;
113 | document.head.appendChild(link);
114 | }
115 | }
116 |
117 | if (Prism) {
118 | await Prism; // in case it's still loading
119 | Prism.highlightAllUnder(this);
120 | }
121 |
122 | if (this.src) {
123 | this.setAttribute("rendered", this._contentFromHTML? "fallback" : "remote");
124 | }
125 | else {
126 | this.setAttribute("rendered", this._contentFromHTML? "content" : "property");
127 | }
128 |
129 | // Fire event
130 | let event = new CustomEvent("md-render", {bubbles: true, composed: true});
131 | this.dispatchEvent(event);
132 | }
133 |
134 | static async sanitize(html) {
135 | if (!DOMPurify) {
136 | DOMPurify = import(URLs.DOMPurify).then(m => m.default);
137 | }
138 |
139 | DOMPurify = await DOMPurify; // in case it's still loading
140 |
141 | return DOMPurify.sanitize(html);
142 | }
143 | };
144 |
145 | export class MarkdownSpan extends MarkdownElement {
146 | constructor() {
147 | super();
148 | }
149 |
150 | _parse () {
151 | return marked.parseInline(this._mdContent);
152 | }
153 |
154 | static renderer = {
155 | codespan (code) {
156 | if (this._contentFromHTML) {
157 | // Inline HTML code needs to be escaped to not be parsed as HTML by the browser
158 | // This results in marked double-escaping it, so we need to unescape it
159 | code = code.replace(/&(?=[lg]t;)/g, "&");
160 | }
161 | else {
162 | // Remote code may include characters that need to be escaped to be visible in HTML
163 | code = code.replace(/${code}`;
167 | }
168 | }
169 | }
170 |
171 | export class MarkdownBlock extends MarkdownElement {
172 | constructor() {
173 | super();
174 | }
175 |
176 | get src() {
177 | return this._src;
178 | }
179 |
180 | set src(value) {
181 | this.setAttribute("src", value);
182 | }
183 |
184 | get hmin() {
185 | return this._hmin || 1;
186 | }
187 |
188 | set hmin(value) {
189 | this.setAttribute("hmin", value);
190 | }
191 |
192 | get hlinks() {
193 | return this._hlinks ?? null;
194 | }
195 |
196 | set hlinks(value) {
197 | this.setAttribute("hlinks", value);
198 | }
199 |
200 | _parse () {
201 | return marked.parse(this._mdContent);
202 | }
203 |
204 | static renderer = Object.assign({
205 | heading (text, level, _raw, slugger) {
206 | level = Math.min(6, level + (this.hmin - 1));
207 | const id = slugger.slug(text);
208 | const hlinks = this.hlinks;
209 |
210 | let content;
211 |
212 | if (hlinks === null) {
213 | // No heading links
214 | content = text;
215 | }
216 | else {
217 | content = ``;
218 |
219 | if (hlinks === "") {
220 | // Heading content is the link
221 | content += text + " ";
222 | }
223 | else {
224 | // Headings are prepended with a linked symbol
225 | content += hlinks + "" + text;
226 | }
227 | }
228 |
229 | return `
230 |
231 | ${content}
232 | `;
233 | },
234 |
235 | code (code, language, escaped) {
236 | if (this._contentFromHTML) {
237 | // Inline HTML code needs to be escaped to not be parsed as HTML by the browser
238 | // This results in marked double-escaping it, so we need to unescape it
239 | code = code.replace(/&(?=[lg]t;)/g, "&");
240 | }
241 | else {
242 | // Remote code may include characters that need to be escaped to be visible in HTML
243 | code = code.replace(/${code}
`;
247 | }
248 | }, MarkdownSpan.renderer);
249 |
250 | static get observedAttributes() {
251 | return ["src", "hmin", "hlinks"];
252 | }
253 |
254 | attributeChangedCallback(name, oldValue, newValue) {
255 | if (oldValue === newValue) {
256 | return;
257 | }
258 |
259 | switch (name) {
260 | case "src":
261 | let url;
262 | try {
263 | url = new URL(newValue, location);
264 | }
265 | catch (e) {
266 | return;
267 | }
268 |
269 | let prevSrc = this.src;
270 | this._src = url;
271 |
272 | if (this.src !== prevSrc) {
273 | fetch(this.src)
274 | .then(response => {
275 | if (!response.ok) {
276 | throw new Error(`Failed to fetch ${this.src}: ${response.status} ${response.statusText}`);
277 | }
278 |
279 | return response.text();
280 | })
281 | .then(text => {
282 | this.mdContent = text;
283 | })
284 | .catch(e => {});
285 | }
286 |
287 | break;
288 | case "hmin":
289 | if (newValue > 0) {
290 | this._hmin = +newValue;
291 |
292 | this.render();
293 | }
294 | break;
295 | case "hlinks":
296 | this._hlinks = newValue;
297 | this.render();
298 | }
299 | }
300 | }
301 |
302 |
303 | customElements.define("md-block", MarkdownBlock);
304 | customElements.define("md-span", MarkdownSpan);
305 |
--------------------------------------------------------------------------------
/netlify.toml:
--------------------------------------------------------------------------------
1 | [[headers]]
2 |
3 | for = "/*"
4 | [headers.values]
5 | Access-Control-Allow-Origin = "*"
6 |
7 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "md-block",
3 | "version": "0.0.1",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "md-block",
9 | "version": "0.0.1",
10 | "license": "MIT",
11 | "devDependencies": {
12 | "eslint": "^8.3.0"
13 | }
14 | },
15 | "node_modules/@eslint/eslintrc": {
16 | "version": "1.0.4",
17 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
18 | "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
19 | "dev": true,
20 | "dependencies": {
21 | "ajv": "^6.12.4",
22 | "debug": "^4.3.2",
23 | "espree": "^9.0.0",
24 | "globals": "^13.9.0",
25 | "ignore": "^4.0.6",
26 | "import-fresh": "^3.2.1",
27 | "js-yaml": "^4.1.0",
28 | "minimatch": "^3.0.4",
29 | "strip-json-comments": "^3.1.1"
30 | },
31 | "engines": {
32 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
33 | }
34 | },
35 | "node_modules/@humanwhocodes/config-array": {
36 | "version": "0.6.0",
37 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
38 | "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==",
39 | "dev": true,
40 | "dependencies": {
41 | "@humanwhocodes/object-schema": "^1.2.0",
42 | "debug": "^4.1.1",
43 | "minimatch": "^3.0.4"
44 | },
45 | "engines": {
46 | "node": ">=10.10.0"
47 | }
48 | },
49 | "node_modules/@humanwhocodes/object-schema": {
50 | "version": "1.2.1",
51 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
52 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
53 | "dev": true
54 | },
55 | "node_modules/acorn": {
56 | "version": "8.6.0",
57 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
58 | "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
59 | "dev": true,
60 | "bin": {
61 | "acorn": "bin/acorn"
62 | },
63 | "engines": {
64 | "node": ">=0.4.0"
65 | }
66 | },
67 | "node_modules/acorn-jsx": {
68 | "version": "5.3.2",
69 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
70 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
71 | "dev": true,
72 | "peerDependencies": {
73 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
74 | }
75 | },
76 | "node_modules/ajv": {
77 | "version": "6.12.6",
78 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
79 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
80 | "dev": true,
81 | "dependencies": {
82 | "fast-deep-equal": "^3.1.1",
83 | "fast-json-stable-stringify": "^2.0.0",
84 | "json-schema-traverse": "^0.4.1",
85 | "uri-js": "^4.2.2"
86 | },
87 | "funding": {
88 | "type": "github",
89 | "url": "https://github.com/sponsors/epoberezkin"
90 | }
91 | },
92 | "node_modules/ansi-colors": {
93 | "version": "4.1.1",
94 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
95 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
96 | "dev": true,
97 | "engines": {
98 | "node": ">=6"
99 | }
100 | },
101 | "node_modules/ansi-regex": {
102 | "version": "5.0.1",
103 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
104 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
105 | "dev": true,
106 | "engines": {
107 | "node": ">=8"
108 | }
109 | },
110 | "node_modules/ansi-styles": {
111 | "version": "4.3.0",
112 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
113 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
114 | "dev": true,
115 | "dependencies": {
116 | "color-convert": "^2.0.1"
117 | },
118 | "engines": {
119 | "node": ">=8"
120 | },
121 | "funding": {
122 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
123 | }
124 | },
125 | "node_modules/argparse": {
126 | "version": "2.0.1",
127 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
128 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
129 | "dev": true
130 | },
131 | "node_modules/balanced-match": {
132 | "version": "1.0.2",
133 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
134 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
135 | "dev": true
136 | },
137 | "node_modules/brace-expansion": {
138 | "version": "1.1.11",
139 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
140 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
141 | "dev": true,
142 | "dependencies": {
143 | "balanced-match": "^1.0.0",
144 | "concat-map": "0.0.1"
145 | }
146 | },
147 | "node_modules/callsites": {
148 | "version": "3.1.0",
149 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
150 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
151 | "dev": true,
152 | "engines": {
153 | "node": ">=6"
154 | }
155 | },
156 | "node_modules/chalk": {
157 | "version": "4.1.2",
158 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
159 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
160 | "dev": true,
161 | "dependencies": {
162 | "ansi-styles": "^4.1.0",
163 | "supports-color": "^7.1.0"
164 | },
165 | "engines": {
166 | "node": ">=10"
167 | },
168 | "funding": {
169 | "url": "https://github.com/chalk/chalk?sponsor=1"
170 | }
171 | },
172 | "node_modules/color-convert": {
173 | "version": "2.0.1",
174 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
175 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
176 | "dev": true,
177 | "dependencies": {
178 | "color-name": "~1.1.4"
179 | },
180 | "engines": {
181 | "node": ">=7.0.0"
182 | }
183 | },
184 | "node_modules/color-name": {
185 | "version": "1.1.4",
186 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
187 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
188 | "dev": true
189 | },
190 | "node_modules/concat-map": {
191 | "version": "0.0.1",
192 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
193 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
194 | "dev": true
195 | },
196 | "node_modules/cross-spawn": {
197 | "version": "7.0.3",
198 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
199 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
200 | "dev": true,
201 | "dependencies": {
202 | "path-key": "^3.1.0",
203 | "shebang-command": "^2.0.0",
204 | "which": "^2.0.1"
205 | },
206 | "engines": {
207 | "node": ">= 8"
208 | }
209 | },
210 | "node_modules/debug": {
211 | "version": "4.3.3",
212 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
213 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
214 | "dev": true,
215 | "dependencies": {
216 | "ms": "2.1.2"
217 | },
218 | "engines": {
219 | "node": ">=6.0"
220 | },
221 | "peerDependenciesMeta": {
222 | "supports-color": {
223 | "optional": true
224 | }
225 | }
226 | },
227 | "node_modules/deep-is": {
228 | "version": "0.1.4",
229 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
230 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
231 | "dev": true
232 | },
233 | "node_modules/doctrine": {
234 | "version": "3.0.0",
235 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
236 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
237 | "dev": true,
238 | "dependencies": {
239 | "esutils": "^2.0.2"
240 | },
241 | "engines": {
242 | "node": ">=6.0.0"
243 | }
244 | },
245 | "node_modules/enquirer": {
246 | "version": "2.3.6",
247 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
248 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
249 | "dev": true,
250 | "dependencies": {
251 | "ansi-colors": "^4.1.1"
252 | },
253 | "engines": {
254 | "node": ">=8.6"
255 | }
256 | },
257 | "node_modules/escape-string-regexp": {
258 | "version": "4.0.0",
259 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
260 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
261 | "dev": true,
262 | "engines": {
263 | "node": ">=10"
264 | },
265 | "funding": {
266 | "url": "https://github.com/sponsors/sindresorhus"
267 | }
268 | },
269 | "node_modules/eslint": {
270 | "version": "8.3.0",
271 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz",
272 | "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==",
273 | "dev": true,
274 | "dependencies": {
275 | "@eslint/eslintrc": "^1.0.4",
276 | "@humanwhocodes/config-array": "^0.6.0",
277 | "ajv": "^6.10.0",
278 | "chalk": "^4.0.0",
279 | "cross-spawn": "^7.0.2",
280 | "debug": "^4.3.2",
281 | "doctrine": "^3.0.0",
282 | "enquirer": "^2.3.5",
283 | "escape-string-regexp": "^4.0.0",
284 | "eslint-scope": "^7.1.0",
285 | "eslint-utils": "^3.0.0",
286 | "eslint-visitor-keys": "^3.1.0",
287 | "espree": "^9.1.0",
288 | "esquery": "^1.4.0",
289 | "esutils": "^2.0.2",
290 | "fast-deep-equal": "^3.1.3",
291 | "file-entry-cache": "^6.0.1",
292 | "functional-red-black-tree": "^1.0.1",
293 | "glob-parent": "^6.0.1",
294 | "globals": "^13.6.0",
295 | "ignore": "^4.0.6",
296 | "import-fresh": "^3.0.0",
297 | "imurmurhash": "^0.1.4",
298 | "is-glob": "^4.0.0",
299 | "js-yaml": "^4.1.0",
300 | "json-stable-stringify-without-jsonify": "^1.0.1",
301 | "levn": "^0.4.1",
302 | "lodash.merge": "^4.6.2",
303 | "minimatch": "^3.0.4",
304 | "natural-compare": "^1.4.0",
305 | "optionator": "^0.9.1",
306 | "progress": "^2.0.0",
307 | "regexpp": "^3.2.0",
308 | "semver": "^7.2.1",
309 | "strip-ansi": "^6.0.1",
310 | "strip-json-comments": "^3.1.0",
311 | "text-table": "^0.2.0",
312 | "v8-compile-cache": "^2.0.3"
313 | },
314 | "bin": {
315 | "eslint": "bin/eslint.js"
316 | },
317 | "engines": {
318 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
319 | },
320 | "funding": {
321 | "url": "https://opencollective.com/eslint"
322 | }
323 | },
324 | "node_modules/eslint-scope": {
325 | "version": "7.1.0",
326 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
327 | "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
328 | "dev": true,
329 | "dependencies": {
330 | "esrecurse": "^4.3.0",
331 | "estraverse": "^5.2.0"
332 | },
333 | "engines": {
334 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
335 | }
336 | },
337 | "node_modules/eslint-utils": {
338 | "version": "3.0.0",
339 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
340 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
341 | "dev": true,
342 | "dependencies": {
343 | "eslint-visitor-keys": "^2.0.0"
344 | },
345 | "engines": {
346 | "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
347 | },
348 | "funding": {
349 | "url": "https://github.com/sponsors/mysticatea"
350 | },
351 | "peerDependencies": {
352 | "eslint": ">=5"
353 | }
354 | },
355 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
356 | "version": "2.1.0",
357 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
358 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
359 | "dev": true,
360 | "engines": {
361 | "node": ">=10"
362 | }
363 | },
364 | "node_modules/eslint-visitor-keys": {
365 | "version": "3.1.0",
366 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
367 | "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
368 | "dev": true,
369 | "engines": {
370 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
371 | }
372 | },
373 | "node_modules/espree": {
374 | "version": "9.1.0",
375 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz",
376 | "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==",
377 | "dev": true,
378 | "dependencies": {
379 | "acorn": "^8.6.0",
380 | "acorn-jsx": "^5.3.1",
381 | "eslint-visitor-keys": "^3.1.0"
382 | },
383 | "engines": {
384 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
385 | }
386 | },
387 | "node_modules/esquery": {
388 | "version": "1.4.0",
389 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
390 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
391 | "dev": true,
392 | "dependencies": {
393 | "estraverse": "^5.1.0"
394 | },
395 | "engines": {
396 | "node": ">=0.10"
397 | }
398 | },
399 | "node_modules/esrecurse": {
400 | "version": "4.3.0",
401 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
402 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
403 | "dev": true,
404 | "dependencies": {
405 | "estraverse": "^5.2.0"
406 | },
407 | "engines": {
408 | "node": ">=4.0"
409 | }
410 | },
411 | "node_modules/estraverse": {
412 | "version": "5.3.0",
413 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
414 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
415 | "dev": true,
416 | "engines": {
417 | "node": ">=4.0"
418 | }
419 | },
420 | "node_modules/esutils": {
421 | "version": "2.0.3",
422 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
423 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
424 | "dev": true,
425 | "engines": {
426 | "node": ">=0.10.0"
427 | }
428 | },
429 | "node_modules/fast-deep-equal": {
430 | "version": "3.1.3",
431 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
432 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
433 | "dev": true
434 | },
435 | "node_modules/fast-json-stable-stringify": {
436 | "version": "2.1.0",
437 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
438 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
439 | "dev": true
440 | },
441 | "node_modules/fast-levenshtein": {
442 | "version": "2.0.6",
443 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
444 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
445 | "dev": true
446 | },
447 | "node_modules/file-entry-cache": {
448 | "version": "6.0.1",
449 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
450 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
451 | "dev": true,
452 | "dependencies": {
453 | "flat-cache": "^3.0.4"
454 | },
455 | "engines": {
456 | "node": "^10.12.0 || >=12.0.0"
457 | }
458 | },
459 | "node_modules/flat-cache": {
460 | "version": "3.0.4",
461 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
462 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
463 | "dev": true,
464 | "dependencies": {
465 | "flatted": "^3.1.0",
466 | "rimraf": "^3.0.2"
467 | },
468 | "engines": {
469 | "node": "^10.12.0 || >=12.0.0"
470 | }
471 | },
472 | "node_modules/flatted": {
473 | "version": "3.2.4",
474 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
475 | "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
476 | "dev": true
477 | },
478 | "node_modules/fs.realpath": {
479 | "version": "1.0.0",
480 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
481 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
482 | "dev": true
483 | },
484 | "node_modules/functional-red-black-tree": {
485 | "version": "1.0.1",
486 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
487 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
488 | "dev": true
489 | },
490 | "node_modules/glob": {
491 | "version": "7.2.0",
492 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
493 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
494 | "dev": true,
495 | "dependencies": {
496 | "fs.realpath": "^1.0.0",
497 | "inflight": "^1.0.4",
498 | "inherits": "2",
499 | "minimatch": "^3.0.4",
500 | "once": "^1.3.0",
501 | "path-is-absolute": "^1.0.0"
502 | },
503 | "engines": {
504 | "node": "*"
505 | },
506 | "funding": {
507 | "url": "https://github.com/sponsors/isaacs"
508 | }
509 | },
510 | "node_modules/glob-parent": {
511 | "version": "6.0.2",
512 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
513 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
514 | "dev": true,
515 | "dependencies": {
516 | "is-glob": "^4.0.3"
517 | },
518 | "engines": {
519 | "node": ">=10.13.0"
520 | }
521 | },
522 | "node_modules/globals": {
523 | "version": "13.12.0",
524 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
525 | "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
526 | "dev": true,
527 | "dependencies": {
528 | "type-fest": "^0.20.2"
529 | },
530 | "engines": {
531 | "node": ">=8"
532 | },
533 | "funding": {
534 | "url": "https://github.com/sponsors/sindresorhus"
535 | }
536 | },
537 | "node_modules/has-flag": {
538 | "version": "4.0.0",
539 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
540 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
541 | "dev": true,
542 | "engines": {
543 | "node": ">=8"
544 | }
545 | },
546 | "node_modules/ignore": {
547 | "version": "4.0.6",
548 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
549 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
550 | "dev": true,
551 | "engines": {
552 | "node": ">= 4"
553 | }
554 | },
555 | "node_modules/import-fresh": {
556 | "version": "3.3.0",
557 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
558 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
559 | "dev": true,
560 | "dependencies": {
561 | "parent-module": "^1.0.0",
562 | "resolve-from": "^4.0.0"
563 | },
564 | "engines": {
565 | "node": ">=6"
566 | },
567 | "funding": {
568 | "url": "https://github.com/sponsors/sindresorhus"
569 | }
570 | },
571 | "node_modules/imurmurhash": {
572 | "version": "0.1.4",
573 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
574 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
575 | "dev": true,
576 | "engines": {
577 | "node": ">=0.8.19"
578 | }
579 | },
580 | "node_modules/inflight": {
581 | "version": "1.0.6",
582 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
583 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
584 | "dev": true,
585 | "dependencies": {
586 | "once": "^1.3.0",
587 | "wrappy": "1"
588 | }
589 | },
590 | "node_modules/inherits": {
591 | "version": "2.0.4",
592 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
593 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
594 | "dev": true
595 | },
596 | "node_modules/is-extglob": {
597 | "version": "2.1.1",
598 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
599 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
600 | "dev": true,
601 | "engines": {
602 | "node": ">=0.10.0"
603 | }
604 | },
605 | "node_modules/is-glob": {
606 | "version": "4.0.3",
607 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
608 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
609 | "dev": true,
610 | "dependencies": {
611 | "is-extglob": "^2.1.1"
612 | },
613 | "engines": {
614 | "node": ">=0.10.0"
615 | }
616 | },
617 | "node_modules/isexe": {
618 | "version": "2.0.0",
619 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
620 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
621 | "dev": true
622 | },
623 | "node_modules/js-yaml": {
624 | "version": "4.1.0",
625 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
626 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
627 | "dev": true,
628 | "dependencies": {
629 | "argparse": "^2.0.1"
630 | },
631 | "bin": {
632 | "js-yaml": "bin/js-yaml.js"
633 | }
634 | },
635 | "node_modules/json-schema-traverse": {
636 | "version": "0.4.1",
637 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
638 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
639 | "dev": true
640 | },
641 | "node_modules/json-stable-stringify-without-jsonify": {
642 | "version": "1.0.1",
643 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
644 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
645 | "dev": true
646 | },
647 | "node_modules/levn": {
648 | "version": "0.4.1",
649 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
650 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
651 | "dev": true,
652 | "dependencies": {
653 | "prelude-ls": "^1.2.1",
654 | "type-check": "~0.4.0"
655 | },
656 | "engines": {
657 | "node": ">= 0.8.0"
658 | }
659 | },
660 | "node_modules/lodash.merge": {
661 | "version": "4.6.2",
662 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
663 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
664 | "dev": true
665 | },
666 | "node_modules/lru-cache": {
667 | "version": "6.0.0",
668 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
669 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
670 | "dev": true,
671 | "dependencies": {
672 | "yallist": "^4.0.0"
673 | },
674 | "engines": {
675 | "node": ">=10"
676 | }
677 | },
678 | "node_modules/minimatch": {
679 | "version": "3.0.4",
680 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
681 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
682 | "dev": true,
683 | "dependencies": {
684 | "brace-expansion": "^1.1.7"
685 | },
686 | "engines": {
687 | "node": "*"
688 | }
689 | },
690 | "node_modules/ms": {
691 | "version": "2.1.2",
692 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
693 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
694 | "dev": true
695 | },
696 | "node_modules/natural-compare": {
697 | "version": "1.4.0",
698 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
699 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
700 | "dev": true
701 | },
702 | "node_modules/once": {
703 | "version": "1.4.0",
704 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
705 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
706 | "dev": true,
707 | "dependencies": {
708 | "wrappy": "1"
709 | }
710 | },
711 | "node_modules/optionator": {
712 | "version": "0.9.1",
713 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
714 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
715 | "dev": true,
716 | "dependencies": {
717 | "deep-is": "^0.1.3",
718 | "fast-levenshtein": "^2.0.6",
719 | "levn": "^0.4.1",
720 | "prelude-ls": "^1.2.1",
721 | "type-check": "^0.4.0",
722 | "word-wrap": "^1.2.3"
723 | },
724 | "engines": {
725 | "node": ">= 0.8.0"
726 | }
727 | },
728 | "node_modules/parent-module": {
729 | "version": "1.0.1",
730 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
731 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
732 | "dev": true,
733 | "dependencies": {
734 | "callsites": "^3.0.0"
735 | },
736 | "engines": {
737 | "node": ">=6"
738 | }
739 | },
740 | "node_modules/path-is-absolute": {
741 | "version": "1.0.1",
742 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
743 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
744 | "dev": true,
745 | "engines": {
746 | "node": ">=0.10.0"
747 | }
748 | },
749 | "node_modules/path-key": {
750 | "version": "3.1.1",
751 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
752 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
753 | "dev": true,
754 | "engines": {
755 | "node": ">=8"
756 | }
757 | },
758 | "node_modules/prelude-ls": {
759 | "version": "1.2.1",
760 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
761 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
762 | "dev": true,
763 | "engines": {
764 | "node": ">= 0.8.0"
765 | }
766 | },
767 | "node_modules/progress": {
768 | "version": "2.0.3",
769 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
770 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
771 | "dev": true,
772 | "engines": {
773 | "node": ">=0.4.0"
774 | }
775 | },
776 | "node_modules/punycode": {
777 | "version": "2.1.1",
778 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
779 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
780 | "dev": true,
781 | "engines": {
782 | "node": ">=6"
783 | }
784 | },
785 | "node_modules/regexpp": {
786 | "version": "3.2.0",
787 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
788 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
789 | "dev": true,
790 | "engines": {
791 | "node": ">=8"
792 | },
793 | "funding": {
794 | "url": "https://github.com/sponsors/mysticatea"
795 | }
796 | },
797 | "node_modules/resolve-from": {
798 | "version": "4.0.0",
799 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
800 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
801 | "dev": true,
802 | "engines": {
803 | "node": ">=4"
804 | }
805 | },
806 | "node_modules/rimraf": {
807 | "version": "3.0.2",
808 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
809 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
810 | "dev": true,
811 | "dependencies": {
812 | "glob": "^7.1.3"
813 | },
814 | "bin": {
815 | "rimraf": "bin.js"
816 | },
817 | "funding": {
818 | "url": "https://github.com/sponsors/isaacs"
819 | }
820 | },
821 | "node_modules/semver": {
822 | "version": "7.3.5",
823 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
824 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
825 | "dev": true,
826 | "dependencies": {
827 | "lru-cache": "^6.0.0"
828 | },
829 | "bin": {
830 | "semver": "bin/semver.js"
831 | },
832 | "engines": {
833 | "node": ">=10"
834 | }
835 | },
836 | "node_modules/shebang-command": {
837 | "version": "2.0.0",
838 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
839 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
840 | "dev": true,
841 | "dependencies": {
842 | "shebang-regex": "^3.0.0"
843 | },
844 | "engines": {
845 | "node": ">=8"
846 | }
847 | },
848 | "node_modules/shebang-regex": {
849 | "version": "3.0.0",
850 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
851 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
852 | "dev": true,
853 | "engines": {
854 | "node": ">=8"
855 | }
856 | },
857 | "node_modules/strip-ansi": {
858 | "version": "6.0.1",
859 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
860 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
861 | "dev": true,
862 | "dependencies": {
863 | "ansi-regex": "^5.0.1"
864 | },
865 | "engines": {
866 | "node": ">=8"
867 | }
868 | },
869 | "node_modules/strip-json-comments": {
870 | "version": "3.1.1",
871 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
872 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
873 | "dev": true,
874 | "engines": {
875 | "node": ">=8"
876 | },
877 | "funding": {
878 | "url": "https://github.com/sponsors/sindresorhus"
879 | }
880 | },
881 | "node_modules/supports-color": {
882 | "version": "7.2.0",
883 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
884 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
885 | "dev": true,
886 | "dependencies": {
887 | "has-flag": "^4.0.0"
888 | },
889 | "engines": {
890 | "node": ">=8"
891 | }
892 | },
893 | "node_modules/text-table": {
894 | "version": "0.2.0",
895 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
896 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
897 | "dev": true
898 | },
899 | "node_modules/type-check": {
900 | "version": "0.4.0",
901 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
902 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
903 | "dev": true,
904 | "dependencies": {
905 | "prelude-ls": "^1.2.1"
906 | },
907 | "engines": {
908 | "node": ">= 0.8.0"
909 | }
910 | },
911 | "node_modules/type-fest": {
912 | "version": "0.20.2",
913 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
914 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
915 | "dev": true,
916 | "engines": {
917 | "node": ">=10"
918 | },
919 | "funding": {
920 | "url": "https://github.com/sponsors/sindresorhus"
921 | }
922 | },
923 | "node_modules/uri-js": {
924 | "version": "4.4.1",
925 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
926 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
927 | "dev": true,
928 | "dependencies": {
929 | "punycode": "^2.1.0"
930 | }
931 | },
932 | "node_modules/v8-compile-cache": {
933 | "version": "2.3.0",
934 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
935 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
936 | "dev": true
937 | },
938 | "node_modules/which": {
939 | "version": "2.0.2",
940 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
941 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
942 | "dev": true,
943 | "dependencies": {
944 | "isexe": "^2.0.0"
945 | },
946 | "bin": {
947 | "node-which": "bin/node-which"
948 | },
949 | "engines": {
950 | "node": ">= 8"
951 | }
952 | },
953 | "node_modules/word-wrap": {
954 | "version": "1.2.3",
955 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
956 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
957 | "dev": true,
958 | "engines": {
959 | "node": ">=0.10.0"
960 | }
961 | },
962 | "node_modules/wrappy": {
963 | "version": "1.0.2",
964 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
965 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
966 | "dev": true
967 | },
968 | "node_modules/yallist": {
969 | "version": "4.0.0",
970 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
971 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
972 | "dev": true
973 | }
974 | },
975 | "dependencies": {
976 | "@eslint/eslintrc": {
977 | "version": "1.0.4",
978 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.4.tgz",
979 | "integrity": "sha512-h8Vx6MdxwWI2WM8/zREHMoqdgLNXEL4QX3MWSVMdyNJGvXVOs+6lp+m2hc3FnuMHDc4poxFNI20vCk0OmI4G0Q==",
980 | "dev": true,
981 | "requires": {
982 | "ajv": "^6.12.4",
983 | "debug": "^4.3.2",
984 | "espree": "^9.0.0",
985 | "globals": "^13.9.0",
986 | "ignore": "^4.0.6",
987 | "import-fresh": "^3.2.1",
988 | "js-yaml": "^4.1.0",
989 | "minimatch": "^3.0.4",
990 | "strip-json-comments": "^3.1.1"
991 | }
992 | },
993 | "@humanwhocodes/config-array": {
994 | "version": "0.6.0",
995 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.6.0.tgz",
996 | "integrity": "sha512-JQlEKbcgEUjBFhLIF4iqM7u/9lwgHRBcpHrmUNCALK0Q3amXN6lxdoXLnF0sm11E9VqTmBALR87IlUg1bZ8A9A==",
997 | "dev": true,
998 | "requires": {
999 | "@humanwhocodes/object-schema": "^1.2.0",
1000 | "debug": "^4.1.1",
1001 | "minimatch": "^3.0.4"
1002 | }
1003 | },
1004 | "@humanwhocodes/object-schema": {
1005 | "version": "1.2.1",
1006 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
1007 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
1008 | "dev": true
1009 | },
1010 | "acorn": {
1011 | "version": "8.6.0",
1012 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz",
1013 | "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==",
1014 | "dev": true
1015 | },
1016 | "acorn-jsx": {
1017 | "version": "5.3.2",
1018 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1019 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1020 | "dev": true,
1021 | "requires": {}
1022 | },
1023 | "ajv": {
1024 | "version": "6.12.6",
1025 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
1026 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
1027 | "dev": true,
1028 | "requires": {
1029 | "fast-deep-equal": "^3.1.1",
1030 | "fast-json-stable-stringify": "^2.0.0",
1031 | "json-schema-traverse": "^0.4.1",
1032 | "uri-js": "^4.2.2"
1033 | }
1034 | },
1035 | "ansi-colors": {
1036 | "version": "4.1.1",
1037 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
1038 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
1039 | "dev": true
1040 | },
1041 | "ansi-regex": {
1042 | "version": "5.0.1",
1043 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1044 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1045 | "dev": true
1046 | },
1047 | "ansi-styles": {
1048 | "version": "4.3.0",
1049 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1050 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1051 | "dev": true,
1052 | "requires": {
1053 | "color-convert": "^2.0.1"
1054 | }
1055 | },
1056 | "argparse": {
1057 | "version": "2.0.1",
1058 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1059 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1060 | "dev": true
1061 | },
1062 | "balanced-match": {
1063 | "version": "1.0.2",
1064 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1065 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1066 | "dev": true
1067 | },
1068 | "brace-expansion": {
1069 | "version": "1.1.11",
1070 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1071 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1072 | "dev": true,
1073 | "requires": {
1074 | "balanced-match": "^1.0.0",
1075 | "concat-map": "0.0.1"
1076 | }
1077 | },
1078 | "callsites": {
1079 | "version": "3.1.0",
1080 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1081 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1082 | "dev": true
1083 | },
1084 | "chalk": {
1085 | "version": "4.1.2",
1086 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1087 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1088 | "dev": true,
1089 | "requires": {
1090 | "ansi-styles": "^4.1.0",
1091 | "supports-color": "^7.1.0"
1092 | }
1093 | },
1094 | "color-convert": {
1095 | "version": "2.0.1",
1096 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1097 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1098 | "dev": true,
1099 | "requires": {
1100 | "color-name": "~1.1.4"
1101 | }
1102 | },
1103 | "color-name": {
1104 | "version": "1.1.4",
1105 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1106 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1107 | "dev": true
1108 | },
1109 | "concat-map": {
1110 | "version": "0.0.1",
1111 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1112 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1113 | "dev": true
1114 | },
1115 | "cross-spawn": {
1116 | "version": "7.0.3",
1117 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1118 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1119 | "dev": true,
1120 | "requires": {
1121 | "path-key": "^3.1.0",
1122 | "shebang-command": "^2.0.0",
1123 | "which": "^2.0.1"
1124 | }
1125 | },
1126 | "debug": {
1127 | "version": "4.3.3",
1128 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
1129 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
1130 | "dev": true,
1131 | "requires": {
1132 | "ms": "2.1.2"
1133 | }
1134 | },
1135 | "deep-is": {
1136 | "version": "0.1.4",
1137 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1138 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1139 | "dev": true
1140 | },
1141 | "doctrine": {
1142 | "version": "3.0.0",
1143 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1144 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1145 | "dev": true,
1146 | "requires": {
1147 | "esutils": "^2.0.2"
1148 | }
1149 | },
1150 | "enquirer": {
1151 | "version": "2.3.6",
1152 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
1153 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
1154 | "dev": true,
1155 | "requires": {
1156 | "ansi-colors": "^4.1.1"
1157 | }
1158 | },
1159 | "escape-string-regexp": {
1160 | "version": "4.0.0",
1161 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1162 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1163 | "dev": true
1164 | },
1165 | "eslint": {
1166 | "version": "8.3.0",
1167 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.3.0.tgz",
1168 | "integrity": "sha512-aIay56Ph6RxOTC7xyr59Kt3ewX185SaGnAr8eWukoPLeriCrvGjvAubxuvaXOfsxhtwV5g0uBOsyhAom4qJdww==",
1169 | "dev": true,
1170 | "requires": {
1171 | "@eslint/eslintrc": "^1.0.4",
1172 | "@humanwhocodes/config-array": "^0.6.0",
1173 | "ajv": "^6.10.0",
1174 | "chalk": "^4.0.0",
1175 | "cross-spawn": "^7.0.2",
1176 | "debug": "^4.3.2",
1177 | "doctrine": "^3.0.0",
1178 | "enquirer": "^2.3.5",
1179 | "escape-string-regexp": "^4.0.0",
1180 | "eslint-scope": "^7.1.0",
1181 | "eslint-utils": "^3.0.0",
1182 | "eslint-visitor-keys": "^3.1.0",
1183 | "espree": "^9.1.0",
1184 | "esquery": "^1.4.0",
1185 | "esutils": "^2.0.2",
1186 | "fast-deep-equal": "^3.1.3",
1187 | "file-entry-cache": "^6.0.1",
1188 | "functional-red-black-tree": "^1.0.1",
1189 | "glob-parent": "^6.0.1",
1190 | "globals": "^13.6.0",
1191 | "ignore": "^4.0.6",
1192 | "import-fresh": "^3.0.0",
1193 | "imurmurhash": "^0.1.4",
1194 | "is-glob": "^4.0.0",
1195 | "js-yaml": "^4.1.0",
1196 | "json-stable-stringify-without-jsonify": "^1.0.1",
1197 | "levn": "^0.4.1",
1198 | "lodash.merge": "^4.6.2",
1199 | "minimatch": "^3.0.4",
1200 | "natural-compare": "^1.4.0",
1201 | "optionator": "^0.9.1",
1202 | "progress": "^2.0.0",
1203 | "regexpp": "^3.2.0",
1204 | "semver": "^7.2.1",
1205 | "strip-ansi": "^6.0.1",
1206 | "strip-json-comments": "^3.1.0",
1207 | "text-table": "^0.2.0",
1208 | "v8-compile-cache": "^2.0.3"
1209 | }
1210 | },
1211 | "eslint-scope": {
1212 | "version": "7.1.0",
1213 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
1214 | "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
1215 | "dev": true,
1216 | "requires": {
1217 | "esrecurse": "^4.3.0",
1218 | "estraverse": "^5.2.0"
1219 | }
1220 | },
1221 | "eslint-utils": {
1222 | "version": "3.0.0",
1223 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
1224 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
1225 | "dev": true,
1226 | "requires": {
1227 | "eslint-visitor-keys": "^2.0.0"
1228 | },
1229 | "dependencies": {
1230 | "eslint-visitor-keys": {
1231 | "version": "2.1.0",
1232 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
1233 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
1234 | "dev": true
1235 | }
1236 | }
1237 | },
1238 | "eslint-visitor-keys": {
1239 | "version": "3.1.0",
1240 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
1241 | "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
1242 | "dev": true
1243 | },
1244 | "espree": {
1245 | "version": "9.1.0",
1246 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.1.0.tgz",
1247 | "integrity": "sha512-ZgYLvCS1wxOczBYGcQT9DDWgicXwJ4dbocr9uYN+/eresBAUuBu+O4WzB21ufQ/JqQT8gyp7hJ3z8SHii32mTQ==",
1248 | "dev": true,
1249 | "requires": {
1250 | "acorn": "^8.6.0",
1251 | "acorn-jsx": "^5.3.1",
1252 | "eslint-visitor-keys": "^3.1.0"
1253 | }
1254 | },
1255 | "esquery": {
1256 | "version": "1.4.0",
1257 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
1258 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
1259 | "dev": true,
1260 | "requires": {
1261 | "estraverse": "^5.1.0"
1262 | }
1263 | },
1264 | "esrecurse": {
1265 | "version": "4.3.0",
1266 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
1267 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1268 | "dev": true,
1269 | "requires": {
1270 | "estraverse": "^5.2.0"
1271 | }
1272 | },
1273 | "estraverse": {
1274 | "version": "5.3.0",
1275 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
1276 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1277 | "dev": true
1278 | },
1279 | "esutils": {
1280 | "version": "2.0.3",
1281 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1282 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1283 | "dev": true
1284 | },
1285 | "fast-deep-equal": {
1286 | "version": "3.1.3",
1287 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1288 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1289 | "dev": true
1290 | },
1291 | "fast-json-stable-stringify": {
1292 | "version": "2.1.0",
1293 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1294 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1295 | "dev": true
1296 | },
1297 | "fast-levenshtein": {
1298 | "version": "2.0.6",
1299 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1300 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1301 | "dev": true
1302 | },
1303 | "file-entry-cache": {
1304 | "version": "6.0.1",
1305 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
1306 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
1307 | "dev": true,
1308 | "requires": {
1309 | "flat-cache": "^3.0.4"
1310 | }
1311 | },
1312 | "flat-cache": {
1313 | "version": "3.0.4",
1314 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
1315 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
1316 | "dev": true,
1317 | "requires": {
1318 | "flatted": "^3.1.0",
1319 | "rimraf": "^3.0.2"
1320 | }
1321 | },
1322 | "flatted": {
1323 | "version": "3.2.4",
1324 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
1325 | "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
1326 | "dev": true
1327 | },
1328 | "fs.realpath": {
1329 | "version": "1.0.0",
1330 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1331 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1332 | "dev": true
1333 | },
1334 | "functional-red-black-tree": {
1335 | "version": "1.0.1",
1336 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1337 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
1338 | "dev": true
1339 | },
1340 | "glob": {
1341 | "version": "7.2.0",
1342 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
1343 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
1344 | "dev": true,
1345 | "requires": {
1346 | "fs.realpath": "^1.0.0",
1347 | "inflight": "^1.0.4",
1348 | "inherits": "2",
1349 | "minimatch": "^3.0.4",
1350 | "once": "^1.3.0",
1351 | "path-is-absolute": "^1.0.0"
1352 | }
1353 | },
1354 | "glob-parent": {
1355 | "version": "6.0.2",
1356 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1357 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1358 | "dev": true,
1359 | "requires": {
1360 | "is-glob": "^4.0.3"
1361 | }
1362 | },
1363 | "globals": {
1364 | "version": "13.12.0",
1365 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
1366 | "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
1367 | "dev": true,
1368 | "requires": {
1369 | "type-fest": "^0.20.2"
1370 | }
1371 | },
1372 | "has-flag": {
1373 | "version": "4.0.0",
1374 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1375 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1376 | "dev": true
1377 | },
1378 | "ignore": {
1379 | "version": "4.0.6",
1380 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1381 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1382 | "dev": true
1383 | },
1384 | "import-fresh": {
1385 | "version": "3.3.0",
1386 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1387 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1388 | "dev": true,
1389 | "requires": {
1390 | "parent-module": "^1.0.0",
1391 | "resolve-from": "^4.0.0"
1392 | }
1393 | },
1394 | "imurmurhash": {
1395 | "version": "0.1.4",
1396 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1397 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1398 | "dev": true
1399 | },
1400 | "inflight": {
1401 | "version": "1.0.6",
1402 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1403 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1404 | "dev": true,
1405 | "requires": {
1406 | "once": "^1.3.0",
1407 | "wrappy": "1"
1408 | }
1409 | },
1410 | "inherits": {
1411 | "version": "2.0.4",
1412 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1413 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1414 | "dev": true
1415 | },
1416 | "is-extglob": {
1417 | "version": "2.1.1",
1418 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1419 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1420 | "dev": true
1421 | },
1422 | "is-glob": {
1423 | "version": "4.0.3",
1424 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1425 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1426 | "dev": true,
1427 | "requires": {
1428 | "is-extglob": "^2.1.1"
1429 | }
1430 | },
1431 | "isexe": {
1432 | "version": "2.0.0",
1433 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1434 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1435 | "dev": true
1436 | },
1437 | "js-yaml": {
1438 | "version": "4.1.0",
1439 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
1440 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
1441 | "dev": true,
1442 | "requires": {
1443 | "argparse": "^2.0.1"
1444 | }
1445 | },
1446 | "json-schema-traverse": {
1447 | "version": "0.4.1",
1448 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1449 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1450 | "dev": true
1451 | },
1452 | "json-stable-stringify-without-jsonify": {
1453 | "version": "1.0.1",
1454 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1455 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1456 | "dev": true
1457 | },
1458 | "levn": {
1459 | "version": "0.4.1",
1460 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
1461 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1462 | "dev": true,
1463 | "requires": {
1464 | "prelude-ls": "^1.2.1",
1465 | "type-check": "~0.4.0"
1466 | }
1467 | },
1468 | "lodash.merge": {
1469 | "version": "4.6.2",
1470 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1471 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1472 | "dev": true
1473 | },
1474 | "lru-cache": {
1475 | "version": "6.0.0",
1476 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1477 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1478 | "dev": true,
1479 | "requires": {
1480 | "yallist": "^4.0.0"
1481 | }
1482 | },
1483 | "minimatch": {
1484 | "version": "3.0.4",
1485 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1486 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1487 | "dev": true,
1488 | "requires": {
1489 | "brace-expansion": "^1.1.7"
1490 | }
1491 | },
1492 | "ms": {
1493 | "version": "2.1.2",
1494 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1495 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1496 | "dev": true
1497 | },
1498 | "natural-compare": {
1499 | "version": "1.4.0",
1500 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1501 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1502 | "dev": true
1503 | },
1504 | "once": {
1505 | "version": "1.4.0",
1506 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1507 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1508 | "dev": true,
1509 | "requires": {
1510 | "wrappy": "1"
1511 | }
1512 | },
1513 | "optionator": {
1514 | "version": "0.9.1",
1515 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
1516 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
1517 | "dev": true,
1518 | "requires": {
1519 | "deep-is": "^0.1.3",
1520 | "fast-levenshtein": "^2.0.6",
1521 | "levn": "^0.4.1",
1522 | "prelude-ls": "^1.2.1",
1523 | "type-check": "^0.4.0",
1524 | "word-wrap": "^1.2.3"
1525 | }
1526 | },
1527 | "parent-module": {
1528 | "version": "1.0.1",
1529 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1530 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1531 | "dev": true,
1532 | "requires": {
1533 | "callsites": "^3.0.0"
1534 | }
1535 | },
1536 | "path-is-absolute": {
1537 | "version": "1.0.1",
1538 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1539 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1540 | "dev": true
1541 | },
1542 | "path-key": {
1543 | "version": "3.1.1",
1544 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1545 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1546 | "dev": true
1547 | },
1548 | "prelude-ls": {
1549 | "version": "1.2.1",
1550 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
1551 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
1552 | "dev": true
1553 | },
1554 | "progress": {
1555 | "version": "2.0.3",
1556 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1557 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1558 | "dev": true
1559 | },
1560 | "punycode": {
1561 | "version": "2.1.1",
1562 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1563 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1564 | "dev": true
1565 | },
1566 | "regexpp": {
1567 | "version": "3.2.0",
1568 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
1569 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
1570 | "dev": true
1571 | },
1572 | "resolve-from": {
1573 | "version": "4.0.0",
1574 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1575 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1576 | "dev": true
1577 | },
1578 | "rimraf": {
1579 | "version": "3.0.2",
1580 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1581 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1582 | "dev": true,
1583 | "requires": {
1584 | "glob": "^7.1.3"
1585 | }
1586 | },
1587 | "semver": {
1588 | "version": "7.3.5",
1589 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
1590 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
1591 | "dev": true,
1592 | "requires": {
1593 | "lru-cache": "^6.0.0"
1594 | }
1595 | },
1596 | "shebang-command": {
1597 | "version": "2.0.0",
1598 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1599 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1600 | "dev": true,
1601 | "requires": {
1602 | "shebang-regex": "^3.0.0"
1603 | }
1604 | },
1605 | "shebang-regex": {
1606 | "version": "3.0.0",
1607 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1608 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1609 | "dev": true
1610 | },
1611 | "strip-ansi": {
1612 | "version": "6.0.1",
1613 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1614 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1615 | "dev": true,
1616 | "requires": {
1617 | "ansi-regex": "^5.0.1"
1618 | }
1619 | },
1620 | "strip-json-comments": {
1621 | "version": "3.1.1",
1622 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
1623 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
1624 | "dev": true
1625 | },
1626 | "supports-color": {
1627 | "version": "7.2.0",
1628 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1629 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1630 | "dev": true,
1631 | "requires": {
1632 | "has-flag": "^4.0.0"
1633 | }
1634 | },
1635 | "text-table": {
1636 | "version": "0.2.0",
1637 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1638 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1639 | "dev": true
1640 | },
1641 | "type-check": {
1642 | "version": "0.4.0",
1643 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
1644 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
1645 | "dev": true,
1646 | "requires": {
1647 | "prelude-ls": "^1.2.1"
1648 | }
1649 | },
1650 | "type-fest": {
1651 | "version": "0.20.2",
1652 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
1653 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
1654 | "dev": true
1655 | },
1656 | "uri-js": {
1657 | "version": "4.4.1",
1658 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1659 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1660 | "dev": true,
1661 | "requires": {
1662 | "punycode": "^2.1.0"
1663 | }
1664 | },
1665 | "v8-compile-cache": {
1666 | "version": "2.3.0",
1667 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
1668 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
1669 | "dev": true
1670 | },
1671 | "which": {
1672 | "version": "2.0.2",
1673 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1674 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1675 | "dev": true,
1676 | "requires": {
1677 | "isexe": "^2.0.0"
1678 | }
1679 | },
1680 | "word-wrap": {
1681 | "version": "1.2.3",
1682 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1683 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1684 | "dev": true
1685 | },
1686 | "wrappy": {
1687 | "version": "1.0.2",
1688 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1689 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1690 | "dev": true
1691 | },
1692 | "yallist": {
1693 | "version": "4.0.0",
1694 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1695 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1696 | "dev": true
1697 | }
1698 | }
1699 | }
1700 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "md-block",
3 | "version": "0.0.1",
4 | "description": "A custom element for rendering stylable (light DOM) Markdown",
5 | "main": "md-block.js",
6 | "scripts": {
7 | "test": "open index.html"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/LeaVerou/md-block.git"
12 | },
13 | "keywords": [
14 | "Markdown",
15 | "WebComponents",
16 | "CustomElements",
17 | "markdown-to-html",
18 | "marked",
19 | "Prism"
20 | ],
21 | "author": "Lea Verou",
22 | "license": "MIT",
23 | "bugs": {
24 | "url": "https://github.com/LeaVerou/md-block/issues"
25 | },
26 | "homepage": "https://md-block.verou.me",
27 | "devDependencies": {
28 | "eslint": "^8.3.0"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/prism.css:
--------------------------------------------------------------------------------
1 | /* PrismJS 1.25.0
2 | https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript&plugins=keep-markup+normalize-whitespace */
3 | code[class*=language-],pre[class*=language-]{color:#000;background:0 0;text-shadow:0 1px #fff;font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,pre[class*=language-]::-moz-selection{text-shadow:none;background:#b3d4fc}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection,pre[class*=language-]::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:#905}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#690}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:#9a6e3a;background:hsla(0,0%,100%,.5)}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.class-name,.token.function{color:#dd4a68}.token.important,.token.regex,.token.variable{color:#e90}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
4 |
--------------------------------------------------------------------------------
/prism.js:
--------------------------------------------------------------------------------
1 | /* PrismJS 1.25.0
2 | https://prismjs.com/download.html#themes=prism&languages=markup+markdown&plugins=keep-markup+normalize-whitespace */
3 | var _self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},Prism=function(u){var t=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,e={},M={manual:u.Prism&&u.Prism.manual,disableWorkerMessageHandler:u.Prism&&u.Prism.disableWorkerMessageHandler,util:{encode:function e(n){return n instanceof W?new W(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=l.reach);y+=m.value.length,m=m.next){var k=m.value;if(t.length>n.length)return;if(!(k instanceof W)){var x,b=1;if(h){if(!(x=z(p,y,n,f))||x.index>=n.length)break;var w=x.index,A=x.index+x[0].length,P=y;for(P+=m.value.length;P<=w;)m=m.next,P+=m.value.length;if(P-=m.value.length,y=P,m.value instanceof W)continue;for(var E=m;E!==t.tail&&(Pl.reach&&(l.reach=j);var C=m.prev;S&&(C=I(t,C,S),y+=S.length),q(t,C,b);var N=new W(o,g?M.tokenize(L,g):L,d,L);if(m=I(t,C,N),O&&I(t,m,O),1l.reach&&(l.reach=_.reach)}}}}}}(e,a,n,a.head,0),function(e){var n=[],t=e.head.next;for(;t!==e.tail;)n.push(t.value),t=t.next;return n}(a)},hooks:{all:{},add:function(e,n){var t=M.hooks.all;t[e]=t[e]||[],t[e].push(n)},run:function(e,n){var t=M.hooks.all[e];if(t&&t.length)for(var r,a=0;r=t[a++];)r(n)}},Token:W};function W(e,n,t,r){this.type=e,this.content=n,this.alias=t,this.length=0|(r||"").length}function z(e,n,t,r){e.lastIndex=n;var a=e.exec(t);if(a&&r&&a[1]){var i=a[1].length;a.index+=i,a[0]=a[0].slice(i)}return a}function i(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function I(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function q(e,n,t){for(var r=n.next,a=0;a"+a.content+""+a.tag+">"},!u.document)return u.addEventListener&&(M.disableWorkerMessageHandler||u.addEventListener("message",function(e){var n=JSON.parse(e.data),t=n.language,r=n.code,a=n.immediateClose;u.postMessage(M.highlight(r,M.languages[t],t)),a&&u.close()},!1)),M;var r=M.util.currentScript();function a(){M.manual||M.highlightAll()}if(r&&(M.filename=r.src,r.hasAttribute("data-manual")&&(M.manual=!0)),!M.manual){var l=document.readyState;"loading"===l||"interactive"===l&&r&&r.defer?document.addEventListener("DOMContentLoaded",a):window.requestAnimationFrame?window.requestAnimationFrame(a):window.setTimeout(a,16)}return M}(_self);"undefined"!=typeof module&&module.exports&&(module.exports=Prism),"undefined"!=typeof global&&(global.Prism=Prism);
4 | Prism.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/?[\da-f]{1,8};/i]},Prism.languages.markup.tag.inside["attr-value"].inside.entity=Prism.languages.markup.entity,Prism.languages.markup.doctype.inside["internal-subset"].inside=Prism.languages.markup,Prism.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(Prism.languages.markup.tag,"addInlined",{value:function(a,e){var s={};s["language-"+e]={pattern:/(^$)/i,lookbehind:!0,inside:Prism.languages[e]},s.cdata=/^$/i;var t={"included-cdata":{pattern://i,inside:s}};t["language-"+e]={pattern:/[\s\S]+/,inside:Prism.languages[e]};var n={};n[a]={pattern:RegExp("(<__[^>]*>)(?:))*\\]\\]>|(?!)".replace(/__/g,function(){return a}),"i"),lookbehind:!0,greedy:!0,inside:t},Prism.languages.insertBefore("markup","cdata",n)}}),Object.defineProperty(Prism.languages.markup.tag,"addAttribute",{value:function(a,e){Prism.languages.markup.tag.inside["special-attr"].push({pattern:RegExp("(^|[\"'\\s])(?:"+a+")\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))","i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[e,"language-"+e],inside:Prism.languages[e]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),Prism.languages.html=Prism.languages.markup,Prism.languages.mathml=Prism.languages.markup,Prism.languages.svg=Prism.languages.markup,Prism.languages.xml=Prism.languages.extend("markup",{}),Prism.languages.ssml=Prism.languages.xml,Prism.languages.atom=Prism.languages.xml,Prism.languages.rss=Prism.languages.xml;
5 | !function(s){function n(n){return n=n.replace(//g,function(){return"(?:\\\\.|[^\\\\\n\r]|(?:\n|\r\n?)(?![\r\n]))"}),RegExp("((?:^|[^\\\\])(?:\\\\{2})*)(?:"+n+")")}var e="(?:\\\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\\\|\r\n`])+",t="\\|?__(?:\\|__)+\\|?(?:(?:\n|\r\n?)|(?![^]))".replace(/__/g,function(){return e}),a="\\|?[ \t]*:?-{3,}:?[ \t]*(?:\\|[ \t]*:?-{3,}:?[ \t]*)+\\|?(?:\n|\r\n?)";s.languages.markdown=s.languages.extend("markup",{}),s.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:s.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+t+a+"(?:"+t+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+t+a+")(?:"+t+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(e),inside:s.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+t+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+t+"$"),inside:{"table-header":{pattern:RegExp(e),alias:"important",inside:s.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n("\\b__(?:(?!_)|_(?:(?!_))+_)+__\\b|\\*\\*(?:(?!\\*)|\\*(?:(?!\\*))+\\*)+\\*\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n("\\b_(?:(?!_)|__(?:(?!_))+__)+_\\b|\\*(?:(?!\\*)|\\*\\*(?:(?!\\*))+\\*\\*)+\\*"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n("(~~?)(?:(?!~))+\\2"),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n('!?\\[(?:(?!\\]))+\\](?:\\([^\\s)]+(?:[\t ]+"(?:\\\\.|[^"\\\\])*")?\\)|[ \t]?\\[(?:(?!\\]))+\\])'),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach(function(e){["url","bold","italic","strike","code-snippet"].forEach(function(n){e!==n&&(s.languages.markdown[e].inside.content.inside[n]=s.languages.markdown[n])})}),s.hooks.add("after-tokenize",function(n){"markdown"!==n.language&&"md"!==n.language||!function n(e){if(e&&"string"!=typeof e)for(var t=0,a=e.length;t",quot:'"'},u=String.fromCodePoint||String.fromCharCode;s.languages.md=s.languages.markdown}(Prism);
6 | "undefined"!=typeof Prism&&"undefined"!=typeof document&&document.createRange&&(Prism.plugins.KeepMarkup=!0,Prism.hooks.add("before-highlight",function(e){if(e.element.children.length&&Prism.util.isActive(e.element,"keep-markup",!0)){var o=Prism.util.isActive(e.element,"drop-tokens",!1),d=0,t=[];s(e.element),t.length&&(e.keepMarkup=t)}function r(e){if(function(e){return!o||"span"!==e.nodeName.toLowerCase()||!e.classList.contains("token")}(e)){var n={clone:e.cloneNode(!1),posOpen:d};t.push(n),s(e),n.posClose=d}else s(e)}function s(e){for(var n=0,o=e.childNodes.length;nn.node.posOpen&&(n.nodeStart=d,n.nodeStartPos=n.node.posOpen-n.pos),n.nodeStart&&n.pos+d.data.length>=n.node.posClose&&(n.nodeEnd=d,n.nodeEndPos=n.node.posClose-n.pos),n.pos+=d.data.length);if(n.nodeStart&&n.nodeEnd){var r=document.createRange();return r.setStart(n.nodeStart,n.nodeStartPos),r.setEnd(n.nodeEnd,n.nodeEndPos),n.node.clone.appendChild(r.extractContents()),r.insertNode(n.node.clone),r.detach(),!1}}return!0};n.keepMarkup.forEach(function(e){s(n.element,{node:e,pos:0})}),n.highlightedCode=n.element.innerHTML}}));
7 | !function(){if("undefined"!=typeof Prism){var i=Object.assign||function(e,n){for(var t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e};e.prototype={setDefaults:function(e){this.defaults=i(this.defaults,e)},normalize:function(e,n){for(var t in n=i(this.defaults,n)){var r=t.replace(/-(\w)/g,function(e,n){return n.toUpperCase()});"normalize"!==t&&"setDefaults"!==r&&n[t]&&this[r]&&(e=this[r].call(this,e,n[t]))}return e},leftTrim:function(e){return e.replace(/^\s+/,"")},rightTrim:function(e){return e.replace(/\s+$/,"")},tabsToSpaces:function(e,n){return n=0|n||4,e.replace(/\t/g,new Array(++n).join(" "))},spacesToTabs:function(e,n){return n=0|n||4,e.replace(RegExp(" {"+n+"}","g"),"\t")},removeTrailing:function(e){return e.replace(/\s*?$/gm,"")},removeInitialLineFeed:function(e){return e.replace(/^(?:\r?\n|\r)/,"")},removeIndent:function(e){var n=e.match(/^[^\S\n\r]*(?=\S)/gm);return n&&n[0].length?(n.sort(function(e,n){return e.length-n.length}),n[0].length?e.replace(RegExp("^"+n[0],"gm"),""):e):e},indent:function(e,n){return e.replace(/^[^\S\n\r]*(?=\S)/gm,new Array(++n).join("\t")+"$&")},breakLines:function(e,n){n=!0===n?80:0|n||80;for(var t=e.split("\n"),r=0;r header,
33 | nav,
34 | main,
35 | body > footer {
36 | padding: 1.5rem clamp(1rem, 50vw - 20rem, 20vw);
37 | }
38 |
39 | body > header {
40 | background: var(--main-color);
41 | color: white;
42 | text-align: center;
43 | }
44 |
45 | body > header h1 {
46 | margin: 0;
47 | font-size: 500%;
48 | }
49 |
50 | body > header h1::before {
51 | content: "";
52 | display: inline-block;
53 | vertical-align: middle;
54 | width: 1em;
55 | height: 1em;
56 | margin-right: .1em;
57 | background: url(logo.svg) center / contain no-repeat;
58 | transition: .4s;
59 | filter: drop-shadow(0 0 white);
60 | }
61 |
62 | @media (min-width: 1700px) {
63 | body > header h1::before {
64 | display: block;
65 | width: 2em;
66 | height: 2em;
67 | position: absolute;
68 | }
69 | }
70 |
71 | @keyframes crazy-shadow {
72 | 20% {
73 | filter: drop-shadow(var(--offset) var(--offset) white);
74 | transform: translate(0, 0);
75 | }
76 |
77 | 20.01% {
78 | filter: invert() drop-shadow(calc(-1 * var(--offset)) calc(-1 * var(--offset)) black);
79 | transform: translate(var(--offset), var(--offset));
80 | }
81 |
82 | 50% {
83 | filter: invert() drop-shadow(0 0 black);
84 | transform: translate(0, 0);
85 | }
86 |
87 | 70% {
88 | filter: invert() drop-shadow(var(--offset) var(--offset) black);
89 | transform: translate(0, 0);
90 | }
91 |
92 | 70.01% {
93 | filter: drop-shadow(calc(-1 * var(--offset)) calc(-1 * var(--offset)) white);
94 | transform: translate(var(--offset), var(--offset));
95 | }
96 | }
97 |
98 | body > header h1:hover::before {
99 | --offset: .2em;
100 | animation: crazy-shadow 10s infinite ;
101 | }
102 |
103 | body > header h2 {
104 | margin: 0;
105 | }
106 |
107 | body > header a {
108 | color: inherit;
109 | }
110 |
111 | main {
112 | flex: 1;
113 | }
114 |
115 | body > footer {
116 | background: hsl(var(--gray) / .2);
117 | }
118 |
119 | body > footer a {
120 | color: inherit;
121 | }
122 |
123 | table {
124 | border-spacing: 0;
125 | border-collapse: collapse;
126 | }
127 |
128 | th {
129 | background: hsl(var(--gray) / .1);
130 | }
131 |
132 | td, th {
133 | padding: .3em .5em;
134 | border: 1px solid rgb(0 0 0 / .2);
135 | }
136 |
137 | .demo-container {
138 | border: 1px solid hsl(var(--gray) / .2);
139 | box-shadow: 0 1px .3em -.1em rgb(0 0 0 / .2), -.5em -.5em 0 hsl(var(--main-color-hsl) / .1) inset;
140 | padding: 1em;
141 | margin: 1em -1em;
142 | display: grid;
143 | grid-template-areas: "header"
144 | "code"
145 | "demo";
146 | grid-gap: 1em;
147 | }
148 |
149 | @media (min-width: 600px) {
150 | .demo-container {
151 | grid-template-areas: "header header"
152 | "code demo";
153 | grid-template-columns: 1fr 1fr;
154 | grid-template-rows: auto auto;
155 | }
156 | }
157 |
158 | .demo-container header {
159 | display: flex;
160 | grid-area: header;
161 | }
162 |
163 | .demo-container header p {
164 | margin: 0;
165 | }
166 |
167 | .demo-container header > form {
168 | margin-left: auto;
169 | }
170 |
171 | .demo-container header button {
172 | white-space: nowrap;
173 | }
174 |
175 | .demo-code {
176 | grid-area: code;
177 | }
178 |
179 | .demo-output {
180 | grid-area: demo;
181 | }
182 |
183 | nav {
184 | display: flex;
185 | padding-top: 0;
186 | padding-bottom: 0;
187 | background: hsl(var(--main-color-hs) 65%);
188 | }
189 |
190 | nav > a {
191 | flex: 1;
192 | padding: .4em .5em;
193 | color: white;
194 | font-weight: bold;
195 | }
196 |
197 | nav > a:hover {
198 | background: linear-gradient(to right, hsl(var(--main-color-hs) 50%), hsl(var(--main-color-hs) 75%));
199 | }
200 |
201 | nav > a:where(:not(:hover)) {
202 | text-decoration: none;
203 | }
204 |
205 | #repl {
206 |
207 | }
208 |
209 | #repl_container {
210 | display: grid;
211 | grid-template-columns: repeat(3, minmax(0, 1fr));
212 | padding: 1em;
213 | gap: 1em;
214 | background: hsl(var(--gray) / .1);
215 | }
216 |
217 | #repl > h2 {
218 | margin: 0;
219 | margin-right: 1em;
220 | text-align: right;
221 | color: hsl(var(--gray) / .1);
222 | font-size: 400%;
223 | line-height: 1;
224 | height: .8em;
225 | letter-spacing: -.03em;
226 | overflow: hidden;
227 | }
228 |
229 | #repl_container > * {
230 |
231 | }
232 |
233 | #repl_container > [data-title]::before {
234 | content: attr(data-title);
235 | display: block;
236 | margin-bottom: 1rem;
237 | color: hsl(var(--gray));
238 | text-transform: uppercase;
239 | font: bold smaller/1 system-ui, sans-serif;
240 | }
241 |
242 | pre > code > div.prism-live,
243 | pre > code > textarea.prism-live {
244 | margin-left: 4ch;
245 | width: 100%;
246 | }
247 |
248 | #output_html {
249 | overflow: auto;
250 | }
251 |
252 | #repl pre:not(#rendering *) {
253 | background: transparent;
254 | }
255 |
256 | #repl :is(input, select) {
257 | background: white;
258 | padding: .2em .3em .1em;
259 | border-radius: .2em;
260 | line-height: 1;
261 | border: none;
262 | }
263 |
264 | pre[class] {
265 | background: hsl(var(--gray) / .1);
266 | }
--------------------------------------------------------------------------------
/tests.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | md-block Tests
7 |
8 |
9 |
10 |
16 |
17 |
18 |
19 | md-block Tests
20 |
21 |
22 | Basic functionality
23 |
24 |
25 |
26 |
27 |
28 | **foo**
29 |
30 | ```html
31 | <foo>
32 | ```
33 |
34 |
35 |
36 |
40 |
41 |
42 |
43 |
44 |
45 | **foo**
46 |
47 | ```html
48 | <foo>
49 | ```
50 |
51 |
52 |
53 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 | **Warning:** This should still have [Markdown](https://md-block.verou.me)
64 |
65 |
66 |
67 |
68 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | hmin
80 |
81 |
82 |
83 |
84 |
85 | # 1
86 | ## 2
87 | ### 3
88 | #### 4
89 | ##### 5
90 | ###### 6
91 |
92 |
93 |
94 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | blockquote
109 |
110 |
111 |
112 |
113 |
114 | > One long
115 | >markdown
116 | > blockquote area
117 | > with quotes > in quotes > in quotes
118 | > with spaces before
119 |
120 |
121 |
122 |
123 |
124 |
127 |
128 |
129 |
130 |
131 |
132 | Text above blockquote
133 | > Blockquote
134 |
135 |
136 |
137 |
138 |
139 |
143 |
144 |
145 |
146 |
147 |
148 | > Blockquote
149 |
150 | Text below blockquote
151 |
152 |
153 |
154 |
155 |
156 |
160 |
161 |
162 |
163 |
164 |
165 | Non-quoted > symbol in text
166 |
167 |
168 |
169 |
170 |
171 |
174 |
175 |
176 |
177 |
178 |
179 | > Escaped blockquote
180 |
181 |
182 |
183 |
184 |
185 |
188 |
189 |
190 |
191 |
192 |
193 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
--------------------------------------------------------------------------------