├── .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 | --------------------------------------------------------------------------------