├── .gitignore
├── iframe
├── tsconfig.json
├── generate.js
├── rollup.config.js
├── package.json
├── src
│ └── ui.ts
└── package-lock.json
├── manifest.json
├── widget
├── package.json
├── tsconfig.json
├── package-lock.json
└── src
│ └── code.tsx
├── declaration
└── types.d.ts
├── README.md
├── package.json
└── LICENSE
/.gitignore:
--------------------------------------------------------------------------------
1 | # Node
2 | *.log
3 | *.log.*
4 | node_modules
5 |
6 | out/
7 | dist/
8 | code.js
9 | bundle.js
10 | html.js
11 | ui.html
12 |
--------------------------------------------------------------------------------
/iframe/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es6",
4 | "lib": ["es6", "dom"],
5 | "moduleResolution": "node",
6 | "jsx": "react"
7 | },
8 | "exclude": ["../widget/src/code.tsx"]
9 | }
10 |
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Code Editor",
3 | "id": "1125176659139239100",
4 | "api": "1.0.0",
5 | "main": "code.js",
6 | "editorType": ["figma", "figjam"],
7 | "containsWidget": true,
8 | "widgetApi": "1.0.0",
9 | "ui": "ui.html"
10 | }
11 |
--------------------------------------------------------------------------------
/widget/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "scripts": {
3 | "build": "tsc -p tsconfig.json --outDir ..",
4 | "watch": "tsc -p tsconfig.json --outDir .. -w"
5 | },
6 | "devDependencies": {
7 | "@figma/plugin-typings": "*",
8 | "@figma/widget-typings": "*",
9 | "typescript": "*"
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/widget/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "jsx": "react",
4 | "jsxFactory": "figma.widget.h",
5 | "jsxFragmentFactory": "figma.widget.Fragment",
6 | "target": "es6",
7 | "lib": ["es6"],
8 | "typeRoots": ["./node_modules/@types", "./node_modules/@figma"]
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/declaration/types.d.ts:
--------------------------------------------------------------------------------
1 | interface Token {
2 | i: number;
3 | x: number;
4 | y: number;
5 | text: string;
6 | style: Style;
7 | }
8 |
9 | interface Style {
10 | color: string;
11 | weight: string;
12 | }
13 |
14 | interface Message {
15 | type: "text";
16 | width: number;
17 | height: number;
18 | text: string;
19 | tokens: Token[];
20 | language: string;
21 | }
22 |
--------------------------------------------------------------------------------
/iframe/generate.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Generate an HTML file containing the rollup build
3 | */
4 |
5 | const fs = require("fs");
6 |
7 | const inlineScript = fs.readFileSync("html.js");
8 |
9 | console.log(`
10 |
11 |
12 |
13 |
14 |
17 |
18 |
19 | `);
20 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Figma Code Editor Widget
2 |
3 | A widget to display a code editor in Figma
4 |
5 | ## Develop
6 |
7 | Install all the dependencies across three folders:
8 |
9 | ```sh
10 | npm install
11 | cd widget && npm install && cd ..
12 | cd iframe && npm install && cd ..
13 | ```
14 |
15 | Now, run:
16 |
17 | ```sh
18 | npm run watch
19 | ```
20 |
21 | to watch for changes and recompile, or
22 |
23 | ```sh
24 | npm run build
25 | ```
26 |
27 | to create the final bundle.
28 |
--------------------------------------------------------------------------------
/iframe/rollup.config.js:
--------------------------------------------------------------------------------
1 | import resolve from "@rollup/plugin-node-resolve";
2 | import execute from "rollup-plugin-execute";
3 | import typescript from "@rollup/plugin-typescript";
4 | import { terser } from "rollup-plugin-terser";
5 |
6 | export default {
7 | input: "src/ui.ts",
8 | output: {
9 | file: "html.js",
10 | format: "iife",
11 | globals: "__html__",
12 | inlineDynamicImports: true,
13 | },
14 | // Generate HTML from the compiled output bundle and output the UI
15 | plugins: [
16 | typescript(),
17 | resolve(),
18 | terser(),
19 | execute("node generate.js > ../ui.html"),
20 | ],
21 | };
22 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "figma-code-editor",
3 | "version": "1.0.0",
4 | "description": "Your Figma widget",
5 | "main": "code.js",
6 | "scripts": {
7 | "build:iframe": "cd iframe && npm run build",
8 | "build:widget": "cd widget && npm run build",
9 | "watch:iframe": "cd iframe && npm run watch",
10 | "watch:widget": "cd widget && npm run watch",
11 | "build": "concurrently \"npm:build:iframe\" \"npm:build:widget\"",
12 | "watch": "concurrently \"npm:watch:iframe\" \"npm:watch:widget\""
13 | },
14 | "author": "Dylan Freedman",
15 | "license": "MIT",
16 | "devDependencies": {
17 | "concurrently": "^7.2.2"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/iframe/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "scripts": {
3 | "build": "rollup -c",
4 | "watch": "rollup -c -w"
5 | },
6 | "devDependencies": {
7 | "@rollup/plugin-node-resolve": "^13.3.0",
8 | "@rollup/plugin-typescript": "^8.3.3",
9 | "@types/codemirror": "^5.60.5",
10 | "rollup": "^2.75.7",
11 | "rollup-plugin-execute": "^1.1.1",
12 | "rollup-plugin-terser": "^7.0.2",
13 | "tslib": "^2.4.0",
14 | "typescript": "*"
15 | },
16 | "dependencies": {
17 | "@codemirror/lang-cpp": "^6.0.1",
18 | "@codemirror/lang-css": "^6.0.0",
19 | "@codemirror/lang-html": "^6.1.0",
20 | "@codemirror/lang-java": "^6.0.0",
21 | "@codemirror/lang-javascript": "^6.0.1",
22 | "@codemirror/lang-json": "^6.0.0",
23 | "@codemirror/lang-markdown": "^6.0.0",
24 | "@codemirror/lang-php": "^6.0.0",
25 | "@codemirror/lang-python": "^6.0.0",
26 | "@codemirror/lang-rust": "^6.0.0",
27 | "@codemirror/lang-sql": "^6.0.0",
28 | "@codemirror/lang-xml": "^6.0.0",
29 | "codemirror": "^6.0.1"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Dylan Freedman
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/widget/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "widget",
3 | "lockfileVersion": 2,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "devDependencies": {
8 | "@figma/plugin-typings": "*",
9 | "@figma/widget-typings": "*",
10 | "typescript": "*"
11 | }
12 | },
13 | "node_modules/@figma/plugin-typings": {
14 | "version": "1.49.0",
15 | "resolved": "https://registry.npmjs.org/@figma/plugin-typings/-/plugin-typings-1.49.0.tgz",
16 | "integrity": "sha512-72tKC61RPkrBZ+uzj+TtL3bVAmxahZKv/TfElbrY9sBoZvr4/+4gw7hnJYiln5xBJHiJ4KTcjUy+6D1qUuWlTA==",
17 | "dev": true
18 | },
19 | "node_modules/@figma/widget-typings": {
20 | "version": "1.4.0",
21 | "resolved": "https://registry.npmjs.org/@figma/widget-typings/-/widget-typings-1.4.0.tgz",
22 | "integrity": "sha512-1wvCA0mFTzvsNUkdVhV6kT2sp3B9r0ex2vSEq59jysVZrWJxjljc9uvGM4C+va11ktcOVqgjzuCHNhWDtvugXQ==",
23 | "dev": true,
24 | "peerDependencies": {
25 | "@figma/plugin-typings": "1.x"
26 | }
27 | },
28 | "node_modules/typescript": {
29 | "version": "4.7.4",
30 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
31 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
32 | "dev": true,
33 | "bin": {
34 | "tsc": "bin/tsc",
35 | "tsserver": "bin/tsserver"
36 | },
37 | "engines": {
38 | "node": ">=4.2.0"
39 | }
40 | }
41 | },
42 | "dependencies": {
43 | "@figma/plugin-typings": {
44 | "version": "1.49.0",
45 | "resolved": "https://registry.npmjs.org/@figma/plugin-typings/-/plugin-typings-1.49.0.tgz",
46 | "integrity": "sha512-72tKC61RPkrBZ+uzj+TtL3bVAmxahZKv/TfElbrY9sBoZvr4/+4gw7hnJYiln5xBJHiJ4KTcjUy+6D1qUuWlTA==",
47 | "dev": true
48 | },
49 | "@figma/widget-typings": {
50 | "version": "1.4.0",
51 | "resolved": "https://registry.npmjs.org/@figma/widget-typings/-/widget-typings-1.4.0.tgz",
52 | "integrity": "sha512-1wvCA0mFTzvsNUkdVhV6kT2sp3B9r0ex2vSEq59jysVZrWJxjljc9uvGM4C+va11ktcOVqgjzuCHNhWDtvugXQ==",
53 | "dev": true,
54 | "requires": {}
55 | },
56 | "typescript": {
57 | "version": "4.7.4",
58 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
59 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
60 | "dev": true
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/widget/src/code.tsx:
--------------------------------------------------------------------------------
1 | ///
2 | // This widget will open an Iframe window with buttons to show a toast message and close the window.
3 |
4 | const { widget } = figma;
5 | const { useEffect, Text, Frame, AutoLayout, useSyncedState, usePropertyMenu } =
6 | widget;
7 |
8 | const PLACEHOLDER = "rgb(128, 128, 128)";
9 | const FONT_FAMILY = "Source Code Pro";
10 | const PLACEHOLDER_TEXT = "Type code...";
11 |
12 | interface Color {
13 | r: number;
14 | g: number;
15 | b: number;
16 | a: number;
17 | }
18 |
19 | function placeholderTokens(
20 | placeholderText: string,
21 | language?: string
22 | ): Message {
23 | const tokens: Token[] = [];
24 | let x = 0;
25 | let y = 0;
26 | let width = 0;
27 | for (let i = 0; i < placeholderText.length; i++) {
28 | const text = placeholderText.charAt(i);
29 |
30 | tokens.push({
31 | i,
32 | x,
33 | y,
34 | text,
35 | style: {
36 | color: PLACEHOLDER,
37 | weight: "normal",
38 | },
39 | });
40 |
41 | if (text === "\n") {
42 | x = 0;
43 | y++;
44 | } else {
45 | x++;
46 | if (x > width) {
47 | width = x;
48 | }
49 | }
50 | }
51 |
52 | const height = y + 1;
53 | return {
54 | type: "text",
55 | width,
56 | height,
57 | text: placeholderText,
58 | tokens,
59 | language: language == null ? "JavaScript" : language,
60 | };
61 | }
62 |
63 | function ensureFontWeight(
64 | weight: string
65 | ):
66 | | 100
67 | | 200
68 | | 300
69 | | 400
70 | | 500
71 | | 600
72 | | 700
73 | | 800
74 | | 900
75 | | "thin"
76 | | "extra-light"
77 | | "light"
78 | | "normal"
79 | | "medium"
80 | | "semi-bold"
81 | | "bold"
82 | | "extra-bold"
83 | | "black" {
84 | if (weight.trim().length === 0) {
85 | return "normal";
86 | }
87 | const weightInt = parseInt(weight);
88 | if (weightInt % 100 === 0 && weightInt > 0 && weightInt < 1000) {
89 | return weightInt as 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;
90 | }
91 |
92 | const normalizedWeight = weight.toLowerCase().trim();
93 |
94 | if (normalizedWeight === "thin") return "thin";
95 | if (normalizedWeight === "extra-light") return "extra-light";
96 | if (normalizedWeight === "light") return "light";
97 | if (normalizedWeight === "normal") return "normal";
98 | if (normalizedWeight === "medium") return "medium";
99 | if (normalizedWeight === "semi-bold") return "semi-bold";
100 | if (normalizedWeight === "bold") return "bold";
101 | if (normalizedWeight === "extra-bold") return "extra-bold";
102 | if (normalizedWeight === "black") return "black";
103 | return "normal";
104 | }
105 |
106 | function getFill(style: string): Color {
107 | const defaultColor = {
108 | r: 0,
109 | g: 0,
110 | b: 0,
111 | a: 1,
112 | };
113 |
114 | try {
115 | if (style.startsWith("rgb")) {
116 | const numbers = style
117 | .split(/[^0-9]+/)
118 | .filter((x) => x.trim().length > 0)
119 | .map((x) => parseInt(x));
120 | if (numbers.length >= 3) {
121 | return {
122 | r: numbers[0] / 255,
123 | g: numbers[1] / 255,
124 | b: numbers[2] / 255,
125 | a: numbers.length >= 4 ? numbers[3] : 1,
126 | };
127 | }
128 | }
129 | return defaultColor;
130 | } catch (e) {
131 | return defaultColor;
132 | }
133 | }
134 |
135 | const SIZES = [10, 12, 14, 16, 18, 20, 24, 32, 36, 40, 48, 64, 96, 128];
136 |
137 | function fillMode(color: Color, mode: string): Color {
138 | if (mode === "light") return color;
139 | return {
140 | r: 1 - color.r,
141 | g: 1 - color.g,
142 | b: 1 - color.b,
143 | a: color.a,
144 | };
145 | }
146 |
147 | function Widget() {
148 | const [tokens, setTokens] = useSyncedState(
149 | "text",
150 | placeholderTokens(PLACEHOLDER_TEXT)
151 | );
152 |
153 | const [FONT_SIZE, setFontSize] = useSyncedState("fontSize", 24);
154 | const [colorMode, setColorMode] = useSyncedState("colorMode", "light");
155 | const [includeFrame, setIncludeFrame] = useSyncedState("includeFrame", true);
156 | const LETTER_WIDTH = FONT_SIZE * 0.6;
157 | const LETTER_HEIGHT = (FONT_SIZE / 24) * 30;
158 | const PADDING = (FONT_SIZE / 24) * 10;
159 | const CORNER_RADIUS = (FONT_SIZE / 24) * 8;
160 | const BACKGROUND = colorMode === "light" ? "#FFFFFF" : "#343434";
161 |
162 | usePropertyMenu(
163 | [
164 | {
165 | itemType: "dropdown",
166 | selectedOption: `${includeFrame}`,
167 | tooltip: "Frame code",
168 | propertyName: "includeFrame",
169 | options: [
170 | { label: "Framed", option: "true" },
171 | { label: "Unframed", option: "false" },
172 | ],
173 | },
174 | {
175 | itemType: "dropdown",
176 | selectedOption: colorMode,
177 | tooltip: "Color mode",
178 | propertyName: "colorMode",
179 | options: [
180 | { label: "Light mode", option: "light" },
181 | { label: "Dark mode", option: "dark" },
182 | ],
183 | },
184 | {
185 | itemType: "dropdown",
186 | selectedOption: `${FONT_SIZE}`,
187 | tooltip: "Font size",
188 | propertyName: "fontSize",
189 | options: SIZES.map((size) => ({
190 | label: `${size}`,
191 | option: `${size}`,
192 | })),
193 | },
194 | ],
195 | (e) => {
196 | if (e.propertyName === "includeFrame") {
197 | setIncludeFrame(e.propertyValue === "true");
198 | }
199 | if (e.propertyName === "colorMode") {
200 | setColorMode(e.propertyValue);
201 | }
202 | if (e.propertyName === "fontSize") {
203 | setFontSize(parseInt(e.propertyValue));
204 | }
205 | }
206 | );
207 |
208 | useEffect(() => {
209 | figma.ui.onmessage = (msg: Message) => {
210 | if (msg.type === "text") {
211 | if (msg.text === "") {
212 | setTokens(placeholderTokens(PLACEHOLDER_TEXT, msg.language));
213 | } else {
214 | setTokens(msg);
215 | }
216 | }
217 | };
218 | });
219 |
220 | const component = (
221 |
229 | new Promise((resolve) => {
230 | const injectedHtml = __html__
231 | .replace(
232 | /['"]\$\$\$INITIAL_DOC\$\$\$['"]/,
233 | JSON.stringify(tokens.text)
234 | )
235 | .replace(
236 | /['"]\$\$\$INITIAL_LANGUAGE\$\$\$['"]/,
237 | JSON.stringify(tokens.language)
238 | );
239 |
240 | figma.showUI(injectedHtml, { width: 500, height: 300 });
241 | })
242 | }
243 | >
244 | {tokens.tokens.map((token) => {
245 | return (
246 |
255 | {token.text}
256 |
257 | );
258 | })}
259 |
260 | );
261 |
262 | if (includeFrame) {
263 | return (
264 |
284 | {component}
285 |
286 | );
287 | } else {
288 | return component;
289 | }
290 | }
291 |
292 | widget.register(Widget);
293 |
--------------------------------------------------------------------------------
/iframe/src/ui.ts:
--------------------------------------------------------------------------------
1 | ///
2 | import { EditorView, ViewUpdate, keymap } from "@codemirror/view";
3 | import { EditorState, StateEffect } from "@codemirror/state";
4 | import { basicSetup } from "codemirror";
5 | import { indentWithTab } from "@codemirror/commands";
6 | import {
7 | defaultHighlightStyle,
8 | LanguageSupport,
9 | ensureSyntaxTree,
10 | } from "@codemirror/language";
11 | import { highlightTree } from "@lezer/highlight";
12 | import { javascript } from "@codemirror/lang-javascript";
13 | import { html } from "@codemirror/lang-html";
14 | import { cpp } from "@codemirror/lang-cpp";
15 | import { markdown } from "@codemirror/lang-markdown";
16 | import { xml } from "@codemirror/lang-xml";
17 | import { rust } from "@codemirror/lang-rust";
18 | import { sql } from "@codemirror/lang-sql";
19 | import { css } from "@codemirror/lang-css";
20 | import { python } from "@codemirror/lang-python";
21 | import { php } from "@codemirror/lang-php";
22 | import { json } from "@codemirror/lang-json";
23 | import { java } from "@codemirror/lang-java";
24 |
25 | // Replaced by the widget to inject state
26 | const INITIAL_DOC = "";
27 | const INITIAL_LANGUAGE = "JavaScript";
28 |
29 | // The mapping from languages to CodeMirror packages
30 | const LANGUAGES = [
31 | {
32 | name: "JavaScript",
33 | package: () => javascript({ jsx: true, typescript: true }),
34 | },
35 | {
36 | name: "HTML",
37 | package: () => html(),
38 | },
39 | {
40 | name: "C++",
41 | package: () => cpp(),
42 | },
43 | {
44 | name: "Markdown",
45 | package: () => markdown(),
46 | },
47 | {
48 | name: "XML",
49 | package: () => xml(),
50 | },
51 | {
52 | name: "Rust",
53 | package: () => rust(),
54 | },
55 | {
56 | name: "SQL",
57 | package: () => sql(),
58 | },
59 | {
60 | name: "CSS",
61 | package: () => css(),
62 | },
63 | {
64 | name: "Python",
65 | package: () => python(),
66 | },
67 | {
68 | name: "PHP",
69 | package: () => php(),
70 | },
71 | {
72 | name: "JSON",
73 | package: () => json(),
74 | },
75 | {
76 | name: "Java",
77 | package: () => java(),
78 | },
79 | ];
80 |
81 | // Initialize the language
82 | const languageObject = LANGUAGES.filter(
83 | (x) => x.name === "$$$INITIAL_LANGUAGE$$$"
84 | )[0]; // INITIAL_LANGUAGE replaced by the widget to inject state
85 | const language = languageObject.package();
86 | const languageName = languageObject.name;
87 |
88 | // Create the language dropdown
89 | const dropdown = document.createElement("select");
90 | // Style the dropdown
91 | dropdown.style.background = "#444444";
92 | dropdown.style.color = "white";
93 | dropdown.style.fontFamily = "monospace";
94 | dropdown.style.padding = "2px";
95 | dropdown.style.fontSize = "12px";
96 | dropdown.style.width = "100%";
97 | dropdown.style.border = "none";
98 |
99 | // Populate the dropdown options with languages
100 | for (const { name } of LANGUAGES) {
101 | const option = document.createElement("option");
102 | option.value = name;
103 | option.textContent = name;
104 | dropdown.appendChild(option);
105 | }
106 | dropdown.value = languageObject.name;
107 | document.body.appendChild(dropdown);
108 |
109 | // The default style for output tokens
110 | const DEFAULT_STYLE: Style = {
111 | color: "",
112 | weight: "",
113 | };
114 |
115 | /**
116 | * Gets the CodeMirror editor extension configuration for the given languages
117 | * @param language The CodeMirror language package
118 | * @param languageName The name of the language package (see {@link LANGUAGES})
119 | * @returns CodeMirror extensions to power the editor
120 | */
121 | function getExtensions(language: LanguageSupport, languageName: string) {
122 | // Cached styles
123 | const STYLE_CACHE: { [style: string]: Style } = {};
124 |
125 | /**
126 | * Gets the style given a CodeMirror highlight class
127 | * @param className The CodeMirror class name
128 | * @returns A style object with computed styles based on the iframe DOM
129 | */
130 | function getStyle(className: string): Style {
131 | // Check if the style is cached to avoid unnecessary computation
132 | if (STYLE_CACHE[className] != null) {
133 | return STYLE_CACHE[className];
134 | }
135 |
136 | // Create a temporary element
137 | const tmpElem = document.createElement("div");
138 | tmpElem.className = className;
139 | document.body.appendChild(tmpElem);
140 | // Update the cache with the computed style
141 | const computed = getComputedStyle(tmpElem);
142 | STYLE_CACHE[className] = {
143 | color: computed.color,
144 | weight: computed.fontWeight,
145 | };
146 | document.body.removeChild(tmpElem);
147 |
148 | // Return getStyle, which will retrieve from cache now
149 | return getStyle(className);
150 | }
151 |
152 | return [
153 | // Essential setup
154 | [basicSetup, keymap.of([indentWithTab]), language],
155 | // Update function
156 | EditorView.updateListener.of((v: ViewUpdate) => {
157 | if (
158 | v.docChanged ||
159 | (v.transactions.length > 0 &&
160 | v.transactions.some((transaction) => transaction.reconfigured))
161 | ) {
162 | // Document changed
163 | const docContents = v.state.doc.toString();
164 |
165 | // Build up the highlighting syntax tree
166 | const highlighting: [number, number, string][] = [];
167 | highlightTree(
168 | ensureSyntaxTree(
169 | editor.state,
170 | v.state.doc.length,
171 | (() => false) as unknown as number
172 | ),
173 | defaultHighlightStyle,
174 | (from, to, classes) => highlighting.push([from, to, classes])
175 | );
176 |
177 | // Populate all the tokens with x/y positions,
178 | // calculate width/height while processing
179 | const tokens: Token[] = [];
180 | let x = 0;
181 | let y = 0;
182 | let width = 0;
183 | for (let i = 0; i < docContents.length; i++) {
184 | const text = docContents.charAt(i);
185 | tokens.push({ i, x, y, text, style: DEFAULT_STYLE });
186 | if (text === "\n") {
187 | // Line feed, advance newline
188 | x = 0;
189 | y++;
190 | } else {
191 | // Advance character
192 | x++;
193 | if (x > width) {
194 | // Note new max width
195 | width = x;
196 | }
197 | }
198 | }
199 |
200 | // Add one more line to the height
201 | const height = y + 1;
202 |
203 | // Color in tokens
204 | for (const highlight of highlighting) {
205 | for (let i = highlight[0]; i < highlight[1]; i++) {
206 | tokens[i].style = getStyle(highlight[2]);
207 | }
208 | }
209 |
210 | // Group tokens
211 | const newTokens: Token[] = [];
212 | let prevToken: Token | null = null;
213 | let currentRun: Token[] = [];
214 |
215 | const flushTokens = () => {
216 | if (currentRun.length > 0) {
217 | // Flush out current tokens
218 | const firstToken = currentRun[0];
219 | let combinedTokenText = "";
220 | for (const token of currentRun) {
221 | combinedTokenText += token.text;
222 | }
223 | newTokens.push({
224 | i: firstToken.i,
225 | x: firstToken.x,
226 | y: firstToken.y,
227 | style: firstToken.style,
228 | text: combinedTokenText,
229 | });
230 | // Set current run
231 | currentRun = [];
232 | }
233 | };
234 |
235 | for (const token of tokens) {
236 | if (token.text === "\n") {
237 | // Newline token always ends the current run
238 | flushTokens();
239 | } else {
240 | // Check the previous token
241 | if (prevToken != null) {
242 | if (
243 | prevToken.style.color !== token.style.color ||
244 | prevToken.style.weight !== token.style.weight
245 | ) {
246 | // If the tokens don't match, flush the current run
247 | flushTokens();
248 | }
249 | }
250 | // No matter what, increment the current run
251 | currentRun.push(token);
252 | }
253 |
254 | // Set the previous token
255 | prevToken = token;
256 | }
257 | // Flush any remaining tokens
258 | flushTokens();
259 |
260 | // The message to pass back to the widget
261 | const message: Message = {
262 | type: "text",
263 | width,
264 | height,
265 | text: docContents,
266 | tokens: newTokens,
267 | language: languageName,
268 | };
269 |
270 | // Pass the message back to the widget
271 | parent.postMessage(
272 | {
273 | pluginMessage: message,
274 | },
275 | "*"
276 | );
277 | }
278 | }),
279 | ];
280 | }
281 |
282 | // Create the CodeMirror editor
283 | const editor = new EditorView({
284 | state: EditorState.create({
285 | doc: "$$$INITIAL_DOC$$$", // INITIAL_DOC replaced by the widget to inject state
286 | extensions: getExtensions(language, languageName),
287 | }),
288 | parent: document.body,
289 | });
290 |
291 | // Listen to dropdown change events and update the editor with a new extension
292 | // configuration based on the selected language
293 | dropdown.addEventListener("change", (e) => {
294 | // Grab the language name and package
295 | const languageName = (e.target as HTMLSelectElement).value;
296 | const languagePackage = LANGUAGES.filter((x) => x.name === languageName)[0]
297 | .package;
298 | // Update the editor
299 | editor.dispatch({
300 | effects: StateEffect.reconfigure.of(
301 | getExtensions(languagePackage(), languageName)
302 | ),
303 | });
304 | });
305 |
--------------------------------------------------------------------------------
/iframe/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "iframe",
3 | "lockfileVersion": 2,
4 | "requires": true,
5 | "packages": {
6 | "": {
7 | "dependencies": {
8 | "@codemirror/lang-cpp": "^6.0.1",
9 | "@codemirror/lang-css": "^6.0.0",
10 | "@codemirror/lang-html": "^6.1.0",
11 | "@codemirror/lang-java": "^6.0.0",
12 | "@codemirror/lang-javascript": "^6.0.1",
13 | "@codemirror/lang-json": "^6.0.0",
14 | "@codemirror/lang-markdown": "^6.0.0",
15 | "@codemirror/lang-php": "^6.0.0",
16 | "@codemirror/lang-python": "^6.0.0",
17 | "@codemirror/lang-rust": "^6.0.0",
18 | "@codemirror/lang-sql": "^6.0.0",
19 | "@codemirror/lang-xml": "^6.0.0",
20 | "codemirror": "^6.0.1"
21 | },
22 | "devDependencies": {
23 | "@rollup/plugin-node-resolve": "^13.3.0",
24 | "@rollup/plugin-typescript": "^8.3.3",
25 | "@types/codemirror": "^5.60.5",
26 | "rollup": "^2.75.7",
27 | "rollup-plugin-execute": "^1.1.1",
28 | "rollup-plugin-terser": "^7.0.2",
29 | "tslib": "^2.4.0",
30 | "typescript": "*"
31 | }
32 | },
33 | "node_modules/@babel/code-frame": {
34 | "version": "7.18.6",
35 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
36 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
37 | "dev": true,
38 | "dependencies": {
39 | "@babel/highlight": "^7.18.6"
40 | },
41 | "engines": {
42 | "node": ">=6.9.0"
43 | }
44 | },
45 | "node_modules/@babel/helper-validator-identifier": {
46 | "version": "7.18.6",
47 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
48 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
49 | "dev": true,
50 | "engines": {
51 | "node": ">=6.9.0"
52 | }
53 | },
54 | "node_modules/@babel/highlight": {
55 | "version": "7.18.6",
56 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
57 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
58 | "dev": true,
59 | "dependencies": {
60 | "@babel/helper-validator-identifier": "^7.18.6",
61 | "chalk": "^2.0.0",
62 | "js-tokens": "^4.0.0"
63 | },
64 | "engines": {
65 | "node": ">=6.9.0"
66 | }
67 | },
68 | "node_modules/@codemirror/autocomplete": {
69 | "version": "6.0.2",
70 | "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.0.2.tgz",
71 | "integrity": "sha512-9PDjnllmXan/7Uax87KGORbxerDJ/cu10SB+n4Jz0zXMEvIh3+TGgZxhIvDOtaQ4jDBQEM7kHYW4vLdQB0DGZQ==",
72 | "dependencies": {
73 | "@codemirror/language": "^6.0.0",
74 | "@codemirror/state": "^6.0.0",
75 | "@codemirror/view": "^6.0.0",
76 | "@lezer/common": "^1.0.0"
77 | },
78 | "peerDependencies": {
79 | "@codemirror/language": "^6.0.0",
80 | "@codemirror/state": "^6.0.0",
81 | "@codemirror/view": "^6.0.0",
82 | "@lezer/common": "^1.0.0"
83 | }
84 | },
85 | "node_modules/@codemirror/commands": {
86 | "version": "6.0.1",
87 | "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.0.1.tgz",
88 | "integrity": "sha512-iNHDByicYqQjs0Wo1MKGfqNbMYMyhS9WV6EwMVwsHXImlFemgEUC+c5X22bXKBStN3qnwg4fArNZM+gkv22baQ==",
89 | "dependencies": {
90 | "@codemirror/language": "^6.0.0",
91 | "@codemirror/state": "^6.0.0",
92 | "@codemirror/view": "^6.0.0",
93 | "@lezer/common": "^1.0.0"
94 | }
95 | },
96 | "node_modules/@codemirror/lang-cpp": {
97 | "version": "6.0.1",
98 | "resolved": "https://registry.npmjs.org/@codemirror/lang-cpp/-/lang-cpp-6.0.1.tgz",
99 | "integrity": "sha512-46p3ohfhjzkLWJ3VwvzX0aqlXh8UkEqX1xo2Eds9l6Ql3uDoxI2IZEjR9cgJaGOZTXCkDzQuQH7sfYAxMvzLjA==",
100 | "dependencies": {
101 | "@codemirror/language": "^6.0.0",
102 | "@lezer/cpp": "^1.0.0"
103 | }
104 | },
105 | "node_modules/@codemirror/lang-css": {
106 | "version": "6.0.0",
107 | "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.0.0.tgz",
108 | "integrity": "sha512-jBqc+BTuwhNOTlrimFghLlSrN6iFuE44HULKWoR4qKYObhOIl9Lci1iYj6zMIte1XTQmZguNvjXMyr43LUKwSw==",
109 | "dependencies": {
110 | "@codemirror/autocomplete": "^6.0.0",
111 | "@codemirror/language": "^6.0.0",
112 | "@codemirror/state": "^6.0.0",
113 | "@lezer/css": "^1.0.0"
114 | }
115 | },
116 | "node_modules/@codemirror/lang-html": {
117 | "version": "6.1.0",
118 | "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.1.0.tgz",
119 | "integrity": "sha512-gA7NmJxqvnhwza05CvR7W/39Ap9r/4Vs9uiC0IeFYo1hSlJzc/8N6Evviz6vTW1x8SpHcRYyqKOf6rpl6LfWtg==",
120 | "dependencies": {
121 | "@codemirror/autocomplete": "^6.0.0",
122 | "@codemirror/lang-css": "^6.0.0",
123 | "@codemirror/lang-javascript": "^6.0.0",
124 | "@codemirror/language": "^6.0.0",
125 | "@codemirror/state": "^6.0.0",
126 | "@lezer/common": "^1.0.0",
127 | "@lezer/html": "^1.0.0"
128 | }
129 | },
130 | "node_modules/@codemirror/lang-java": {
131 | "version": "6.0.0",
132 | "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.0.tgz",
133 | "integrity": "sha512-aeWq+ikUS6Eubk6RBbiMgxuBIT4Ih8Asb1qc2pSiMcstrwr4ODbazPXsBHbLBYg3aObvFyOm2bNQncbQJjZ3sQ==",
134 | "dependencies": {
135 | "@codemirror/language": "^6.0.0",
136 | "@lezer/java": "^1.0.0"
137 | }
138 | },
139 | "node_modules/@codemirror/lang-javascript": {
140 | "version": "6.0.1",
141 | "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.0.1.tgz",
142 | "integrity": "sha512-kjGbBEosl+ozDU5ruDV48w4v3H6KECTFiDjqMLT0KhVwESPfv3wOvnDrTT0uaMOg3YRGnBWsyiIoKHl/tNWWDg==",
143 | "dependencies": {
144 | "@codemirror/autocomplete": "^6.0.0",
145 | "@codemirror/language": "^6.0.0",
146 | "@codemirror/lint": "^6.0.0",
147 | "@codemirror/state": "^6.0.0",
148 | "@codemirror/view": "^6.0.0",
149 | "@lezer/common": "^1.0.0",
150 | "@lezer/javascript": "^1.0.0"
151 | }
152 | },
153 | "node_modules/@codemirror/lang-json": {
154 | "version": "6.0.0",
155 | "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.0.tgz",
156 | "integrity": "sha512-DvTcYTKLmg2viADXlTdufrT334M9jowe1qO02W28nvm+nejcvhM5vot5mE8/kPrxYw/HJHhwu1z2PyBpnMLCNQ==",
157 | "dependencies": {
158 | "@codemirror/language": "^6.0.0",
159 | "@lezer/json": "^1.0.0"
160 | }
161 | },
162 | "node_modules/@codemirror/lang-markdown": {
163 | "version": "6.0.0",
164 | "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.0.0.tgz",
165 | "integrity": "sha512-ozJaO1W4WgGlwWOoYCSYzbVhhM0YM/4lAWLrNsBbmhh5Ztpl0qm4CgEQRl3t8/YcylTZYBIXiskui8sHNGd4dg==",
166 | "dependencies": {
167 | "@codemirror/lang-html": "^6.0.0",
168 | "@codemirror/language": "^6.0.0",
169 | "@codemirror/state": "^6.0.0",
170 | "@codemirror/view": "^6.0.0",
171 | "@lezer/common": "^1.0.0",
172 | "@lezer/markdown": "^1.0.0"
173 | }
174 | },
175 | "node_modules/@codemirror/lang-php": {
176 | "version": "6.0.0",
177 | "resolved": "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.0.tgz",
178 | "integrity": "sha512-96CEjq0xEgbzc6bdFPwILPfZ6m8917JRbh2oPszZJABlYxG4Y+eYjtYkUTDb4yuyjQKyigHoeGC6zoIOYA1NWA==",
179 | "dependencies": {
180 | "@codemirror/lang-html": "^6.0.0",
181 | "@codemirror/language": "^6.0.0",
182 | "@codemirror/state": "^6.0.0",
183 | "@lezer/common": "^1.0.0",
184 | "@lezer/php": "^1.0.0"
185 | }
186 | },
187 | "node_modules/@codemirror/lang-python": {
188 | "version": "6.0.0",
189 | "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.0.0.tgz",
190 | "integrity": "sha512-wI448yup4Y2Xxq/7r3Q4eEmth74ud263ABcexumEFEcoU+0c1k5XRKXp1aT5PrrVavlAKxWQMEvgi+x+HBU4zQ==",
191 | "dependencies": {
192 | "@codemirror/language": "^6.0.0",
193 | "@lezer/python": "^1.0.0"
194 | }
195 | },
196 | "node_modules/@codemirror/lang-rust": {
197 | "version": "6.0.0",
198 | "resolved": "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.0.tgz",
199 | "integrity": "sha512-VQql3Qk1BwoXb3SUkeWll/EEwhsgQWc1bpia7CFqqp2PhQBb5A6r4Vj2JCkU/nE6A7TDPSGHTOoqJSG5s/VXtQ==",
200 | "dependencies": {
201 | "@codemirror/language": "^6.0.0",
202 | "@lezer/rust": "^1.0.0"
203 | }
204 | },
205 | "node_modules/@codemirror/lang-sql": {
206 | "version": "6.0.0",
207 | "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.0.0.tgz",
208 | "integrity": "sha512-mq4NwTDbbo7QZktfgPsS+ms0FmAceH4WM2jLbgf+N28FoKUy0JzGe3XJymgnTewXnNUwujKBxArQzibxSDdVyQ==",
209 | "dependencies": {
210 | "@codemirror/autocomplete": "^6.0.0",
211 | "@codemirror/language": "^6.0.0",
212 | "@codemirror/state": "^6.0.0",
213 | "@lezer/highlight": "^1.0.0",
214 | "@lezer/lr": "^1.0.0"
215 | }
216 | },
217 | "node_modules/@codemirror/lang-xml": {
218 | "version": "6.0.0",
219 | "resolved": "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.0.0.tgz",
220 | "integrity": "sha512-M/HLWxIiP956xGjtrxkeHkCmDGVQGKu782x8pOH5CLJIMkWtiB1DWfDoDHqpFjdEE9dkfcqPWvYfVi6GbhuXEg==",
221 | "dependencies": {
222 | "@codemirror/autocomplete": "^6.0.0",
223 | "@codemirror/language": "^6.0.0",
224 | "@codemirror/state": "^6.0.0",
225 | "@lezer/common": "^1.0.0",
226 | "@lezer/xml": "^1.0.0"
227 | }
228 | },
229 | "node_modules/@codemirror/language": {
230 | "version": "6.2.0",
231 | "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.2.0.tgz",
232 | "integrity": "sha512-tabB0Ef/BflwoEmTB4a//WZ9P90UQyne9qWB9YFsmeS4bnEqSys7UpGk/da1URMXhyfuzWCwp+AQNMhvu8SfnA==",
233 | "dependencies": {
234 | "@codemirror/state": "^6.0.0",
235 | "@codemirror/view": "^6.0.0",
236 | "@lezer/common": "^1.0.0",
237 | "@lezer/highlight": "^1.0.0",
238 | "@lezer/lr": "^1.0.0",
239 | "style-mod": "^4.0.0"
240 | }
241 | },
242 | "node_modules/@codemirror/lint": {
243 | "version": "6.0.0",
244 | "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.0.0.tgz",
245 | "integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==",
246 | "dependencies": {
247 | "@codemirror/state": "^6.0.0",
248 | "@codemirror/view": "^6.0.0",
249 | "crelt": "^1.0.5"
250 | }
251 | },
252 | "node_modules/@codemirror/search": {
253 | "version": "6.0.0",
254 | "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.0.0.tgz",
255 | "integrity": "sha512-rL0rd3AhI0TAsaJPUaEwC63KHLO7KL0Z/dYozXj6E7L3wNHRyx7RfE0/j5HsIf912EE5n2PCb4Vg0rGYmDv4UQ==",
256 | "dependencies": {
257 | "@codemirror/state": "^6.0.0",
258 | "@codemirror/view": "^6.0.0",
259 | "crelt": "^1.0.5"
260 | }
261 | },
262 | "node_modules/@codemirror/state": {
263 | "version": "6.1.0",
264 | "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.0.tgz",
265 | "integrity": "sha512-qbUr94DZTe6/V1VS7LDLz11rM/1t/nJxR1El4I6UaxDEdc0aZZvq6JCLJWiRmUf95NRAnDH6fhXn+PWp9wGCIg=="
266 | },
267 | "node_modules/@codemirror/view": {
268 | "version": "6.0.2",
269 | "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.0.2.tgz",
270 | "integrity": "sha512-mnVT/q1JvKPjpmjXJNeCi/xHyaJ3abGJsumIVpdQ1nE1MXAyHf7GHWt8QpWMUvDiqF0j+inkhVR2OviTdFFX7Q==",
271 | "dependencies": {
272 | "@codemirror/state": "^6.0.0",
273 | "style-mod": "^4.0.0",
274 | "w3c-keyname": "^2.2.4"
275 | }
276 | },
277 | "node_modules/@jridgewell/gen-mapping": {
278 | "version": "0.3.2",
279 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
280 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
281 | "dev": true,
282 | "dependencies": {
283 | "@jridgewell/set-array": "^1.0.1",
284 | "@jridgewell/sourcemap-codec": "^1.4.10",
285 | "@jridgewell/trace-mapping": "^0.3.9"
286 | },
287 | "engines": {
288 | "node": ">=6.0.0"
289 | }
290 | },
291 | "node_modules/@jridgewell/resolve-uri": {
292 | "version": "3.0.8",
293 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
294 | "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
295 | "dev": true,
296 | "engines": {
297 | "node": ">=6.0.0"
298 | }
299 | },
300 | "node_modules/@jridgewell/set-array": {
301 | "version": "1.1.2",
302 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
303 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
304 | "dev": true,
305 | "engines": {
306 | "node": ">=6.0.0"
307 | }
308 | },
309 | "node_modules/@jridgewell/source-map": {
310 | "version": "0.3.2",
311 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
312 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
313 | "dev": true,
314 | "dependencies": {
315 | "@jridgewell/gen-mapping": "^0.3.0",
316 | "@jridgewell/trace-mapping": "^0.3.9"
317 | }
318 | },
319 | "node_modules/@jridgewell/sourcemap-codec": {
320 | "version": "1.4.14",
321 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
322 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
323 | "dev": true
324 | },
325 | "node_modules/@jridgewell/trace-mapping": {
326 | "version": "0.3.14",
327 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
328 | "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
329 | "dev": true,
330 | "dependencies": {
331 | "@jridgewell/resolve-uri": "^3.0.3",
332 | "@jridgewell/sourcemap-codec": "^1.4.10"
333 | }
334 | },
335 | "node_modules/@lezer/common": {
336 | "version": "1.0.0",
337 | "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.0.tgz",
338 | "integrity": "sha512-ohydQe+Hb+w4oMDvXzs8uuJd2NoA3D8YDcLiuDsLqH+yflDTPEpgCsWI3/6rH5C3BAedtH1/R51dxENldQceEA=="
339 | },
340 | "node_modules/@lezer/cpp": {
341 | "version": "1.0.0",
342 | "resolved": "https://registry.npmjs.org/@lezer/cpp/-/cpp-1.0.0.tgz",
343 | "integrity": "sha512-Klk3/AIEKoptmm6cNm7xTulNXjdTKkD+hVOEcz/NeRg8tIestP5hsGHJeFDR/XtyDTxsjoPjKZRIGohht7zbKw==",
344 | "dependencies": {
345 | "@lezer/highlight": "^1.0.0",
346 | "@lezer/lr": "^1.0.0"
347 | }
348 | },
349 | "node_modules/@lezer/css": {
350 | "version": "1.0.0",
351 | "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.0.0.tgz",
352 | "integrity": "sha512-616VqgDKumHmYIuxs3tnX1irEQmoDHgF/TlP4O5ICWwyHwLMErq+8iKVuzTkOdBqvYAVmObqThcDEAaaMJjAdg==",
353 | "dependencies": {
354 | "@lezer/highlight": "^1.0.0",
355 | "@lezer/lr": "^1.0.0"
356 | }
357 | },
358 | "node_modules/@lezer/highlight": {
359 | "version": "1.0.0",
360 | "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.0.0.tgz",
361 | "integrity": "sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==",
362 | "dependencies": {
363 | "@lezer/common": "^1.0.0"
364 | }
365 | },
366 | "node_modules/@lezer/html": {
367 | "version": "1.0.0",
368 | "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.0.0.tgz",
369 | "integrity": "sha512-wZHBcieArLTxEi198hqRBBHMySzDKo5suWaESdUw0t44IXp01vkSRwX2brG1qBbKdwJ+C6U0iMl00vWNiyAROg==",
370 | "dependencies": {
371 | "@lezer/highlight": "^1.0.0",
372 | "@lezer/lr": "^1.0.0"
373 | }
374 | },
375 | "node_modules/@lezer/java": {
376 | "version": "1.0.0",
377 | "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.0.0.tgz",
378 | "integrity": "sha512-z2EA0JHq2WoiKfQy5uOOd4t17PJtq8guh58gPkSzOnNcQ7DNbkrU+Axak+jL8+Noinwyz2tRNOseQFj+Tg+P0A==",
379 | "dependencies": {
380 | "@lezer/highlight": "^1.0.0",
381 | "@lezer/lr": "^1.0.0"
382 | }
383 | },
384 | "node_modules/@lezer/javascript": {
385 | "version": "1.0.1",
386 | "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.0.1.tgz",
387 | "integrity": "sha512-t7fpf3+gi/jiAtW+Gv734TbKdpPg6b8qATH01/jprW9H2oR++Tb688IHwJvZbk9F4GjpCEv86beuHMpUyC1b5g==",
388 | "dependencies": {
389 | "@lezer/highlight": "^1.0.0",
390 | "@lezer/lr": "^1.0.0"
391 | }
392 | },
393 | "node_modules/@lezer/json": {
394 | "version": "1.0.0",
395 | "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.0.tgz",
396 | "integrity": "sha512-zbAuUY09RBzCoCA3lJ1+ypKw5WSNvLqGMtasdW6HvVOqZoCpPr8eWrsGnOVWGKGn8Rh21FnrKRVlJXrGAVUqRw==",
397 | "dependencies": {
398 | "@lezer/highlight": "^1.0.0",
399 | "@lezer/lr": "^1.0.0"
400 | }
401 | },
402 | "node_modules/@lezer/lr": {
403 | "version": "1.1.0",
404 | "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.1.0.tgz",
405 | "integrity": "sha512-Iad04uVwk1PvSnj25mqj7zEEIRAsasbsTRmVzI0AUTs/+1Dz1//iYAaoLr7A+Xa7bZDfql5MKTxZmSlkYZD3Dg==",
406 | "dependencies": {
407 | "@lezer/common": "^1.0.0"
408 | }
409 | },
410 | "node_modules/@lezer/markdown": {
411 | "version": "1.0.1",
412 | "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.0.1.tgz",
413 | "integrity": "sha512-LlpNWLqes3XQvd8TwpJTHf9ENl4fI6H32xQkMgltUITFMMdQpOASXQtDawWR03yS6hskh4bkhATQbgjdGMoUvA==",
414 | "dependencies": {
415 | "@lezer/common": "^1.0.0",
416 | "@lezer/highlight": "^1.0.0"
417 | }
418 | },
419 | "node_modules/@lezer/php": {
420 | "version": "1.0.0",
421 | "resolved": "https://registry.npmjs.org/@lezer/php/-/php-1.0.0.tgz",
422 | "integrity": "sha512-kFQu/mk/vmjpA+fjQU87d9eimqKJ9PFCa8CZCPFWGEwNnm7Ahpw32N+HYEU/YAQ0XcfmOAnW/YJCEa8WpUOMMw==",
423 | "dependencies": {
424 | "@lezer/highlight": "^1.0.0",
425 | "@lezer/lr": "^1.0.0"
426 | }
427 | },
428 | "node_modules/@lezer/python": {
429 | "version": "1.0.0",
430 | "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.0.0.tgz",
431 | "integrity": "sha512-UQtDPmNhXxQZ7/Uoh8mR6sckrFzeyrjCkTIy7WQY8Sjdfi8wmr49iPbgsThy1Jy0DDBTnqZRULDngXNJ5AWVqg==",
432 | "dependencies": {
433 | "@lezer/highlight": "^1.0.0",
434 | "@lezer/lr": "^1.0.0"
435 | }
436 | },
437 | "node_modules/@lezer/rust": {
438 | "version": "1.0.0",
439 | "resolved": "https://registry.npmjs.org/@lezer/rust/-/rust-1.0.0.tgz",
440 | "integrity": "sha512-IpGAxIjNxYmX9ra6GfQTSPegdCAWNeq23WNmrsMMQI7YNSvKtYxO4TX5rgZUmbhEucWn0KTBMeDEPXg99YKtTA==",
441 | "dependencies": {
442 | "@lezer/highlight": "^1.0.0",
443 | "@lezer/lr": "^1.0.0"
444 | }
445 | },
446 | "node_modules/@lezer/xml": {
447 | "version": "1.0.0",
448 | "resolved": "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.0.tgz",
449 | "integrity": "sha512-73iI9UK8iqSvWtLlOEl/g+50ivwQn8Ge6foHVN66AXUS1RccFnAoc7BYU8b3c8/rP6dfCOGqAGaWLxBzhj60MA==",
450 | "dependencies": {
451 | "@lezer/highlight": "^1.0.0",
452 | "@lezer/lr": "^1.0.0"
453 | }
454 | },
455 | "node_modules/@rollup/plugin-node-resolve": {
456 | "version": "13.3.0",
457 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz",
458 | "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==",
459 | "dev": true,
460 | "dependencies": {
461 | "@rollup/pluginutils": "^3.1.0",
462 | "@types/resolve": "1.17.1",
463 | "deepmerge": "^4.2.2",
464 | "is-builtin-module": "^3.1.0",
465 | "is-module": "^1.0.0",
466 | "resolve": "^1.19.0"
467 | },
468 | "engines": {
469 | "node": ">= 10.0.0"
470 | },
471 | "peerDependencies": {
472 | "rollup": "^2.42.0"
473 | }
474 | },
475 | "node_modules/@rollup/plugin-typescript": {
476 | "version": "8.3.3",
477 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.3.tgz",
478 | "integrity": "sha512-55L9SyiYu3r/JtqdjhwcwaECXP7JeJ9h1Sg1VWRJKIutla2MdZQodTgcCNybXLMCnqpNLEhS2vGENww98L1npg==",
479 | "dev": true,
480 | "dependencies": {
481 | "@rollup/pluginutils": "^3.1.0",
482 | "resolve": "^1.17.0"
483 | },
484 | "engines": {
485 | "node": ">=8.0.0"
486 | },
487 | "peerDependencies": {
488 | "rollup": "^2.14.0",
489 | "tslib": "*",
490 | "typescript": ">=3.7.0"
491 | },
492 | "peerDependenciesMeta": {
493 | "tslib": {
494 | "optional": true
495 | }
496 | }
497 | },
498 | "node_modules/@rollup/pluginutils": {
499 | "version": "3.1.0",
500 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
501 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
502 | "dev": true,
503 | "dependencies": {
504 | "@types/estree": "0.0.39",
505 | "estree-walker": "^1.0.1",
506 | "picomatch": "^2.2.2"
507 | },
508 | "engines": {
509 | "node": ">= 8.0.0"
510 | },
511 | "peerDependencies": {
512 | "rollup": "^1.20.0||^2.0.0"
513 | }
514 | },
515 | "node_modules/@types/codemirror": {
516 | "version": "5.60.5",
517 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz",
518 | "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==",
519 | "dev": true,
520 | "dependencies": {
521 | "@types/tern": "*"
522 | }
523 | },
524 | "node_modules/@types/estree": {
525 | "version": "0.0.39",
526 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
527 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
528 | "dev": true
529 | },
530 | "node_modules/@types/node": {
531 | "version": "18.0.0",
532 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz",
533 | "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==",
534 | "dev": true
535 | },
536 | "node_modules/@types/resolve": {
537 | "version": "1.17.1",
538 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
539 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
540 | "dev": true,
541 | "dependencies": {
542 | "@types/node": "*"
543 | }
544 | },
545 | "node_modules/@types/tern": {
546 | "version": "0.23.4",
547 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz",
548 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==",
549 | "dev": true,
550 | "dependencies": {
551 | "@types/estree": "*"
552 | }
553 | },
554 | "node_modules/acorn": {
555 | "version": "8.7.1",
556 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
557 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
558 | "dev": true,
559 | "bin": {
560 | "acorn": "bin/acorn"
561 | },
562 | "engines": {
563 | "node": ">=0.4.0"
564 | }
565 | },
566 | "node_modules/ansi-styles": {
567 | "version": "3.2.1",
568 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
569 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
570 | "dev": true,
571 | "dependencies": {
572 | "color-convert": "^1.9.0"
573 | },
574 | "engines": {
575 | "node": ">=4"
576 | }
577 | },
578 | "node_modules/buffer-from": {
579 | "version": "1.1.2",
580 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
581 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
582 | "dev": true
583 | },
584 | "node_modules/builtin-modules": {
585 | "version": "3.3.0",
586 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
587 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
588 | "dev": true,
589 | "engines": {
590 | "node": ">=6"
591 | },
592 | "funding": {
593 | "url": "https://github.com/sponsors/sindresorhus"
594 | }
595 | },
596 | "node_modules/chalk": {
597 | "version": "2.4.2",
598 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
599 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
600 | "dev": true,
601 | "dependencies": {
602 | "ansi-styles": "^3.2.1",
603 | "escape-string-regexp": "^1.0.5",
604 | "supports-color": "^5.3.0"
605 | },
606 | "engines": {
607 | "node": ">=4"
608 | }
609 | },
610 | "node_modules/codemirror": {
611 | "version": "6.0.1",
612 | "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",
613 | "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
614 | "dependencies": {
615 | "@codemirror/autocomplete": "^6.0.0",
616 | "@codemirror/commands": "^6.0.0",
617 | "@codemirror/language": "^6.0.0",
618 | "@codemirror/lint": "^6.0.0",
619 | "@codemirror/search": "^6.0.0",
620 | "@codemirror/state": "^6.0.0",
621 | "@codemirror/view": "^6.0.0"
622 | }
623 | },
624 | "node_modules/color-convert": {
625 | "version": "1.9.3",
626 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
627 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
628 | "dev": true,
629 | "dependencies": {
630 | "color-name": "1.1.3"
631 | }
632 | },
633 | "node_modules/color-name": {
634 | "version": "1.1.3",
635 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
636 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
637 | "dev": true
638 | },
639 | "node_modules/commander": {
640 | "version": "2.20.3",
641 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
642 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
643 | "dev": true
644 | },
645 | "node_modules/crelt": {
646 | "version": "1.0.5",
647 | "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
648 | "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA=="
649 | },
650 | "node_modules/deepmerge": {
651 | "version": "4.2.2",
652 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
653 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
654 | "dev": true,
655 | "engines": {
656 | "node": ">=0.10.0"
657 | }
658 | },
659 | "node_modules/escape-string-regexp": {
660 | "version": "1.0.5",
661 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
662 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
663 | "dev": true,
664 | "engines": {
665 | "node": ">=0.8.0"
666 | }
667 | },
668 | "node_modules/estree-walker": {
669 | "version": "1.0.1",
670 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
671 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
672 | "dev": true
673 | },
674 | "node_modules/fsevents": {
675 | "version": "2.3.2",
676 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
677 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
678 | "dev": true,
679 | "hasInstallScript": true,
680 | "optional": true,
681 | "os": [
682 | "darwin"
683 | ],
684 | "engines": {
685 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
686 | }
687 | },
688 | "node_modules/function-bind": {
689 | "version": "1.1.1",
690 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
691 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
692 | "dev": true
693 | },
694 | "node_modules/has": {
695 | "version": "1.0.3",
696 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
697 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
698 | "dev": true,
699 | "dependencies": {
700 | "function-bind": "^1.1.1"
701 | },
702 | "engines": {
703 | "node": ">= 0.4.0"
704 | }
705 | },
706 | "node_modules/has-flag": {
707 | "version": "3.0.0",
708 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
709 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
710 | "dev": true,
711 | "engines": {
712 | "node": ">=4"
713 | }
714 | },
715 | "node_modules/is-builtin-module": {
716 | "version": "3.1.0",
717 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz",
718 | "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==",
719 | "dev": true,
720 | "dependencies": {
721 | "builtin-modules": "^3.0.0"
722 | },
723 | "engines": {
724 | "node": ">=6"
725 | }
726 | },
727 | "node_modules/is-core-module": {
728 | "version": "2.9.0",
729 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
730 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
731 | "dev": true,
732 | "dependencies": {
733 | "has": "^1.0.3"
734 | },
735 | "funding": {
736 | "url": "https://github.com/sponsors/ljharb"
737 | }
738 | },
739 | "node_modules/is-module": {
740 | "version": "1.0.0",
741 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
742 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
743 | "dev": true
744 | },
745 | "node_modules/jest-worker": {
746 | "version": "26.6.2",
747 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
748 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
749 | "dev": true,
750 | "dependencies": {
751 | "@types/node": "*",
752 | "merge-stream": "^2.0.0",
753 | "supports-color": "^7.0.0"
754 | },
755 | "engines": {
756 | "node": ">= 10.13.0"
757 | }
758 | },
759 | "node_modules/jest-worker/node_modules/has-flag": {
760 | "version": "4.0.0",
761 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
762 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
763 | "dev": true,
764 | "engines": {
765 | "node": ">=8"
766 | }
767 | },
768 | "node_modules/jest-worker/node_modules/supports-color": {
769 | "version": "7.2.0",
770 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
771 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
772 | "dev": true,
773 | "dependencies": {
774 | "has-flag": "^4.0.0"
775 | },
776 | "engines": {
777 | "node": ">=8"
778 | }
779 | },
780 | "node_modules/js-tokens": {
781 | "version": "4.0.0",
782 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
783 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
784 | "dev": true
785 | },
786 | "node_modules/merge-stream": {
787 | "version": "2.0.0",
788 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
789 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
790 | "dev": true
791 | },
792 | "node_modules/path-parse": {
793 | "version": "1.0.7",
794 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
795 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
796 | "dev": true
797 | },
798 | "node_modules/picomatch": {
799 | "version": "2.3.1",
800 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
801 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
802 | "dev": true,
803 | "engines": {
804 | "node": ">=8.6"
805 | },
806 | "funding": {
807 | "url": "https://github.com/sponsors/jonschlinkert"
808 | }
809 | },
810 | "node_modules/randombytes": {
811 | "version": "2.1.0",
812 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
813 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
814 | "dev": true,
815 | "dependencies": {
816 | "safe-buffer": "^5.1.0"
817 | }
818 | },
819 | "node_modules/resolve": {
820 | "version": "1.22.1",
821 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
822 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
823 | "dev": true,
824 | "dependencies": {
825 | "is-core-module": "^2.9.0",
826 | "path-parse": "^1.0.7",
827 | "supports-preserve-symlinks-flag": "^1.0.0"
828 | },
829 | "bin": {
830 | "resolve": "bin/resolve"
831 | },
832 | "funding": {
833 | "url": "https://github.com/sponsors/ljharb"
834 | }
835 | },
836 | "node_modules/rollup": {
837 | "version": "2.75.7",
838 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz",
839 | "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==",
840 | "dev": true,
841 | "bin": {
842 | "rollup": "dist/bin/rollup"
843 | },
844 | "engines": {
845 | "node": ">=10.0.0"
846 | },
847 | "optionalDependencies": {
848 | "fsevents": "~2.3.2"
849 | }
850 | },
851 | "node_modules/rollup-plugin-execute": {
852 | "version": "1.1.1",
853 | "resolved": "https://registry.npmjs.org/rollup-plugin-execute/-/rollup-plugin-execute-1.1.1.tgz",
854 | "integrity": "sha512-isCNR/VrwlEfWJMwsnmt5TBRod8dW1IjVRxcXCBrxDmVTeA1IXjzeLSS3inFBmRD7KDPlo38KSb2mh5v5BoWgA==",
855 | "dev": true
856 | },
857 | "node_modules/rollup-plugin-terser": {
858 | "version": "7.0.2",
859 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
860 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
861 | "dev": true,
862 | "dependencies": {
863 | "@babel/code-frame": "^7.10.4",
864 | "jest-worker": "^26.2.1",
865 | "serialize-javascript": "^4.0.0",
866 | "terser": "^5.0.0"
867 | },
868 | "peerDependencies": {
869 | "rollup": "^2.0.0"
870 | }
871 | },
872 | "node_modules/safe-buffer": {
873 | "version": "5.2.1",
874 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
875 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
876 | "dev": true,
877 | "funding": [
878 | {
879 | "type": "github",
880 | "url": "https://github.com/sponsors/feross"
881 | },
882 | {
883 | "type": "patreon",
884 | "url": "https://www.patreon.com/feross"
885 | },
886 | {
887 | "type": "consulting",
888 | "url": "https://feross.org/support"
889 | }
890 | ]
891 | },
892 | "node_modules/serialize-javascript": {
893 | "version": "4.0.0",
894 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
895 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
896 | "dev": true,
897 | "dependencies": {
898 | "randombytes": "^2.1.0"
899 | }
900 | },
901 | "node_modules/source-map": {
902 | "version": "0.6.1",
903 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
904 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
905 | "dev": true,
906 | "engines": {
907 | "node": ">=0.10.0"
908 | }
909 | },
910 | "node_modules/source-map-support": {
911 | "version": "0.5.21",
912 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
913 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
914 | "dev": true,
915 | "dependencies": {
916 | "buffer-from": "^1.0.0",
917 | "source-map": "^0.6.0"
918 | }
919 | },
920 | "node_modules/style-mod": {
921 | "version": "4.0.0",
922 | "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz",
923 | "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw=="
924 | },
925 | "node_modules/supports-color": {
926 | "version": "5.5.0",
927 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
928 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
929 | "dev": true,
930 | "dependencies": {
931 | "has-flag": "^3.0.0"
932 | },
933 | "engines": {
934 | "node": ">=4"
935 | }
936 | },
937 | "node_modules/supports-preserve-symlinks-flag": {
938 | "version": "1.0.0",
939 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
940 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
941 | "dev": true,
942 | "engines": {
943 | "node": ">= 0.4"
944 | },
945 | "funding": {
946 | "url": "https://github.com/sponsors/ljharb"
947 | }
948 | },
949 | "node_modules/terser": {
950 | "version": "5.14.1",
951 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz",
952 | "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==",
953 | "dev": true,
954 | "dependencies": {
955 | "@jridgewell/source-map": "^0.3.2",
956 | "acorn": "^8.5.0",
957 | "commander": "^2.20.0",
958 | "source-map-support": "~0.5.20"
959 | },
960 | "bin": {
961 | "terser": "bin/terser"
962 | },
963 | "engines": {
964 | "node": ">=10"
965 | }
966 | },
967 | "node_modules/tslib": {
968 | "version": "2.4.0",
969 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
970 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
971 | "dev": true
972 | },
973 | "node_modules/typescript": {
974 | "version": "4.7.4",
975 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
976 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
977 | "dev": true,
978 | "bin": {
979 | "tsc": "bin/tsc",
980 | "tsserver": "bin/tsserver"
981 | },
982 | "engines": {
983 | "node": ">=4.2.0"
984 | }
985 | },
986 | "node_modules/w3c-keyname": {
987 | "version": "2.2.4",
988 | "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz",
989 | "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw=="
990 | }
991 | },
992 | "dependencies": {
993 | "@babel/code-frame": {
994 | "version": "7.18.6",
995 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
996 | "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
997 | "dev": true,
998 | "requires": {
999 | "@babel/highlight": "^7.18.6"
1000 | }
1001 | },
1002 | "@babel/helper-validator-identifier": {
1003 | "version": "7.18.6",
1004 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz",
1005 | "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==",
1006 | "dev": true
1007 | },
1008 | "@babel/highlight": {
1009 | "version": "7.18.6",
1010 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
1011 | "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
1012 | "dev": true,
1013 | "requires": {
1014 | "@babel/helper-validator-identifier": "^7.18.6",
1015 | "chalk": "^2.0.0",
1016 | "js-tokens": "^4.0.0"
1017 | }
1018 | },
1019 | "@codemirror/autocomplete": {
1020 | "version": "6.0.2",
1021 | "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.0.2.tgz",
1022 | "integrity": "sha512-9PDjnllmXan/7Uax87KGORbxerDJ/cu10SB+n4Jz0zXMEvIh3+TGgZxhIvDOtaQ4jDBQEM7kHYW4vLdQB0DGZQ==",
1023 | "requires": {
1024 | "@codemirror/language": "^6.0.0",
1025 | "@codemirror/state": "^6.0.0",
1026 | "@codemirror/view": "^6.0.0",
1027 | "@lezer/common": "^1.0.0"
1028 | }
1029 | },
1030 | "@codemirror/commands": {
1031 | "version": "6.0.1",
1032 | "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.0.1.tgz",
1033 | "integrity": "sha512-iNHDByicYqQjs0Wo1MKGfqNbMYMyhS9WV6EwMVwsHXImlFemgEUC+c5X22bXKBStN3qnwg4fArNZM+gkv22baQ==",
1034 | "requires": {
1035 | "@codemirror/language": "^6.0.0",
1036 | "@codemirror/state": "^6.0.0",
1037 | "@codemirror/view": "^6.0.0",
1038 | "@lezer/common": "^1.0.0"
1039 | }
1040 | },
1041 | "@codemirror/lang-cpp": {
1042 | "version": "6.0.1",
1043 | "resolved": "https://registry.npmjs.org/@codemirror/lang-cpp/-/lang-cpp-6.0.1.tgz",
1044 | "integrity": "sha512-46p3ohfhjzkLWJ3VwvzX0aqlXh8UkEqX1xo2Eds9l6Ql3uDoxI2IZEjR9cgJaGOZTXCkDzQuQH7sfYAxMvzLjA==",
1045 | "requires": {
1046 | "@codemirror/language": "^6.0.0",
1047 | "@lezer/cpp": "^1.0.0"
1048 | }
1049 | },
1050 | "@codemirror/lang-css": {
1051 | "version": "6.0.0",
1052 | "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.0.0.tgz",
1053 | "integrity": "sha512-jBqc+BTuwhNOTlrimFghLlSrN6iFuE44HULKWoR4qKYObhOIl9Lci1iYj6zMIte1XTQmZguNvjXMyr43LUKwSw==",
1054 | "requires": {
1055 | "@codemirror/autocomplete": "^6.0.0",
1056 | "@codemirror/language": "^6.0.0",
1057 | "@codemirror/state": "^6.0.0",
1058 | "@lezer/css": "^1.0.0"
1059 | }
1060 | },
1061 | "@codemirror/lang-html": {
1062 | "version": "6.1.0",
1063 | "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.1.0.tgz",
1064 | "integrity": "sha512-gA7NmJxqvnhwza05CvR7W/39Ap9r/4Vs9uiC0IeFYo1hSlJzc/8N6Evviz6vTW1x8SpHcRYyqKOf6rpl6LfWtg==",
1065 | "requires": {
1066 | "@codemirror/autocomplete": "^6.0.0",
1067 | "@codemirror/lang-css": "^6.0.0",
1068 | "@codemirror/lang-javascript": "^6.0.0",
1069 | "@codemirror/language": "^6.0.0",
1070 | "@codemirror/state": "^6.0.0",
1071 | "@lezer/common": "^1.0.0",
1072 | "@lezer/html": "^1.0.0"
1073 | }
1074 | },
1075 | "@codemirror/lang-java": {
1076 | "version": "6.0.0",
1077 | "resolved": "https://registry.npmjs.org/@codemirror/lang-java/-/lang-java-6.0.0.tgz",
1078 | "integrity": "sha512-aeWq+ikUS6Eubk6RBbiMgxuBIT4Ih8Asb1qc2pSiMcstrwr4ODbazPXsBHbLBYg3aObvFyOm2bNQncbQJjZ3sQ==",
1079 | "requires": {
1080 | "@codemirror/language": "^6.0.0",
1081 | "@lezer/java": "^1.0.0"
1082 | }
1083 | },
1084 | "@codemirror/lang-javascript": {
1085 | "version": "6.0.1",
1086 | "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.0.1.tgz",
1087 | "integrity": "sha512-kjGbBEosl+ozDU5ruDV48w4v3H6KECTFiDjqMLT0KhVwESPfv3wOvnDrTT0uaMOg3YRGnBWsyiIoKHl/tNWWDg==",
1088 | "requires": {
1089 | "@codemirror/autocomplete": "^6.0.0",
1090 | "@codemirror/language": "^6.0.0",
1091 | "@codemirror/lint": "^6.0.0",
1092 | "@codemirror/state": "^6.0.0",
1093 | "@codemirror/view": "^6.0.0",
1094 | "@lezer/common": "^1.0.0",
1095 | "@lezer/javascript": "^1.0.0"
1096 | }
1097 | },
1098 | "@codemirror/lang-json": {
1099 | "version": "6.0.0",
1100 | "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.0.tgz",
1101 | "integrity": "sha512-DvTcYTKLmg2viADXlTdufrT334M9jowe1qO02W28nvm+nejcvhM5vot5mE8/kPrxYw/HJHhwu1z2PyBpnMLCNQ==",
1102 | "requires": {
1103 | "@codemirror/language": "^6.0.0",
1104 | "@lezer/json": "^1.0.0"
1105 | }
1106 | },
1107 | "@codemirror/lang-markdown": {
1108 | "version": "6.0.0",
1109 | "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.0.0.tgz",
1110 | "integrity": "sha512-ozJaO1W4WgGlwWOoYCSYzbVhhM0YM/4lAWLrNsBbmhh5Ztpl0qm4CgEQRl3t8/YcylTZYBIXiskui8sHNGd4dg==",
1111 | "requires": {
1112 | "@codemirror/lang-html": "^6.0.0",
1113 | "@codemirror/language": "^6.0.0",
1114 | "@codemirror/state": "^6.0.0",
1115 | "@codemirror/view": "^6.0.0",
1116 | "@lezer/common": "^1.0.0",
1117 | "@lezer/markdown": "^1.0.0"
1118 | }
1119 | },
1120 | "@codemirror/lang-php": {
1121 | "version": "6.0.0",
1122 | "resolved": "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.0.tgz",
1123 | "integrity": "sha512-96CEjq0xEgbzc6bdFPwILPfZ6m8917JRbh2oPszZJABlYxG4Y+eYjtYkUTDb4yuyjQKyigHoeGC6zoIOYA1NWA==",
1124 | "requires": {
1125 | "@codemirror/lang-html": "^6.0.0",
1126 | "@codemirror/language": "^6.0.0",
1127 | "@codemirror/state": "^6.0.0",
1128 | "@lezer/common": "^1.0.0",
1129 | "@lezer/php": "^1.0.0"
1130 | }
1131 | },
1132 | "@codemirror/lang-python": {
1133 | "version": "6.0.0",
1134 | "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.0.0.tgz",
1135 | "integrity": "sha512-wI448yup4Y2Xxq/7r3Q4eEmth74ud263ABcexumEFEcoU+0c1k5XRKXp1aT5PrrVavlAKxWQMEvgi+x+HBU4zQ==",
1136 | "requires": {
1137 | "@codemirror/language": "^6.0.0",
1138 | "@lezer/python": "^1.0.0"
1139 | }
1140 | },
1141 | "@codemirror/lang-rust": {
1142 | "version": "6.0.0",
1143 | "resolved": "https://registry.npmjs.org/@codemirror/lang-rust/-/lang-rust-6.0.0.tgz",
1144 | "integrity": "sha512-VQql3Qk1BwoXb3SUkeWll/EEwhsgQWc1bpia7CFqqp2PhQBb5A6r4Vj2JCkU/nE6A7TDPSGHTOoqJSG5s/VXtQ==",
1145 | "requires": {
1146 | "@codemirror/language": "^6.0.0",
1147 | "@lezer/rust": "^1.0.0"
1148 | }
1149 | },
1150 | "@codemirror/lang-sql": {
1151 | "version": "6.0.0",
1152 | "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.0.0.tgz",
1153 | "integrity": "sha512-mq4NwTDbbo7QZktfgPsS+ms0FmAceH4WM2jLbgf+N28FoKUy0JzGe3XJymgnTewXnNUwujKBxArQzibxSDdVyQ==",
1154 | "requires": {
1155 | "@codemirror/autocomplete": "^6.0.0",
1156 | "@codemirror/language": "^6.0.0",
1157 | "@codemirror/state": "^6.0.0",
1158 | "@lezer/highlight": "^1.0.0",
1159 | "@lezer/lr": "^1.0.0"
1160 | }
1161 | },
1162 | "@codemirror/lang-xml": {
1163 | "version": "6.0.0",
1164 | "resolved": "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.0.0.tgz",
1165 | "integrity": "sha512-M/HLWxIiP956xGjtrxkeHkCmDGVQGKu782x8pOH5CLJIMkWtiB1DWfDoDHqpFjdEE9dkfcqPWvYfVi6GbhuXEg==",
1166 | "requires": {
1167 | "@codemirror/autocomplete": "^6.0.0",
1168 | "@codemirror/language": "^6.0.0",
1169 | "@codemirror/state": "^6.0.0",
1170 | "@lezer/common": "^1.0.0",
1171 | "@lezer/xml": "^1.0.0"
1172 | }
1173 | },
1174 | "@codemirror/language": {
1175 | "version": "6.2.0",
1176 | "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.2.0.tgz",
1177 | "integrity": "sha512-tabB0Ef/BflwoEmTB4a//WZ9P90UQyne9qWB9YFsmeS4bnEqSys7UpGk/da1URMXhyfuzWCwp+AQNMhvu8SfnA==",
1178 | "requires": {
1179 | "@codemirror/state": "^6.0.0",
1180 | "@codemirror/view": "^6.0.0",
1181 | "@lezer/common": "^1.0.0",
1182 | "@lezer/highlight": "^1.0.0",
1183 | "@lezer/lr": "^1.0.0",
1184 | "style-mod": "^4.0.0"
1185 | }
1186 | },
1187 | "@codemirror/lint": {
1188 | "version": "6.0.0",
1189 | "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.0.0.tgz",
1190 | "integrity": "sha512-nUUXcJW1Xp54kNs+a1ToPLK8MadO0rMTnJB8Zk4Z8gBdrN0kqV7uvUraU/T2yqg+grDNR38Vmy/MrhQN/RgwiA==",
1191 | "requires": {
1192 | "@codemirror/state": "^6.0.0",
1193 | "@codemirror/view": "^6.0.0",
1194 | "crelt": "^1.0.5"
1195 | }
1196 | },
1197 | "@codemirror/search": {
1198 | "version": "6.0.0",
1199 | "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.0.0.tgz",
1200 | "integrity": "sha512-rL0rd3AhI0TAsaJPUaEwC63KHLO7KL0Z/dYozXj6E7L3wNHRyx7RfE0/j5HsIf912EE5n2PCb4Vg0rGYmDv4UQ==",
1201 | "requires": {
1202 | "@codemirror/state": "^6.0.0",
1203 | "@codemirror/view": "^6.0.0",
1204 | "crelt": "^1.0.5"
1205 | }
1206 | },
1207 | "@codemirror/state": {
1208 | "version": "6.1.0",
1209 | "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.1.0.tgz",
1210 | "integrity": "sha512-qbUr94DZTe6/V1VS7LDLz11rM/1t/nJxR1El4I6UaxDEdc0aZZvq6JCLJWiRmUf95NRAnDH6fhXn+PWp9wGCIg=="
1211 | },
1212 | "@codemirror/view": {
1213 | "version": "6.0.2",
1214 | "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.0.2.tgz",
1215 | "integrity": "sha512-mnVT/q1JvKPjpmjXJNeCi/xHyaJ3abGJsumIVpdQ1nE1MXAyHf7GHWt8QpWMUvDiqF0j+inkhVR2OviTdFFX7Q==",
1216 | "requires": {
1217 | "@codemirror/state": "^6.0.0",
1218 | "style-mod": "^4.0.0",
1219 | "w3c-keyname": "^2.2.4"
1220 | }
1221 | },
1222 | "@jridgewell/gen-mapping": {
1223 | "version": "0.3.2",
1224 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
1225 | "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
1226 | "dev": true,
1227 | "requires": {
1228 | "@jridgewell/set-array": "^1.0.1",
1229 | "@jridgewell/sourcemap-codec": "^1.4.10",
1230 | "@jridgewell/trace-mapping": "^0.3.9"
1231 | }
1232 | },
1233 | "@jridgewell/resolve-uri": {
1234 | "version": "3.0.8",
1235 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.8.tgz",
1236 | "integrity": "sha512-YK5G9LaddzGbcucK4c8h5tWFmMPBvRZ/uyWmN1/SbBdIvqGUdWGkJ5BAaccgs6XbzVLsqbPJrBSFwKv3kT9i7w==",
1237 | "dev": true
1238 | },
1239 | "@jridgewell/set-array": {
1240 | "version": "1.1.2",
1241 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
1242 | "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
1243 | "dev": true
1244 | },
1245 | "@jridgewell/source-map": {
1246 | "version": "0.3.2",
1247 | "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz",
1248 | "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==",
1249 | "dev": true,
1250 | "requires": {
1251 | "@jridgewell/gen-mapping": "^0.3.0",
1252 | "@jridgewell/trace-mapping": "^0.3.9"
1253 | }
1254 | },
1255 | "@jridgewell/sourcemap-codec": {
1256 | "version": "1.4.14",
1257 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz",
1258 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==",
1259 | "dev": true
1260 | },
1261 | "@jridgewell/trace-mapping": {
1262 | "version": "0.3.14",
1263 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz",
1264 | "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==",
1265 | "dev": true,
1266 | "requires": {
1267 | "@jridgewell/resolve-uri": "^3.0.3",
1268 | "@jridgewell/sourcemap-codec": "^1.4.10"
1269 | }
1270 | },
1271 | "@lezer/common": {
1272 | "version": "1.0.0",
1273 | "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.0.0.tgz",
1274 | "integrity": "sha512-ohydQe+Hb+w4oMDvXzs8uuJd2NoA3D8YDcLiuDsLqH+yflDTPEpgCsWI3/6rH5C3BAedtH1/R51dxENldQceEA=="
1275 | },
1276 | "@lezer/cpp": {
1277 | "version": "1.0.0",
1278 | "resolved": "https://registry.npmjs.org/@lezer/cpp/-/cpp-1.0.0.tgz",
1279 | "integrity": "sha512-Klk3/AIEKoptmm6cNm7xTulNXjdTKkD+hVOEcz/NeRg8tIestP5hsGHJeFDR/XtyDTxsjoPjKZRIGohht7zbKw==",
1280 | "requires": {
1281 | "@lezer/highlight": "^1.0.0",
1282 | "@lezer/lr": "^1.0.0"
1283 | }
1284 | },
1285 | "@lezer/css": {
1286 | "version": "1.0.0",
1287 | "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.0.0.tgz",
1288 | "integrity": "sha512-616VqgDKumHmYIuxs3tnX1irEQmoDHgF/TlP4O5ICWwyHwLMErq+8iKVuzTkOdBqvYAVmObqThcDEAaaMJjAdg==",
1289 | "requires": {
1290 | "@lezer/highlight": "^1.0.0",
1291 | "@lezer/lr": "^1.0.0"
1292 | }
1293 | },
1294 | "@lezer/highlight": {
1295 | "version": "1.0.0",
1296 | "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.0.0.tgz",
1297 | "integrity": "sha512-nsCnNtim90UKsB5YxoX65v3GEIw3iCHw9RM2DtdgkiqAbKh9pCdvi8AWNwkYf10Lu6fxNhXPpkpHbW6mihhvJA==",
1298 | "requires": {
1299 | "@lezer/common": "^1.0.0"
1300 | }
1301 | },
1302 | "@lezer/html": {
1303 | "version": "1.0.0",
1304 | "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.0.0.tgz",
1305 | "integrity": "sha512-wZHBcieArLTxEi198hqRBBHMySzDKo5suWaESdUw0t44IXp01vkSRwX2brG1qBbKdwJ+C6U0iMl00vWNiyAROg==",
1306 | "requires": {
1307 | "@lezer/highlight": "^1.0.0",
1308 | "@lezer/lr": "^1.0.0"
1309 | }
1310 | },
1311 | "@lezer/java": {
1312 | "version": "1.0.0",
1313 | "resolved": "https://registry.npmjs.org/@lezer/java/-/java-1.0.0.tgz",
1314 | "integrity": "sha512-z2EA0JHq2WoiKfQy5uOOd4t17PJtq8guh58gPkSzOnNcQ7DNbkrU+Axak+jL8+Noinwyz2tRNOseQFj+Tg+P0A==",
1315 | "requires": {
1316 | "@lezer/highlight": "^1.0.0",
1317 | "@lezer/lr": "^1.0.0"
1318 | }
1319 | },
1320 | "@lezer/javascript": {
1321 | "version": "1.0.1",
1322 | "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.0.1.tgz",
1323 | "integrity": "sha512-t7fpf3+gi/jiAtW+Gv734TbKdpPg6b8qATH01/jprW9H2oR++Tb688IHwJvZbk9F4GjpCEv86beuHMpUyC1b5g==",
1324 | "requires": {
1325 | "@lezer/highlight": "^1.0.0",
1326 | "@lezer/lr": "^1.0.0"
1327 | }
1328 | },
1329 | "@lezer/json": {
1330 | "version": "1.0.0",
1331 | "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.0.tgz",
1332 | "integrity": "sha512-zbAuUY09RBzCoCA3lJ1+ypKw5WSNvLqGMtasdW6HvVOqZoCpPr8eWrsGnOVWGKGn8Rh21FnrKRVlJXrGAVUqRw==",
1333 | "requires": {
1334 | "@lezer/highlight": "^1.0.0",
1335 | "@lezer/lr": "^1.0.0"
1336 | }
1337 | },
1338 | "@lezer/lr": {
1339 | "version": "1.1.0",
1340 | "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.1.0.tgz",
1341 | "integrity": "sha512-Iad04uVwk1PvSnj25mqj7zEEIRAsasbsTRmVzI0AUTs/+1Dz1//iYAaoLr7A+Xa7bZDfql5MKTxZmSlkYZD3Dg==",
1342 | "requires": {
1343 | "@lezer/common": "^1.0.0"
1344 | }
1345 | },
1346 | "@lezer/markdown": {
1347 | "version": "1.0.1",
1348 | "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.0.1.tgz",
1349 | "integrity": "sha512-LlpNWLqes3XQvd8TwpJTHf9ENl4fI6H32xQkMgltUITFMMdQpOASXQtDawWR03yS6hskh4bkhATQbgjdGMoUvA==",
1350 | "requires": {
1351 | "@lezer/common": "^1.0.0",
1352 | "@lezer/highlight": "^1.0.0"
1353 | }
1354 | },
1355 | "@lezer/php": {
1356 | "version": "1.0.0",
1357 | "resolved": "https://registry.npmjs.org/@lezer/php/-/php-1.0.0.tgz",
1358 | "integrity": "sha512-kFQu/mk/vmjpA+fjQU87d9eimqKJ9PFCa8CZCPFWGEwNnm7Ahpw32N+HYEU/YAQ0XcfmOAnW/YJCEa8WpUOMMw==",
1359 | "requires": {
1360 | "@lezer/highlight": "^1.0.0",
1361 | "@lezer/lr": "^1.0.0"
1362 | }
1363 | },
1364 | "@lezer/python": {
1365 | "version": "1.0.0",
1366 | "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.0.0.tgz",
1367 | "integrity": "sha512-UQtDPmNhXxQZ7/Uoh8mR6sckrFzeyrjCkTIy7WQY8Sjdfi8wmr49iPbgsThy1Jy0DDBTnqZRULDngXNJ5AWVqg==",
1368 | "requires": {
1369 | "@lezer/highlight": "^1.0.0",
1370 | "@lezer/lr": "^1.0.0"
1371 | }
1372 | },
1373 | "@lezer/rust": {
1374 | "version": "1.0.0",
1375 | "resolved": "https://registry.npmjs.org/@lezer/rust/-/rust-1.0.0.tgz",
1376 | "integrity": "sha512-IpGAxIjNxYmX9ra6GfQTSPegdCAWNeq23WNmrsMMQI7YNSvKtYxO4TX5rgZUmbhEucWn0KTBMeDEPXg99YKtTA==",
1377 | "requires": {
1378 | "@lezer/highlight": "^1.0.0",
1379 | "@lezer/lr": "^1.0.0"
1380 | }
1381 | },
1382 | "@lezer/xml": {
1383 | "version": "1.0.0",
1384 | "resolved": "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.0.tgz",
1385 | "integrity": "sha512-73iI9UK8iqSvWtLlOEl/g+50ivwQn8Ge6foHVN66AXUS1RccFnAoc7BYU8b3c8/rP6dfCOGqAGaWLxBzhj60MA==",
1386 | "requires": {
1387 | "@lezer/highlight": "^1.0.0",
1388 | "@lezer/lr": "^1.0.0"
1389 | }
1390 | },
1391 | "@rollup/plugin-node-resolve": {
1392 | "version": "13.3.0",
1393 | "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.3.0.tgz",
1394 | "integrity": "sha512-Lus8rbUo1eEcnS4yTFKLZrVumLPY+YayBdWXgFSHYhTT2iJbMhoaaBL3xl5NCdeRytErGr8tZ0L71BMRmnlwSw==",
1395 | "dev": true,
1396 | "requires": {
1397 | "@rollup/pluginutils": "^3.1.0",
1398 | "@types/resolve": "1.17.1",
1399 | "deepmerge": "^4.2.2",
1400 | "is-builtin-module": "^3.1.0",
1401 | "is-module": "^1.0.0",
1402 | "resolve": "^1.19.0"
1403 | }
1404 | },
1405 | "@rollup/plugin-typescript": {
1406 | "version": "8.3.3",
1407 | "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-8.3.3.tgz",
1408 | "integrity": "sha512-55L9SyiYu3r/JtqdjhwcwaECXP7JeJ9h1Sg1VWRJKIutla2MdZQodTgcCNybXLMCnqpNLEhS2vGENww98L1npg==",
1409 | "dev": true,
1410 | "requires": {
1411 | "@rollup/pluginutils": "^3.1.0",
1412 | "resolve": "^1.17.0"
1413 | }
1414 | },
1415 | "@rollup/pluginutils": {
1416 | "version": "3.1.0",
1417 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
1418 | "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
1419 | "dev": true,
1420 | "requires": {
1421 | "@types/estree": "0.0.39",
1422 | "estree-walker": "^1.0.1",
1423 | "picomatch": "^2.2.2"
1424 | }
1425 | },
1426 | "@types/codemirror": {
1427 | "version": "5.60.5",
1428 | "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.5.tgz",
1429 | "integrity": "sha512-TiECZmm8St5YxjFUp64LK0c8WU5bxMDt9YaAek1UqUb9swrSCoJhh92fWu1p3mTEqlHjhB5sY7OFBhWroJXZVg==",
1430 | "dev": true,
1431 | "requires": {
1432 | "@types/tern": "*"
1433 | }
1434 | },
1435 | "@types/estree": {
1436 | "version": "0.0.39",
1437 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
1438 | "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
1439 | "dev": true
1440 | },
1441 | "@types/node": {
1442 | "version": "18.0.0",
1443 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.0.tgz",
1444 | "integrity": "sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA==",
1445 | "dev": true
1446 | },
1447 | "@types/resolve": {
1448 | "version": "1.17.1",
1449 | "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
1450 | "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
1451 | "dev": true,
1452 | "requires": {
1453 | "@types/node": "*"
1454 | }
1455 | },
1456 | "@types/tern": {
1457 | "version": "0.23.4",
1458 | "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.4.tgz",
1459 | "integrity": "sha512-JAUw1iXGO1qaWwEOzxTKJZ/5JxVeON9kvGZ/osgZaJImBnyjyn0cjovPsf6FNLmyGY8Vw9DoXZCMlfMkMwHRWg==",
1460 | "dev": true,
1461 | "requires": {
1462 | "@types/estree": "*"
1463 | }
1464 | },
1465 | "acorn": {
1466 | "version": "8.7.1",
1467 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
1468 | "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
1469 | "dev": true
1470 | },
1471 | "ansi-styles": {
1472 | "version": "3.2.1",
1473 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
1474 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
1475 | "dev": true,
1476 | "requires": {
1477 | "color-convert": "^1.9.0"
1478 | }
1479 | },
1480 | "buffer-from": {
1481 | "version": "1.1.2",
1482 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
1483 | "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
1484 | "dev": true
1485 | },
1486 | "builtin-modules": {
1487 | "version": "3.3.0",
1488 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
1489 | "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
1490 | "dev": true
1491 | },
1492 | "chalk": {
1493 | "version": "2.4.2",
1494 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
1495 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
1496 | "dev": true,
1497 | "requires": {
1498 | "ansi-styles": "^3.2.1",
1499 | "escape-string-regexp": "^1.0.5",
1500 | "supports-color": "^5.3.0"
1501 | }
1502 | },
1503 | "codemirror": {
1504 | "version": "6.0.1",
1505 | "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.1.tgz",
1506 | "integrity": "sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==",
1507 | "requires": {
1508 | "@codemirror/autocomplete": "^6.0.0",
1509 | "@codemirror/commands": "^6.0.0",
1510 | "@codemirror/language": "^6.0.0",
1511 | "@codemirror/lint": "^6.0.0",
1512 | "@codemirror/search": "^6.0.0",
1513 | "@codemirror/state": "^6.0.0",
1514 | "@codemirror/view": "^6.0.0"
1515 | }
1516 | },
1517 | "color-convert": {
1518 | "version": "1.9.3",
1519 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
1520 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
1521 | "dev": true,
1522 | "requires": {
1523 | "color-name": "1.1.3"
1524 | }
1525 | },
1526 | "color-name": {
1527 | "version": "1.1.3",
1528 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
1529 | "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
1530 | "dev": true
1531 | },
1532 | "commander": {
1533 | "version": "2.20.3",
1534 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
1535 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
1536 | "dev": true
1537 | },
1538 | "crelt": {
1539 | "version": "1.0.5",
1540 | "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.5.tgz",
1541 | "integrity": "sha512-+BO9wPPi+DWTDcNYhr/W90myha8ptzftZT+LwcmUbbok0rcP/fequmFYCw8NMoH7pkAZQzU78b3kYrlua5a9eA=="
1542 | },
1543 | "deepmerge": {
1544 | "version": "4.2.2",
1545 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz",
1546 | "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==",
1547 | "dev": true
1548 | },
1549 | "escape-string-regexp": {
1550 | "version": "1.0.5",
1551 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1552 | "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
1553 | "dev": true
1554 | },
1555 | "estree-walker": {
1556 | "version": "1.0.1",
1557 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
1558 | "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
1559 | "dev": true
1560 | },
1561 | "fsevents": {
1562 | "version": "2.3.2",
1563 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
1564 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
1565 | "dev": true,
1566 | "optional": true
1567 | },
1568 | "function-bind": {
1569 | "version": "1.1.1",
1570 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1571 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1572 | "dev": true
1573 | },
1574 | "has": {
1575 | "version": "1.0.3",
1576 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1577 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1578 | "dev": true,
1579 | "requires": {
1580 | "function-bind": "^1.1.1"
1581 | }
1582 | },
1583 | "has-flag": {
1584 | "version": "3.0.0",
1585 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1586 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
1587 | "dev": true
1588 | },
1589 | "is-builtin-module": {
1590 | "version": "3.1.0",
1591 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.1.0.tgz",
1592 | "integrity": "sha512-OV7JjAgOTfAFJmHZLvpSTb4qi0nIILDV1gWPYDnDJUTNFM5aGlRAhk4QcT8i7TuAleeEV5Fdkqn3t4mS+Q11fg==",
1593 | "dev": true,
1594 | "requires": {
1595 | "builtin-modules": "^3.0.0"
1596 | }
1597 | },
1598 | "is-core-module": {
1599 | "version": "2.9.0",
1600 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz",
1601 | "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==",
1602 | "dev": true,
1603 | "requires": {
1604 | "has": "^1.0.3"
1605 | }
1606 | },
1607 | "is-module": {
1608 | "version": "1.0.0",
1609 | "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
1610 | "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
1611 | "dev": true
1612 | },
1613 | "jest-worker": {
1614 | "version": "26.6.2",
1615 | "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz",
1616 | "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==",
1617 | "dev": true,
1618 | "requires": {
1619 | "@types/node": "*",
1620 | "merge-stream": "^2.0.0",
1621 | "supports-color": "^7.0.0"
1622 | },
1623 | "dependencies": {
1624 | "has-flag": {
1625 | "version": "4.0.0",
1626 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1627 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1628 | "dev": true
1629 | },
1630 | "supports-color": {
1631 | "version": "7.2.0",
1632 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1633 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1634 | "dev": true,
1635 | "requires": {
1636 | "has-flag": "^4.0.0"
1637 | }
1638 | }
1639 | }
1640 | },
1641 | "js-tokens": {
1642 | "version": "4.0.0",
1643 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1644 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
1645 | "dev": true
1646 | },
1647 | "merge-stream": {
1648 | "version": "2.0.0",
1649 | "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
1650 | "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
1651 | "dev": true
1652 | },
1653 | "path-parse": {
1654 | "version": "1.0.7",
1655 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1656 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
1657 | "dev": true
1658 | },
1659 | "picomatch": {
1660 | "version": "2.3.1",
1661 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1662 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1663 | "dev": true
1664 | },
1665 | "randombytes": {
1666 | "version": "2.1.0",
1667 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
1668 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
1669 | "dev": true,
1670 | "requires": {
1671 | "safe-buffer": "^5.1.0"
1672 | }
1673 | },
1674 | "resolve": {
1675 | "version": "1.22.1",
1676 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
1677 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
1678 | "dev": true,
1679 | "requires": {
1680 | "is-core-module": "^2.9.0",
1681 | "path-parse": "^1.0.7",
1682 | "supports-preserve-symlinks-flag": "^1.0.0"
1683 | }
1684 | },
1685 | "rollup": {
1686 | "version": "2.75.7",
1687 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.75.7.tgz",
1688 | "integrity": "sha512-VSE1iy0eaAYNCxEXaleThdFXqZJ42qDBatAwrfnPlENEZ8erQ+0LYX4JXOLPceWfZpV1VtZwZ3dFCuOZiSyFtQ==",
1689 | "dev": true,
1690 | "requires": {
1691 | "fsevents": "~2.3.2"
1692 | }
1693 | },
1694 | "rollup-plugin-execute": {
1695 | "version": "1.1.1",
1696 | "resolved": "https://registry.npmjs.org/rollup-plugin-execute/-/rollup-plugin-execute-1.1.1.tgz",
1697 | "integrity": "sha512-isCNR/VrwlEfWJMwsnmt5TBRod8dW1IjVRxcXCBrxDmVTeA1IXjzeLSS3inFBmRD7KDPlo38KSb2mh5v5BoWgA==",
1698 | "dev": true
1699 | },
1700 | "rollup-plugin-terser": {
1701 | "version": "7.0.2",
1702 | "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz",
1703 | "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==",
1704 | "dev": true,
1705 | "requires": {
1706 | "@babel/code-frame": "^7.10.4",
1707 | "jest-worker": "^26.2.1",
1708 | "serialize-javascript": "^4.0.0",
1709 | "terser": "^5.0.0"
1710 | }
1711 | },
1712 | "safe-buffer": {
1713 | "version": "5.2.1",
1714 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
1715 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
1716 | "dev": true
1717 | },
1718 | "serialize-javascript": {
1719 | "version": "4.0.0",
1720 | "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
1721 | "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
1722 | "dev": true,
1723 | "requires": {
1724 | "randombytes": "^2.1.0"
1725 | }
1726 | },
1727 | "source-map": {
1728 | "version": "0.6.1",
1729 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
1730 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
1731 | "dev": true
1732 | },
1733 | "source-map-support": {
1734 | "version": "0.5.21",
1735 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
1736 | "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
1737 | "dev": true,
1738 | "requires": {
1739 | "buffer-from": "^1.0.0",
1740 | "source-map": "^0.6.0"
1741 | }
1742 | },
1743 | "style-mod": {
1744 | "version": "4.0.0",
1745 | "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.0.0.tgz",
1746 | "integrity": "sha512-OPhtyEjyyN9x3nhPsu76f52yUGXiZcgvsrFVtvTkyGRQJ0XK+GPc6ov1z+lRpbeabka+MYEQxOYRnt5nF30aMw=="
1747 | },
1748 | "supports-color": {
1749 | "version": "5.5.0",
1750 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
1751 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
1752 | "dev": true,
1753 | "requires": {
1754 | "has-flag": "^3.0.0"
1755 | }
1756 | },
1757 | "supports-preserve-symlinks-flag": {
1758 | "version": "1.0.0",
1759 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1760 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1761 | "dev": true
1762 | },
1763 | "terser": {
1764 | "version": "5.14.1",
1765 | "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.1.tgz",
1766 | "integrity": "sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ==",
1767 | "dev": true,
1768 | "requires": {
1769 | "@jridgewell/source-map": "^0.3.2",
1770 | "acorn": "^8.5.0",
1771 | "commander": "^2.20.0",
1772 | "source-map-support": "~0.5.20"
1773 | }
1774 | },
1775 | "tslib": {
1776 | "version": "2.4.0",
1777 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
1778 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==",
1779 | "dev": true
1780 | },
1781 | "typescript": {
1782 | "version": "4.7.4",
1783 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
1784 | "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
1785 | "dev": true
1786 | },
1787 | "w3c-keyname": {
1788 | "version": "2.2.4",
1789 | "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.4.tgz",
1790 | "integrity": "sha512-tOhfEwEzFLJzf6d1ZPkYfGj+FWhIpBux9ppoP3rlclw3Z0BZv3N7b7030Z1kYth+6rDuAsXUFr+d0VE6Ed1ikw=="
1791 | }
1792 | }
1793 | }
1794 |
--------------------------------------------------------------------------------