├── .eslintrc.json
├── .github
├── eslint.json
└── workflows
│ └── node.js.yml
├── .gitignore
├── LICENSE
├── README.md
├── bundle.js
├── package.json
├── rollup.config.js
├── src
└── index.js
├── test
├── .eslintrc.json
├── attributes-test.js
├── invalid-binding-test.js
├── invalid-empty-unquoted-attribute-value-test.js
├── invalid-rawtext-test.js
├── jsdom.js
├── snapshot-test.js
├── snapshots.js
└── snapshots
│ ├── booleanAttribute.html
│ ├── escapeEntity.html
│ ├── escapeIntoRawText.html
│ ├── escapeNonmatchingEndTagIntoRawText.html
│ ├── escapeTags.html
│ ├── escapeUnquotedAttribute.html
│ ├── interpolateFragment.html
│ ├── interpolateIntoRawText.html
│ ├── interpolateIntoRawTextWithNonmatchingEndTag.html
│ ├── interpolateIntoScript.html
│ ├── interpolateIntoStyle.html
│ ├── interpolateIntoTextarea.html
│ ├── interpolateIntoTitle.html
│ ├── interpolateSet.html
│ ├── interpolateSvgFragment.html
│ ├── interpolatedNode.html
│ ├── interpolatedNull.html
│ ├── interpolatedNumber.html
│ ├── interpolatedString.html
│ ├── interpolatedStyleObject.html
│ ├── interpolatedStyleObjectWithCustomProperty.html
│ ├── interpolatedStyleString.html
│ ├── optionalAttribute.html
│ ├── optionalText.html
│ ├── spreadAttributes.html
│ ├── staticExplicitSpan.html
│ ├── staticImpliedSpan.html
│ ├── staticNull.html
│ ├── staticSvg.html
│ ├── staticText.html
│ ├── trailingBooleanAttribute.html
│ ├── trailingUnquotedAttribute.html
│ ├── unquotedAttribute.html
│ ├── unquotedEmptyString.html
│ └── unquotedEmptyStringAfterPrefix.html
└── yarn.lock
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "eslint:recommended",
3 | "parserOptions": {
4 | "sourceType": "module",
5 | "ecmaVersion": 2020
6 | },
7 | "env": {
8 | "es6": true,
9 | "node": true,
10 | "browser": true
11 | },
12 | "rules": {
13 | "no-cond-assign": 0,
14 | "no-constant-condition": 0,
15 | "no-unexpected-multiline": 0,
16 | "comma-dangle": ["error", "never"],
17 | "semi": [2, "always"]
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.github/eslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "problemMatcher": [
3 | {
4 | "owner": "eslint-compact",
5 | "pattern": [
6 | {
7 | "regexp": "^(.+):\\sline\\s(\\d+),\\scol\\s(\\d+),\\s(Error|Warning|Info)\\s-\\s(.+)\\s\\((.+)\\)$",
8 | "file": 1,
9 | "line": 2,
10 | "column": 3,
11 | "severity": 4,
12 | "message": 5,
13 | "code": 6
14 | }
15 | ]
16 | }
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/.github/workflows/node.js.yml:
--------------------------------------------------------------------------------
1 | # https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
2 |
3 | name: Node.js CI
4 |
5 | on:
6 | push:
7 | branches: [ main ]
8 | pull_request:
9 | branches: [ main ]
10 |
11 | jobs:
12 | build:
13 |
14 | runs-on: ubuntu-latest
15 |
16 | strategy:
17 | matrix:
18 | node-version: [14.x]
19 |
20 | steps:
21 | - uses: actions/checkout@v2
22 | - name: Use Node.js ${{ matrix.node-version }}
23 | uses: actions/setup-node@v1
24 | with:
25 | node-version: ${{ matrix.node-version }}
26 | - run: yarn --frozen-lockfile
27 | - run: |
28 | echo ::add-matcher::.github/eslint.json
29 | yarn run eslint src test --format=compact
30 | - run: yarn test
31 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.sublime-workspace
2 | .DS_Store
3 | dist/
4 | node_modules
5 | npm-debug.log
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2019-2021 Observable, Inc.
2 |
3 | Permission to use, copy, modify, and/or distribute this software for any purpose
4 | with or without fee is hereby granted, provided that the above copyright notice
5 | and this permission notice appear in all copies.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
8 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
9 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
11 | OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
12 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
13 | THIS SOFTWARE.
14 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Hypertext Literal
2 |
3 | Hypertext Literal is a tagged template literal for HTML which interpolates values *based on context*, allowing automatic escaping and the interpolation of non-serializable values, such as event listeners, style objects, and other DOM nodes. It is inspired by [lit-html](https://lit-html.polymer-project.org/) and [HTM](https://github.com/developit/htm), and references the fantastically precise [HTML5 spec](https://html.spec.whatwg.org/multipage/parsing.html#tokenization).
4 |
5 | Hypertext Literal is open-sourced under the permissive ISC license, small (2KB), has no dependencies, and is available [on npm](https://www.npmjs.com/package/htl). To install:
6 |
7 | ```
8 | npm install htl
9 | ```
10 |
11 | See this README with live examples on Observable:
12 |
13 | https://observablehq.com/@observablehq/htl
14 |
15 | ## Why not concatenate?
16 |
17 | Surely the simplest way to generate web content is to write [HTML](https://developer.mozilla.org/en-US/docs/Web/HTML). Modern JavaScript makes it easier than ever to interpolate values into literal HTML thanks to [template literals](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals).
18 |
19 | ```js
20 | const value1 = "world";
21 | const html = `
Hello ${value1} `;
22 | ```
23 |
24 | Yet simple concatenation has two significant drawbacks.
25 |
26 | First, it confounds markup with text and other content. If an interpolated value happens to include characters that are meaningful markup, the result may render unexpectedly. An ampersand (&) can be interpreted as a character entity reference, for instance.
27 |
28 | ```js
29 | const value2 = "dollars£s";
30 | const html = `My favorite currencies are ${value2}.`;
31 | ```
32 |
33 | This can be fixed by escaping (say replacing ampersands with the corresponding entity, `&`). But you must remember to escape every time you interpolate, which is tedious! And it’s easy to forget when many values work as intended without it.
34 |
35 | ```js
36 | const html = `My favorite currencies are ${value2.replace(/&/g, "&")}.`;
37 | ```
38 |
39 | Second, concatenation impedes composition: interpolated content must be serialized as markup. You cannot combine literal HTML with content created by the DOM API, or a library such as React or D3. And some content, such as event listeners implemented as closures, can’t be serialized!
40 |
41 | ## Features
42 |
43 | Hypertext Literal is a tagged template literal that renders the specified markup as an element, text node, or null as appropriate.
44 |
45 | ```js
46 | html`I’m an element! ` // returns an element
47 | ```
48 | ```js
49 | html`I’m simply text.` // returns a text node
50 | ```
51 | ```js
52 | html`` // returns null
53 | ```
54 |
55 | If multiple top-level nodes are given, the nodes are implicitly wrapped in a SPAN element.
56 |
57 | ```js
58 | html`I’m an implicit span.` // returns a element
59 | ```
60 |
61 | If you’d prefer a [document fragment](https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment) instead, as when composing hypertext literal fragments, call html.fragment.
62 |
63 | ```js
64 | html.fragment`I’m a document fragment .` // returns a DocumentFragment
65 | ```
66 |
67 | ### Automatic escaping
68 |
69 | If a value is interpolated into an attribute value or data, it is escaped appropriately so as to not change the structure of the surrounding markup.
70 |
71 | ```js
72 | html`Look, Ma, ${"automatic escaping "}!`
73 | ```
74 | ```js
75 | html`This text has color. `
76 | ```
77 |
78 | In cases where it is not possible to interpolate safely, namely with script and style elements where the interpolated value contains the corresponding end tag, an error is thrown.
79 |
80 | ```js
81 | html`"}` // Error: unsafe raw text
82 | ```
83 |
84 | ### Styles
85 |
86 | You can safely interpolate into style properties, too, by specifying the style attribute as an object literal.
87 |
88 | ```js
89 | html`It’s all yellow! `
90 | ```
91 |
92 | You can interpolate into a style attribute as a string, too, but use caution: automatic escaping will still allow you to set multiple style properties this way, or to generate invalid CSS.
93 |
94 | ```js
95 | html`It’s yellow (and italic). `
96 | ```
97 |
98 | ### Function attributes
99 |
100 | If an attribute value is a function, it is assigned as a property. This can be used to register event listeners.
101 |
102 | ```js
103 | html` alert("hello!")}>click me `
104 | ```
105 |
106 | ### Boolean attributes
107 |
108 | If an attribute value is false, it’s as if the attribute hadn’t been specified. If an attribute value is true, it’s equivalent to the empty string.
109 |
110 | ```js
111 | html`Can’t click me `
112 | ```
113 |
114 | ### Optional values
115 |
116 | If an attribute value is null or undefined, it’s as if the attribute hadn’t been specified. If a data value is null or undefined, nothing is embedded.
117 |
118 | ```js
119 | html`Can click me ` // enabled!
120 | ```
121 | ```js
122 | html`There’s no ${null} here.` // “There’s no here.”
123 | ```
124 | ```js
125 | html`${html``}` // returns null
126 | ```
127 |
128 | ### Spread attributes
129 |
130 | You can set multiple attributes (or styles, or event listeners) by interpolating an object in place of attributes.
131 |
132 | ```js
133 | html`whoa `
134 | ```
135 | ```js
136 | html`hover me `
142 | ```
143 |
144 | ### Node values
145 |
146 | If an interpolated data value is a node, it is inserted into the result at the corresponding location. So if you have a function that generates a node (say itself using hypertext literal), you can embed the result into another hypertext literal.
147 |
148 | ```js
149 | function emphasize(text) {
150 | return html`${text} `;
151 | }
152 | ```
153 | ```js
154 | html`This is ${emphasize("really")} important.`
155 | ```
156 |
157 | ### Iterable values
158 |
159 | You can interpolate iterables into data, too, even iterables of nodes. This is useful for mapping data to content via [*array*.map](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) or [Array.from](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from). Typically, you should use html.fragment for the embedded expressions.
160 |
161 | ```js
162 | html`
163 | # Color Swatch
164 | ${d3.schemeCategory10.map((color, i) => html.fragment`
165 | ${i}
166 | ${color}
167 |
168 | `)}
169 |
`
170 | ```
171 | ```js
172 | html`It’s as easy as ${new Set([1, 2, 3])}.`
173 | ```
174 |
175 | ### SVG
176 |
177 | You can create contextual SVG fragments using hypertext literals, too.
178 |
179 | ```js
180 | svg`
181 | ${svg.fragment` `}
182 | `
183 | ```
184 |
185 | ### Errors on invalid bindings
186 |
187 | Hypertext literal tolerates malformed input—per the HTML5 specification—but it still tries to be helpful by throwing an error if you interpolate a value into an unexpected place. For instance, it doesn’t allow dynamic tag names.
188 |
189 | ```js
190 | html`<${"button"}>Does this work?>` // Error: invalid binding
191 | ```
192 |
193 | ### Use with DOM API
194 |
195 | You can put the element (or text node, or fragment) produced from a hypertext literal directly into the DOM:
196 |
197 | ```js
198 | const subject = "world";
199 | document.body.appendChild(html`Hello, ${subject}! `);
200 | ```
201 |
202 | ## How it works
203 |
204 | Under the hood, hypertext literal implements a subset of the [HTML5 tokenizer](https://html.spec.whatwg.org/multipage/parsing.html#tokenization) state machine. This allows it to distinguish between tags, attributes, and the like. And so wherever an embedded expression occurs, it can be interpreted correctly.
205 |
206 | Our approach is more formal (and, if you like, more precise) than lit-html, which uses regular expressions to search for “attribute-like sequences” in markup. And while our approach requires scanning the input, the state machine is pretty fast.
207 |
208 | Also unlike lit-html, hypertext literal directly creates content rather than reusable templates. Hypertext literal is thus well-suited to Observable, where our [dataflow runtime](/@observablehq/how-observable-runs) runs cells automatically when inputs change. If you want incremental updates for performance (or transitions), you can opt-in, but it’s nice to keep things simple by default.
209 |
210 | We also wanted to minimize new syntax. We were inspired by [HTM](https://github.com/developit/htm), but HTM emulates JSX—not HTML5—requiring closing tags for every element. HTM’s approach would also need to be adapted for contextual namespaces, such as SVG, since it creates content bottom-up.
211 |
212 | For a closer look at our implementation, please view the source and let us know what you think! We welcome your contributions and bug reports on GitHub.
213 |
--------------------------------------------------------------------------------
/bundle.js:
--------------------------------------------------------------------------------
1 | export {version} from "./package.json";
2 | export * from "./src/index.js";
3 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "htl",
3 | "version": "0.3.1",
4 | "description": "Hypertext Literal",
5 | "type": "module",
6 | "main": "src/index.js",
7 | "module": "src/index.js",
8 | "jsdelivr": "dist/htl.min.js",
9 | "unpkg": "dist/htl.min.js",
10 | "exports": {
11 | "umd": "./dist/htl.min.js",
12 | "default": "./src/index.js"
13 | },
14 | "author": {
15 | "name": "Mike Bostock",
16 | "url": "https://bost.ocks.org/mike"
17 | },
18 | "homepage": "https://github.com/observablehq/htl",
19 | "license": "ISC",
20 | "files": [
21 | "dist/**/*.js",
22 | "src/**/*.js"
23 | ],
24 | "sideEffects": false,
25 | "scripts": {
26 | "test": "mocha 'test/**/*-test.js' && eslint src test",
27 | "prepublishOnly": "rm -rf dist && rollup -c && git push",
28 | "postpublish": "git push --tags"
29 | },
30 | "devDependencies": {
31 | "@rollup/plugin-json": "4",
32 | "eslint": "7",
33 | "he": "1",
34 | "js-beautify": "1",
35 | "jsdom": "17",
36 | "mocha": "9",
37 | "rollup": "2",
38 | "rollup-plugin-terser": "7"
39 | },
40 | "engines": {
41 | "node": ">=12"
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/rollup.config.js:
--------------------------------------------------------------------------------
1 | import {readFileSync} from "fs";
2 | import json from "@rollup/plugin-json";
3 | import {terser} from "rollup-plugin-terser";
4 | import * as meta from "./package.json";
5 |
6 | // Extract copyrights from the LICENSE.
7 | const copyright = readFileSync("./LICENSE", "utf-8")
8 | .split(/\n/g)
9 | .filter(line => /^Copyright\s+/.test(line))
10 | .map(line => line.replace(/^Copyright\s+/, ""))
11 | .join(", ");
12 |
13 | const config = {
14 | input: "bundle.js",
15 | output: {
16 | file: `dist/${meta.name}.js`,
17 | name: "htl",
18 | format: "umd",
19 | indent: false,
20 | extend: false,
21 | banner: `// ${meta.homepage} v${meta.version} Copyright ${copyright}`
22 | },
23 | plugins: [
24 | json()
25 | ]
26 | };
27 |
28 | export default [
29 | config,
30 | {
31 | ...config,
32 | output: {
33 | ...config.output,
34 | file: `dist/${meta.name}.min.js`
35 | },
36 | plugins: [
37 | ...config.plugins,
38 | terser({
39 | output: {
40 | preamble: config.output.banner
41 | }
42 | })
43 | ]
44 | }
45 | ];
46 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | function renderHtml(string) {
2 | const template = document.createElement("template");
3 | template.innerHTML = string;
4 | return document.importNode(template.content, true);
5 | }
6 |
7 | function renderSvg(string) {
8 | const g = document.createElementNS("http://www.w3.org/2000/svg", "g");
9 | g.innerHTML = string;
10 | return g;
11 | }
12 |
13 | export const html = Object.assign(hypertext(renderHtml, fragment => {
14 | if (fragment.firstChild === null) return null;
15 | if (fragment.firstChild === fragment.lastChild) return fragment.removeChild(fragment.firstChild);
16 | const span = document.createElement("span");
17 | span.appendChild(fragment);
18 | return span;
19 | }), {fragment: hypertext(renderHtml, fragment => fragment)});
20 |
21 | export const svg = Object.assign(hypertext(renderSvg, g => {
22 | if (g.firstChild === null) return null;
23 | if (g.firstChild === g.lastChild) return g.removeChild(g.firstChild);
24 | return g;
25 | }), {fragment: hypertext(renderSvg, g => {
26 | const fragment = document.createDocumentFragment();
27 | while (g.firstChild) fragment.appendChild(g.firstChild);
28 | return fragment;
29 | })});
30 |
31 | const
32 | CODE_TAB = 9,
33 | CODE_LF = 10,
34 | CODE_FF = 12,
35 | CODE_CR = 13,
36 | CODE_SPACE = 32,
37 | CODE_UPPER_A = 65,
38 | CODE_UPPER_Z = 90,
39 | CODE_LOWER_A = 97,
40 | CODE_LOWER_Z = 122,
41 | CODE_LT = 60,
42 | CODE_GT = 62,
43 | CODE_SLASH = 47,
44 | CODE_DASH = 45,
45 | CODE_BANG = 33,
46 | CODE_EQ = 61,
47 | CODE_DQUOTE = 34,
48 | CODE_SQUOTE = 39,
49 | CODE_QUESTION = 63,
50 | STATE_DATA = 1,
51 | STATE_TAG_OPEN = 2,
52 | STATE_END_TAG_OPEN = 3,
53 | STATE_TAG_NAME = 4,
54 | STATE_BOGUS_COMMENT = 5,
55 | STATE_BEFORE_ATTRIBUTE_NAME = 6,
56 | STATE_AFTER_ATTRIBUTE_NAME = 7,
57 | STATE_ATTRIBUTE_NAME = 8,
58 | STATE_BEFORE_ATTRIBUTE_VALUE = 9,
59 | STATE_ATTRIBUTE_VALUE_DOUBLE_QUOTED = 10,
60 | STATE_ATTRIBUTE_VALUE_SINGLE_QUOTED = 11,
61 | STATE_ATTRIBUTE_VALUE_UNQUOTED = 12,
62 | STATE_AFTER_ATTRIBUTE_VALUE_QUOTED = 13,
63 | STATE_SELF_CLOSING_START_TAG = 14,
64 | STATE_COMMENT_START = 15,
65 | STATE_COMMENT_START_DASH = 16,
66 | STATE_COMMENT = 17,
67 | STATE_COMMENT_LESS_THAN_SIGN = 18,
68 | STATE_COMMENT_LESS_THAN_SIGN_BANG = 19,
69 | STATE_COMMENT_LESS_THAN_SIGN_BANG_DASH = 20,
70 | STATE_COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH = 21,
71 | STATE_COMMENT_END_DASH = 22,
72 | STATE_COMMENT_END = 23,
73 | STATE_COMMENT_END_BANG = 24,
74 | STATE_MARKUP_DECLARATION_OPEN = 25,
75 | STATE_RAWTEXT = 26,
76 | STATE_RAWTEXT_LESS_THAN_SIGN = 27,
77 | STATE_RAWTEXT_END_TAG_OPEN = 28,
78 | STATE_RAWTEXT_END_TAG_NAME = 29,
79 | SHOW_COMMENT = 128,
80 | SHOW_ELEMENT = 1,
81 | TYPE_COMMENT = 8,
82 | TYPE_ELEMENT = 1,
83 | NS_SVG = "http://www.w3.org/2000/svg",
84 | NS_XLINK = "http://www.w3.org/1999/xlink",
85 | NS_XML = "http://www.w3.org/XML/1998/namespace",
86 | NS_XMLNS = "http://www.w3.org/2000/xmlns/";
87 |
88 | const svgAdjustAttributes = new Map([
89 | "attributeName",
90 | "attributeType",
91 | "baseFrequency",
92 | "baseProfile",
93 | "calcMode",
94 | "clipPathUnits",
95 | "diffuseConstant",
96 | "edgeMode",
97 | "filterUnits",
98 | "glyphRef",
99 | "gradientTransform",
100 | "gradientUnits",
101 | "kernelMatrix",
102 | "kernelUnitLength",
103 | "keyPoints",
104 | "keySplines",
105 | "keyTimes",
106 | "lengthAdjust",
107 | "limitingConeAngle",
108 | "markerHeight",
109 | "markerUnits",
110 | "markerWidth",
111 | "maskContentUnits",
112 | "maskUnits",
113 | "numOctaves",
114 | "pathLength",
115 | "patternContentUnits",
116 | "patternTransform",
117 | "patternUnits",
118 | "pointsAtX",
119 | "pointsAtY",
120 | "pointsAtZ",
121 | "preserveAlpha",
122 | "preserveAspectRatio",
123 | "primitiveUnits",
124 | "refX",
125 | "refY",
126 | "repeatCount",
127 | "repeatDur",
128 | "requiredExtensions",
129 | "requiredFeatures",
130 | "specularConstant",
131 | "specularExponent",
132 | "spreadMethod",
133 | "startOffset",
134 | "stdDeviation",
135 | "stitchTiles",
136 | "surfaceScale",
137 | "systemLanguage",
138 | "tableValues",
139 | "targetX",
140 | "targetY",
141 | "textLength",
142 | "viewBox",
143 | "viewTarget",
144 | "xChannelSelector",
145 | "yChannelSelector",
146 | "zoomAndPan"
147 | ].map(name => [name.toLowerCase(), name]));
148 |
149 | const svgForeignAttributes = new Map([
150 | ["xlink:actuate", NS_XLINK],
151 | ["xlink:arcrole", NS_XLINK],
152 | ["xlink:href", NS_XLINK],
153 | ["xlink:role", NS_XLINK],
154 | ["xlink:show", NS_XLINK],
155 | ["xlink:title", NS_XLINK],
156 | ["xlink:type", NS_XLINK],
157 | ["xml:lang", NS_XML],
158 | ["xml:space", NS_XML],
159 | ["xmlns", NS_XMLNS],
160 | ["xmlns:xlink", NS_XMLNS]
161 | ]);
162 |
163 | function hypertext(render, postprocess) {
164 | return function({raw: strings}) {
165 | let state = STATE_DATA;
166 | let string = "";
167 | let tagNameStart; // either an open tag or an end tag
168 | let tagName; // only open; beware nesting! used only for rawtext
169 | let attributeNameStart;
170 | let attributeNameEnd;
171 | let nodeFilter = 0;
172 |
173 | for (let j = 0, m = arguments.length; j < m; ++j) {
174 | const input = strings[j];
175 |
176 | if (j > 0) {
177 | const value = arguments[j];
178 | switch (state) {
179 | case STATE_RAWTEXT: {
180 | if (value != null) {
181 | const text = `${value}`;
182 | if (isEscapableRawText(tagName)) {
183 | string += text.replace(/[<]/g, entity);
184 | } else if (new RegExp(`${tagName}[\\s>/]`, "i").test(string.slice(-tagName.length - 2) + text)) {
185 | throw new Error("unsafe raw text"); // appropriate end tag
186 | } else {
187 | string += text;
188 | }
189 | }
190 | break;
191 | }
192 | case STATE_DATA: {
193 | if (value == null) {
194 | // ignore
195 | } else if (value instanceof Node
196 | || (typeof value !== "string" && value[Symbol.iterator])
197 | || (/(?:^|>)$/.test(strings[j - 1]) && /^(?:<|$)/.test(input))) {
198 | string += "";
199 | nodeFilter |= SHOW_COMMENT;
200 | } else {
201 | string += `${value}`.replace(/[<&]/g, entity);
202 | }
203 | break;
204 | }
205 | case STATE_BEFORE_ATTRIBUTE_VALUE: {
206 | state = STATE_ATTRIBUTE_VALUE_UNQUOTED;
207 | let text;
208 | if (/^[\s>]/.test(input)) {
209 | if (value == null || value === false) {
210 | string = string.slice(0, attributeNameStart - strings[j - 1].length);
211 | break;
212 | }
213 | if (value === true || (text = `${value}`) === "") {
214 | string += "''";
215 | break;
216 | }
217 | const name = strings[j - 1].slice(attributeNameStart, attributeNameEnd);
218 | if ((name === "style" && isObjectLiteral(value)) || typeof value === "function") {
219 | string += "::" + j;
220 | nodeFilter |= SHOW_ELEMENT;
221 | break;
222 | }
223 | }
224 | if (text === undefined) text = `${value}`;
225 | if (text === "") throw new Error("unsafe unquoted empty string");
226 | string += text.replace(/^['"]|[\s>&]/g, entity);
227 | break;
228 | }
229 | case STATE_ATTRIBUTE_VALUE_UNQUOTED: {
230 | string += `${value}`.replace(/[\s>&]/g, entity);
231 | break;
232 | }
233 | case STATE_ATTRIBUTE_VALUE_SINGLE_QUOTED: {
234 | string += `${value}`.replace(/['&]/g, entity);
235 | break;
236 | }
237 | case STATE_ATTRIBUTE_VALUE_DOUBLE_QUOTED: {
238 | string += `${value}`.replace(/["&]/g, entity);
239 | break;
240 | }
241 | case STATE_BEFORE_ATTRIBUTE_NAME: {
242 | if (isObjectLiteral(value)) {
243 | string += "::" + j + "=''";
244 | nodeFilter |= SHOW_ELEMENT;
245 | break;
246 | }
247 | throw new Error("invalid binding");
248 | }
249 | case STATE_COMMENT: break;
250 | default: throw new Error("invalid binding");
251 | }
252 | }
253 |
254 | for (let i = 0, n = input.length; i < n; ++i) {
255 | const code = input.charCodeAt(i);
256 |
257 | switch (state) {
258 | case STATE_DATA: {
259 | if (code === CODE_LT) {
260 | state = STATE_TAG_OPEN;
261 | }
262 | break;
263 | }
264 | case STATE_TAG_OPEN: {
265 | if (code === CODE_BANG) {
266 | state = STATE_MARKUP_DECLARATION_OPEN;
267 | } else if (code === CODE_SLASH) {
268 | state = STATE_END_TAG_OPEN;
269 | } else if (isAsciiAlphaCode(code)) {
270 | tagNameStart = i, tagName = undefined;
271 | state = STATE_TAG_NAME, --i;
272 | } else if (code === CODE_QUESTION) {
273 | state = STATE_BOGUS_COMMENT, --i;
274 | } else {
275 | state = STATE_DATA, --i;
276 | }
277 | break;
278 | }
279 | case STATE_END_TAG_OPEN: {
280 | if (isAsciiAlphaCode(code)) {
281 | state = STATE_TAG_NAME, --i;
282 | } else if (code === CODE_GT) {
283 | state = STATE_DATA;
284 | } else {
285 | state = STATE_BOGUS_COMMENT, --i;
286 | }
287 | break;
288 | }
289 | case STATE_TAG_NAME: {
290 | if (isSpaceCode(code)) {
291 | state = STATE_BEFORE_ATTRIBUTE_NAME;
292 | tagName = lower(input, tagNameStart, i);
293 | } else if (code === CODE_SLASH) {
294 | state = STATE_SELF_CLOSING_START_TAG;
295 | } else if (code === CODE_GT) {
296 | tagName = lower(input, tagNameStart, i);
297 | state = isRawText(tagName) ? STATE_RAWTEXT : STATE_DATA;
298 | }
299 | break;
300 | }
301 | case STATE_BEFORE_ATTRIBUTE_NAME: {
302 | if (isSpaceCode(code)) {
303 | // continue
304 | } else if (code === CODE_SLASH || code === CODE_GT) {
305 | state = STATE_AFTER_ATTRIBUTE_NAME, --i;
306 | } else if (code === CODE_EQ) {
307 | state = STATE_ATTRIBUTE_NAME;
308 | attributeNameStart = i + 1, attributeNameEnd = undefined;
309 | } else {
310 | state = STATE_ATTRIBUTE_NAME, --i;
311 | attributeNameStart = i + 1, attributeNameEnd = undefined;
312 | }
313 | break;
314 | }
315 | case STATE_ATTRIBUTE_NAME: {
316 | if (isSpaceCode(code) || code === CODE_SLASH || code === CODE_GT) {
317 | state = STATE_AFTER_ATTRIBUTE_NAME, --i;
318 | attributeNameEnd = i;
319 | } else if (code === CODE_EQ) {
320 | state = STATE_BEFORE_ATTRIBUTE_VALUE;
321 | attributeNameEnd = i;
322 | }
323 | break;
324 | }
325 | case STATE_AFTER_ATTRIBUTE_NAME: {
326 | if (isSpaceCode(code)) {
327 | // ignore
328 | } else if (code === CODE_SLASH) {
329 | state = STATE_SELF_CLOSING_START_TAG;
330 | } else if (code === CODE_EQ) {
331 | state = STATE_BEFORE_ATTRIBUTE_VALUE;
332 | } else if (code === CODE_GT) {
333 | state = isRawText(tagName) ? STATE_RAWTEXT : STATE_DATA;
334 | } else {
335 | state = STATE_ATTRIBUTE_NAME, --i;
336 | attributeNameStart = i + 1, attributeNameEnd = undefined;
337 | }
338 | break;
339 | }
340 | case STATE_BEFORE_ATTRIBUTE_VALUE: {
341 | if (isSpaceCode(code)) {
342 | // continue
343 | } else if (code === CODE_DQUOTE) {
344 | state = STATE_ATTRIBUTE_VALUE_DOUBLE_QUOTED;
345 | } else if (code === CODE_SQUOTE) {
346 | state = STATE_ATTRIBUTE_VALUE_SINGLE_QUOTED;
347 | } else if (code === CODE_GT) {
348 | state = isRawText(tagName) ? STATE_RAWTEXT : STATE_DATA;
349 | } else {
350 | state = STATE_ATTRIBUTE_VALUE_UNQUOTED, --i;
351 | }
352 | break;
353 | }
354 | case STATE_ATTRIBUTE_VALUE_DOUBLE_QUOTED: {
355 | if (code === CODE_DQUOTE) {
356 | state = STATE_AFTER_ATTRIBUTE_VALUE_QUOTED;
357 | }
358 | break;
359 | }
360 | case STATE_ATTRIBUTE_VALUE_SINGLE_QUOTED: {
361 | if (code === CODE_SQUOTE) {
362 | state = STATE_AFTER_ATTRIBUTE_VALUE_QUOTED;
363 | }
364 | break;
365 | }
366 | case STATE_ATTRIBUTE_VALUE_UNQUOTED: {
367 | if (isSpaceCode(code)) {
368 | state = STATE_BEFORE_ATTRIBUTE_NAME;
369 | } else if (code === CODE_GT) {
370 | state = isRawText(tagName) ? STATE_RAWTEXT : STATE_DATA;
371 | }
372 | break;
373 | }
374 | case STATE_AFTER_ATTRIBUTE_VALUE_QUOTED: {
375 | if (isSpaceCode(code)) {
376 | state = STATE_BEFORE_ATTRIBUTE_NAME;
377 | } else if (code === CODE_SLASH) {
378 | state = STATE_SELF_CLOSING_START_TAG;
379 | } else if (code === CODE_GT) {
380 | state = isRawText(tagName) ? STATE_RAWTEXT : STATE_DATA;
381 | } else {
382 | state = STATE_BEFORE_ATTRIBUTE_NAME, --i;
383 | }
384 | break;
385 | }
386 | case STATE_SELF_CLOSING_START_TAG: {
387 | if (code === CODE_GT) {
388 | state = STATE_DATA;
389 | } else {
390 | state = STATE_BEFORE_ATTRIBUTE_NAME, --i;
391 | }
392 | break;
393 | }
394 | case STATE_BOGUS_COMMENT: {
395 | if (code === CODE_GT) {
396 | state = STATE_DATA;
397 | }
398 | break;
399 | }
400 | case STATE_COMMENT_START: {
401 | if (code === CODE_DASH) {
402 | state = STATE_COMMENT_START_DASH;
403 | } else if (code === CODE_GT) {
404 | state = STATE_DATA;
405 | } else {
406 | state = STATE_COMMENT, --i;
407 | }
408 | break;
409 | }
410 | case STATE_COMMENT_START_DASH: {
411 | if (code === CODE_DASH) {
412 | state = STATE_COMMENT_END;
413 | } else if (code === CODE_GT) {
414 | state = STATE_DATA;
415 | } else {
416 | state = STATE_COMMENT, --i;
417 | }
418 | break;
419 | }
420 | case STATE_COMMENT: {
421 | if (code === CODE_LT) {
422 | state = STATE_COMMENT_LESS_THAN_SIGN;
423 | } else if (code === CODE_DASH) {
424 | state = STATE_COMMENT_END_DASH;
425 | }
426 | break;
427 | }
428 | case STATE_COMMENT_LESS_THAN_SIGN: {
429 | if (code === CODE_BANG) {
430 | state = STATE_COMMENT_LESS_THAN_SIGN_BANG;
431 | } else if (code !== CODE_LT) {
432 | state = STATE_COMMENT, --i;
433 | }
434 | break;
435 | }
436 | case STATE_COMMENT_LESS_THAN_SIGN_BANG: {
437 | if (code === CODE_DASH) {
438 | state = STATE_COMMENT_LESS_THAN_SIGN_BANG_DASH;
439 | } else {
440 | state = STATE_COMMENT, --i;
441 | }
442 | break;
443 | }
444 | case STATE_COMMENT_LESS_THAN_SIGN_BANG_DASH: {
445 | if (code === CODE_DASH) {
446 | state = STATE_COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;
447 | } else {
448 | state = STATE_COMMENT_END, --i;
449 | }
450 | break;
451 | }
452 | case STATE_COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {
453 | state = STATE_COMMENT_END, --i;
454 | break;
455 | }
456 | case STATE_COMMENT_END_DASH: {
457 | if (code === CODE_DASH) {
458 | state = STATE_COMMENT_END;
459 | } else {
460 | state = STATE_COMMENT, --i;
461 | }
462 | break;
463 | }
464 | case STATE_COMMENT_END: {
465 | if (code === CODE_GT) {
466 | state = STATE_DATA;
467 | } else if (code === CODE_BANG) {
468 | state = STATE_COMMENT_END_BANG;
469 | } else if (code !== CODE_DASH) {
470 | state = STATE_COMMENT, --i;
471 | }
472 | break;
473 | }
474 | case STATE_COMMENT_END_BANG: {
475 | if (code === CODE_DASH) {
476 | state = STATE_COMMENT_END_DASH;
477 | } else if (code === CODE_GT) {
478 | state = STATE_DATA;
479 | } else {
480 | state = STATE_COMMENT, --i;
481 | }
482 | break;
483 | }
484 | case STATE_MARKUP_DECLARATION_OPEN: {
485 | if (code === CODE_DASH && input.charCodeAt(i + 1) === CODE_DASH) {
486 | state = STATE_COMMENT_START, ++i;
487 | } else { // Note: CDATA and DOCTYPE unsupported!
488 | state = STATE_BOGUS_COMMENT, --i;
489 | }
490 | break;
491 | }
492 | case STATE_RAWTEXT: {
493 | if (code === CODE_LT) {
494 | state = STATE_RAWTEXT_LESS_THAN_SIGN;
495 | }
496 | break;
497 | }
498 | case STATE_RAWTEXT_LESS_THAN_SIGN: {
499 | if (code === CODE_SLASH) {
500 | state = STATE_RAWTEXT_END_TAG_OPEN;
501 | } else {
502 | state = STATE_RAWTEXT, --i;
503 | }
504 | break;
505 | }
506 | case STATE_RAWTEXT_END_TAG_OPEN: {
507 | if (isAsciiAlphaCode(code)) {
508 | tagNameStart = i;
509 | state = STATE_RAWTEXT_END_TAG_NAME, --i;
510 | } else {
511 | state = STATE_RAWTEXT, --i;
512 | }
513 | break;
514 | }
515 | case STATE_RAWTEXT_END_TAG_NAME: {
516 | if (isSpaceCode(code) && tagName === lower(input, tagNameStart, i)) {
517 | state = STATE_BEFORE_ATTRIBUTE_NAME;
518 | } else if (code === CODE_SLASH && tagName === lower(input, tagNameStart, i)) {
519 | state = STATE_SELF_CLOSING_START_TAG;
520 | } else if (code === CODE_GT && tagName === lower(input, tagNameStart, i)) {
521 | state = STATE_DATA;
522 | } else if (!isAsciiAlphaCode(code)) {
523 | state = STATE_RAWTEXT, --i;
524 | }
525 | break;
526 | }
527 | default: {
528 | state = undefined;
529 | break;
530 | }
531 | }
532 | }
533 |
534 | string += input;
535 | }
536 |
537 | const root = render(string);
538 |
539 | const walker = document.createTreeWalker(root, nodeFilter, null, false);
540 | const removeNodes = [];
541 | while (walker.nextNode()) {
542 | const node = walker.currentNode;
543 | switch (node.nodeType) {
544 | case TYPE_ELEMENT: {
545 | const attributes = node.attributes;
546 | for (let i = 0, n = attributes.length; i < n; ++i) {
547 | const {name, value: currentValue} = attributes[i];
548 | if (/^::/.test(name)) {
549 | const value = arguments[+name.slice(2)];
550 | removeAttribute(node, name), --i, --n;
551 | for (const key in value) {
552 | const subvalue = value[key];
553 | if (subvalue == null || subvalue === false) {
554 | // ignore
555 | } else if (typeof subvalue === "function") {
556 | node[key] = subvalue;
557 | } else if (key === "style" && isObjectLiteral(subvalue)) {
558 | setStyles(node[key], subvalue);
559 | } else {
560 | setAttribute(node, key, subvalue === true ? "" : subvalue);
561 | }
562 | }
563 | } else if (/^::/.test(currentValue)) {
564 | const value = arguments[+currentValue.slice(2)];
565 | removeAttribute(node, name), --i, --n;
566 | if (typeof value === "function") {
567 | node[name] = value;
568 | } else { // style
569 | setStyles(node[name], value);
570 | }
571 | }
572 | }
573 | break;
574 | }
575 | case TYPE_COMMENT: {
576 | if (/^::/.test(node.data)) {
577 | const parent = node.parentNode;
578 | const value = arguments[+node.data.slice(2)];
579 | if (value instanceof Node) {
580 | parent.insertBefore(value, node);
581 | } else if (typeof value !== "string" && value[Symbol.iterator]) {
582 | if (value instanceof NodeList || value instanceof HTMLCollection) {
583 | for (let i = value.length - 1, r = node; i >= 0; --i) {
584 | r = parent.insertBefore(value[i], r);
585 | }
586 | } else {
587 | for (const subvalue of value) {
588 | if (subvalue == null) continue;
589 | parent.insertBefore(subvalue instanceof Node ? subvalue : document.createTextNode(subvalue), node);
590 | }
591 | }
592 | } else {
593 | parent.insertBefore(document.createTextNode(value), node);
594 | }
595 | removeNodes.push(node);
596 | }
597 | break;
598 | }
599 | }
600 | }
601 |
602 | for (const node of removeNodes) {
603 | node.parentNode.removeChild(node);
604 | }
605 |
606 | return postprocess(root);
607 | };
608 | }
609 |
610 | function entity(character) {
611 | return `${character.charCodeAt(0).toString()};`;
612 | }
613 |
614 | function isAsciiAlphaCode(code) {
615 | return (CODE_UPPER_A <= code && code <= CODE_UPPER_Z)
616 | || (CODE_LOWER_A <= code && code <= CODE_LOWER_Z);
617 | }
618 |
619 | function isSpaceCode(code) {
620 | return code === CODE_TAB
621 | || code === CODE_LF
622 | || code === CODE_FF
623 | || code === CODE_SPACE
624 | || code === CODE_CR; // normalize newlines
625 | }
626 |
627 | function isObjectLiteral(value) {
628 | return value && value.toString === Object.prototype.toString;
629 | }
630 |
631 | function isRawText(tagName) {
632 | return tagName === "script" || tagName === "style" || isEscapableRawText(tagName);
633 | }
634 |
635 | function isEscapableRawText(tagName) {
636 | return tagName === "textarea" || tagName === "title";
637 | }
638 |
639 | function lower(input, start, end) {
640 | return input.slice(start, end).toLowerCase();
641 | }
642 |
643 | function setAttribute(node, name, value) {
644 | if (node.namespaceURI === NS_SVG) {
645 | name = name.toLowerCase();
646 | name = svgAdjustAttributes.get(name) || name;
647 | if (svgForeignAttributes.has(name)) {
648 | node.setAttributeNS(svgForeignAttributes.get(name), name, value);
649 | return;
650 | }
651 | }
652 | node.setAttribute(name, value);
653 | }
654 |
655 | function removeAttribute(node, name) {
656 | if (node.namespaceURI === NS_SVG) {
657 | name = name.toLowerCase();
658 | name = svgAdjustAttributes.get(name) || name;
659 | if (svgForeignAttributes.has(name)) {
660 | node.removeAttributeNS(svgForeignAttributes.get(name), name);
661 | return;
662 | }
663 | }
664 | node.removeAttribute(name);
665 | }
666 |
667 | // We can’t use Object.assign because custom properties…
668 | function setStyles(style, values) {
669 | for (const name in values) {
670 | const value = values[name];
671 | if (name.startsWith("--")) style.setProperty(name, value);
672 | else style[name] = value;
673 | }
674 | }
675 |
--------------------------------------------------------------------------------
/test/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "eslint:recommended",
3 | "parserOptions": {
4 | "sourceType": "module",
5 | "ecmaVersion": 2020
6 | },
7 | "env": {
8 | "es6": true,
9 | "node": true,
10 | "browser": true,
11 | "mocha": true
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/test/attributes-test.js:
--------------------------------------------------------------------------------
1 | import assert from "assert";
2 | import {html, svg} from "../src/index.js";
3 | import it from "./jsdom.js";
4 |
5 | const NS_XLINK = "http://www.w3.org/1999/xlink";
6 | const NS_XMLNS = "http://www.w3.org/2000/xmlns/";
7 |
8 | it("HTML attributes are implicitly lowercased", () => {
9 | assert.deepStrictEqual(localAttr(html``.attributes[0]), ["thething", "foo"]);
10 | });
11 |
12 | it("SVG attributes are implicitly case-corrected", () => {
13 | assert.deepStrictEqual(localAttr(svg``.attributes[0]), ["attributeName", "foo"]);
14 | assert.deepStrictEqual(localAttr(svg``.attributes[0]), ["unknown", "foo"]);
15 | });
16 |
17 | it("SVG foreign attributes are implicitly namespaced", () => {
18 | assert.deepStrictEqual(foreignAttr(svg``.attributes[0]), [NS_XLINK, "xlink", "title", "foo"]);
19 | assert.deepStrictEqual(foreignAttr(svg``.attributes[0]), [NS_XLINK, "xlink", "title", "foo"]);
20 | assert.deepStrictEqual(foreignAttr(svg``.attributes[0]), [NS_XMLNS, null, "xmlns", "foo"]);
21 | assert.deepStrictEqual(foreignAttr(svg``.attributes[0]), [NS_XMLNS, null, "xmlns", "foo"]);
22 | });
23 |
24 | it("unknown SVG foreign attributes are not implicitly namespaced", () => {
25 | assert.deepStrictEqual(foreignAttr(svg``.attributes[0]), [null, null, "xlink:foo", "bar"]);
26 | });
27 |
28 | function localAttr({name, value}) {
29 | return [name, value];
30 | }
31 |
32 | function foreignAttr({namespaceURI, prefix, localName, value}) {
33 | return [namespaceURI, prefix, localName, value];
34 | }
35 |
--------------------------------------------------------------------------------
/test/invalid-binding-test.js:
--------------------------------------------------------------------------------
1 | import assert from "assert";
2 | import {html} from "../src/index.js";
3 | import it from "./jsdom.js";
4 |
5 | it("interpolating into a tag name is not allowed", () => {
6 | assert.throws(() => html`<${"button"}>Does this work?>`, Error);
7 | });
8 |
--------------------------------------------------------------------------------
/test/invalid-empty-unquoted-attribute-value-test.js:
--------------------------------------------------------------------------------
1 | import assert from "assert";
2 | import {html} from "../src/index.js";
3 | import it from "./jsdom.js";
4 |
5 | it("interpolating an empty string with a suffix is not allowed", () => {
6 | assert.throws(() => html``, Error);
7 | assert.throws(() => html``, Error);
8 | assert.throws(() => html``, Error);
9 | assert.throws(() => html``, Error);
10 | });
11 |
--------------------------------------------------------------------------------
/test/invalid-rawtext-test.js:
--------------------------------------------------------------------------------
1 | import assert from "assert";
2 | import {html} from "../src/index.js";
3 | import it from "./jsdom.js";
4 |
5 | it("interpolating a value with an appropriate end tag into raw text is not allowed", () => {
6 | assert.throws(() => html`"}`, Error);
7 | assert.throws(() => html``, Error);
8 | assert.throws(() => html``, Error);
9 | assert.throws(() => html`"}`, Error);
10 | assert.throws(() => html`"}`, Error);
11 | assert.throws(() => html`"}`, Error);
12 | });
13 |
--------------------------------------------------------------------------------
/test/jsdom.js:
--------------------------------------------------------------------------------
1 | import {JSDOM} from "jsdom";
2 |
3 | export default function jsdomit(description, run) {
4 | return it(description, async () => {
5 | try {
6 | const window = new JSDOM("").window;
7 | global.document = window.document;
8 | global.Node = window.Node;
9 | global.NodeList = window.NodeList;
10 | global.HTMLCollection = window.HTMLCollection;
11 | return await run();
12 | } finally {
13 | delete global.document;
14 | delete global.Node;
15 | delete global.NodeList;
16 | delete global.HTMLCollection;
17 | }
18 | });
19 | }
20 |
--------------------------------------------------------------------------------
/test/snapshot-test.js:
--------------------------------------------------------------------------------
1 | import assert from "assert";
2 | import {promises as fs} from "fs";
3 | import {resolve, basename} from "path";
4 | import beautify from "js-beautify";
5 | import he from "he";
6 | import it from "./jsdom.js";
7 | import * as snapshots from "./snapshots.js";
8 |
9 | (async () => {
10 | await fs.mkdir("./test/snapshots", {recursive: true});
11 | for (const [name, snapshot] of Object.entries(snapshots)) {
12 | it(`htl ${name}`, async () => {
13 | const node = await snapshot();
14 | const actual = node === null ? ""
15 | : node.nodeType === 3 ? he.encode(node.textContent)
16 | : beautify.html(node.outerHTML, {indent_size: 2});
17 | const outfile = resolve("./test/snapshots", `${basename(name, ".js")}.html`); // TODO or .svg
18 | let expected;
19 |
20 | try {
21 | expected = await fs.readFile(outfile, "utf8");
22 | } catch (error) {
23 | if (error.code === "ENOENT" && process.env.CI !== "true") {
24 | console.warn(`! generating ${outfile}`);
25 | await fs.writeFile(outfile, actual, "utf8");
26 | return;
27 | } else {
28 | throw error;
29 | }
30 | }
31 |
32 | assert(actual === expected, `${name} must match snapshot
33 | <<< ACTUAL
34 | ${actual}
35 | ===
36 | ${expected}
37 | >>> EXPECTED
38 | `);
39 | });
40 | }
41 | })();
42 |
--------------------------------------------------------------------------------
/test/snapshots.js:
--------------------------------------------------------------------------------
1 | import {html, svg} from "../src/index.js";
2 |
3 | export function staticNull() {
4 | return html``;
5 | }
6 |
7 | export function staticText() {
8 | return html`Hello, world!`;
9 | }
10 |
11 | export function staticImpliedSpan() {
12 | return html`Hello, world !`;
13 | }
14 |
15 | export function staticExplicitSpan() {
16 | return html`Hello, world ! `;
17 | }
18 |
19 | export function escapeEntity() {
20 | return html`My favorite currencies are ${"dollars£s"}.`;
21 | }
22 |
23 | export function escapeTags() {
24 | return html`Look, Ma, ${"automatic escaping "}!`;
25 | }
26 |
27 | export function interpolatedString() {
28 | return html`Hello, ${"world"}!`;
29 | }
30 |
31 | export function interpolatedNumber() {
32 | return html`Hello, ${42}!`;
33 | }
34 |
35 | export function interpolateIntoRawText() {
36 | return html``;
37 | }
38 |
39 | export function interpolateIntoScript() {
40 | return html``;
41 | }
42 |
43 | export function interpolateIntoRawTextWithNonmatchingEndTag() {
44 | return html``;
45 | }
46 |
47 | export function escapeIntoRawText() {
48 | return html``;
49 | }
50 |
51 | export function escapeNonmatchingEndTagIntoRawText() {
52 | return html``;
53 | }
54 |
55 | export function interpolateIntoStyle() {
56 | return html``;
57 | }
58 |
59 | export function interpolateIntoTextarea() {
60 | return html``;
61 | }
62 |
63 | export function interpolateIntoTitle() {
64 | return html`${"value"} `;
65 | }
66 |
67 | export function interpolatedStyleObject() {
68 | return html`It’s all yellow! `;
69 | }
70 |
71 | export function interpolatedStyleObjectWithCustomProperty() {
72 | return html`It’s all yellow! `;
73 | }
74 |
75 | export function interpolatedStyleString() {
76 | return html`It’s yellow (and italic). `;
77 | }
78 |
79 | export function booleanAttribute() {
80 | return html`Can’t click me `;
81 | }
82 |
83 | export function optionalAttribute() {
84 | return html`Can click me `;
85 | }
86 |
87 | export function unquotedAttribute() {
88 | return html``;
89 | }
90 |
91 | export function trailingUnquotedAttribute() {
92 | return html``;
93 | }
94 |
95 | export function trailingBooleanAttribute() {
96 | return html``;
97 | }
98 |
99 | export function escapeUnquotedAttribute() {
100 | return html``;
101 | }
102 |
103 | export function optionalText() {
104 | return html`There’s no ${null} here.`;
105 | }
106 |
107 | export function unquotedEmptyString() {
108 | return html` `;
109 | }
110 |
111 | export function unquotedEmptyStringAfterPrefix() {
112 | return html` `;
113 | }
114 |
115 | export function interpolatedNull() {
116 | return html`${html``}`; // It’s nulls all the way down!
117 | }
118 |
119 | export function spreadAttributes() {
120 | return html`whoa `;
121 | }
122 |
123 | export function interpolatedNode() {
124 | function emphasize(text) {
125 | return html`${text} `;
126 | }
127 | return html`This is ${emphasize("really")} important.`;
128 | }
129 |
130 | export function interpolateFragment() {
131 | return html`
132 | # Color Swatch
133 | ${["red", "green", "blue"].map((color, i) => html.fragment`
134 | ${i}
135 | ${color}
136 |
137 | `)}
138 |
`;
139 | }
140 |
141 | export function interpolateSet() {
142 | return html`It’s as easy as ${new Set([1, 2, 3])}.`;
143 | }
144 |
145 | export function staticSvg() {
146 | return svg`
147 |
148 | `;
149 | }
150 |
151 | export function interpolateSvgFragment() {
152 | return svg`
153 | ${svg.fragment` `}
154 | `;
155 | }
156 |
--------------------------------------------------------------------------------
/test/snapshots/booleanAttribute.html:
--------------------------------------------------------------------------------
1 | Can’t click me
--------------------------------------------------------------------------------
/test/snapshots/escapeEntity.html:
--------------------------------------------------------------------------------
1 | My favorite currencies are dollars£s.
--------------------------------------------------------------------------------
/test/snapshots/escapeIntoRawText.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/escapeNonmatchingEndTagIntoRawText.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/escapeTags.html:
--------------------------------------------------------------------------------
1 | Look, Ma, <i>automatic escaping</i>!
--------------------------------------------------------------------------------
/test/snapshots/escapeUnquotedAttribute.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/interpolateFragment.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #
5 | Color
6 | Swatch
7 |
8 |
9 |
10 |
11 | 0
12 | red
13 |
14 |
15 |
16 | 1
17 | green
18 |
19 |
20 |
21 | 2
22 | blue
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/test/snapshots/interpolateIntoRawText.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/interpolateIntoRawTextWithNonmatchingEndTag.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/interpolateIntoScript.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/interpolateIntoStyle.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/interpolateIntoTextarea.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/interpolateIntoTitle.html:
--------------------------------------------------------------------------------
1 | value
--------------------------------------------------------------------------------
/test/snapshots/interpolateSet.html:
--------------------------------------------------------------------------------
1 | It’s as easy as 123.
--------------------------------------------------------------------------------
/test/snapshots/interpolateSvgFragment.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/test/snapshots/interpolatedNode.html:
--------------------------------------------------------------------------------
1 | This is really important.
--------------------------------------------------------------------------------
/test/snapshots/interpolatedNull.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/observablehq/htl/e3e9777d09f7b5aea3ebc52e73b86a1246dcab7e/test/snapshots/interpolatedNull.html
--------------------------------------------------------------------------------
/test/snapshots/interpolatedNumber.html:
--------------------------------------------------------------------------------
1 | Hello, 42!
--------------------------------------------------------------------------------
/test/snapshots/interpolatedString.html:
--------------------------------------------------------------------------------
1 | Hello, world!
--------------------------------------------------------------------------------
/test/snapshots/interpolatedStyleObject.html:
--------------------------------------------------------------------------------
1 | It’s all yellow!
--------------------------------------------------------------------------------
/test/snapshots/interpolatedStyleObjectWithCustomProperty.html:
--------------------------------------------------------------------------------
1 | It’s all yellow!
--------------------------------------------------------------------------------
/test/snapshots/interpolatedStyleString.html:
--------------------------------------------------------------------------------
1 | It’s yellow (and italic).
--------------------------------------------------------------------------------
/test/snapshots/optionalAttribute.html:
--------------------------------------------------------------------------------
1 | Can click me
--------------------------------------------------------------------------------
/test/snapshots/optionalText.html:
--------------------------------------------------------------------------------
1 | There’s no here.
--------------------------------------------------------------------------------
/test/snapshots/spreadAttributes.html:
--------------------------------------------------------------------------------
1 | whoa
--------------------------------------------------------------------------------
/test/snapshots/staticExplicitSpan.html:
--------------------------------------------------------------------------------
1 | Hello, world !
--------------------------------------------------------------------------------
/test/snapshots/staticImpliedSpan.html:
--------------------------------------------------------------------------------
1 | Hello, world !
--------------------------------------------------------------------------------
/test/snapshots/staticNull.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/observablehq/htl/e3e9777d09f7b5aea3ebc52e73b86a1246dcab7e/test/snapshots/staticNull.html
--------------------------------------------------------------------------------
/test/snapshots/staticSvg.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/test/snapshots/staticText.html:
--------------------------------------------------------------------------------
1 | Hello, world!
--------------------------------------------------------------------------------
/test/snapshots/trailingBooleanAttribute.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/trailingUnquotedAttribute.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/unquotedAttribute.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/unquotedEmptyString.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/snapshots/unquotedEmptyStringAfterPrefix.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@babel/code-frame@7.12.11":
6 | version "7.12.11"
7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
8 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
9 | dependencies:
10 | "@babel/highlight" "^7.10.4"
11 |
12 | "@babel/code-frame@^7.10.4":
13 | version "7.14.5"
14 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
15 | integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
16 | dependencies:
17 | "@babel/highlight" "^7.14.5"
18 |
19 | "@babel/helper-validator-identifier@^7.14.5":
20 | version "7.15.7"
21 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389"
22 | integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==
23 |
24 | "@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5":
25 | version "7.14.5"
26 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9"
27 | integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==
28 | dependencies:
29 | "@babel/helper-validator-identifier" "^7.14.5"
30 | chalk "^2.0.0"
31 | js-tokens "^4.0.0"
32 |
33 | "@eslint/eslintrc@^0.4.3":
34 | version "0.4.3"
35 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
36 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
37 | dependencies:
38 | ajv "^6.12.4"
39 | debug "^4.1.1"
40 | espree "^7.3.0"
41 | globals "^13.9.0"
42 | ignore "^4.0.6"
43 | import-fresh "^3.2.1"
44 | js-yaml "^3.13.1"
45 | minimatch "^3.0.4"
46 | strip-json-comments "^3.1.1"
47 |
48 | "@humanwhocodes/config-array@^0.5.0":
49 | version "0.5.0"
50 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
51 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
52 | dependencies:
53 | "@humanwhocodes/object-schema" "^1.2.0"
54 | debug "^4.1.1"
55 | minimatch "^3.0.4"
56 |
57 | "@humanwhocodes/object-schema@^1.2.0":
58 | version "1.2.0"
59 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf"
60 | integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==
61 |
62 | "@rollup/plugin-json@4":
63 | version "4.1.0"
64 | resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3"
65 | integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==
66 | dependencies:
67 | "@rollup/pluginutils" "^3.0.8"
68 |
69 | "@rollup/pluginutils@^3.0.8":
70 | version "3.1.0"
71 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
72 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
73 | dependencies:
74 | "@types/estree" "0.0.39"
75 | estree-walker "^1.0.1"
76 | picomatch "^2.2.2"
77 |
78 | "@tootallnate/once@1":
79 | version "1.1.2"
80 | resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
81 | integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
82 |
83 | "@types/estree@0.0.39":
84 | version "0.0.39"
85 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
86 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
87 |
88 | "@types/node@*":
89 | version "16.9.6"
90 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.6.tgz#040a64d7faf9e5d9e940357125f0963012e66f04"
91 | integrity sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ==
92 |
93 | "@ungap/promise-all-settled@1.1.2":
94 | version "1.1.2"
95 | resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44"
96 | integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==
97 |
98 | abab@^2.0.3, abab@^2.0.5:
99 | version "2.0.5"
100 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
101 | integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==
102 |
103 | abbrev@1:
104 | version "1.1.1"
105 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
106 | integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
107 |
108 | acorn-globals@^6.0.0:
109 | version "6.0.0"
110 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
111 | integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
112 | dependencies:
113 | acorn "^7.1.1"
114 | acorn-walk "^7.1.1"
115 |
116 | acorn-jsx@^5.3.1:
117 | version "5.3.2"
118 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
119 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
120 |
121 | acorn-walk@^7.1.1:
122 | version "7.2.0"
123 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
124 | integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
125 |
126 | acorn@^7.1.1, acorn@^7.4.0:
127 | version "7.4.1"
128 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
129 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
130 |
131 | acorn@^8.4.1:
132 | version "8.5.0"
133 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.5.0.tgz#4512ccb99b3698c752591e9bb4472e38ad43cee2"
134 | integrity sha512-yXbYeFy+jUuYd3/CDcg2NkIYE991XYX/bje7LmjJigUciaeO1JR4XxXgCIV1/Zc/dRuFEyw1L0pbA+qynJkW5Q==
135 |
136 | agent-base@6:
137 | version "6.0.2"
138 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
139 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
140 | dependencies:
141 | debug "4"
142 |
143 | ajv@^6.10.0, ajv@^6.12.4:
144 | version "6.12.6"
145 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
146 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
147 | dependencies:
148 | fast-deep-equal "^3.1.1"
149 | fast-json-stable-stringify "^2.0.0"
150 | json-schema-traverse "^0.4.1"
151 | uri-js "^4.2.2"
152 |
153 | ajv@^8.0.1:
154 | version "8.6.3"
155 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.3.tgz#11a66527761dc3e9a3845ea775d2d3c0414e8764"
156 | integrity sha512-SMJOdDP6LqTkD0Uq8qLi+gMwSt0imXLSV080qFVwJCpH9U6Mb+SUGHAXM0KNbcBPguytWyvFxcHgMLe2D2XSpw==
157 | dependencies:
158 | fast-deep-equal "^3.1.1"
159 | json-schema-traverse "^1.0.0"
160 | require-from-string "^2.0.2"
161 | uri-js "^4.2.2"
162 |
163 | ansi-colors@4.1.1, ansi-colors@^4.1.1:
164 | version "4.1.1"
165 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
166 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
167 |
168 | ansi-regex@^3.0.0:
169 | version "3.0.0"
170 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998"
171 | integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
172 |
173 | ansi-regex@^5.0.1:
174 | version "5.0.1"
175 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
176 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
177 |
178 | ansi-styles@^3.2.1:
179 | version "3.2.1"
180 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
181 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
182 | dependencies:
183 | color-convert "^1.9.0"
184 |
185 | ansi-styles@^4.0.0, ansi-styles@^4.1.0:
186 | version "4.3.0"
187 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
188 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
189 | dependencies:
190 | color-convert "^2.0.1"
191 |
192 | anymatch@~3.1.2:
193 | version "3.1.2"
194 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
195 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
196 | dependencies:
197 | normalize-path "^3.0.0"
198 | picomatch "^2.0.4"
199 |
200 | argparse@^1.0.7:
201 | version "1.0.10"
202 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
203 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
204 | dependencies:
205 | sprintf-js "~1.0.2"
206 |
207 | argparse@^2.0.1:
208 | version "2.0.1"
209 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
210 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
211 |
212 | astral-regex@^2.0.0:
213 | version "2.0.0"
214 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
215 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
216 |
217 | asynckit@^0.4.0:
218 | version "0.4.0"
219 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
220 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
221 |
222 | balanced-match@^1.0.0:
223 | version "1.0.2"
224 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
225 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
226 |
227 | binary-extensions@^2.0.0:
228 | version "2.2.0"
229 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
230 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
231 |
232 | brace-expansion@^1.1.7:
233 | version "1.1.11"
234 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
235 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
236 | dependencies:
237 | balanced-match "^1.0.0"
238 | concat-map "0.0.1"
239 |
240 | braces@~3.0.2:
241 | version "3.0.2"
242 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
243 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
244 | dependencies:
245 | fill-range "^7.0.1"
246 |
247 | browser-process-hrtime@^1.0.0:
248 | version "1.0.0"
249 | resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
250 | integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
251 |
252 | browser-stdout@1.3.1:
253 | version "1.3.1"
254 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
255 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
256 |
257 | buffer-from@^1.0.0:
258 | version "1.1.2"
259 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
260 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
261 |
262 | callsites@^3.0.0:
263 | version "3.1.0"
264 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
265 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
266 |
267 | camelcase@^6.0.0:
268 | version "6.2.0"
269 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809"
270 | integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==
271 |
272 | chalk@^2.0.0:
273 | version "2.4.2"
274 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
275 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
276 | dependencies:
277 | ansi-styles "^3.2.1"
278 | escape-string-regexp "^1.0.5"
279 | supports-color "^5.3.0"
280 |
281 | chalk@^4.0.0, chalk@^4.1.0:
282 | version "4.1.2"
283 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
284 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
285 | dependencies:
286 | ansi-styles "^4.1.0"
287 | supports-color "^7.1.0"
288 |
289 | chokidar@3.5.2:
290 | version "3.5.2"
291 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75"
292 | integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==
293 | dependencies:
294 | anymatch "~3.1.2"
295 | braces "~3.0.2"
296 | glob-parent "~5.1.2"
297 | is-binary-path "~2.1.0"
298 | is-glob "~4.0.1"
299 | normalize-path "~3.0.0"
300 | readdirp "~3.6.0"
301 | optionalDependencies:
302 | fsevents "~2.3.2"
303 |
304 | cliui@^7.0.2:
305 | version "7.0.4"
306 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"
307 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
308 | dependencies:
309 | string-width "^4.2.0"
310 | strip-ansi "^6.0.0"
311 | wrap-ansi "^7.0.0"
312 |
313 | color-convert@^1.9.0:
314 | version "1.9.3"
315 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
316 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
317 | dependencies:
318 | color-name "1.1.3"
319 |
320 | color-convert@^2.0.1:
321 | version "2.0.1"
322 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
323 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
324 | dependencies:
325 | color-name "~1.1.4"
326 |
327 | color-name@1.1.3:
328 | version "1.1.3"
329 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
330 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
331 |
332 | color-name@~1.1.4:
333 | version "1.1.4"
334 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
335 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
336 |
337 | combined-stream@^1.0.8:
338 | version "1.0.8"
339 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
340 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
341 | dependencies:
342 | delayed-stream "~1.0.0"
343 |
344 | commander@^2.19.0, commander@^2.20.0:
345 | version "2.20.3"
346 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
347 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
348 |
349 | concat-map@0.0.1:
350 | version "0.0.1"
351 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
352 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
353 |
354 | config-chain@^1.1.12:
355 | version "1.1.13"
356 | resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
357 | integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
358 | dependencies:
359 | ini "^1.3.4"
360 | proto-list "~1.2.1"
361 |
362 | cross-spawn@^7.0.2:
363 | version "7.0.3"
364 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
365 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
366 | dependencies:
367 | path-key "^3.1.0"
368 | shebang-command "^2.0.0"
369 | which "^2.0.1"
370 |
371 | cssom@^0.5.0:
372 | version "0.5.0"
373 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36"
374 | integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==
375 |
376 | cssom@~0.3.6:
377 | version "0.3.8"
378 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
379 | integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
380 |
381 | cssstyle@^2.3.0:
382 | version "2.3.0"
383 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
384 | integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
385 | dependencies:
386 | cssom "~0.3.6"
387 |
388 | data-urls@^3.0.0:
389 | version "3.0.0"
390 | resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.0.tgz#3ff551c986d7c6234a0ac4bbf20a269e1cd6b378"
391 | integrity sha512-4AefxbTTdFtxDUdh0BuMBs2qJVL25Mow2zlcuuePegQwgD6GEmQao42LLEeksOui8nL4RcNEugIpFP7eRd33xg==
392 | dependencies:
393 | abab "^2.0.3"
394 | whatwg-mimetype "^2.3.0"
395 | whatwg-url "^9.0.0"
396 |
397 | debug@4, debug@^4.0.1, debug@^4.1.1:
398 | version "4.3.2"
399 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b"
400 | integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==
401 | dependencies:
402 | ms "2.1.2"
403 |
404 | debug@4.3.1:
405 | version "4.3.1"
406 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
407 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
408 | dependencies:
409 | ms "2.1.2"
410 |
411 | decamelize@^4.0.0:
412 | version "4.0.0"
413 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837"
414 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
415 |
416 | decimal.js@^10.3.1:
417 | version "10.3.1"
418 | resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783"
419 | integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==
420 |
421 | deep-is@^0.1.3, deep-is@~0.1.3:
422 | version "0.1.4"
423 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
424 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
425 |
426 | delayed-stream@~1.0.0:
427 | version "1.0.0"
428 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
429 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
430 |
431 | diff@5.0.0:
432 | version "5.0.0"
433 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b"
434 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==
435 |
436 | doctrine@^3.0.0:
437 | version "3.0.0"
438 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
439 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
440 | dependencies:
441 | esutils "^2.0.2"
442 |
443 | domexception@^2.0.1:
444 | version "2.0.1"
445 | resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
446 | integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
447 | dependencies:
448 | webidl-conversions "^5.0.0"
449 |
450 | editorconfig@^0.15.3:
451 | version "0.15.3"
452 | resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
453 | integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==
454 | dependencies:
455 | commander "^2.19.0"
456 | lru-cache "^4.1.5"
457 | semver "^5.6.0"
458 | sigmund "^1.0.1"
459 |
460 | emoji-regex@^8.0.0:
461 | version "8.0.0"
462 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
463 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
464 |
465 | enquirer@^2.3.5:
466 | version "2.3.6"
467 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
468 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
469 | dependencies:
470 | ansi-colors "^4.1.1"
471 |
472 | escalade@^3.1.1:
473 | version "3.1.1"
474 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
475 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
476 |
477 | escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0:
478 | version "4.0.0"
479 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
480 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
481 |
482 | escape-string-regexp@^1.0.5:
483 | version "1.0.5"
484 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
485 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
486 |
487 | escodegen@^2.0.0:
488 | version "2.0.0"
489 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
490 | integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==
491 | dependencies:
492 | esprima "^4.0.1"
493 | estraverse "^5.2.0"
494 | esutils "^2.0.2"
495 | optionator "^0.8.1"
496 | optionalDependencies:
497 | source-map "~0.6.1"
498 |
499 | eslint-scope@^5.1.1:
500 | version "5.1.1"
501 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
502 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
503 | dependencies:
504 | esrecurse "^4.3.0"
505 | estraverse "^4.1.1"
506 |
507 | eslint-utils@^2.1.0:
508 | version "2.1.0"
509 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
510 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
511 | dependencies:
512 | eslint-visitor-keys "^1.1.0"
513 |
514 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
515 | version "1.3.0"
516 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
517 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
518 |
519 | eslint-visitor-keys@^2.0.0:
520 | version "2.1.0"
521 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
522 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
523 |
524 | eslint@7:
525 | version "7.32.0"
526 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
527 | integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
528 | dependencies:
529 | "@babel/code-frame" "7.12.11"
530 | "@eslint/eslintrc" "^0.4.3"
531 | "@humanwhocodes/config-array" "^0.5.0"
532 | ajv "^6.10.0"
533 | chalk "^4.0.0"
534 | cross-spawn "^7.0.2"
535 | debug "^4.0.1"
536 | doctrine "^3.0.0"
537 | enquirer "^2.3.5"
538 | escape-string-regexp "^4.0.0"
539 | eslint-scope "^5.1.1"
540 | eslint-utils "^2.1.0"
541 | eslint-visitor-keys "^2.0.0"
542 | espree "^7.3.1"
543 | esquery "^1.4.0"
544 | esutils "^2.0.2"
545 | fast-deep-equal "^3.1.3"
546 | file-entry-cache "^6.0.1"
547 | functional-red-black-tree "^1.0.1"
548 | glob-parent "^5.1.2"
549 | globals "^13.6.0"
550 | ignore "^4.0.6"
551 | import-fresh "^3.0.0"
552 | imurmurhash "^0.1.4"
553 | is-glob "^4.0.0"
554 | js-yaml "^3.13.1"
555 | json-stable-stringify-without-jsonify "^1.0.1"
556 | levn "^0.4.1"
557 | lodash.merge "^4.6.2"
558 | minimatch "^3.0.4"
559 | natural-compare "^1.4.0"
560 | optionator "^0.9.1"
561 | progress "^2.0.0"
562 | regexpp "^3.1.0"
563 | semver "^7.2.1"
564 | strip-ansi "^6.0.0"
565 | strip-json-comments "^3.1.0"
566 | table "^6.0.9"
567 | text-table "^0.2.0"
568 | v8-compile-cache "^2.0.3"
569 |
570 | espree@^7.3.0, espree@^7.3.1:
571 | version "7.3.1"
572 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
573 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
574 | dependencies:
575 | acorn "^7.4.0"
576 | acorn-jsx "^5.3.1"
577 | eslint-visitor-keys "^1.3.0"
578 |
579 | esprima@^4.0.0, esprima@^4.0.1:
580 | version "4.0.1"
581 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
582 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
583 |
584 | esquery@^1.4.0:
585 | version "1.4.0"
586 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
587 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
588 | dependencies:
589 | estraverse "^5.1.0"
590 |
591 | esrecurse@^4.3.0:
592 | version "4.3.0"
593 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
594 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
595 | dependencies:
596 | estraverse "^5.2.0"
597 |
598 | estraverse@^4.1.1:
599 | version "4.3.0"
600 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
601 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
602 |
603 | estraverse@^5.1.0, estraverse@^5.2.0:
604 | version "5.2.0"
605 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
606 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
607 |
608 | estree-walker@^1.0.1:
609 | version "1.0.1"
610 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
611 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
612 |
613 | esutils@^2.0.2:
614 | version "2.0.3"
615 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
616 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
617 |
618 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
619 | version "3.1.3"
620 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
621 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
622 |
623 | fast-json-stable-stringify@^2.0.0:
624 | version "2.1.0"
625 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
626 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
627 |
628 | fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
629 | version "2.0.6"
630 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
631 | integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
632 |
633 | file-entry-cache@^6.0.1:
634 | version "6.0.1"
635 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
636 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
637 | dependencies:
638 | flat-cache "^3.0.4"
639 |
640 | fill-range@^7.0.1:
641 | version "7.0.1"
642 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
643 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
644 | dependencies:
645 | to-regex-range "^5.0.1"
646 |
647 | find-up@5.0.0:
648 | version "5.0.0"
649 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
650 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
651 | dependencies:
652 | locate-path "^6.0.0"
653 | path-exists "^4.0.0"
654 |
655 | flat-cache@^3.0.4:
656 | version "3.0.4"
657 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11"
658 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
659 | dependencies:
660 | flatted "^3.1.0"
661 | rimraf "^3.0.2"
662 |
663 | flat@^5.0.2:
664 | version "5.0.2"
665 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241"
666 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
667 |
668 | flatted@^3.1.0:
669 | version "3.2.2"
670 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.2.tgz#64bfed5cb68fe3ca78b3eb214ad97b63bedce561"
671 | integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==
672 |
673 | form-data@^4.0.0:
674 | version "4.0.0"
675 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
676 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
677 | dependencies:
678 | asynckit "^0.4.0"
679 | combined-stream "^1.0.8"
680 | mime-types "^2.1.12"
681 |
682 | fs.realpath@^1.0.0:
683 | version "1.0.0"
684 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
685 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
686 |
687 | fsevents@~2.3.2:
688 | version "2.3.2"
689 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
690 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
691 |
692 | functional-red-black-tree@^1.0.1:
693 | version "1.0.1"
694 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
695 | integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
696 |
697 | get-caller-file@^2.0.5:
698 | version "2.0.5"
699 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
700 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
701 |
702 | glob-parent@^5.1.2, glob-parent@~5.1.2:
703 | version "5.1.2"
704 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
705 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
706 | dependencies:
707 | is-glob "^4.0.1"
708 |
709 | glob@7.1.7:
710 | version "7.1.7"
711 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90"
712 | integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==
713 | dependencies:
714 | fs.realpath "^1.0.0"
715 | inflight "^1.0.4"
716 | inherits "2"
717 | minimatch "^3.0.4"
718 | once "^1.3.0"
719 | path-is-absolute "^1.0.0"
720 |
721 | glob@^7.1.3:
722 | version "7.2.0"
723 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
724 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==
725 | dependencies:
726 | fs.realpath "^1.0.0"
727 | inflight "^1.0.4"
728 | inherits "2"
729 | minimatch "^3.0.4"
730 | once "^1.3.0"
731 | path-is-absolute "^1.0.0"
732 |
733 | globals@^13.6.0, globals@^13.9.0:
734 | version "13.11.0"
735 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.11.0.tgz#40ef678da117fe7bd2e28f1fab24951bd0255be7"
736 | integrity sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==
737 | dependencies:
738 | type-fest "^0.20.2"
739 |
740 | growl@1.10.5:
741 | version "1.10.5"
742 | resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
743 | integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
744 |
745 | has-flag@^3.0.0:
746 | version "3.0.0"
747 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
748 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
749 |
750 | has-flag@^4.0.0:
751 | version "4.0.0"
752 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
753 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
754 |
755 | he@1, he@1.2.0:
756 | version "1.2.0"
757 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
758 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
759 |
760 | html-encoding-sniffer@^2.0.1:
761 | version "2.0.1"
762 | resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
763 | integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
764 | dependencies:
765 | whatwg-encoding "^1.0.5"
766 |
767 | http-proxy-agent@^4.0.1:
768 | version "4.0.1"
769 | resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
770 | integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
771 | dependencies:
772 | "@tootallnate/once" "1"
773 | agent-base "6"
774 | debug "4"
775 |
776 | https-proxy-agent@^5.0.0:
777 | version "5.0.0"
778 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2"
779 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==
780 | dependencies:
781 | agent-base "6"
782 | debug "4"
783 |
784 | iconv-lite@0.4.24:
785 | version "0.4.24"
786 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
787 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
788 | dependencies:
789 | safer-buffer ">= 2.1.2 < 3"
790 |
791 | ignore@^4.0.6:
792 | version "4.0.6"
793 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
794 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
795 |
796 | import-fresh@^3.0.0, import-fresh@^3.2.1:
797 | version "3.3.0"
798 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
799 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
800 | dependencies:
801 | parent-module "^1.0.0"
802 | resolve-from "^4.0.0"
803 |
804 | imurmurhash@^0.1.4:
805 | version "0.1.4"
806 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
807 | integrity sha1-khi5srkoojixPcT7a21XbyMUU+o=
808 |
809 | inflight@^1.0.4:
810 | version "1.0.6"
811 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
812 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
813 | dependencies:
814 | once "^1.3.0"
815 | wrappy "1"
816 |
817 | inherits@2:
818 | version "2.0.4"
819 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
820 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
821 |
822 | ini@^1.3.4:
823 | version "1.3.8"
824 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
825 | integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
826 |
827 | is-binary-path@~2.1.0:
828 | version "2.1.0"
829 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
830 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
831 | dependencies:
832 | binary-extensions "^2.0.0"
833 |
834 | is-extglob@^2.1.1:
835 | version "2.1.1"
836 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
837 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
838 |
839 | is-fullwidth-code-point@^2.0.0:
840 | version "2.0.0"
841 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f"
842 | integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=
843 |
844 | is-fullwidth-code-point@^3.0.0:
845 | version "3.0.0"
846 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
847 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
848 |
849 | is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1:
850 | version "4.0.1"
851 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc"
852 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==
853 | dependencies:
854 | is-extglob "^2.1.1"
855 |
856 | is-number@^7.0.0:
857 | version "7.0.0"
858 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
859 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
860 |
861 | is-plain-obj@^2.1.0:
862 | version "2.1.0"
863 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287"
864 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
865 |
866 | is-potential-custom-element-name@^1.0.1:
867 | version "1.0.1"
868 | resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
869 | integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
870 |
871 | is-unicode-supported@^0.1.0:
872 | version "0.1.0"
873 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
874 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
875 |
876 | isexe@^2.0.0:
877 | version "2.0.0"
878 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
879 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
880 |
881 | jest-worker@^26.2.1:
882 | version "26.6.2"
883 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
884 | integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
885 | dependencies:
886 | "@types/node" "*"
887 | merge-stream "^2.0.0"
888 | supports-color "^7.0.0"
889 |
890 | js-beautify@1:
891 | version "1.14.0"
892 | resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.0.tgz#2ce790c555d53ce1e3d7363227acf5dc69024c2d"
893 | integrity sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==
894 | dependencies:
895 | config-chain "^1.1.12"
896 | editorconfig "^0.15.3"
897 | glob "^7.1.3"
898 | nopt "^5.0.0"
899 |
900 | js-tokens@^4.0.0:
901 | version "4.0.0"
902 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
903 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
904 |
905 | js-yaml@4.1.0:
906 | version "4.1.0"
907 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
908 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
909 | dependencies:
910 | argparse "^2.0.1"
911 |
912 | js-yaml@^3.13.1:
913 | version "3.14.1"
914 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
915 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
916 | dependencies:
917 | argparse "^1.0.7"
918 | esprima "^4.0.0"
919 |
920 | jsdom@17:
921 | version "17.0.0"
922 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-17.0.0.tgz#3ec82d1d30030649c8defedc45fff6aa3e5d06ae"
923 | integrity sha512-MUq4XdqwtNurZDVeKScENMPHnkgmdIvMzZ1r1NSwHkDuaqI6BouPjr+17COo4/19oLNnmdpFDPOHVpgIZmZ+VA==
924 | dependencies:
925 | abab "^2.0.5"
926 | acorn "^8.4.1"
927 | acorn-globals "^6.0.0"
928 | cssom "^0.5.0"
929 | cssstyle "^2.3.0"
930 | data-urls "^3.0.0"
931 | decimal.js "^10.3.1"
932 | domexception "^2.0.1"
933 | escodegen "^2.0.0"
934 | form-data "^4.0.0"
935 | html-encoding-sniffer "^2.0.1"
936 | http-proxy-agent "^4.0.1"
937 | https-proxy-agent "^5.0.0"
938 | is-potential-custom-element-name "^1.0.1"
939 | nwsapi "^2.2.0"
940 | parse5 "6.0.1"
941 | saxes "^5.0.1"
942 | symbol-tree "^3.2.4"
943 | tough-cookie "^4.0.0"
944 | w3c-hr-time "^1.0.2"
945 | w3c-xmlserializer "^2.0.0"
946 | webidl-conversions "^6.1.0"
947 | whatwg-encoding "^1.0.5"
948 | whatwg-mimetype "^2.3.0"
949 | whatwg-url "^9.0.0"
950 | ws "^8.0.0"
951 | xml-name-validator "^3.0.0"
952 |
953 | json-schema-traverse@^0.4.1:
954 | version "0.4.1"
955 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
956 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
957 |
958 | json-schema-traverse@^1.0.0:
959 | version "1.0.0"
960 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
961 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
962 |
963 | json-stable-stringify-without-jsonify@^1.0.1:
964 | version "1.0.1"
965 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
966 | integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
967 |
968 | levn@^0.4.1:
969 | version "0.4.1"
970 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade"
971 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
972 | dependencies:
973 | prelude-ls "^1.2.1"
974 | type-check "~0.4.0"
975 |
976 | levn@~0.3.0:
977 | version "0.3.0"
978 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
979 | integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=
980 | dependencies:
981 | prelude-ls "~1.1.2"
982 | type-check "~0.3.2"
983 |
984 | locate-path@^6.0.0:
985 | version "6.0.0"
986 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
987 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
988 | dependencies:
989 | p-locate "^5.0.0"
990 |
991 | lodash.clonedeep@^4.5.0:
992 | version "4.5.0"
993 | resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
994 | integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=
995 |
996 | lodash.merge@^4.6.2:
997 | version "4.6.2"
998 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
999 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
1000 |
1001 | lodash.truncate@^4.4.2:
1002 | version "4.4.2"
1003 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
1004 | integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=
1005 |
1006 | log-symbols@4.1.0:
1007 | version "4.1.0"
1008 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
1009 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
1010 | dependencies:
1011 | chalk "^4.1.0"
1012 | is-unicode-supported "^0.1.0"
1013 |
1014 | lru-cache@^4.1.5:
1015 | version "4.1.5"
1016 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd"
1017 | integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==
1018 | dependencies:
1019 | pseudomap "^1.0.2"
1020 | yallist "^2.1.2"
1021 |
1022 | lru-cache@^6.0.0:
1023 | version "6.0.0"
1024 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
1025 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
1026 | dependencies:
1027 | yallist "^4.0.0"
1028 |
1029 | merge-stream@^2.0.0:
1030 | version "2.0.0"
1031 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
1032 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
1033 |
1034 | mime-db@1.49.0:
1035 | version "1.49.0"
1036 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed"
1037 | integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==
1038 |
1039 | mime-types@^2.1.12:
1040 | version "2.1.32"
1041 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5"
1042 | integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==
1043 | dependencies:
1044 | mime-db "1.49.0"
1045 |
1046 | minimatch@3.0.4, minimatch@^3.0.4:
1047 | version "3.0.4"
1048 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
1049 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
1050 | dependencies:
1051 | brace-expansion "^1.1.7"
1052 |
1053 | mocha@9:
1054 | version "9.1.1"
1055 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.1.1.tgz#33df2eb9c6262434630510c5f4283b36efda9b61"
1056 | integrity sha512-0wE74YMgOkCgBUj8VyIDwmLUjTsS13WV1Pg7l0SHea2qzZzlq7MDnfbPsHKcELBRk3+izEVkRofjmClpycudCA==
1057 | dependencies:
1058 | "@ungap/promise-all-settled" "1.1.2"
1059 | ansi-colors "4.1.1"
1060 | browser-stdout "1.3.1"
1061 | chokidar "3.5.2"
1062 | debug "4.3.1"
1063 | diff "5.0.0"
1064 | escape-string-regexp "4.0.0"
1065 | find-up "5.0.0"
1066 | glob "7.1.7"
1067 | growl "1.10.5"
1068 | he "1.2.0"
1069 | js-yaml "4.1.0"
1070 | log-symbols "4.1.0"
1071 | minimatch "3.0.4"
1072 | ms "2.1.3"
1073 | nanoid "3.1.23"
1074 | serialize-javascript "6.0.0"
1075 | strip-json-comments "3.1.1"
1076 | supports-color "8.1.1"
1077 | which "2.0.2"
1078 | wide-align "1.1.3"
1079 | workerpool "6.1.5"
1080 | yargs "16.2.0"
1081 | yargs-parser "20.2.4"
1082 | yargs-unparser "2.0.0"
1083 |
1084 | ms@2.1.2:
1085 | version "2.1.2"
1086 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
1087 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
1088 |
1089 | ms@2.1.3:
1090 | version "2.1.3"
1091 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
1092 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
1093 |
1094 | nanoid@3.1.23:
1095 | version "3.1.23"
1096 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81"
1097 | integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw==
1098 |
1099 | natural-compare@^1.4.0:
1100 | version "1.4.0"
1101 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
1102 | integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
1103 |
1104 | nopt@^5.0.0:
1105 | version "5.0.0"
1106 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88"
1107 | integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==
1108 | dependencies:
1109 | abbrev "1"
1110 |
1111 | normalize-path@^3.0.0, normalize-path@~3.0.0:
1112 | version "3.0.0"
1113 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
1114 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
1115 |
1116 | nwsapi@^2.2.0:
1117 | version "2.2.0"
1118 | resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
1119 | integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==
1120 |
1121 | once@^1.3.0:
1122 | version "1.4.0"
1123 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
1124 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
1125 | dependencies:
1126 | wrappy "1"
1127 |
1128 | optionator@^0.8.1:
1129 | version "0.8.3"
1130 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
1131 | integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
1132 | dependencies:
1133 | deep-is "~0.1.3"
1134 | fast-levenshtein "~2.0.6"
1135 | levn "~0.3.0"
1136 | prelude-ls "~1.1.2"
1137 | type-check "~0.3.2"
1138 | word-wrap "~1.2.3"
1139 |
1140 | optionator@^0.9.1:
1141 | version "0.9.1"
1142 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499"
1143 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==
1144 | dependencies:
1145 | deep-is "^0.1.3"
1146 | fast-levenshtein "^2.0.6"
1147 | levn "^0.4.1"
1148 | prelude-ls "^1.2.1"
1149 | type-check "^0.4.0"
1150 | word-wrap "^1.2.3"
1151 |
1152 | p-limit@^3.0.2:
1153 | version "3.1.0"
1154 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
1155 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
1156 | dependencies:
1157 | yocto-queue "^0.1.0"
1158 |
1159 | p-locate@^5.0.0:
1160 | version "5.0.0"
1161 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
1162 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
1163 | dependencies:
1164 | p-limit "^3.0.2"
1165 |
1166 | parent-module@^1.0.0:
1167 | version "1.0.1"
1168 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
1169 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
1170 | dependencies:
1171 | callsites "^3.0.0"
1172 |
1173 | parse5@6.0.1:
1174 | version "6.0.1"
1175 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
1176 | integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
1177 |
1178 | path-exists@^4.0.0:
1179 | version "4.0.0"
1180 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
1181 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
1182 |
1183 | path-is-absolute@^1.0.0:
1184 | version "1.0.1"
1185 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
1186 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
1187 |
1188 | path-key@^3.1.0:
1189 | version "3.1.1"
1190 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
1191 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
1192 |
1193 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2:
1194 | version "2.3.0"
1195 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
1196 | integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
1197 |
1198 | prelude-ls@^1.2.1:
1199 | version "1.2.1"
1200 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
1201 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
1202 |
1203 | prelude-ls@~1.1.2:
1204 | version "1.1.2"
1205 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
1206 | integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=
1207 |
1208 | progress@^2.0.0:
1209 | version "2.0.3"
1210 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
1211 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
1212 |
1213 | proto-list@~1.2.1:
1214 | version "1.2.4"
1215 | resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
1216 | integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=
1217 |
1218 | pseudomap@^1.0.2:
1219 | version "1.0.2"
1220 | resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3"
1221 | integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM=
1222 |
1223 | psl@^1.1.33:
1224 | version "1.8.0"
1225 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
1226 | integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==
1227 |
1228 | punycode@^2.1.0, punycode@^2.1.1:
1229 | version "2.1.1"
1230 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
1231 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
1232 |
1233 | randombytes@^2.1.0:
1234 | version "2.1.0"
1235 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
1236 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
1237 | dependencies:
1238 | safe-buffer "^5.1.0"
1239 |
1240 | readdirp@~3.6.0:
1241 | version "3.6.0"
1242 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
1243 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
1244 | dependencies:
1245 | picomatch "^2.2.1"
1246 |
1247 | regexpp@^3.1.0:
1248 | version "3.2.0"
1249 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
1250 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
1251 |
1252 | require-directory@^2.1.1:
1253 | version "2.1.1"
1254 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
1255 | integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
1256 |
1257 | require-from-string@^2.0.2:
1258 | version "2.0.2"
1259 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
1260 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
1261 |
1262 | resolve-from@^4.0.0:
1263 | version "4.0.0"
1264 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
1265 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
1266 |
1267 | rimraf@^3.0.2:
1268 | version "3.0.2"
1269 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
1270 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
1271 | dependencies:
1272 | glob "^7.1.3"
1273 |
1274 | rollup-plugin-terser@7:
1275 | version "7.0.2"
1276 | resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz#e8fbba4869981b2dc35ae7e8a502d5c6c04d324d"
1277 | integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==
1278 | dependencies:
1279 | "@babel/code-frame" "^7.10.4"
1280 | jest-worker "^26.2.1"
1281 | serialize-javascript "^4.0.0"
1282 | terser "^5.0.0"
1283 |
1284 | rollup@2:
1285 | version "2.57.0"
1286 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.57.0.tgz#c1694475eb22e1022477c0f4635fd0ac80713173"
1287 | integrity sha512-bKQIh1rWKofRee6mv8SrF2HdP6pea5QkwBZSMImJysFj39gQuiV8MEPBjXOCpzk3wSYp63M2v2wkWBmFC8O/rg==
1288 | optionalDependencies:
1289 | fsevents "~2.3.2"
1290 |
1291 | safe-buffer@^5.1.0:
1292 | version "5.2.1"
1293 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
1294 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
1295 |
1296 | "safer-buffer@>= 2.1.2 < 3":
1297 | version "2.1.2"
1298 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
1299 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
1300 |
1301 | saxes@^5.0.1:
1302 | version "5.0.1"
1303 | resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
1304 | integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
1305 | dependencies:
1306 | xmlchars "^2.2.0"
1307 |
1308 | semver@^5.6.0:
1309 | version "5.7.1"
1310 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
1311 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
1312 |
1313 | semver@^7.2.1:
1314 | version "7.3.5"
1315 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
1316 | integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
1317 | dependencies:
1318 | lru-cache "^6.0.0"
1319 |
1320 | serialize-javascript@6.0.0:
1321 | version "6.0.0"
1322 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
1323 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
1324 | dependencies:
1325 | randombytes "^2.1.0"
1326 |
1327 | serialize-javascript@^4.0.0:
1328 | version "4.0.0"
1329 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa"
1330 | integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
1331 | dependencies:
1332 | randombytes "^2.1.0"
1333 |
1334 | shebang-command@^2.0.0:
1335 | version "2.0.0"
1336 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
1337 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
1338 | dependencies:
1339 | shebang-regex "^3.0.0"
1340 |
1341 | shebang-regex@^3.0.0:
1342 | version "3.0.0"
1343 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
1344 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
1345 |
1346 | sigmund@^1.0.1:
1347 | version "1.0.1"
1348 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590"
1349 | integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=
1350 |
1351 | slice-ansi@^4.0.0:
1352 | version "4.0.0"
1353 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
1354 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
1355 | dependencies:
1356 | ansi-styles "^4.0.0"
1357 | astral-regex "^2.0.0"
1358 | is-fullwidth-code-point "^3.0.0"
1359 |
1360 | source-map-support@~0.5.20:
1361 | version "0.5.20"
1362 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.20.tgz#12166089f8f5e5e8c56926b377633392dd2cb6c9"
1363 | integrity sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==
1364 | dependencies:
1365 | buffer-from "^1.0.0"
1366 | source-map "^0.6.0"
1367 |
1368 | source-map@^0.6.0, source-map@~0.6.1:
1369 | version "0.6.1"
1370 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
1371 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
1372 |
1373 | source-map@~0.7.2:
1374 | version "0.7.3"
1375 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
1376 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
1377 |
1378 | sprintf-js@~1.0.2:
1379 | version "1.0.3"
1380 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
1381 | integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
1382 |
1383 | "string-width@^1.0.2 || 2":
1384 | version "2.1.1"
1385 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e"
1386 | integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
1387 | dependencies:
1388 | is-fullwidth-code-point "^2.0.0"
1389 | strip-ansi "^4.0.0"
1390 |
1391 | string-width@^4.1.0, string-width@^4.2.0:
1392 | version "4.2.3"
1393 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
1394 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
1395 | dependencies:
1396 | emoji-regex "^8.0.0"
1397 | is-fullwidth-code-point "^3.0.0"
1398 | strip-ansi "^6.0.1"
1399 |
1400 | strip-ansi@^4.0.0:
1401 | version "4.0.0"
1402 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f"
1403 | integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8=
1404 | dependencies:
1405 | ansi-regex "^3.0.0"
1406 |
1407 | strip-ansi@^6.0.0, strip-ansi@^6.0.1:
1408 | version "6.0.1"
1409 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
1410 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
1411 | dependencies:
1412 | ansi-regex "^5.0.1"
1413 |
1414 | strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
1415 | version "3.1.1"
1416 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
1417 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
1418 |
1419 | supports-color@8.1.1:
1420 | version "8.1.1"
1421 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
1422 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
1423 | dependencies:
1424 | has-flag "^4.0.0"
1425 |
1426 | supports-color@^5.3.0:
1427 | version "5.5.0"
1428 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
1429 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
1430 | dependencies:
1431 | has-flag "^3.0.0"
1432 |
1433 | supports-color@^7.0.0, supports-color@^7.1.0:
1434 | version "7.2.0"
1435 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
1436 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
1437 | dependencies:
1438 | has-flag "^4.0.0"
1439 |
1440 | symbol-tree@^3.2.4:
1441 | version "3.2.4"
1442 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
1443 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
1444 |
1445 | table@^6.0.9:
1446 | version "6.7.1"
1447 | resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
1448 | integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==
1449 | dependencies:
1450 | ajv "^8.0.1"
1451 | lodash.clonedeep "^4.5.0"
1452 | lodash.truncate "^4.4.2"
1453 | slice-ansi "^4.0.0"
1454 | string-width "^4.2.0"
1455 | strip-ansi "^6.0.0"
1456 |
1457 | terser@^5.0.0:
1458 | version "5.9.0"
1459 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.9.0.tgz#47d6e629a522963240f2b55fcaa3c99083d2c351"
1460 | integrity sha512-h5hxa23sCdpzcye/7b8YqbE5OwKca/ni0RQz1uRX3tGh8haaGHqcuSqbGRybuAKNdntZ0mDgFNXPJ48xQ2RXKQ==
1461 | dependencies:
1462 | commander "^2.20.0"
1463 | source-map "~0.7.2"
1464 | source-map-support "~0.5.20"
1465 |
1466 | text-table@^0.2.0:
1467 | version "0.2.0"
1468 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
1469 | integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=
1470 |
1471 | to-regex-range@^5.0.1:
1472 | version "5.0.1"
1473 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
1474 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
1475 | dependencies:
1476 | is-number "^7.0.0"
1477 |
1478 | tough-cookie@^4.0.0:
1479 | version "4.0.0"
1480 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4"
1481 | integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==
1482 | dependencies:
1483 | psl "^1.1.33"
1484 | punycode "^2.1.1"
1485 | universalify "^0.1.2"
1486 |
1487 | tr46@^2.1.0:
1488 | version "2.1.0"
1489 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240"
1490 | integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==
1491 | dependencies:
1492 | punycode "^2.1.1"
1493 |
1494 | type-check@^0.4.0, type-check@~0.4.0:
1495 | version "0.4.0"
1496 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
1497 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
1498 | dependencies:
1499 | prelude-ls "^1.2.1"
1500 |
1501 | type-check@~0.3.2:
1502 | version "0.3.2"
1503 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
1504 | integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=
1505 | dependencies:
1506 | prelude-ls "~1.1.2"
1507 |
1508 | type-fest@^0.20.2:
1509 | version "0.20.2"
1510 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
1511 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
1512 |
1513 | universalify@^0.1.2:
1514 | version "0.1.2"
1515 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
1516 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
1517 |
1518 | uri-js@^4.2.2:
1519 | version "4.4.1"
1520 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
1521 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
1522 | dependencies:
1523 | punycode "^2.1.0"
1524 |
1525 | v8-compile-cache@^2.0.3:
1526 | version "2.3.0"
1527 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
1528 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
1529 |
1530 | w3c-hr-time@^1.0.2:
1531 | version "1.0.2"
1532 | resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
1533 | integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
1534 | dependencies:
1535 | browser-process-hrtime "^1.0.0"
1536 |
1537 | w3c-xmlserializer@^2.0.0:
1538 | version "2.0.0"
1539 | resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
1540 | integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
1541 | dependencies:
1542 | xml-name-validator "^3.0.0"
1543 |
1544 | webidl-conversions@^5.0.0:
1545 | version "5.0.0"
1546 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
1547 | integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
1548 |
1549 | webidl-conversions@^6.1.0:
1550 | version "6.1.0"
1551 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
1552 | integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
1553 |
1554 | whatwg-encoding@^1.0.5:
1555 | version "1.0.5"
1556 | resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
1557 | integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
1558 | dependencies:
1559 | iconv-lite "0.4.24"
1560 |
1561 | whatwg-mimetype@^2.3.0:
1562 | version "2.3.0"
1563 | resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
1564 | integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
1565 |
1566 | whatwg-url@^9.0.0:
1567 | version "9.1.0"
1568 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-9.1.0.tgz#1b112cf237d72cd64fa7882b9c3f6234a1c3050d"
1569 | integrity sha512-CQ0UcrPHyomtlOCot1TL77WyMIm/bCwrJ2D6AOKGwEczU9EpyoqAokfqrf/MioU9kHcMsmJZcg1egXix2KYEsA==
1570 | dependencies:
1571 | tr46 "^2.1.0"
1572 | webidl-conversions "^6.1.0"
1573 |
1574 | which@2.0.2, which@^2.0.1:
1575 | version "2.0.2"
1576 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
1577 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
1578 | dependencies:
1579 | isexe "^2.0.0"
1580 |
1581 | wide-align@1.1.3:
1582 | version "1.1.3"
1583 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457"
1584 | integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==
1585 | dependencies:
1586 | string-width "^1.0.2 || 2"
1587 |
1588 | word-wrap@^1.2.3, word-wrap@~1.2.3:
1589 | version "1.2.3"
1590 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
1591 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
1592 |
1593 | workerpool@6.1.5:
1594 | version "6.1.5"
1595 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.5.tgz#0f7cf076b6215fd7e1da903ff6f22ddd1886b581"
1596 | integrity sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==
1597 |
1598 | wrap-ansi@^7.0.0:
1599 | version "7.0.0"
1600 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
1601 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
1602 | dependencies:
1603 | ansi-styles "^4.0.0"
1604 | string-width "^4.1.0"
1605 | strip-ansi "^6.0.0"
1606 |
1607 | wrappy@1:
1608 | version "1.0.2"
1609 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
1610 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
1611 |
1612 | ws@^8.0.0:
1613 | version "8.2.2"
1614 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.2.2.tgz#ca684330c6dd6076a737250ed81ac1606cb0a63e"
1615 | integrity sha512-Q6B6H2oc8QY3llc3cB8kVmQ6pnJWVQbP7Q5algTcIxx7YEpc0oU4NBVHlztA7Ekzfhw2r0rPducMUiCGWKQRzw==
1616 |
1617 | xml-name-validator@^3.0.0:
1618 | version "3.0.0"
1619 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
1620 | integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
1621 |
1622 | xmlchars@^2.2.0:
1623 | version "2.2.0"
1624 | resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
1625 | integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
1626 |
1627 | y18n@^5.0.5:
1628 | version "5.0.8"
1629 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
1630 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
1631 |
1632 | yallist@^2.1.2:
1633 | version "2.1.2"
1634 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52"
1635 | integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
1636 |
1637 | yallist@^4.0.0:
1638 | version "4.0.0"
1639 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
1640 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
1641 |
1642 | yargs-parser@20.2.4:
1643 | version "20.2.4"
1644 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54"
1645 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==
1646 |
1647 | yargs-parser@^20.2.2:
1648 | version "20.2.9"
1649 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"
1650 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
1651 |
1652 | yargs-unparser@2.0.0:
1653 | version "2.0.0"
1654 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb"
1655 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
1656 | dependencies:
1657 | camelcase "^6.0.0"
1658 | decamelize "^4.0.0"
1659 | flat "^5.0.2"
1660 | is-plain-obj "^2.1.0"
1661 |
1662 | yargs@16.2.0:
1663 | version "16.2.0"
1664 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66"
1665 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
1666 | dependencies:
1667 | cliui "^7.0.2"
1668 | escalade "^3.1.1"
1669 | get-caller-file "^2.0.5"
1670 | require-directory "^2.1.1"
1671 | string-width "^4.2.0"
1672 | y18n "^5.0.5"
1673 | yargs-parser "^20.2.2"
1674 |
1675 | yocto-queue@^0.1.0:
1676 | version "0.1.0"
1677 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
1678 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
1679 |
--------------------------------------------------------------------------------