├── .github ├── FUNDING.yml └── workflows │ └── master.yml ├── .gitignore ├── .prettierrc.json ├── .vscode └── settings.json ├── CHANGELOG.md ├── README.md ├── docs ├── demo.gif ├── demo.md ├── fullscreen.gif ├── preview.gif └── screenshot.png ├── logo.drawio.png ├── manifest.json ├── package.json ├── src ├── content-script-main │ ├── EditorWrapper.ts │ ├── EmojiCompletionController.ts │ ├── GitHubCompletionController.ts │ ├── GithubApi.ts │ ├── InlineCompletionProvider.ts │ ├── hediet-tokenizer │ │ ├── README.md │ │ └── index.ts │ ├── index.ts │ └── types.d.ts ├── content-script.ts ├── monaco-loader.ts ├── options │ ├── index.html │ └── index.ts ├── settings.ts └── styles.scss ├── tsconfig.json ├── webpack.config.ts └── yarn.lock /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: hediet 2 | -------------------------------------------------------------------------------- /.github/workflows/master.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | on: 3 | push: 4 | branches: 5 | - master 6 | 7 | jobs: 8 | build: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout 12 | uses: actions/checkout@e2f20e631ae6d7dd3b768f56a5d2af784dd54791 # pin@v2 13 | with: 14 | submodules: true 15 | - name: Install Node.js 16 | uses: actions/setup-node@f1f314fca9dfce2769ece7d933488f076716723e # pin@v1 17 | with: 18 | node-version: 10.x 19 | - run: yarn install --frozen-lockfile 20 | - run: yarn build 21 | - name: Get Version 22 | id: getVersion 23 | run: echo "::set-output name=version::v$(cat manifest.json | jq '.version' -r)" 24 | - name: Check If Release Tag Exists 25 | id: checkTag 26 | uses: hediet/tag-action@7549c6c145708c4a1a6cbfcc2520255695c9cbe8 # pin@main 27 | with: 28 | tag: ${{ steps.getVersion.outputs.version }} 29 | github_token: ${{ secrets.GITHUB_TOKEN }} 30 | - name: Publish To Chrome Marketplace 31 | if: steps.checkTag.outputs.exists == 'false' 32 | uses: mnao305/chrome-extension-upload@eb962593ec36f9e70426b6ed9b33f40ae270d523 # pin@3.0.0 33 | with: 34 | file-path: dist/extension.zip 35 | extension-id: mmpbdjdnmhgkpligeniippcgfmkgkpnf 36 | client-id: ${{ secrets.CHROME_MARKETPLACE_CLIENT_ID }} 37 | client-secret: ${{ secrets.CHROME_MARKETPLACE_CLIENT_SECRET }} 38 | refresh-token: ${{ secrets.CHROME_MARKETPLACE_REFRESH_TOKEN }} 39 | # - name: Publish To Firefox Marketplace 40 | # if: steps.checkTag.outputs.exists == 'false' 41 | # uses: trmcnvn/firefox-addon@0d05671269b82c69c3f22ed86d8e772e89d47cf4 # pin@v1 42 | # with: 43 | # uuid: "{e3f69ec4-632e-431a-a534-0f457f1e193b}" 44 | # xpi: dist/extension.zip 45 | # manifest: manifest.json 46 | # api-key: ${{ secrets.FIREFOX_API_KEY }} 47 | # api-secret: ${{ secrets.FIREFOX_API_SECRET }} 48 | - name: Create Release Tag 49 | uses: hediet/tag-action@7549c6c145708c4a1a6cbfcc2520255695c9cbe8 # pin@main 50 | with: 51 | tag: ${{ steps.getVersion.outputs.version }} 52 | create: "true" 53 | github_token: ${{ secrets.GITHUB_TOKEN }} 54 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | 8 | # Runtime data 9 | pids 10 | *.pid 11 | *.seed 12 | *.pid.lock 13 | 14 | # Directory for instrumented libs generated by jscoverage/JSCover 15 | lib-cov 16 | 17 | # Coverage directory used by tools like istanbul 18 | coverage 19 | 20 | # nyc test coverage 21 | .nyc_output 22 | 23 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 24 | .grunt 25 | 26 | # Bower dependency directory (https://bower.io/) 27 | bower_components 28 | 29 | # node-waf configuration 30 | .lock-wscript 31 | 32 | # Compiled binary addons (https://nodejs.org/api/addons.html) 33 | build/Release 34 | 35 | # Dependency directories 36 | node_modules/ 37 | jspm_packages/ 38 | 39 | # TypeScript v1 declaration files 40 | typings/ 41 | 42 | # Optional npm cache directory 43 | .npm 44 | 45 | # Optional eslint cache 46 | .eslintcache 47 | 48 | # Optional REPL history 49 | .node_repl_history 50 | 51 | # Output of 'npm pack' 52 | *.tgz 53 | 54 | # Yarn Integrity file 55 | .yarn-integrity 56 | 57 | # dotenv environment variables file 58 | .env 59 | .env.test 60 | 61 | # parcel-bundler cache (https://parceljs.org/) 62 | .cache 63 | 64 | # next.js build output 65 | .next 66 | 67 | # nuxt.js build output 68 | .nuxt 69 | 70 | # vuepress build output 71 | .vuepress/dist 72 | 73 | # Serverless directories 74 | .serverless/ 75 | 76 | # FuseBox cache 77 | .fusebox/ 78 | 79 | # DynamoDB Local files 80 | .dynamodb/ 81 | 82 | dist/ 83 | out/ -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 4, 4 | "semi": true, 5 | "useTabs": true 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules\\typescript\\lib", 3 | "editor.formatOnSave": true 4 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), 6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). 7 | 8 | ## [0.5.3] 9 | 10 | - Migration to chrome manifest v3 11 | - Adds F10 shortcut to toggle wide full-screen mode 12 | 13 | ## [0.5.2] 14 | 15 | - Fixes transparent background for preview. 16 | 17 | ## [0.5.1] 18 | 19 | - Makes it so the editor adds a space after user and issue autocomplete suggestions. 20 | 21 | ## [0.4.2] 22 | 23 | - Fixes buggy layout when commenting on a source code line (regression). 24 | 25 | ## [0.4.1] 26 | 27 | - Removes ":" as trigger character for auto completion. 28 | 29 | ## [0.4.0] 30 | 31 | - Implements preview in full screen mode. 32 | - Implements gemoji completion. 33 | 34 | ## [0.3.3] 35 | 36 | - Sets maximum editor height to 400px. 37 | - Implements full screen mode. 38 | 39 | ## [0.3.2] 40 | 41 | - Makes the extension firefox compatible. 42 | 43 | ## [0.3.1] 44 | 45 | - Fixes "Quote reply" action. 46 | 47 | ## [0.3.0] 48 | 49 | - Submits the issue on Ctrl+Enter or F1 and then selecting `Submit`. 50 | - Uses Monaco's dark theme when using dark theme on GitHub. 51 | 52 | ## [0.2.0] 53 | 54 | - Fixes buggy layout when commenting on a source code line. 55 | - Removes all console.logs. 56 | 57 | ## [0.1.0] 58 | 59 | - Initial release 60 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Monaco Markdown Editor For GitHub (Chrome/Firefox) 2 | 3 | [![](https://img.shields.io/static/v1?style=social&label=Sponsor&message=%E2%9D%A4&logo=GitHub&color&link=%3Curl%3E)](https://github.com/sponsors/hediet) 4 | [![](https://img.shields.io/static/v1?style=social&label=Donate&message=%E2%9D%A4&logo=Paypal&color&link=%3Curl%3E)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=ZP5F38L4C88UY&source=url) 5 | [![](https://img.shields.io/twitter/follow/hediet_dev.svg?style=social)](https://twitter.com/intent/follow?screen_name=hediet_dev) 6 | 7 | **[ [Install For Chrome](https://chrome.google.com/webstore/detail/monaco-markdown-editor-fo/mmpbdjdnmhgkpligeniippcgfmkgkpnf) ]** **[ [Install For Firefox](https://addons.mozilla.org/en/firefox/addon/monaco-markdown-github-editor/) ]** 8 | 9 | This Chrome/Firefox extension brings the famous Monaco editor to GitHub! 10 | 11 | ![](./docs/screenshot.png) 12 | 13 | --- 14 | 15 | ## Monaco Features 16 | 17 | - Syntax Highlighting of Markdown and Code Snippets 18 | - Tab to indent and Shift+Tab to outdent entire selections 19 | - Multi-Cursor Editing 20 | - and much more 21 | 22 | ## Additional Features 23 | 24 | - Press F11 to toggle full screen (F10 for wide full screen). 25 | - The full screen mode previews the markdown if enough space is available. 26 | 27 | ## Github Features 28 | 29 | - Autocompletion for issues, mentions and emojis. 30 | 31 | This extension replaces all GitHub text areas for authoring markdown with a monaco editor. 32 | 33 | ## Demo 34 | 35 | ![](./docs/demo.gif) 36 | 37 | ## Full-Screen-Mode 38 | 39 | ![](./docs/fullscreen.gif) 40 | 41 | ## Building 42 | 43 | You need nodejs and yarn. Just run these commands to produce `extension.zip` in the dist folder: 44 | 45 | ``` 46 | yarn 47 | yarn build 48 | ``` 49 | -------------------------------------------------------------------------------- /docs/demo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hediet/browser-ext-github-monaco/cb32dd4167d2a65d225b894a2aed63ffe86bbb36/docs/demo.gif -------------------------------------------------------------------------------- /docs/demo.md: -------------------------------------------------------------------------------- 1 | # Context 2 | 3 | Foo does **not** work. 4 | _Example Code:_ 5 | 6 | ```ts 7 | class Foo { 8 | public bar(): number { 9 | return 1 + 2; 10 | } 11 | } 12 | ``` 13 | 14 | Your documentation says this: 15 | 16 | > ## Troubleshooting 17 | > 18 | > Try Bar: 19 | > `bar --fix` 20 | -------------------------------------------------------------------------------- /docs/fullscreen.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hediet/browser-ext-github-monaco/cb32dd4167d2a65d225b894a2aed63ffe86bbb36/docs/fullscreen.gif -------------------------------------------------------------------------------- /docs/preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hediet/browser-ext-github-monaco/cb32dd4167d2a65d225b894a2aed63ffe86bbb36/docs/preview.gif -------------------------------------------------------------------------------- /docs/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hediet/browser-ext-github-monaco/cb32dd4167d2a65d225b894a2aed63ffe86bbb36/docs/screenshot.png -------------------------------------------------------------------------------- /logo.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hediet/browser-ext-github-monaco/cb32dd4167d2a65d225b894a2aed63ffe86bbb36/logo.drawio.png -------------------------------------------------------------------------------- /manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "Monaco Markdown Editor For GitHub", 4 | "version": "0.5.3", 5 | "description": "This extension brings the famous Monaco editor to GitHub!", 6 | "icons": { 7 | "128": "logo.drawio.png" 8 | }, 9 | "options_ui": { 10 | "page": "./dist/options.html", 11 | "open_in_tab": true, 12 | "browser_style": true 13 | }, 14 | "content_scripts": [ 15 | { 16 | "matches": ["https://github.com/*", "https://gist.github.com/*"], 17 | "js": ["/dist/content-script.js"], 18 | "run_at": "document_end" 19 | } 20 | ], 21 | "permissions": ["storage"], 22 | "host_permissions": ["https://github.com/*", "https://gist.github.com/*"], 23 | "web_accessible_resources": [ 24 | { 25 | "resources": ["dist/*"], 26 | "matches": ["https://github.com/*", "https://gist.github.com/*"] 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "github-monaco-browser-extension", 3 | "private": true, 4 | "version": "1.0.0", 5 | "author": "Henning Dieterichs ", 6 | "license": "UNLICENSED", 7 | "scripts": { 8 | "dev": "NODE_OPTIONS=--openssl-legacy-provider webpack --watch --mode development", 9 | "dev-without-cdn": "webpack --watch --mode development", 10 | "build": "NODE_OPTIONS=--openssl-legacy-provider yarn build-js && yarn bundle", 11 | "build-js": "webpack --mode production", 12 | "bundle": "yarn shx rm -rf ./dist/extension.zip && yarn jszip-cli add -o ./dist/extension.zip -i *.map dist manifest.json logo.drawio.png", 13 | "update-actions": "yarn pin-github-action ./.github/workflows/master.yml && yarn prettier ./.github/workflows/master.yml -w" 14 | }, 15 | "devDependencies": { 16 | "@ffflorian/jszip-cli": "^3.1.0", 17 | "@types/chrome": "^0.0.133", 18 | "@types/html-webpack-plugin": "^3.2.2", 19 | "@types/mini-css-extract-plugin": "^1.2.2", 20 | "@types/webpack": "^4.41.6", 21 | "clean-webpack-plugin": "^3.0.0", 22 | "css-loader": "^7.1.2", 23 | "file-loader": "^6.2.0", 24 | "fork-ts-checker-webpack-plugin": "^6.2.0", 25 | "html-webpack-plugin": "^5.3.1", 26 | "mini-css-extract-plugin": "^1.3.3", 27 | "monaco-editor-webpack-plugin": "~7.0.1", 28 | "postcss": "^8.4.47", 29 | "prettier": "^2.2.1", 30 | "raw-loader": "^4.0.0", 31 | "sass": "^1.25.0", 32 | "sass-loader": "^11.0.1", 33 | "shx": "^0.3.2", 34 | "style-loader": "^2.0.0", 35 | "ts-loader": "^9.4.1", 36 | "ts-node": "^10.9.1", 37 | "typescript": "^4.8.4", 38 | "webpack": "^5.75.0", 39 | "webpack-cli": "^4.5.0" 40 | }, 41 | "dependencies": { 42 | "@types/copy-webpack-plugin": "^6.4.0", 43 | "copy-webpack-plugin": "^8.0.0", 44 | "gemoji": "^6.1.0", 45 | "monaco-editor": "~0.52.2", 46 | "pin-github-action": "^1.1.3" 47 | } 48 | } -------------------------------------------------------------------------------- /src/content-script-main/EditorWrapper.ts: -------------------------------------------------------------------------------- 1 | import type { MonacoOptions } from "../settings"; 2 | 3 | import { editor } from "monaco-editor"; 4 | import { Monaco } from "../monaco-loader"; 5 | import { GitHubCompletionController } from "./GitHubCompletionController"; 6 | import { GithubApi } from "./GithubApi"; 7 | 8 | export interface MonacoNode extends HTMLDivElement { 9 | hedietEditorWrapper: EditorWrapper; 10 | } 11 | 12 | export function isMonacoNode(n: unknown): n is MonacoNode { 13 | const k: keyof MonacoNode = "hedietEditorWrapper"; 14 | return typeof n === "object" && n !== null && k in n; 15 | } 16 | 17 | type Theme = "light" | "dark"; 18 | 19 | export const editorWrapperDivClassName = "hediet-editor-wrapper"; 20 | export const monacoDivClassName = "hediet-monaco-container"; 21 | 22 | function getGithubTheme(): Theme { 23 | try { 24 | return (document.body.parentNode as any).dataset.colorMode as any; 25 | } catch (e) { 26 | console.warn("Could not read github colorMode"); 27 | return "light"; 28 | } 29 | } 30 | 31 | const oldAddEventListener = HTMLTextAreaElement.prototype.addEventListener; 32 | HTMLTextAreaElement.prototype.addEventListener = function ( 33 | type: string, 34 | listener: any, 35 | ...args: any[] 36 | ) { 37 | if (type === "paste") { 38 | return (oldAddEventListener as any).apply(this, [ 39 | type, 40 | function (e: ClipboardEvent, ...args: any[]) { 41 | if ( 42 | e.clipboardData && 43 | e.clipboardData.files.length > 0 && 44 | (e.currentTarget as any)?.className === 45 | "inputarea monaco-mouse-cursor-text" 46 | ) { 47 | // Disable monaco paste handler for files, as GitHub handles this already 48 | return; 49 | } 50 | listener(e, ...args); 51 | }, 52 | ...args, 53 | ]); 54 | } 55 | 56 | return (oldAddEventListener as Function).apply(this, [ 57 | type, 58 | listener, 59 | ...args, 60 | ]); 61 | }; 62 | 63 | export class EditorWrapper { 64 | public static wrap( 65 | textArea: HTMLTextAreaElement, 66 | monaco: Monaco, 67 | completionController: GitHubCompletionController, 68 | api: GithubApi, 69 | settings: MonacoOptions 70 | ): EditorWrapper { 71 | if (textArea.hedietEditorWrapper) { 72 | return textArea.hedietEditorWrapper; 73 | } 74 | return new EditorWrapper( 75 | textArea, 76 | monaco, 77 | completionController, 78 | getGithubTheme(), 79 | api, 80 | settings 81 | ); 82 | } 83 | 84 | private disposed = false; 85 | private readonly disposables = new Array<() => any>(); 86 | 87 | private readonly editorWrapperDiv = document.createElement("div"); 88 | private readonly monacoDiv = document.createElement("div"); 89 | private readonly previewDiv = document.createElement("div"); 90 | private readonly editorRoot: HTMLElement; 91 | private readonly editor: editor.IStandaloneCodeEditor; 92 | 93 | private fullscreen = false; 94 | private showPreview = true; 95 | private editorHeight: number = this.textArea.offsetHeight ?? 200; 96 | 97 | private constructor( 98 | private readonly textArea: HTMLTextAreaElement, 99 | monaco: Monaco, 100 | completionController: GitHubCompletionController, 101 | theme: "light" | "dark", 102 | private readonly githubApi: GithubApi, 103 | settings: MonacoOptions 104 | ) { 105 | this.editorRoot = textArea.parentNode as HTMLElement; 106 | 107 | this.prepareTextArea(); 108 | 109 | this.editorWrapperDiv.className = editorWrapperDivClassName; 110 | 111 | (this.editorWrapperDiv as MonacoNode).hedietEditorWrapper = this; 112 | this.editorRoot.appendChild(this.editorWrapperDiv); 113 | this.disposables.push(() => { 114 | this.editorWrapperDiv.remove(); 115 | }); 116 | 117 | this.handleEditorFocusChanged(false); 118 | 119 | this.monacoDiv.className = monacoDivClassName; 120 | this.editorWrapperDiv.appendChild(this.monacoDiv); 121 | this.editorWrapperDiv.addEventListener("click", (e) => { 122 | if (e.target == this.editorWrapperDiv && this.fullscreen) { 123 | this.setFullScreen(false, false); 124 | } 125 | }); 126 | 127 | this.editorWrapperDiv.appendChild(this.previewDiv); 128 | 129 | const model = monaco.editor.createModel(textArea.value, "markdown"); 130 | 131 | const { mentionUrl, issueUrl } = (this.editorRoot as any).dataset; 132 | completionController.registerUrls(model, { mentionUrl, issueUrl }); 133 | 134 | this.editor = monaco.editor.create(this.monacoDiv, { 135 | ...settings, 136 | model, 137 | automaticLayout: true, 138 | minimap: { enabled: false }, 139 | theme: settings.theme ?? (theme === "dark" ? "vs-dark" : "vs"), 140 | }); 141 | 142 | this.editor.addAction({ 143 | id: "github.submit", 144 | label: "Submit", 145 | run: () => { 146 | const ctrlEnterEvent = new KeyboardEvent("keydown", { 147 | key: "Enter", 148 | code: "Enter", 149 | ctrlKey: true, 150 | }); 151 | textArea.dispatchEvent(ctrlEnterEvent); 152 | }, 153 | keybindings: [monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter], 154 | }); 155 | 156 | this.editor.addAction({ 157 | id: "fullscreen.toggle", 158 | label: "Toggle Fullscreen", 159 | run: () => { 160 | this.setFullScreen(!this.fullscreen, true); 161 | }, 162 | keybindings: [monaco.KeyCode.F11], 163 | }); 164 | 165 | this.editor.addAction({ 166 | id: "fullscreen.toggle-without-preview", 167 | label: "Toggle Fullscreen (Without Preview)", 168 | run: () => { 169 | this.setFullScreen(!this.fullscreen, false); 170 | }, 171 | keybindings: [monaco.KeyCode.F10], 172 | }); 173 | 174 | this.disposables.push(() => this.editor.dispose()); 175 | this.disposables.push(() => model.dispose()); 176 | 177 | this.editor.onDidFocusEditorText(() => 178 | this.handleEditorFocusChanged(true) 179 | ); 180 | this.editor.onDidFocusEditorWidget(() => 181 | this.handleEditorFocusChanged(true) 182 | ); 183 | this.editor.onDidBlurEditorText(() => 184 | this.handleEditorFocusChanged(false) 185 | ); 186 | this.editor.onDidBlurEditorWidget(() => 187 | this.handleEditorFocusChanged(false) 188 | ); 189 | 190 | const interval = setInterval(() => { 191 | if (model.getValue() !== textArea.value) { 192 | model.setValue(textArea.value); 193 | } 194 | if (!document.body.contains(textArea)) { 195 | this.dispose(); 196 | } 197 | }, 100); 198 | this.disposables.push(() => clearInterval(interval)); 199 | 200 | textArea.addEventListener("change", () => { 201 | if (model.getValue() !== textArea.value) { 202 | model.setValue(textArea.value); 203 | } 204 | }); 205 | textArea.addEventListener("input", () => { 206 | if (model.getValue() !== textArea.value) { 207 | model.setValue(textArea.value); 208 | } 209 | }); 210 | 211 | this.editor.onDidChangeCursorSelection((e) => { 212 | const startOffset = model.getOffsetAt( 213 | e.selection.getStartPosition() 214 | ); 215 | const endOffset = model.getOffsetAt(e.selection.getEndPosition()); 216 | textArea.selectionStart = startOffset; 217 | textArea.selectionEnd = endOffset; 218 | }); 219 | 220 | model.onDidChangeContent((e) => { 221 | if (e.changes.length === 1 && e.changes[0].text === " ") { 222 | this.editor.trigger("editor", "hideSuggestWidget", undefined); 223 | } 224 | const value = model.getValue(); 225 | textArea.value = value; 226 | textArea.dispatchEvent(new Event("input")); 227 | 228 | this.updatePreview(); 229 | }); 230 | 231 | this.editor.onDidContentSizeChange((e) => { 232 | this.editorHeight = e.contentHeight; 233 | this.applyState(); 234 | }); 235 | 236 | const resizeObserver = new ResizeObserver(() => { 237 | if (this.editorRoot.offsetHeight > 0) { 238 | this.editor.layout(); 239 | } 240 | this.updatePreview(); 241 | }); 242 | resizeObserver.observe(this.editorRoot); 243 | resizeObserver.observe(this.editorWrapperDiv); 244 | 245 | this.disposables.push(() => resizeObserver.disconnect()); 246 | 247 | const applyState = () => { 248 | this.applyState(); 249 | }; 250 | window.addEventListener("resize", applyState); 251 | this.disposables.push(() => { 252 | window.removeEventListener("resize", applyState); 253 | }); 254 | 255 | // Uncomment the following line if you want to automatically enter 256 | // full-screen mode. This is usefull for debugging. 257 | // this.fullscreen = this.editorRoot.offsetHeight > 0; 258 | 259 | this.applyState(); 260 | } 261 | 262 | private lastUpdatePreviewTimeout: any = undefined; 263 | private lastText: string = ""; 264 | private updatePreview() { 265 | if (!this.previewVisible) { 266 | return; 267 | } 268 | 269 | const newText = this.editor.getModel()!.getValue(); 270 | if (this.lastText === newText) { 271 | return; 272 | } 273 | 274 | let node: HTMLElement | null = this.editorRoot; 275 | while (node && !node.getAttribute("data-preview-url")) { 276 | node = node.parentElement; 277 | } 278 | 279 | if (!node) { 280 | return; 281 | } 282 | 283 | clearTimeout(this.lastUpdatePreviewTimeout); 284 | this.lastUpdatePreviewTimeout = setTimeout(async () => { 285 | const preview = await this.githubApi.getPreview(node!, newText); 286 | this.previewDiv.innerHTML = preview; 287 | this.lastText = newText; 288 | }, 1000); 289 | } 290 | 291 | private handleEditorFocusChanged(isFocused: boolean): void { 292 | if (isFocused) { 293 | this.editorWrapperDiv.style.border = "1px solid #4a9eff"; 294 | this.textArea.dispatchEvent(new Event("focus")); 295 | } else { 296 | this.editorWrapperDiv.style.border = "1px solid #c3c8cf"; 297 | this.textArea.dispatchEvent(new Event("blur")); 298 | } 299 | } 300 | 301 | private prepareTextArea() { 302 | this.textArea.hedietEditorWrapper = this; 303 | this.textArea.style.display = "none"; 304 | 305 | // GH queries for all text areas that have non zero size, e.g. when 306 | // the "Quote Reply" action. `display: none` on textArea breaks this logic. 307 | // We must hack around this by overriding these properties. 308 | // Since github also has hidden text areas, 309 | // textArea must have a non-zero size if and only if 310 | // monacoNode has a non-zero size. 311 | Object.defineProperty(this.textArea, "offsetHeight", { 312 | get: () => this.editorRoot.offsetHeight, 313 | }); 314 | Object.defineProperty(this.textArea, "offsetWidth", { 315 | get: () => this.editorRoot.offsetWidth, 316 | }); 317 | 318 | // GH calls textArea.focus() in some places. 319 | // We want to focus the monaco editor instead. 320 | Object.defineProperty(this.textArea, "focus", { 321 | value: () => { 322 | this.editor.focus(); 323 | }, 324 | }); 325 | } 326 | 327 | private setFullScreen(fullscreen: boolean, showPreview: boolean) { 328 | this.fullscreen = fullscreen; 329 | this.showPreview = showPreview; 330 | this.applyState(); 331 | } 332 | 333 | private get previewVisible(): boolean { 334 | return ( 335 | this.showPreview && 336 | this.fullscreen && 337 | this.editorWrapperDiv.offsetWidth > 1300 338 | ); 339 | } 340 | 341 | private applyState() { 342 | this.updatePreview(); 343 | this.editorWrapperDiv.classList.toggle("fullscreen", this.fullscreen); 344 | this.editorWrapperDiv.classList.toggle( 345 | "show-preview", 346 | this.showPreview 347 | ); 348 | 349 | this.monacoDiv.style.height = this.fullscreen 350 | ? "" 351 | : `${Math.min(300, Math.max(100, this.editorHeight + 2))}px`; 352 | 353 | this.previewDiv.className = this.previewVisible 354 | ? "hediet-preview-container active comment-body markdown-body js-preview-body" 355 | : "hediet-preview-container"; 356 | } 357 | 358 | dispose() { 359 | if (this.disposed) { 360 | return; 361 | } 362 | this.disposed = true; 363 | for (const d of this.disposables) { 364 | d(); 365 | } 366 | } 367 | } 368 | -------------------------------------------------------------------------------- /src/content-script-main/EmojiCompletionController.ts: -------------------------------------------------------------------------------- 1 | import { Monaco } from "../monaco-loader"; 2 | import { editor, Position, languages, CancellationToken } from "monaco-editor"; 3 | import { TokenizerBuilder } from "./hediet-tokenizer"; 4 | 5 | export class EmojiCompletionController { 6 | constructor(private readonly monaco: Monaco) { 7 | monaco.languages.registerCompletionItemProvider( 8 | "markdown", 9 | new EmojiCompletionItemProvider() 10 | ); 11 | } 12 | } 13 | 14 | class EmojiCompletionItemProvider implements languages.CompletionItemProvider { 15 | public readonly triggerCharacters = []; 16 | 17 | async provideCompletionItems( 18 | model: editor.ITextModel, 19 | position: Position, 20 | context: languages.CompletionContext, 21 | token: CancellationToken 22 | ): Promise { 23 | const tokenInfo = emojiTokenizer.findFirstTokenAt( 24 | model.getLineContent(position.lineNumber), 25 | position.column - 1, 26 | true 27 | ); 28 | 29 | if (!tokenInfo) { 30 | return { suggestions: [] }; 31 | } 32 | 33 | const data = await import("gemoji"); 34 | 35 | const range = { 36 | startLineNumber: position.lineNumber, 37 | endLineNumber: position.lineNumber, 38 | startColumn: tokenInfo.offset + 1, 39 | endColumn: tokenInfo.offset + 1 + tokenInfo.length, 40 | }; 41 | 42 | return { 43 | suggestions: data.map((e) => ({ 44 | label: `${e.emoji} :${e.names[0]}:`, 45 | tags: [], 46 | filterText: `:${e.names.join(" ")} ${e.tags.join(" ")}:`, 47 | insertText: `${e.emoji}`, 48 | range, 49 | kind: languages.CompletionItemKind.Function, 50 | })), 51 | }; 52 | } 53 | } 54 | 55 | const emojiTokenizer = (() => { 56 | const b = new TokenizerBuilder<{ kind: "emoji" }>(undefined); 57 | b.addRule(/(:[\w\d_\+\-]*:?)/, [{ kind: "emoji" }]); 58 | return b.build(); 59 | })(); 60 | -------------------------------------------------------------------------------- /src/content-script-main/GitHubCompletionController.ts: -------------------------------------------------------------------------------- 1 | import { Monaco } from "../monaco-loader"; 2 | import { editor, Position, languages } from "monaco-editor"; 3 | import { GithubApi } from "./GithubApi"; 4 | import { TokenizerBuilder } from "./hediet-tokenizer"; 5 | 6 | export class GitHubCompletionController { 7 | private readonly urls = new Map< 8 | editor.ITextModel, 9 | { mentionUrl: string; issueUrl: string } 10 | >(); 11 | 12 | constructor( 13 | private readonly monaco: Monaco, 14 | private readonly api: GithubApi 15 | ) { 16 | monaco.languages.registerCompletionItemProvider("markdown", { 17 | triggerCharacters: ["@", "#"], 18 | provideCompletionItems: (model, position) => 19 | this.provideCompletionItems(model, position), 20 | }); 21 | } 22 | 23 | public registerUrls( 24 | model: editor.ITextModel, 25 | urls: { mentionUrl: string; issueUrl: string } 26 | ): void { 27 | this.urls.set(model, urls); 28 | } 29 | 30 | private async provideCompletionItems( 31 | model: editor.ITextModel, 32 | position: Position 33 | ): Promise { 34 | const urls = this.urls.get(model); 35 | if (!urls) { 36 | return { suggestions: [] }; 37 | } 38 | 39 | const token = textTokenizer.findFirstTokenAt( 40 | model.getLineContent(position.lineNumber), 41 | position.column - 1, 42 | true 43 | ); 44 | 45 | if (!token) { 46 | return { 47 | suggestions: [], 48 | }; 49 | } 50 | 51 | const range = { 52 | startLineNumber: position.lineNumber, 53 | endLineNumber: position.lineNumber, 54 | startColumn: token.offset + 1, 55 | endColumn: token.offset + 1 + token.length, 56 | }; 57 | if (token.kind === "mention") { 58 | const data = await this.api.getMentionSuggestions(urls.mentionUrl); 59 | return { 60 | suggestions: data.map((s) => ({ 61 | label: `@${s.login} (${s.name})`, 62 | insertText: `@${s.login} `, 63 | filterText: `@${s.name} ${s.login}`, 64 | detail: `@${s.login}`, 65 | kind: this.monaco.languages.CompletionItemKind.Function, 66 | documentation: s.type, 67 | range: range, 68 | })), 69 | }; 70 | } else { 71 | const data = await this.api.getIssueSuggestions(urls.issueUrl); 72 | return { 73 | suggestions: data.suggestions.map((s) => ({ 74 | label: `#${s.number} (${s.title})`, 75 | filterText: `#${s.title} ${s.number}`, 76 | insertText: `#${s.number} `, 77 | detail: `#${s.number}`, 78 | kind: this.monaco.languages.CompletionItemKind.Function, 79 | documentation: s.type, 80 | range: range, 81 | })), 82 | }; 83 | } 84 | } 85 | } 86 | 87 | const textTokenizer = (() => { 88 | const b = new TokenizerBuilder<{ kind: "reference" | "mention" }>( 89 | undefined 90 | ); 91 | 92 | b.addRule(/(#[a-zA-Z0-9]*)/, [{ kind: "reference" }]); 93 | b.addRule(/(@[a-zA-Z0-9]*)/, [{ kind: "mention" }]); 94 | return b.build(); 95 | })(); 96 | -------------------------------------------------------------------------------- /src/content-script-main/GithubApi.ts: -------------------------------------------------------------------------------- 1 | export class GithubApi { 2 | private cache = new Map(); 3 | 4 | public async getMentionSuggestions( 5 | mentionUrl: string 6 | ): Promise< 7 | { 8 | type: "user"; 9 | id: number; 10 | login: string; 11 | name: string; 12 | }[] 13 | > { 14 | if (this.cache.has(mentionUrl)) { 15 | return this.cache.get(mentionUrl); 16 | } 17 | 18 | const r = await fetch(mentionUrl, { 19 | method: "GET", 20 | headers: { 21 | accept: "application/json", 22 | "cache-control": "no-cache", 23 | pragma: "no-cache", 24 | "sec-fetch-dest": "empty", 25 | "sec-fetch-mode": "cors", 26 | "sec-fetch-site": "same-origin", 27 | "x-requested-with": "XMLHttpRequest", 28 | }, 29 | }); 30 | 31 | const data = await r.json(); 32 | this.cache.set(mentionUrl, data); 33 | return data; 34 | } 35 | 36 | private previews = new Map(); 37 | 38 | public async getPreview( 39 | tabContainer: HTMLElement, 40 | text: string 41 | ): Promise { 42 | if (this.previews.has(text)) { 43 | return this.previews.get(text)!; 44 | } 45 | 46 | function Cn(e: any) { 47 | var t, n, o, s, r, i, a, c, l; 48 | const u = e.querySelector(".js-comment-field").value, 49 | d = 50 | null === (t = e.querySelector(".js-path")) || void 0 === t 51 | ? void 0 52 | : t.value, 53 | m = 54 | null === (n = e.querySelector(".js-line-number")) || 55 | void 0 === n 56 | ? void 0 57 | : n.value, 58 | f = 59 | null === (o = e.querySelector(".js-start-line-number")) || 60 | void 0 === o 61 | ? void 0 62 | : o.value, 63 | p = 64 | null === (s = e.querySelector(".js-side")) || void 0 === s 65 | ? void 0 66 | : s.value, 67 | h = 68 | null === (r = e.querySelector(".js-start-side")) || 69 | void 0 === r 70 | ? void 0 71 | : r.value, 72 | g = 73 | null === (i = e.querySelector(".js-start-commit-oid")) || 74 | void 0 === i 75 | ? void 0 76 | : i.value, 77 | b = 78 | null === (a = e.querySelector(".js-end-commit-oid")) || 79 | void 0 === a 80 | ? void 0 81 | : a.value, 82 | y = 83 | null === (c = e.querySelector(".js-base-commit-oid")) || 84 | void 0 === c 85 | ? void 0 86 | : c.value, 87 | v = 88 | null === (l = e.querySelector(".js-comment-id")) || 89 | void 0 === l 90 | ? void 0 91 | : l.value, 92 | w = new FormData(); 93 | return ( 94 | w.append("text", u), 95 | w.append( 96 | "authenticity_token", 97 | (function (e) { 98 | const t = e.querySelector(".js-data-preview-url-csrf"), 99 | n = e 100 | .closest("form") 101 | .elements.namedItem("authenticity_token"); 102 | if (t instanceof HTMLInputElement) return t.value; 103 | if (n instanceof HTMLInputElement) return n.value; 104 | throw new Error( 105 | "Comment preview authenticity token not found" 106 | ); 107 | })(e) 108 | ), 109 | d && w.append("path", d), 110 | m && w.append("line_number", m), 111 | f && w.append("start_line_number", f), 112 | p && w.append("side", p), 113 | h && w.append("start_side", h), 114 | g && w.append("start_commit_oid", g), 115 | b && w.append("end_commit_oid", b), 116 | y && w.append("base_commit_oid", y), 117 | v && w.append("comment_id", v), 118 | w 119 | ); 120 | } 121 | 122 | const previewUrl = tabContainer.getAttribute( 123 | "data-preview-url" 124 | ) as string; 125 | 126 | console.log("use", previewUrl); 127 | 128 | const r = await fetch(previewUrl, { 129 | method: "POST", 130 | body: Cn(tabContainer), 131 | headers: { 132 | "cache-control": "no-cache", 133 | pragma: "no-cache", 134 | "sec-fetch-dest": "empty", 135 | "sec-fetch-mode": "cors", 136 | "sec-fetch-site": "same-origin", 137 | "x-requested-with": "XMLHttpRequest", 138 | }, 139 | }); 140 | 141 | const preview = await r.text(); 142 | this.previews.set(text, preview); 143 | return preview; 144 | } 145 | 146 | public async getIssueSuggestions( 147 | issueUrl: string 148 | ): Promise<{ 149 | suggestions: { 150 | type: "issue" | "pr"; 151 | id: number; 152 | number: number; 153 | title: string; 154 | }[]; 155 | }> { 156 | if (this.cache.has(issueUrl)) { 157 | return this.cache.get(issueUrl); 158 | } 159 | 160 | const r = await fetch(issueUrl, { 161 | method: "GET", 162 | headers: { 163 | accept: "application/json", 164 | "cache-control": "no-cache", 165 | pragma: "no-cache", 166 | "sec-fetch-dest": "empty", 167 | "sec-fetch-mode": "cors", 168 | "sec-fetch-site": "same-origin", 169 | "x-requested-with": "XMLHttpRequest", 170 | }, 171 | }); 172 | 173 | const data = await r.json(); 174 | this.cache.set(issueUrl, data); 175 | return data; 176 | } 177 | } 178 | -------------------------------------------------------------------------------- /src/content-script-main/InlineCompletionProvider.ts: -------------------------------------------------------------------------------- 1 | import type * as monaco from "monaco-editor"; 2 | import { Monaco } from "../monaco-loader"; 3 | 4 | export class SentenceInlineCompletionProvider 5 | implements monaco.languages.InlineCompletionsProvider 6 | { 7 | private readonly availableInlineCompletions: string[]; 8 | 9 | constructor( 10 | private readonly monaco: Monaco, 11 | customInlineCompletions: string 12 | ) { 13 | this.monaco.languages.registerInlineCompletionsProvider( 14 | "markdown", 15 | this 16 | ); 17 | 18 | this.availableInlineCompletions = customInlineCompletions.split("\n"); 19 | } 20 | 21 | provideInlineCompletions( 22 | model: monaco.editor.ITextModel, 23 | position: monaco.Position, 24 | context: monaco.languages.InlineCompletionContext, 25 | token: monaco.CancellationToken 26 | ): monaco.languages.ProviderResult< 27 | monaco.languages.InlineCompletions 28 | > { 29 | // Going backwards from the cursor position until the start of the line, is there a suggestion that has that as prefix? 30 | 31 | const completions: monaco.languages.InlineCompletion[] = []; 32 | 33 | const line = model.getLineContent(position.lineNumber); 34 | for (let i = 3; i < 100 && i <= position.column - 1; i++) { 35 | const prefix = line.substring( 36 | position.column - i - 1, 37 | position.column - 1 38 | ); 39 | const suggestions = this.availableInlineCompletions.filter((s) => 40 | s.startsWith(prefix) 41 | ); 42 | for (const suggestion of suggestions) { 43 | completions.push({ 44 | insertText: suggestion, 45 | range: new this.monaco.Range( 46 | position.lineNumber, 47 | position.column - i, 48 | position.lineNumber, 49 | position.column 50 | ), 51 | }); 52 | } 53 | } 54 | 55 | return { 56 | items: completions, 57 | }; 58 | } 59 | 60 | handleItemDidShow?( 61 | completions: monaco.languages.InlineCompletions, 62 | item: monaco.languages.InlineCompletion 63 | ): void {} 64 | 65 | freeInlineCompletions( 66 | completions: monaco.languages.InlineCompletions 67 | ): void {} 68 | } 69 | -------------------------------------------------------------------------------- /src/content-script-main/hediet-tokenizer/README.md: -------------------------------------------------------------------------------- 1 | # TODO 2 | 3 | - Move into its own npm package. 4 | -------------------------------------------------------------------------------- /src/content-script-main/hediet-tokenizer/index.ts: -------------------------------------------------------------------------------- 1 | type StatePredicate = 2 | | (TState extends string ? TState : never) 3 | | ((state: TState) => string); 4 | 5 | export abstract class RulesBuilder { 6 | protected readonly rules = new Array>(); 7 | protected sealed = false; 8 | 9 | addRule(rule: Rule): void; 10 | addRule( 11 | matcher: RegExp, 12 | tokenInfo: TTokenInfo | (TTokenInfo | null)[] 13 | ): void; 14 | addRule( 15 | ...args: 16 | | [matcher: RegExp, tokenInfo: TTokenInfo | (TTokenInfo | null)[]] 17 | | [rule: Rule] 18 | ): void { 19 | this.ensureNotSealed(); 20 | if (args.length === 1) { 21 | this.rules.push(args[0]); 22 | } else { 23 | const tokenInfo = args[1]; 24 | const x: RegExpRule["getTokens"] = 25 | Array.isArray(tokenInfo) 26 | ? (match, state) => { 27 | if (match.length - 1 !== tokenInfo.length) { 28 | throw new Error( 29 | "Number of groups does not match number of provided tokens!" 30 | ); 31 | } 32 | const result = new Array< 33 | Token 34 | >(); 35 | let offset = 0; 36 | for (let i = 0; i < match.length - 1; i++) { 37 | const groupMatch = match[i + 1]; 38 | if (groupMatch === undefined) { 39 | continue; 40 | } 41 | const info = tokenInfo[i]; 42 | if (info) { 43 | result.push({ 44 | offset: match.index + offset, 45 | length: groupMatch.length, 46 | text: groupMatch, 47 | state, 48 | ...info, 49 | }); 50 | } 51 | offset += groupMatch.length; 52 | } 53 | 54 | if (offset !== match[0].length) { 55 | throw new Error( 56 | "Groups must partionize the matched string!" 57 | ); 58 | } 59 | return result; 60 | } 61 | : (match, state) => [ 62 | { 63 | offset: match.index, 64 | length: match[0].length, 65 | text: match[0], 66 | state, 67 | ...tokenInfo, 68 | }, 69 | ]; 70 | 71 | this.rules.push(new RegExpRule(args[0], x)); 72 | } 73 | } 74 | 75 | conditional( 76 | condition: StatePredicate, 77 | fn: (b: RulesBuilder) => void 78 | ): void { 79 | this.ensureNotSealed(); 80 | const b = new InnerRulesBuilder(); 81 | this.addRule(new ConditionalRule(condition, new ComposedRule(b.rules))); 82 | fn(b); 83 | b.sealed = true; 84 | } 85 | 86 | protected ensureNotSealed() { 87 | if (this.sealed) { 88 | throw new Error( 89 | "Tokenizer Builder is sealed and cannot be modified anymore!" 90 | ); 91 | } 92 | } 93 | } 94 | 95 | class InnerRulesBuilder extends RulesBuilder< 96 | TTokenInfo, 97 | TState 98 | > { 99 | public get allRules() { 100 | return this.rules; 101 | } 102 | } 103 | 104 | export class TokenizerBuilder< 105 | TTokenInfo extends {}, 106 | TState = undefined 107 | > extends RulesBuilder { 108 | constructor(private readonly startingState: TState) { 109 | super(); 110 | } 111 | 112 | build(): Tokenizer { 113 | return new Tokenizer(new ComposedRule(this.rules), this.startingState); 114 | } 115 | } 116 | 117 | export type Token = TTokenInfo & { 118 | offset: number; 119 | length: number; 120 | state: TState; 121 | text: string; 122 | }; 123 | 124 | type MatchResult = 125 | | { 126 | matches: true; 127 | nextState: TState; 128 | newOffset: number; 129 | tokens: Token[]; 130 | } 131 | | { 132 | matches: false; 133 | /** 134 | * Must be at least `offset + 1`. 135 | */ 136 | offsetOfNextPossibleMatch: number; 137 | }; 138 | 139 | abstract class Rule { 140 | abstract match( 141 | state: TState, 142 | text: string, 143 | offset: number 144 | ): MatchResult; 145 | } 146 | 147 | class RegExpRule extends Rule< 148 | TTokenInfo, 149 | TState 150 | > { 151 | private readonly regexp: RegExp; 152 | 153 | constructor( 154 | regexp: RegExp, 155 | private readonly getTokens: ( 156 | match: RegExpExecArray, 157 | state: TState 158 | ) => Token[] 159 | ) { 160 | super(); 161 | this.regexp = new RegExp(regexp.source, "g"); 162 | } 163 | 164 | match( 165 | state: any, 166 | text: string, 167 | offset: number 168 | ): MatchResult { 169 | this.regexp.lastIndex = offset; 170 | const result = this.regexp.exec(text); 171 | 172 | if (result && result.index === offset) { 173 | return { 174 | matches: true, 175 | nextState: state, 176 | tokens: this.getTokens(result, state), 177 | newOffset: this.regexp.lastIndex, 178 | }; 179 | } else { 180 | return { 181 | matches: false, 182 | offsetOfNextPossibleMatch: result ? result.index : text.length, 183 | }; 184 | } 185 | } 186 | } 187 | 188 | class ConditionalRule extends Rule< 189 | TTokenInfo, 190 | TState 191 | > { 192 | constructor( 193 | private readonly condition: StatePredicate, 194 | private readonly rule: Rule 195 | ) { 196 | super(); 197 | } 198 | 199 | /* 200 | TODO caching 201 | private lastText: string = ""; 202 | private lastOffset: number = 0; 203 | private lastOffsetOfNextPossibleMatch: number = 0; 204 | */ 205 | 206 | match( 207 | state: any, 208 | text: string, 209 | offset: number 210 | ): MatchResult { 211 | if ( 212 | typeof this.condition === "function" 213 | ? this.condition(state) 214 | : state === this.condition 215 | ) { 216 | return this.rule.match(state, text, offset); 217 | } else { 218 | return { 219 | matches: false, 220 | offsetOfNextPossibleMatch: offset + 1, 221 | }; 222 | } 223 | } 224 | } 225 | 226 | class ComposedRule extends Rule< 227 | TTokenInfo, 228 | TState 229 | > { 230 | constructor(private readonly rules: Rule[]) { 231 | super(); 232 | } 233 | 234 | match( 235 | state: TState, 236 | text: string, 237 | offset: number 238 | ): MatchResult { 239 | let smallestOffsetOfNextPossibleMatch = text.length; 240 | 241 | for (const r of this.rules) { 242 | const m = r.match(state, text, offset); 243 | if (m.matches) { 244 | return m; 245 | } else { 246 | if ( 247 | m.offsetOfNextPossibleMatch < 248 | smallestOffsetOfNextPossibleMatch 249 | ) { 250 | smallestOffsetOfNextPossibleMatch = 251 | m.offsetOfNextPossibleMatch; 252 | } 253 | } 254 | } 255 | 256 | return { 257 | matches: false, 258 | offsetOfNextPossibleMatch: smallestOffsetOfNextPossibleMatch, 259 | }; 260 | } 261 | } 262 | 263 | export class Tokenizer { 264 | constructor( 265 | private readonly rule: Rule, 266 | private readonly startingState: TState 267 | ) {} 268 | 269 | findFirstTokenAt( 270 | text: string, 271 | position: number, 272 | endInclusive = false 273 | ): Token | undefined { 274 | const tokens = this.getAllTokens(text); 275 | const o = endInclusive ? 1 : 0; 276 | for (const t of tokens) { 277 | if (t.offset <= position && position < t.offset + t.length + o) { 278 | return t; 279 | } 280 | } 281 | return undefined; 282 | } 283 | 284 | getAllTokens(text: string): Token[] { 285 | let state = this.startingState; 286 | let offset = 0; 287 | 288 | const result = Array>(); 289 | while (offset < text.length) { 290 | const m = this.rule.match(state, text, offset); 291 | if (m.matches) { 292 | if (m.newOffset < offset + 1) { 293 | throw new Error("Offsets must increase!"); 294 | } 295 | offset = m.newOffset; 296 | state = m.nextState; 297 | result.push(...m.tokens); 298 | } else { 299 | if (m.offsetOfNextPossibleMatch < offset + 1) { 300 | throw new Error("Offsets must increase!"); 301 | } 302 | offset = m.offsetOfNextPossibleMatch; 303 | } 304 | } 305 | return result; 306 | } 307 | } 308 | 309 | function createTextTokenizer() { 310 | const b = new TokenizerBuilder<{ 311 | kind: "reference" | "mention" | "smiley"; 312 | }>(undefined); 313 | b.addRule(/(#)([a-zA-Z0-9]*)/, [null, { kind: "reference" }]); 314 | b.addRule(/(@)([a-zA-Z0-9]*)/, [null, { kind: "mention" }]); 315 | b.addRule(/(:)([a-zA-Z0-9]*)(:?)/, [null, { kind: "smiley" }, null]); 316 | 317 | return b.build(); 318 | } 319 | -------------------------------------------------------------------------------- /src/content-script-main/index.ts: -------------------------------------------------------------------------------- 1 | declare let __webpack_public_path__: string; 2 | __webpack_public_path__ = document.head.dataset 3 | .hedietMonacoEditorPublicPath as string; 4 | 5 | import type { MonacoOptions } from "../settings"; 6 | 7 | import { loadMonaco } from "../monaco-loader"; 8 | import { GithubApi } from "./GithubApi"; 9 | import { 10 | EditorWrapper, 11 | editorWrapperDivClassName, 12 | isMonacoNode, 13 | } from "./EditorWrapper"; 14 | import { GitHubCompletionController } from "./GitHubCompletionController"; 15 | import { EmojiCompletionController } from "./EmojiCompletionController"; 16 | import { SentenceInlineCompletionProvider } from "./InlineCompletionProvider"; 17 | 18 | async function main() { 19 | const settings = JSON.parse( 20 | document.head.dataset.hedietMonacoEditorSettings! 21 | ) as MonacoOptions & { customInlineCompletions: string }; 22 | 23 | const githubApi = new GithubApi(); 24 | const monaco = await loadMonaco(); 25 | const completionController = new GitHubCompletionController( 26 | monaco, 27 | githubApi 28 | ); 29 | const emojiCompletionController = new EmojiCompletionController(monaco); 30 | const sentenceInlineCompletionProvider = 31 | new SentenceInlineCompletionProvider( 32 | monaco, 33 | settings.customInlineCompletions 34 | ); 35 | 36 | function updateDocument() { 37 | const issueCommentBox = document.getElementById("issue_body"); 38 | const wikiBox = document.getElementById("gollum-editor-body"); 39 | for (const textArea of [issueCommentBox, wikiBox] as any[]) { 40 | if (!textArea) { 41 | continue; 42 | } 43 | 44 | EditorWrapper.wrap( 45 | textArea, 46 | monaco, 47 | completionController, 48 | githubApi, 49 | settings 50 | ); 51 | } 52 | 53 | // Github seems to copy dom nodes around. 54 | // Github also copies the monaco editor which leads to problems. 55 | // We fix this by just removing all "dead" dom nodes. 56 | for (const div of [ 57 | ...(document.getElementsByClassName( 58 | editorWrapperDivClassName 59 | ) as any), 60 | ]) { 61 | if (!isMonacoNode(div)) { 62 | div.remove(); 63 | } 64 | } 65 | } 66 | 67 | let timeout: NodeJS.Timeout | undefined = undefined; 68 | const mutationObserver = new MutationObserver(() => { 69 | if (!timeout) { 70 | timeout = setTimeout(() => { 71 | updateDocument(); 72 | timeout = undefined; 73 | }, 50); 74 | } 75 | }); 76 | 77 | mutationObserver.observe(document.body, { 78 | subtree: true, 79 | childList: true, 80 | }); 81 | 82 | updateDocument(); 83 | } 84 | 85 | main(); 86 | -------------------------------------------------------------------------------- /src/content-script-main/types.d.ts: -------------------------------------------------------------------------------- 1 | declare interface HTMLTextAreaElement { 2 | hedietEditorWrapper: EditorWrapper | undefined; 3 | } 4 | 5 | declare class ResizeObserver { 6 | constructor(handler: () => void); 7 | observe(elem: any): void; 8 | disconnect(): void; 9 | } 10 | 11 | declare module "gemoji" { 12 | const data: { 13 | emoji: string; 14 | names: string[]; 15 | tags: string[]; 16 | description: string; 17 | category: string; 18 | }[]; 19 | export = data; 20 | } 21 | -------------------------------------------------------------------------------- /src/content-script.ts: -------------------------------------------------------------------------------- 1 | import { getSettings } from "./settings"; 2 | 3 | function injectScript(url: string) { 4 | const script = document.createElement("script"); 5 | script.setAttribute("type", "text/javascript"); 6 | script.setAttribute("src", url); 7 | document.head.appendChild(script); 8 | } 9 | 10 | function injectCss(url: string) { 11 | const link = document.createElement("link"); 12 | link.setAttribute("rel", "stylesheet"); 13 | link.setAttribute("type", "text/css"); 14 | link.setAttribute("href", url); 15 | document.head.appendChild(link); 16 | } 17 | 18 | (async () => { 19 | document.head.dataset.hedietMonacoEditorPublicPath = 20 | chrome.runtime.getURL("/dist/"); 21 | 22 | const settings = await getSettings(); 23 | document.head.dataset.hedietMonacoEditorSettings = JSON.stringify(settings); 24 | 25 | injectScript(chrome.runtime.getURL("/dist/content-script-main.js")); 26 | injectCss(chrome.runtime.getURL("/dist/styles.css")); 27 | })(); 28 | -------------------------------------------------------------------------------- /src/monaco-loader.ts: -------------------------------------------------------------------------------- 1 | import type * as monaco from "monaco-editor"; 2 | 3 | export type Monaco = typeof monaco; 4 | 5 | export async function loadMonaco(): Promise { 6 | /** 7 | * CSP policy prevents loading monaco cdn on github 8 | */ 9 | return require("monaco-editor"); 10 | } 11 | -------------------------------------------------------------------------------- /src/options/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Monaco Markdown Editor For GitHub 7 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 34 | 38 | 39 | 40 | 41 | 42 | 46 | 50 | 51 | 52 | 53 | 54 | 58 | 59 | 60 | 61 | 62 | 63 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 |
91 | Comments 92 | 96 |
97 | 101 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 129 | 133 | 134 | 135 | 136 | 140 | 144 | 148 | 152 |
153 | Find 154 | 158 | 162 | 163 | 164 | 165 | 166 | 170 | 171 |
172 | 173 | 177 | 178 | 179 | 180 | 181 | 185 | 186 | 190 | 194 | 195 | 199 | 203 | 207 | 211 | 215 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 241 | 245 | 249 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 264 | 268 | 272 | 276 | 280 | 284 | 288 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 307 | 311 | 315 | 319 | 323 | 324 | 325 | 326 | 330 | 331 | 332 | 333 | 336 | 337 |
338 | Suggest 339 | 343 | 344 | 345 | 346 | 347 | 351 | 355 | 359 |
360 | 364 | 365 | 369 | 370 | 374 | 375 | 376 | 377 | 378 | 379 | 383 | 387 | 391 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 410 | 411 | 412 |

413 | 414 | 415 |

416 | 417 | 418 | 419 | 420 | -------------------------------------------------------------------------------- /src/options/index.ts: -------------------------------------------------------------------------------- 1 | import type { MonacoOptions } from "../settings"; 2 | 3 | import { defaultSettings, getSettings } from "../settings"; 4 | 5 | abstract class Setting extends HTMLElement { 6 | protected readonly container: HTMLElement; 7 | 8 | constructor() { 9 | super(); 10 | 11 | // Do not attach shadow because it prevents `"chrome_style": true` from applying. 12 | const paragraph = document.createElement("p"); 13 | this.container = document.createElement("label"); 14 | paragraph.appendChild(this.container); 15 | this.appendChild(paragraph); 16 | } 17 | 18 | abstract value: any; 19 | } 20 | 21 | /** A setting element that its label precedes its element */ 22 | abstract class LabelBeforeSetting extends Setting { 23 | constructor() { 24 | super(); 25 | 26 | const label = this.getAttribute("label")!; 27 | this.container.appendChild(document.createTextNode(label + " ")); 28 | this.container.appendChild(this.getElement()); 29 | } 30 | 31 | protected abstract getElement(): HTMLElement; 32 | } 33 | 34 | class TextSetting extends LabelBeforeSetting { 35 | private input!: HTMLInputElement; 36 | 37 | get value() { 38 | return this.input.value; 39 | } 40 | set value(v) { 41 | this.input.value = v; 42 | } 43 | 44 | protected getElement(): HTMLElement { 45 | this.input = document.createElement("input"); 46 | this.input.type = "text"; 47 | return this.input; 48 | } 49 | } 50 | 51 | class NumberSetting extends LabelBeforeSetting { 52 | private input!: HTMLInputElement; 53 | 54 | get value() { 55 | return Number(this.input.value); 56 | } 57 | set value(v) { 58 | this.input.value = String(v); 59 | } 60 | 61 | protected getElement(): HTMLElement { 62 | this.input = document.createElement("input"); 63 | this.input.type = "number"; 64 | return this.input; 65 | } 66 | } 67 | 68 | class DropdownSetting extends LabelBeforeSetting { 69 | private select!: HTMLSelectElement; 70 | 71 | get value() { 72 | return this.select.value; 73 | } 74 | set value(v) { 75 | this.select.value = v; 76 | } 77 | 78 | protected getElement(): HTMLElement { 79 | this.select = document.createElement("select"); 80 | this.select.append(...Array.from(this.querySelectorAll("option"))); 81 | return this.select; 82 | } 83 | } 84 | 85 | class BooleanSetting extends Setting { 86 | private readonly checkbox: HTMLInputElement; 87 | 88 | get value() { 89 | return this.checkbox.checked; 90 | } 91 | set value(v) { 92 | this.checkbox.checked = v; 93 | } 94 | 95 | constructor() { 96 | super(); 97 | 98 | this.checkbox = document.createElement("input"); 99 | this.checkbox.type = "checkbox"; 100 | this.container.appendChild(this.checkbox); 101 | const label = this.getAttribute("label")!; 102 | this.container.appendChild(document.createTextNode(" " + label)); 103 | } 104 | } 105 | 106 | class LineDecorationsWidth extends Setting { 107 | private readonly width: HTMLInputElement; 108 | private readonly units: HTMLSelectElement; 109 | 110 | get value() { 111 | if (this.units.value == "px") { 112 | return Number(this.width.value); 113 | } else { 114 | return this.width.value + "ch"; 115 | } 116 | } 117 | set value(v) { 118 | if (typeof v === "number") { 119 | this.width.value = String(v); 120 | this.units.value = "px"; 121 | } else { 122 | this.width.value = v.substr(0, v.length - "ch".length); 123 | this.units.value = "ch"; 124 | } 125 | } 126 | 127 | constructor() { 128 | super(); 129 | 130 | const label = this.getAttribute("label")!; 131 | this.container.appendChild(document.createTextNode(label + " ")); 132 | this.width = document.createElement("input"); 133 | this.width.type = "number"; 134 | this.container.appendChild(this.width); 135 | this.units = document.createElement("select"); 136 | const pxUnits = document.createElement("option"); 137 | pxUnits.value = pxUnits.text = "px"; 138 | this.units.appendChild(pxUnits); 139 | const chUnits = document.createElement("option"); 140 | chUnits.value = chUnits.text = "ch"; 141 | this.units.appendChild(chUnits); 142 | this.container.appendChild(this.units); 143 | } 144 | } 145 | 146 | class TextAreaSetting extends LabelBeforeSetting { 147 | private input!: HTMLTextAreaElement; 148 | 149 | get value() { 150 | console.log("get value", this.input.value); 151 | return this.input.value; 152 | } 153 | set value(v) { 154 | this.input.value = String(v); 155 | console.log("set value", v); 156 | } 157 | 158 | protected getElement(): HTMLElement { 159 | this.input = document.createElement("textarea"); 160 | return this.input; 161 | } 162 | } 163 | 164 | customElements.define("text-setting", TextSetting); 165 | customElements.define("number-setting", NumberSetting); 166 | customElements.define("dropdown-setting", DropdownSetting); 167 | customElements.define("boolean-setting", BooleanSetting); 168 | customElements.define("line-decorations-width", LineDecorationsWidth); 169 | customElements.define("text-area-setting", TextAreaSetting); 170 | 171 | interface ObjectPath { 172 | parent: any; 173 | lastPath: string; 174 | } 175 | 176 | function splitPath(object: any, path: string): ObjectPath { 177 | const paths = path.split("."); 178 | let parent = object; 179 | while (paths.length > 1) { 180 | parent = parent[paths.shift()!]; 181 | } 182 | return { parent, lastPath: paths[0] }; 183 | } 184 | 185 | function initField(field: Setting, settings: MonacoOptions) { 186 | // Special cases 187 | if (field.id === "theme" && settings.theme === undefined) { 188 | field.value = "matchGithub"; 189 | return; 190 | } 191 | if (field.id === "fontFamily" && settings.fontFamily === undefined) { 192 | field.value = ""; 193 | return; 194 | } 195 | if (field.id === "fontSize" && settings.fontSize === undefined) { 196 | field.value = 0; 197 | return; 198 | } 199 | if ( 200 | field.id === "suggestFontSize" && 201 | settings.suggestFontSize === undefined 202 | ) { 203 | field.value = 0; 204 | return; 205 | } 206 | if ( 207 | field.id === "suggestLineHeight" && 208 | settings.suggestLineHeight === undefined 209 | ) { 210 | field.value = 0; 211 | return; 212 | } 213 | 214 | const { parent, lastPath } = splitPath(settings, field.id); 215 | const value = parent[lastPath]; 216 | field.value = value; 217 | } 218 | 219 | function saveField(field: Setting, settings: MonacoOptions) { 220 | // Special cases 221 | if (field.id === "theme" && field.value === "matchGithub") { 222 | settings.theme = undefined; 223 | return; 224 | } 225 | if (field.id === "fontFamily" && field.value === "") { 226 | settings.fontFamily = undefined; 227 | return; 228 | } 229 | if (field.id === "fontSize" && field.value === 0) { 230 | settings.fontSize = undefined; 231 | return; 232 | } 233 | if (field.id === "suggestFontSize" && field.value === 0) { 234 | settings.suggestFontSize = undefined; 235 | return; 236 | } 237 | if (field.id === "suggestLineHeight" && field.value === 0) { 238 | settings.suggestLineHeight = undefined; 239 | return; 240 | } 241 | 242 | const { parent, lastPath } = splitPath(settings, field.id); 243 | parent[lastPath] = field.value; 244 | } 245 | 246 | async function setFieldsToSettings() { 247 | const settings = await getSettings(); 248 | document 249 | .querySelectorAll( 250 | "text-setting,number-setting,dropdown-setting,boolean-setting,line-decorations-width,text-area-setting" 251 | ) 252 | .forEach((field) => initField(field, settings)); 253 | } 254 | setFieldsToSettings(); 255 | 256 | document.getElementById("reset")!.addEventListener( 257 | "click", 258 | function (e) { 259 | e.preventDefault(); 260 | chrome.storage.sync.set( 261 | { settings: defaultSettings }, 262 | setFieldsToSettings 263 | ); 264 | }, 265 | false 266 | ); 267 | 268 | document.getElementById("save")!.addEventListener( 269 | "click", 270 | function (e) { 271 | e.preventDefault(); 272 | const settings = JSON.parse(JSON.stringify(defaultSettings)); // Clone default settings in-depth 273 | document 274 | .querySelectorAll( 275 | "text-setting,number-setting,dropdown-setting,boolean-setting,line-decorations-width,text-area-setting" 276 | ) 277 | .forEach((field) => saveField(field, settings)); 278 | chrome.storage.sync.set({ settings }); 279 | }, 280 | false 281 | ); 282 | -------------------------------------------------------------------------------- /src/settings.ts: -------------------------------------------------------------------------------- 1 | import type * as monaco from "monaco-editor"; 2 | 3 | export type MonacoOptions = monaco.editor.IStandaloneEditorConstructionOptions; 4 | 5 | export const defaultSettings: MonacoOptions & { 6 | customInlineCompletions: string; 7 | } = { 8 | scrollBeyondLastLine: false, 9 | wordWrap: "on", 10 | // When wordWrap is "wordWrapColumn" or "bounded", the following also applies: 11 | wordWrapColumn: 80, 12 | theme: undefined, 13 | acceptSuggestionOnCommitCharacter: true, 14 | acceptSuggestionOnEnter: "on", 15 | accessibilityPageSize: 10, 16 | accessibilitySupport: "auto", 17 | autoClosingBrackets: "languageDefined", 18 | autoClosingOvertype: "auto", 19 | autoClosingQuotes: "languageDefined", 20 | autoIndent: "advanced", 21 | autoSurround: "languageDefined", 22 | comments: { 23 | insertSpace: true, 24 | }, 25 | contextmenu: true, 26 | copyWithSyntaxHighlighting: true, 27 | cursorBlinking: "blink", 28 | cursorSmoothCaretAnimation: "off", 29 | cursorStyle: "line", 30 | // If cursorStyle is "line", the next one also applies: 31 | cursorWidth: 0, 32 | cursorSurroundingLines: 0, 33 | cursorSurroundingLinesStyle: "default", 34 | detectIndentation: true, 35 | dragAndDrop: true, // The docs says the default is `false`, but this is wrong 36 | emptySelectionClipboard: true, 37 | fastScrollSensitivity: 5, 38 | find: { 39 | addExtraSpaceOnTop: true, 40 | autoFindInSelection: "never", 41 | seedSearchStringFromSelection: "always", 42 | }, 43 | folding: true, 44 | foldingHighlight: true, 45 | foldingStrategy: "auto", 46 | fontFamily: undefined, 47 | fontLigatures: false, // TODO: How do we express `string | boolean`? 48 | fontSize: undefined, 49 | fontWeight: "normal", 50 | glyphMargin: false, 51 | hideCursorInOverviewRuler: false, 52 | insertSpaces: true, 53 | letterSpacing: 0, 54 | lineDecorationsWidth: 10, 55 | lineHeight: 0, 56 | lineNumbers: "on", 57 | links: true, 58 | matchBrackets: "always", 59 | mouseStyle: "text", 60 | mouseWheelScrollSensitivity: 1, 61 | mouseWheelZoom: false, 62 | multiCursorMergeOverlapping: true, 63 | multiCursorModifier: "alt", 64 | multiCursorPaste: "spread", 65 | occurrencesHighlight: "singleFile", 66 | overviewRulerBorder: true, 67 | quickSuggestions: true, 68 | quickSuggestionsDelay: 10, 69 | renderControlCharacters: false, 70 | renderFinalNewline: "on", 71 | renderLineHighlight: "line", // The docs says the default is "all", but this is wrong 72 | renderWhitespace: "none", 73 | roundedSelection: true, 74 | rulers: [], // TODO: How do we express an array? 75 | scrollBeyondLastColumn: 5, 76 | selectOnLineNumbers: true, 77 | selectionHighlight: true, 78 | showFoldingControls: "mouseover", 79 | smoothScrolling: false, 80 | suggestSelection: "recentlyUsed", 81 | suggest: { 82 | filterGraceful: true, 83 | insertMode: "insert", 84 | localityBonus: false, 85 | shareSuggestSelections: false, 86 | }, 87 | suggestFontSize: undefined, 88 | suggestLineHeight: undefined, 89 | suggestOnTriggerCharacters: true, 90 | tabCompletion: "off", 91 | tabSize: 4, 92 | trimAutoWhitespace: true, 93 | useTabStops: true, 94 | wordBasedSuggestions: "allDocuments", 95 | wordSeparators: "`~!@#$%^&*()-=+[{]}\\|;:'\",.<>/?", 96 | wrappingIndent: "none", 97 | wrappingStrategy: "simple", 98 | customInlineCompletions: "", 99 | }; 100 | 101 | export function getSettings() { 102 | return new Promise((resolve, reject) => { 103 | chrome.storage.sync.get( 104 | { settings: defaultSettings }, 105 | ({ settings }) => { 106 | if (!chrome.runtime.lastError) { 107 | resolve(settings); 108 | } else { 109 | reject(chrome.runtime.lastError); 110 | } 111 | } 112 | ); 113 | }); 114 | } 115 | -------------------------------------------------------------------------------- /src/styles.scss: -------------------------------------------------------------------------------- 1 | textarea:has(+ .hediet-editor-wrapper) { 2 | display: block !important; 3 | position: absolute; 4 | opacity: 0; 5 | pointer-events: none; 6 | } 7 | 8 | .hediet-editor-wrapper { 9 | transition: backdrop-filter 1s ease-out; 10 | 11 | &:not(.fullscreen) { 12 | display: flex; 13 | box-sizing: border-box; 14 | padding-bottom: 10px; 15 | 16 | backdrop-filter: 0; 17 | } 18 | 19 | &.fullscreen { 20 | position: fixed; 21 | z-index: 1000; 22 | left: 0; 23 | top: 0; 24 | width: 100vw; 25 | height: 100vh; 26 | box-sizing: border-box; 27 | display: flex; 28 | flex-direction: row; 29 | justify-content: center; 30 | backdrop-filter: blur(5px); 31 | border: 0; 32 | padding: 20px 100px; 33 | 34 | &.show-preview { 35 | .hediet-monaco-container { 36 | max-width: 1000px; 37 | } 38 | } 39 | 40 | .hediet-monaco-container { 41 | max-width: 1000px; 42 | border: 2px solid black; 43 | flex: 1; 44 | } 45 | } 46 | 47 | .hediet-monaco-container { 48 | min-width: 300px; 49 | min-height: 0; 50 | flex: 1; 51 | } 52 | 53 | .hediet-preview-container { 54 | &:not(.active) { 55 | display: none; 56 | } 57 | 58 | &.active { 59 | margin-left: 20px; 60 | padding: 5px; 61 | overflow: auto; 62 | border: 2px solid black; 63 | flex: 1; 64 | max-width: 816px; 65 | background: var(--color-canvas-default); 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "es6", 5 | "outDir": "dist", 6 | "lib": ["es6", "DOM"], 7 | "sourceMap": true, 8 | "rootDir": "src", 9 | "strict": true, 10 | "skipLibCheck": true, 11 | "experimentalDecorators": true 12 | }, 13 | "include": ["src/**/*"] 14 | } 15 | -------------------------------------------------------------------------------- /webpack.config.ts: -------------------------------------------------------------------------------- 1 | import * as webpack from "webpack"; 2 | import path = require("path"); 3 | import { CleanWebpackPlugin } from "clean-webpack-plugin"; 4 | import MonacoWebpackPlugin = require("monaco-editor-webpack-plugin"); 5 | import ForkTsCheckerWebpackPlugin = require("fork-ts-checker-webpack-plugin"); 6 | import MiniCssExtractPlugin = require("mini-css-extract-plugin"); 7 | import CopyWebpackPlugin = require("copy-webpack-plugin"); 8 | 9 | const r = (file: string) => path.resolve(__dirname, file); 10 | 11 | module.exports = (env: any) => { 12 | return { 13 | entry: { 14 | "content-script": r("./src/content-script"), 15 | "content-script-main": r("./src/content-script-main/index"), 16 | options: r("./src/options"), 17 | styles: r("./src/styles.scss"), 18 | }, 19 | output: { 20 | path: r("./dist"), 21 | filename: "[name].js", 22 | }, 23 | devtool: "source-map", 24 | externals: { 25 | vscode: "commonjs vscode", 26 | }, 27 | resolve: { 28 | extensions: [".ts", ".js"], 29 | }, 30 | module: { 31 | rules: [ 32 | { 33 | test: /\.css$/, 34 | rules: [ 35 | { loader: "style-loader" }, 36 | { loader: "css-loader" }, 37 | ], 38 | }, 39 | { 40 | test: /\.scss$/, 41 | use: [ 42 | MiniCssExtractPlugin.loader, 43 | "css-loader", 44 | "sass-loader", 45 | ], 46 | }, 47 | { 48 | test: /\.(jpe?g|png|gif|eot|ttf|svg|woff|woff2|md)$/i, 49 | loader: "file-loader", 50 | }, 51 | { 52 | test: /\.tsx?$/, 53 | exclude: /node_modules/, 54 | loader: "ts-loader", 55 | options: { transpileOnly: true }, 56 | }, 57 | ], 58 | }, 59 | plugins: [ 60 | new MiniCssExtractPlugin(), 61 | new CleanWebpackPlugin(), 62 | new ForkTsCheckerWebpackPlugin(), 63 | new CopyWebpackPlugin({ 64 | patterns: [ 65 | { 66 | from: "./src/options/index.html", 67 | to: "./options.html", 68 | }, 69 | ], 70 | }), 71 | new CleanWebpackPlugin(), 72 | new MonacoWebpackPlugin({ 73 | languages: ["markdown"], 74 | }), 75 | ], 76 | } as webpack.Configuration; 77 | }; 78 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": 6 | version "7.12.13" 7 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" 8 | integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== 9 | dependencies: 10 | "@babel/highlight" "^7.12.13" 11 | 12 | "@babel/helper-validator-identifier@^7.12.11": 13 | version "7.12.11" 14 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" 15 | integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== 16 | 17 | "@babel/highlight@^7.12.13": 18 | version "7.13.10" 19 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.10.tgz#a8b2a66148f5b27d666b15d81774347a731d52d1" 20 | integrity sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg== 21 | dependencies: 22 | "@babel/helper-validator-identifier" "^7.12.11" 23 | chalk "^2.0.0" 24 | js-tokens "^4.0.0" 25 | 26 | "@cspotcode/source-map-support@^0.8.0": 27 | version "0.8.1" 28 | resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" 29 | integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== 30 | dependencies: 31 | "@jridgewell/trace-mapping" "0.3.9" 32 | 33 | "@discoveryjs/json-ext@^0.5.0": 34 | version "0.5.2" 35 | resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" 36 | integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== 37 | 38 | "@ffflorian/jszip-cli@^3.1.0": 39 | version "3.1.0" 40 | resolved "https://registry.yarnpkg.com/@ffflorian/jszip-cli/-/jszip-cli-3.1.0.tgz#08368abbd49a4b8446020c839bec7447a268308b" 41 | integrity sha512-Fbzx6HQCvINhzs8HeyGIlkJAZCZYc4Bez3CXVsbsRLK0YWOdhdoRkLQABWwHbCTHxS8/n0DFahSrfEhrHOBlcg== 42 | dependencies: 43 | commander "4.0.1" 44 | cosmiconfig "6.0.0" 45 | fs-extra "8.1.0" 46 | jszip "3.2.2" 47 | logdown "3.3.0" 48 | progress "2.0.3" 49 | 50 | "@jridgewell/gen-mapping@^0.3.0": 51 | version "0.3.2" 52 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" 53 | integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== 54 | dependencies: 55 | "@jridgewell/set-array" "^1.0.1" 56 | "@jridgewell/sourcemap-codec" "^1.4.10" 57 | "@jridgewell/trace-mapping" "^0.3.9" 58 | 59 | "@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3": 60 | version "3.1.0" 61 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" 62 | integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== 63 | 64 | "@jridgewell/set-array@^1.0.1": 65 | version "1.1.2" 66 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" 67 | integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== 68 | 69 | "@jridgewell/source-map@^0.3.2": 70 | version "0.3.2" 71 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" 72 | integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== 73 | dependencies: 74 | "@jridgewell/gen-mapping" "^0.3.0" 75 | "@jridgewell/trace-mapping" "^0.3.9" 76 | 77 | "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": 78 | version "1.4.14" 79 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" 80 | integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== 81 | 82 | "@jridgewell/trace-mapping@0.3.9": 83 | version "0.3.9" 84 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" 85 | integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== 86 | dependencies: 87 | "@jridgewell/resolve-uri" "^3.0.3" 88 | "@jridgewell/sourcemap-codec" "^1.4.10" 89 | 90 | "@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": 91 | version "0.3.17" 92 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" 93 | integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== 94 | dependencies: 95 | "@jridgewell/resolve-uri" "3.1.0" 96 | "@jridgewell/sourcemap-codec" "1.4.14" 97 | 98 | "@nodelib/fs.scandir@2.1.4": 99 | version "2.1.4" 100 | resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" 101 | integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== 102 | dependencies: 103 | "@nodelib/fs.stat" "2.0.4" 104 | run-parallel "^1.1.9" 105 | 106 | "@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": 107 | version "2.0.4" 108 | resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" 109 | integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== 110 | 111 | "@nodelib/fs.walk@^1.2.3": 112 | version "1.2.6" 113 | resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" 114 | integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== 115 | dependencies: 116 | "@nodelib/fs.scandir" "2.1.4" 117 | fastq "^1.6.0" 118 | 119 | "@octokit/auth-token@^2.4.0": 120 | version "2.4.5" 121 | resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" 122 | integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA== 123 | dependencies: 124 | "@octokit/types" "^6.0.3" 125 | 126 | "@octokit/endpoint@^6.0.1": 127 | version "6.0.11" 128 | resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.11.tgz#082adc2aebca6dcefa1fb383f5efb3ed081949d1" 129 | integrity sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ== 130 | dependencies: 131 | "@octokit/types" "^6.0.3" 132 | is-plain-object "^5.0.0" 133 | universal-user-agent "^6.0.0" 134 | 135 | "@octokit/openapi-types@^5.3.2": 136 | version "5.3.2" 137 | resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-5.3.2.tgz#b8ac43c5c3d00aef61a34cf744e315110c78deb4" 138 | integrity sha512-NxF1yfYOUO92rCx3dwvA2onF30Vdlg7YUkMVXkeptqpzA3tRLplThhFleV/UKWFgh7rpKu1yYRbvNDUtzSopKA== 139 | 140 | "@octokit/plugin-paginate-rest@^1.1.1": 141 | version "1.1.2" 142 | resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz#004170acf8c2be535aba26727867d692f7b488fc" 143 | integrity sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q== 144 | dependencies: 145 | "@octokit/types" "^2.0.1" 146 | 147 | "@octokit/plugin-request-log@^1.0.0": 148 | version "1.0.3" 149 | resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz#70a62be213e1edc04bb8897ee48c311482f9700d" 150 | integrity sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ== 151 | 152 | "@octokit/plugin-rest-endpoint-methods@2.4.0": 153 | version "2.4.0" 154 | resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz#3288ecf5481f68c494dd0602fc15407a59faf61e" 155 | integrity sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ== 156 | dependencies: 157 | "@octokit/types" "^2.0.1" 158 | deprecation "^2.3.1" 159 | 160 | "@octokit/request-error@^1.0.2": 161 | version "1.2.1" 162 | resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-1.2.1.tgz#ede0714c773f32347576c25649dc013ae6b31801" 163 | integrity sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA== 164 | dependencies: 165 | "@octokit/types" "^2.0.0" 166 | deprecation "^2.0.0" 167 | once "^1.4.0" 168 | 169 | "@octokit/request-error@^2.0.0": 170 | version "2.0.5" 171 | resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143" 172 | integrity sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg== 173 | dependencies: 174 | "@octokit/types" "^6.0.3" 175 | deprecation "^2.0.0" 176 | once "^1.4.0" 177 | 178 | "@octokit/request@^5.2.0": 179 | version "5.4.14" 180 | resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.4.14.tgz#ec5f96f78333bb2af390afa5ff66f114b063bc96" 181 | integrity sha512-VkmtacOIQp9daSnBmDI92xNIeLuSRDOIuplp/CJomkvzt7M18NXgG044Cx/LFKLgjKt9T2tZR6AtJayba9GTSA== 182 | dependencies: 183 | "@octokit/endpoint" "^6.0.1" 184 | "@octokit/request-error" "^2.0.0" 185 | "@octokit/types" "^6.7.1" 186 | deprecation "^2.0.0" 187 | is-plain-object "^5.0.0" 188 | node-fetch "^2.6.1" 189 | once "^1.4.0" 190 | universal-user-agent "^6.0.0" 191 | 192 | "@octokit/rest@^16.35.2": 193 | version "16.43.2" 194 | resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.43.2.tgz#c53426f1e1d1044dee967023e3279c50993dd91b" 195 | integrity sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ== 196 | dependencies: 197 | "@octokit/auth-token" "^2.4.0" 198 | "@octokit/plugin-paginate-rest" "^1.1.1" 199 | "@octokit/plugin-request-log" "^1.0.0" 200 | "@octokit/plugin-rest-endpoint-methods" "2.4.0" 201 | "@octokit/request" "^5.2.0" 202 | "@octokit/request-error" "^1.0.2" 203 | atob-lite "^2.0.0" 204 | before-after-hook "^2.0.0" 205 | btoa-lite "^1.0.0" 206 | deprecation "^2.0.0" 207 | lodash.get "^4.4.2" 208 | lodash.set "^4.3.2" 209 | lodash.uniq "^4.5.0" 210 | octokit-pagination-methods "^1.1.0" 211 | once "^1.4.0" 212 | universal-user-agent "^4.0.0" 213 | 214 | "@octokit/types@^2.0.0", "@octokit/types@^2.0.1": 215 | version "2.16.2" 216 | resolved "https://registry.yarnpkg.com/@octokit/types/-/types-2.16.2.tgz#4c5f8da3c6fecf3da1811aef678fda03edac35d2" 217 | integrity sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q== 218 | dependencies: 219 | "@types/node" ">= 8" 220 | 221 | "@octokit/types@^6.0.3", "@octokit/types@^6.7.1": 222 | version "6.12.2" 223 | resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.12.2.tgz#5b44add079a478b8eb27d78cf384cc47e4411362" 224 | integrity sha512-kCkiN8scbCmSq+gwdJV0iLgHc0O/GTPY1/cffo9kECu1MvatLPh9E+qFhfRIktKfHEA6ZYvv6S1B4Wnv3bi3pA== 225 | dependencies: 226 | "@octokit/openapi-types" "^5.3.2" 227 | 228 | "@tsconfig/node10@^1.0.7": 229 | version "1.0.9" 230 | resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" 231 | integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== 232 | 233 | "@tsconfig/node12@^1.0.7": 234 | version "1.0.11" 235 | resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" 236 | integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== 237 | 238 | "@tsconfig/node14@^1.0.0": 239 | version "1.0.3" 240 | resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" 241 | integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== 242 | 243 | "@tsconfig/node16@^1.0.2": 244 | version "1.0.3" 245 | resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" 246 | integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== 247 | 248 | "@types/anymatch@*": 249 | version "1.3.1" 250 | resolved "https://registry.yarnpkg.com/@types/anymatch/-/anymatch-1.3.1.tgz#336badc1beecb9dacc38bea2cf32adf627a8421a" 251 | integrity sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA== 252 | 253 | "@types/chrome@^0.0.133": 254 | version "0.0.133" 255 | resolved "https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.133.tgz#9e1d55441584ba2d5274ca84db36427da9c5dc6e" 256 | integrity sha512-G8uIUdaCTBILprQvQXBWGXZxjAWbkCkFQit17cdH3zYQEwU8f/etNl8+M7e8MRz9Xj8daHaVpysneMZMx8/ldQ== 257 | dependencies: 258 | "@types/filesystem" "*" 259 | "@types/har-format" "*" 260 | 261 | "@types/clean-css@*": 262 | version "4.2.3" 263 | resolved "https://registry.yarnpkg.com/@types/clean-css/-/clean-css-4.2.3.tgz#12c13cc815f5e793014ee002c6324455907d851c" 264 | integrity sha512-ET0ldU/vpXecy5vO8JRIhtJWSrk1vzXdJcp3Bjf8bARZynl6vfkhEKY/A7njfNIRlmyTGuVFuqnD6I3tOGdXpQ== 265 | dependencies: 266 | "@types/node" "*" 267 | source-map "^0.6.0" 268 | 269 | "@types/copy-webpack-plugin@^6.4.0": 270 | version "6.4.0" 271 | resolved "https://registry.yarnpkg.com/@types/copy-webpack-plugin/-/copy-webpack-plugin-6.4.0.tgz#225f86bc60a62052df39a110f7cbf7bc5156a0c1" 272 | integrity sha512-f5mQG5c7xH3zLGrEmKgzLLFSGNB7Y4+4a+a1X4DvjgfbTEWEZUNNXUqGs5tBVCtb5qKPzm2z+6ixX3xirWmOCg== 273 | dependencies: 274 | "@types/webpack" "*" 275 | 276 | "@types/eslint-scope@^3.7.3": 277 | version "3.7.4" 278 | resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" 279 | integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== 280 | dependencies: 281 | "@types/eslint" "*" 282 | "@types/estree" "*" 283 | 284 | "@types/eslint@*": 285 | version "7.2.7" 286 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.7.tgz#f7ef1cf0dceab0ae6f9a976a0a9af14ab1baca26" 287 | integrity sha512-EHXbc1z2GoQRqHaAT7+grxlTJ3WE2YNeD6jlpPoRc83cCoThRY+NUWjCUZaYmk51OICkPXn2hhphcWcWXgNW0Q== 288 | dependencies: 289 | "@types/estree" "*" 290 | "@types/json-schema" "*" 291 | 292 | "@types/estree@*": 293 | version "0.0.46" 294 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" 295 | integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== 296 | 297 | "@types/estree@^0.0.51": 298 | version "0.0.51" 299 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" 300 | integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== 301 | 302 | "@types/filesystem@*": 303 | version "0.0.29" 304 | resolved "https://registry.yarnpkg.com/@types/filesystem/-/filesystem-0.0.29.tgz#ee3748eb5be140dcf980c3bd35f11aec5f7a3748" 305 | integrity sha512-85/1KfRedmfPGsbK8YzeaQUyV1FQAvMPMTuWFQ5EkLd2w7szhNO96bk3Rh/SKmOfd9co2rCLf0Voy4o7ECBOvw== 306 | dependencies: 307 | "@types/filewriter" "*" 308 | 309 | "@types/filewriter@*": 310 | version "0.0.28" 311 | resolved "https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.28.tgz#c054e8af4d9dd75db4e63abc76f885168714d4b3" 312 | integrity sha1-wFTor02d11205jq8dviFFocU1LM= 313 | 314 | "@types/glob@^7.1.1": 315 | version "7.1.3" 316 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" 317 | integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== 318 | dependencies: 319 | "@types/minimatch" "*" 320 | "@types/node" "*" 321 | 322 | "@types/har-format@*": 323 | version "1.2.5" 324 | resolved "https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.5.tgz#4f6648814d0fdcb6a510e3364a9db439a753c4b1" 325 | integrity sha512-IG8AE1m2pWtPqQ7wXhFhy6Q59bwwnLwO36v5Rit2FrbXCIp8Sk8E2PfUCreyrdo17STwFSKDAkitVuVYbpEHvQ== 326 | 327 | "@types/html-minifier-terser@^5.0.0": 328 | version "5.1.1" 329 | resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#3c9ee980f1a10d6021ae6632ca3e79ca2ec4fb50" 330 | integrity sha512-giAlZwstKbmvMk1OO7WXSj4OZ0keXAcl2TQq4LWHiiPH2ByaH7WeUzng+Qej8UPxxv+8lRTuouo0iaNDBuzIBA== 331 | 332 | "@types/html-minifier@*": 333 | version "4.0.0" 334 | resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-4.0.0.tgz#2065cb9944f2d1b241146707c6935aa7b947d279" 335 | integrity sha512-eFnGhrKmjWBlnSGNtunetE3UU2Tc/LUl92htFslSSTmpp9EKHQVcYQadCyYfnzUEFB5G/3wLWo/USQS/mEPKrA== 336 | dependencies: 337 | "@types/clean-css" "*" 338 | "@types/relateurl" "*" 339 | "@types/uglify-js" "*" 340 | 341 | "@types/html-webpack-plugin@^3.2.2": 342 | version "3.2.4" 343 | resolved "https://registry.yarnpkg.com/@types/html-webpack-plugin/-/html-webpack-plugin-3.2.4.tgz#ed770ddfec53ed2aa6b5f4523acca291192235c6" 344 | integrity sha512-WM0s78bfCIXnTlICf+8nWP0IvP+fn4YfiI3uxAX1K1PSRpzs0iysp03j4zR0xTgxSqF67TbOsHs49YXonRAkeQ== 345 | dependencies: 346 | "@types/html-minifier" "*" 347 | "@types/tapable" "*" 348 | "@types/webpack" "*" 349 | 350 | "@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.6": 351 | version "7.0.7" 352 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" 353 | integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== 354 | 355 | "@types/json-schema@^7.0.8": 356 | version "7.0.11" 357 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" 358 | integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== 359 | 360 | "@types/mini-css-extract-plugin@^1.2.2": 361 | version "1.2.2" 362 | resolved "https://registry.yarnpkg.com/@types/mini-css-extract-plugin/-/mini-css-extract-plugin-1.2.2.tgz#e6031da8d60777b3da3f5b4daf285437d7b6580b" 363 | integrity sha512-EoHBJ4rcrd5j7weAFE4yU1gxedx53EFCWKso03G7DW0h2YvtwjKYz/NnuFHudcQDI1HpTLqoQFTwEgfJxygYCw== 364 | dependencies: 365 | "@types/webpack" "*" 366 | 367 | "@types/minimatch@*": 368 | version "3.0.3" 369 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" 370 | integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== 371 | 372 | "@types/node@*", "@types/node@>= 8": 373 | version "14.14.35" 374 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313" 375 | integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag== 376 | 377 | "@types/parse-json@^4.0.0": 378 | version "4.0.0" 379 | resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" 380 | integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== 381 | 382 | "@types/relateurl@*": 383 | version "0.2.28" 384 | resolved "https://registry.yarnpkg.com/@types/relateurl/-/relateurl-0.2.28.tgz#6bda7db8653fa62643f5ee69e9f69c11a392e3a6" 385 | integrity sha1-a9p9uGU/piZD9e5p6facEaOS46Y= 386 | 387 | "@types/source-list-map@*": 388 | version "0.1.2" 389 | resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9" 390 | integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA== 391 | 392 | "@types/tapable@*": 393 | version "1.0.6" 394 | resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.6.tgz#a9ca4b70a18b270ccb2bc0aaafefd1d486b7ea74" 395 | integrity sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA== 396 | 397 | "@types/uglify-js@*": 398 | version "3.13.0" 399 | resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" 400 | integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== 401 | dependencies: 402 | source-map "^0.6.1" 403 | 404 | "@types/webpack-sources@*": 405 | version "2.1.0" 406 | resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-2.1.0.tgz#8882b0bd62d1e0ce62f183d0d01b72e6e82e8c10" 407 | integrity sha512-LXn/oYIpBeucgP1EIJbKQ2/4ZmpvRl+dlrFdX7+94SKRUV3Evy3FsfMZY318vGhkWUS5MPhtOM3w1/hCOAOXcg== 408 | dependencies: 409 | "@types/node" "*" 410 | "@types/source-list-map" "*" 411 | source-map "^0.7.3" 412 | 413 | "@types/webpack@*", "@types/webpack@^4.4.31", "@types/webpack@^4.41.6": 414 | version "4.41.26" 415 | resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.26.tgz#27a30d7d531e16489f9c7607c747be6bc1a459ef" 416 | integrity sha512-7ZyTfxjCRwexh+EJFwRUM+CDB2XvgHl4vfuqf1ZKrgGvcS5BrNvPQqJh3tsZ0P6h6Aa1qClVHaJZszLPzpqHeA== 417 | dependencies: 418 | "@types/anymatch" "*" 419 | "@types/node" "*" 420 | "@types/tapable" "*" 421 | "@types/uglify-js" "*" 422 | "@types/webpack-sources" "*" 423 | source-map "^0.6.0" 424 | 425 | "@webassemblyjs/ast@1.11.1": 426 | version "1.11.1" 427 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" 428 | integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== 429 | dependencies: 430 | "@webassemblyjs/helper-numbers" "1.11.1" 431 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 432 | 433 | "@webassemblyjs/floating-point-hex-parser@1.11.1": 434 | version "1.11.1" 435 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" 436 | integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== 437 | 438 | "@webassemblyjs/helper-api-error@1.11.1": 439 | version "1.11.1" 440 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" 441 | integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== 442 | 443 | "@webassemblyjs/helper-buffer@1.11.1": 444 | version "1.11.1" 445 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" 446 | integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== 447 | 448 | "@webassemblyjs/helper-numbers@1.11.1": 449 | version "1.11.1" 450 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" 451 | integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== 452 | dependencies: 453 | "@webassemblyjs/floating-point-hex-parser" "1.11.1" 454 | "@webassemblyjs/helper-api-error" "1.11.1" 455 | "@xtuc/long" "4.2.2" 456 | 457 | "@webassemblyjs/helper-wasm-bytecode@1.11.1": 458 | version "1.11.1" 459 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" 460 | integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== 461 | 462 | "@webassemblyjs/helper-wasm-section@1.11.1": 463 | version "1.11.1" 464 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" 465 | integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== 466 | dependencies: 467 | "@webassemblyjs/ast" "1.11.1" 468 | "@webassemblyjs/helper-buffer" "1.11.1" 469 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 470 | "@webassemblyjs/wasm-gen" "1.11.1" 471 | 472 | "@webassemblyjs/ieee754@1.11.1": 473 | version "1.11.1" 474 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" 475 | integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== 476 | dependencies: 477 | "@xtuc/ieee754" "^1.2.0" 478 | 479 | "@webassemblyjs/leb128@1.11.1": 480 | version "1.11.1" 481 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" 482 | integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== 483 | dependencies: 484 | "@xtuc/long" "4.2.2" 485 | 486 | "@webassemblyjs/utf8@1.11.1": 487 | version "1.11.1" 488 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" 489 | integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== 490 | 491 | "@webassemblyjs/wasm-edit@1.11.1": 492 | version "1.11.1" 493 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" 494 | integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== 495 | dependencies: 496 | "@webassemblyjs/ast" "1.11.1" 497 | "@webassemblyjs/helper-buffer" "1.11.1" 498 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 499 | "@webassemblyjs/helper-wasm-section" "1.11.1" 500 | "@webassemblyjs/wasm-gen" "1.11.1" 501 | "@webassemblyjs/wasm-opt" "1.11.1" 502 | "@webassemblyjs/wasm-parser" "1.11.1" 503 | "@webassemblyjs/wast-printer" "1.11.1" 504 | 505 | "@webassemblyjs/wasm-gen@1.11.1": 506 | version "1.11.1" 507 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" 508 | integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== 509 | dependencies: 510 | "@webassemblyjs/ast" "1.11.1" 511 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 512 | "@webassemblyjs/ieee754" "1.11.1" 513 | "@webassemblyjs/leb128" "1.11.1" 514 | "@webassemblyjs/utf8" "1.11.1" 515 | 516 | "@webassemblyjs/wasm-opt@1.11.1": 517 | version "1.11.1" 518 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" 519 | integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== 520 | dependencies: 521 | "@webassemblyjs/ast" "1.11.1" 522 | "@webassemblyjs/helper-buffer" "1.11.1" 523 | "@webassemblyjs/wasm-gen" "1.11.1" 524 | "@webassemblyjs/wasm-parser" "1.11.1" 525 | 526 | "@webassemblyjs/wasm-parser@1.11.1": 527 | version "1.11.1" 528 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" 529 | integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== 530 | dependencies: 531 | "@webassemblyjs/ast" "1.11.1" 532 | "@webassemblyjs/helper-api-error" "1.11.1" 533 | "@webassemblyjs/helper-wasm-bytecode" "1.11.1" 534 | "@webassemblyjs/ieee754" "1.11.1" 535 | "@webassemblyjs/leb128" "1.11.1" 536 | "@webassemblyjs/utf8" "1.11.1" 537 | 538 | "@webassemblyjs/wast-printer@1.11.1": 539 | version "1.11.1" 540 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" 541 | integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== 542 | dependencies: 543 | "@webassemblyjs/ast" "1.11.1" 544 | "@xtuc/long" "4.2.2" 545 | 546 | "@webpack-cli/configtest@^1.0.1": 547 | version "1.0.1" 548 | resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.1.tgz#241aecfbdc715eee96bed447ed402e12ec171935" 549 | integrity sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ== 550 | 551 | "@webpack-cli/info@^1.2.2": 552 | version "1.2.2" 553 | resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.2.tgz#ef3c0cd947a1fa083e174a59cb74e0b6195c236c" 554 | integrity sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ== 555 | dependencies: 556 | envinfo "^7.7.3" 557 | 558 | "@webpack-cli/serve@^1.3.0": 559 | version "1.3.0" 560 | resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.3.0.tgz#2730c770f5f1f132767c63dcaaa4ec28f8c56a6c" 561 | integrity sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw== 562 | 563 | "@xtuc/ieee754@^1.2.0": 564 | version "1.2.0" 565 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" 566 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== 567 | 568 | "@xtuc/long@4.2.2": 569 | version "4.2.2" 570 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" 571 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== 572 | 573 | acorn-import-assertions@^1.7.6: 574 | version "1.8.0" 575 | resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" 576 | integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== 577 | 578 | acorn-walk@^8.1.1: 579 | version "8.2.0" 580 | resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" 581 | integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== 582 | 583 | acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1: 584 | version "8.8.1" 585 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" 586 | integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== 587 | 588 | ajv-keywords@^3.4.1, ajv-keywords@^3.5.2: 589 | version "3.5.2" 590 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 591 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 592 | 593 | ajv@^6.12.2, ajv@^6.12.5: 594 | version "6.12.6" 595 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 596 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 597 | dependencies: 598 | fast-deep-equal "^3.1.1" 599 | fast-json-stable-stringify "^2.0.0" 600 | json-schema-traverse "^0.4.1" 601 | uri-js "^4.2.2" 602 | 603 | ansi-colors@^4.1.1: 604 | version "4.1.1" 605 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 606 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 607 | 608 | ansi-regex@^2.0.0: 609 | version "2.1.1" 610 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 611 | integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= 612 | 613 | ansi-styles@^3.2.1: 614 | version "3.2.1" 615 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 616 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 617 | dependencies: 618 | color-convert "^1.9.0" 619 | 620 | ansi-styles@^4.1.0: 621 | version "4.3.0" 622 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 623 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 624 | dependencies: 625 | color-convert "^2.0.1" 626 | 627 | anymatch@~3.1.1: 628 | version "3.1.1" 629 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" 630 | integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== 631 | dependencies: 632 | normalize-path "^3.0.0" 633 | picomatch "^2.0.4" 634 | 635 | arg@^4.1.0: 636 | version "4.1.3" 637 | resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" 638 | integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== 639 | 640 | array-union@^1.0.1: 641 | version "1.0.2" 642 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 643 | integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= 644 | dependencies: 645 | array-uniq "^1.0.1" 646 | 647 | array-union@^2.1.0: 648 | version "2.1.0" 649 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" 650 | integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== 651 | 652 | array-uniq@^1.0.1: 653 | version "1.0.3" 654 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 655 | integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= 656 | 657 | at-least-node@^1.0.0: 658 | version "1.0.0" 659 | resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" 660 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== 661 | 662 | atob-lite@^2.0.0: 663 | version "2.0.0" 664 | resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" 665 | integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= 666 | 667 | balanced-match@^1.0.0: 668 | version "1.0.0" 669 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" 670 | integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= 671 | 672 | before-after-hook@^2.0.0: 673 | version "2.2.0" 674 | resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.0.tgz#09c40d92e936c64777aa385c4e9b904f8147eaf0" 675 | integrity sha512-jH6rKQIfroBbhEXVmI7XmXe3ix5S/PgJqpzdDPnR8JGLHWNYLsYZ6tK5iWOF/Ra3oqEX0NobXGlzbiylIzVphQ== 676 | 677 | big.js@^5.2.2: 678 | version "5.2.2" 679 | resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" 680 | integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== 681 | 682 | binary-extensions@^2.0.0: 683 | version "2.2.0" 684 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 685 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 686 | 687 | boolbase@^1.0.0, boolbase@~1.0.0: 688 | version "1.0.0" 689 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 690 | integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= 691 | 692 | brace-expansion@^1.1.7: 693 | version "1.1.11" 694 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 695 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 696 | dependencies: 697 | balanced-match "^1.0.0" 698 | concat-map "0.0.1" 699 | 700 | braces@^3.0.1, braces@~3.0.2: 701 | version "3.0.2" 702 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 703 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 704 | dependencies: 705 | fill-range "^7.0.1" 706 | 707 | browserslist@^4.14.5: 708 | version "4.16.3" 709 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" 710 | integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== 711 | dependencies: 712 | caniuse-lite "^1.0.30001181" 713 | colorette "^1.2.1" 714 | electron-to-chromium "^1.3.649" 715 | escalade "^3.1.1" 716 | node-releases "^1.1.70" 717 | 718 | btoa-lite@^1.0.0: 719 | version "1.0.0" 720 | resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" 721 | integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= 722 | 723 | buffer-from@^1.0.0: 724 | version "1.1.1" 725 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" 726 | integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== 727 | 728 | callsites@^3.0.0: 729 | version "3.1.0" 730 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 731 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 732 | 733 | camel-case@^4.1.1: 734 | version "4.1.2" 735 | resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" 736 | integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== 737 | dependencies: 738 | pascal-case "^3.1.2" 739 | tslib "^2.0.3" 740 | 741 | caniuse-lite@^1.0.30001181: 742 | version "1.0.30001203" 743 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001203.tgz#a7a34df21a387d9deffcd56c000b8cf5ab540580" 744 | integrity sha512-/I9tvnzU/PHMH7wBPrfDMSuecDeUKerjCPX7D0xBbaJZPxoT9m+yYxt0zCTkcijCkjTdim3H56Zm0i5Adxch4w== 745 | 746 | chalk@^2.0.0, chalk@^2.3.0: 747 | version "2.4.2" 748 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 749 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 750 | dependencies: 751 | ansi-styles "^3.2.1" 752 | escape-string-regexp "^1.0.5" 753 | supports-color "^5.3.0" 754 | 755 | chalk@^4.1.0: 756 | version "4.1.0" 757 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" 758 | integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== 759 | dependencies: 760 | ansi-styles "^4.1.0" 761 | supports-color "^7.1.0" 762 | 763 | "chokidar@>=2.0.0 <4.0.0", chokidar@^3.4.2: 764 | version "3.5.1" 765 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 766 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 767 | dependencies: 768 | anymatch "~3.1.1" 769 | braces "~3.0.2" 770 | glob-parent "~5.1.0" 771 | is-binary-path "~2.1.0" 772 | is-glob "~4.0.1" 773 | normalize-path "~3.0.0" 774 | readdirp "~3.5.0" 775 | optionalDependencies: 776 | fsevents "~2.3.1" 777 | 778 | chrome-trace-event@^1.0.2: 779 | version "1.0.2" 780 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" 781 | integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== 782 | dependencies: 783 | tslib "^1.9.0" 784 | 785 | clean-css@^4.2.3: 786 | version "4.2.3" 787 | resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" 788 | integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== 789 | dependencies: 790 | source-map "~0.6.0" 791 | 792 | clean-webpack-plugin@^3.0.0: 793 | version "3.0.0" 794 | resolved "https://registry.yarnpkg.com/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz#a99d8ec34c1c628a4541567aa7b457446460c62b" 795 | integrity sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A== 796 | dependencies: 797 | "@types/webpack" "^4.4.31" 798 | del "^4.1.1" 799 | 800 | clone-deep@^4.0.1: 801 | version "4.0.1" 802 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" 803 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== 804 | dependencies: 805 | is-plain-object "^2.0.4" 806 | kind-of "^6.0.2" 807 | shallow-clone "^3.0.0" 808 | 809 | color-convert@^1.9.0: 810 | version "1.9.3" 811 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 812 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 813 | dependencies: 814 | color-name "1.1.3" 815 | 816 | color-convert@^2.0.1: 817 | version "2.0.1" 818 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 819 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 820 | dependencies: 821 | color-name "~1.1.4" 822 | 823 | color-name@1.1.3: 824 | version "1.1.3" 825 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 826 | integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= 827 | 828 | color-name@~1.1.4: 829 | version "1.1.4" 830 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 831 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 832 | 833 | colorette@^1.2.1: 834 | version "1.2.2" 835 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" 836 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== 837 | 838 | commander@4.0.1: 839 | version "4.0.1" 840 | resolved "https://registry.yarnpkg.com/commander/-/commander-4.0.1.tgz#b67622721785993182e807f4883633e6401ba53c" 841 | integrity sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA== 842 | 843 | commander@^2.20.0: 844 | version "2.20.3" 845 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 846 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 847 | 848 | commander@^4.0.1, commander@^4.1.1: 849 | version "4.1.1" 850 | resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" 851 | integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== 852 | 853 | commander@^7.0.0: 854 | version "7.1.0" 855 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff" 856 | integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg== 857 | 858 | concat-map@0.0.1: 859 | version "0.0.1" 860 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 861 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 862 | 863 | copy-webpack-plugin@^8.0.0: 864 | version "8.0.0" 865 | resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-8.0.0.tgz#3db5efb80d492127507303d1842e35011e2f318f" 866 | integrity sha512-sqGe2FsB67wV/De+sz5azQklADe4thN016od6m7iK9KbjrSc1SEgg5QZ0LN+jGx5aZR52CbuXbqOhoIbqzzXlA== 867 | dependencies: 868 | fast-glob "^3.2.5" 869 | glob-parent "^5.1.1" 870 | globby "^11.0.2" 871 | normalize-path "^3.0.0" 872 | p-limit "^3.1.0" 873 | schema-utils "^3.0.0" 874 | serialize-javascript "^5.0.1" 875 | 876 | core-util-is@~1.0.0: 877 | version "1.0.2" 878 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 879 | integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= 880 | 881 | cosmiconfig@6.0.0, cosmiconfig@^6.0.0: 882 | version "6.0.0" 883 | resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" 884 | integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== 885 | dependencies: 886 | "@types/parse-json" "^4.0.0" 887 | import-fresh "^3.1.0" 888 | parse-json "^5.0.0" 889 | path-type "^4.0.0" 890 | yaml "^1.7.2" 891 | 892 | create-require@^1.1.0: 893 | version "1.1.1" 894 | resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" 895 | integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== 896 | 897 | cross-spawn@^6.0.0: 898 | version "6.0.5" 899 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" 900 | integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== 901 | dependencies: 902 | nice-try "^1.0.4" 903 | path-key "^2.0.1" 904 | semver "^5.5.0" 905 | shebang-command "^1.2.0" 906 | which "^1.2.9" 907 | 908 | cross-spawn@^7.0.3: 909 | version "7.0.3" 910 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 911 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 912 | dependencies: 913 | path-key "^3.1.0" 914 | shebang-command "^2.0.0" 915 | which "^2.0.1" 916 | 917 | css-loader@^7.1.2: 918 | version "7.1.2" 919 | resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-7.1.2.tgz#64671541c6efe06b0e22e750503106bdd86880f8" 920 | integrity sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA== 921 | dependencies: 922 | icss-utils "^5.1.0" 923 | postcss "^8.4.33" 924 | postcss-modules-extract-imports "^3.1.0" 925 | postcss-modules-local-by-default "^4.0.5" 926 | postcss-modules-scope "^3.2.0" 927 | postcss-modules-values "^4.0.0" 928 | postcss-value-parser "^4.2.0" 929 | semver "^7.5.4" 930 | 931 | css-select@^2.0.2: 932 | version "2.1.0" 933 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" 934 | integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== 935 | dependencies: 936 | boolbase "^1.0.0" 937 | css-what "^3.2.1" 938 | domutils "^1.7.0" 939 | nth-check "^1.0.2" 940 | 941 | css-what@^3.2.1: 942 | version "3.4.2" 943 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" 944 | integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== 945 | 946 | cssesc@^3.0.0: 947 | version "3.0.0" 948 | resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" 949 | integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== 950 | 951 | deepmerge@^4.2.2: 952 | version "4.2.2" 953 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 954 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 955 | 956 | del@^4.1.1: 957 | version "4.1.1" 958 | resolved "https://registry.yarnpkg.com/del/-/del-4.1.1.tgz#9e8f117222ea44a31ff3a156c049b99052a9f0b4" 959 | integrity sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ== 960 | dependencies: 961 | "@types/glob" "^7.1.1" 962 | globby "^6.1.0" 963 | is-path-cwd "^2.0.0" 964 | is-path-in-cwd "^2.0.0" 965 | p-map "^2.0.0" 966 | pify "^4.0.1" 967 | rimraf "^2.6.3" 968 | 969 | deprecation@^2.0.0, deprecation@^2.3.1: 970 | version "2.3.1" 971 | resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" 972 | integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== 973 | 974 | diff@^4.0.1: 975 | version "4.0.2" 976 | resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" 977 | integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== 978 | 979 | dir-glob@^3.0.1: 980 | version "3.0.1" 981 | resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" 982 | integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== 983 | dependencies: 984 | path-type "^4.0.0" 985 | 986 | dom-converter@^0.2: 987 | version "0.2.0" 988 | resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768" 989 | integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA== 990 | dependencies: 991 | utila "~0.4" 992 | 993 | dom-serializer@0: 994 | version "0.2.2" 995 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" 996 | integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== 997 | dependencies: 998 | domelementtype "^2.0.1" 999 | entities "^2.0.0" 1000 | 1001 | domelementtype@1, domelementtype@^1.3.1: 1002 | version "1.3.1" 1003 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" 1004 | integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== 1005 | 1006 | domelementtype@^2.0.1: 1007 | version "2.1.0" 1008 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e" 1009 | integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w== 1010 | 1011 | domhandler@^2.3.0: 1012 | version "2.4.2" 1013 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" 1014 | integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== 1015 | dependencies: 1016 | domelementtype "1" 1017 | 1018 | domutils@^1.5.1, domutils@^1.7.0: 1019 | version "1.7.0" 1020 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" 1021 | integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== 1022 | dependencies: 1023 | dom-serializer "0" 1024 | domelementtype "1" 1025 | 1026 | dot-case@^3.0.4: 1027 | version "3.0.4" 1028 | resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" 1029 | integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== 1030 | dependencies: 1031 | no-case "^3.0.4" 1032 | tslib "^2.0.3" 1033 | 1034 | electron-to-chromium@^1.3.649: 1035 | version "1.3.692" 1036 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.692.tgz#4d00479055a7282cdd1b19caec09ed7779529640" 1037 | integrity sha512-Ix+zDUAXWZuUzqKdhkgN5dP7ZM+IwMG4yAGFGDLpGJP/3vNEEwuHG1LIhtXUfW0FFV0j38t5PUv2n/3MFSRviQ== 1038 | 1039 | emojis-list@^3.0.0: 1040 | version "3.0.0" 1041 | resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" 1042 | integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== 1043 | 1044 | end-of-stream@^1.1.0: 1045 | version "1.4.4" 1046 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 1047 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 1048 | dependencies: 1049 | once "^1.4.0" 1050 | 1051 | enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0: 1052 | version "5.10.0" 1053 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" 1054 | integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== 1055 | dependencies: 1056 | graceful-fs "^4.2.4" 1057 | tapable "^2.2.0" 1058 | 1059 | enquirer@^2.3.6: 1060 | version "2.3.6" 1061 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 1062 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 1063 | dependencies: 1064 | ansi-colors "^4.1.1" 1065 | 1066 | entities@^1.1.1: 1067 | version "1.1.2" 1068 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" 1069 | integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== 1070 | 1071 | entities@^2.0.0: 1072 | version "2.2.0" 1073 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" 1074 | integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== 1075 | 1076 | envinfo@^7.7.3: 1077 | version "7.7.4" 1078 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" 1079 | integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== 1080 | 1081 | error-ex@^1.3.1: 1082 | version "1.3.2" 1083 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" 1084 | integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== 1085 | dependencies: 1086 | is-arrayish "^0.2.1" 1087 | 1088 | es-module-lexer@^0.9.0: 1089 | version "0.9.3" 1090 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" 1091 | integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== 1092 | 1093 | escalade@^3.1.1: 1094 | version "3.1.1" 1095 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" 1096 | integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== 1097 | 1098 | escape-string-regexp@^1.0.5: 1099 | version "1.0.5" 1100 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1101 | integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= 1102 | 1103 | escape-string-regexp@^4.0.0: 1104 | version "4.0.0" 1105 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1106 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1107 | 1108 | eslint-scope@5.1.1: 1109 | version "5.1.1" 1110 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 1111 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 1112 | dependencies: 1113 | esrecurse "^4.3.0" 1114 | estraverse "^4.1.1" 1115 | 1116 | esrecurse@^4.3.0: 1117 | version "4.3.0" 1118 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1119 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1120 | dependencies: 1121 | estraverse "^5.2.0" 1122 | 1123 | estraverse@^4.1.1: 1124 | version "4.3.0" 1125 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1126 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1127 | 1128 | estraverse@^5.2.0: 1129 | version "5.2.0" 1130 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" 1131 | integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== 1132 | 1133 | events@^3.2.0: 1134 | version "3.3.0" 1135 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 1136 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 1137 | 1138 | execa@^1.0.0: 1139 | version "1.0.0" 1140 | resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" 1141 | integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== 1142 | dependencies: 1143 | cross-spawn "^6.0.0" 1144 | get-stream "^4.0.0" 1145 | is-stream "^1.1.0" 1146 | npm-run-path "^2.0.0" 1147 | p-finally "^1.0.0" 1148 | signal-exit "^3.0.0" 1149 | strip-eof "^1.0.0" 1150 | 1151 | execa@^5.0.0: 1152 | version "5.0.0" 1153 | resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" 1154 | integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== 1155 | dependencies: 1156 | cross-spawn "^7.0.3" 1157 | get-stream "^6.0.0" 1158 | human-signals "^2.1.0" 1159 | is-stream "^2.0.0" 1160 | merge-stream "^2.0.0" 1161 | npm-run-path "^4.0.1" 1162 | onetime "^5.1.2" 1163 | signal-exit "^3.0.3" 1164 | strip-final-newline "^2.0.0" 1165 | 1166 | fast-deep-equal@^3.1.1: 1167 | version "3.1.3" 1168 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1169 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1170 | 1171 | fast-glob@^3.1.1, fast-glob@^3.2.5: 1172 | version "3.2.5" 1173 | resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" 1174 | integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== 1175 | dependencies: 1176 | "@nodelib/fs.stat" "^2.0.2" 1177 | "@nodelib/fs.walk" "^1.2.3" 1178 | glob-parent "^5.1.0" 1179 | merge2 "^1.3.0" 1180 | micromatch "^4.0.2" 1181 | picomatch "^2.2.1" 1182 | 1183 | fast-json-stable-stringify@^2.0.0: 1184 | version "2.1.0" 1185 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1186 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1187 | 1188 | fastest-levenshtein@^1.0.12: 1189 | version "1.0.12" 1190 | resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" 1191 | integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== 1192 | 1193 | fastq@^1.6.0: 1194 | version "1.11.0" 1195 | resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" 1196 | integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== 1197 | dependencies: 1198 | reusify "^1.0.4" 1199 | 1200 | file-loader@^6.2.0: 1201 | version "6.2.0" 1202 | resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d" 1203 | integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw== 1204 | dependencies: 1205 | loader-utils "^2.0.0" 1206 | schema-utils "^3.0.0" 1207 | 1208 | fill-range@^7.0.1: 1209 | version "7.0.1" 1210 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 1211 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 1212 | dependencies: 1213 | to-regex-range "^5.0.1" 1214 | 1215 | find-up@^4.0.0: 1216 | version "4.1.0" 1217 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 1218 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 1219 | dependencies: 1220 | locate-path "^5.0.0" 1221 | path-exists "^4.0.0" 1222 | 1223 | fork-ts-checker-webpack-plugin@^6.2.0: 1224 | version "6.2.0" 1225 | resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.2.0.tgz#d13af02e24d1b17f769af6bdf41c1e849e1615cc" 1226 | integrity sha512-DTNbOhq6lRdjYprukX54JMeYJgQ0zMow+R5BMLwWxEX2NAXthIkwnV8DBmsWjwNLSUItKZM4TCCJbtgrtKBu2Q== 1227 | dependencies: 1228 | "@babel/code-frame" "^7.8.3" 1229 | "@types/json-schema" "^7.0.5" 1230 | chalk "^4.1.0" 1231 | chokidar "^3.4.2" 1232 | cosmiconfig "^6.0.0" 1233 | deepmerge "^4.2.2" 1234 | fs-extra "^9.0.0" 1235 | memfs "^3.1.2" 1236 | minimatch "^3.0.4" 1237 | schema-utils "2.7.0" 1238 | semver "^7.3.2" 1239 | tapable "^1.0.0" 1240 | 1241 | fs-extra@8.1.0: 1242 | version "8.1.0" 1243 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 1244 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 1245 | dependencies: 1246 | graceful-fs "^4.2.0" 1247 | jsonfile "^4.0.0" 1248 | universalify "^0.1.0" 1249 | 1250 | fs-extra@^9.0.0: 1251 | version "9.1.0" 1252 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" 1253 | integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== 1254 | dependencies: 1255 | at-least-node "^1.0.0" 1256 | graceful-fs "^4.2.0" 1257 | jsonfile "^6.0.1" 1258 | universalify "^2.0.0" 1259 | 1260 | fs-monkey@1.0.1: 1261 | version "1.0.1" 1262 | resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.1.tgz#4a82f36944365e619f4454d9fff106553067b781" 1263 | integrity sha512-fcSa+wyTqZa46iWweI7/ZiUfegOZl0SG8+dltIwFXo7+zYU9J9kpS3NB6pZcSlJdhvIwp81Adx2XhZorncxiaA== 1264 | 1265 | fs.realpath@^1.0.0: 1266 | version "1.0.0" 1267 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1268 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 1269 | 1270 | fsevents@~2.3.1: 1271 | version "2.3.2" 1272 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 1273 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 1274 | 1275 | function-bind@^1.1.1: 1276 | version "1.1.1" 1277 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 1278 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 1279 | 1280 | gemoji@^6.1.0: 1281 | version "6.1.0" 1282 | resolved "https://registry.yarnpkg.com/gemoji/-/gemoji-6.1.0.tgz#268fbb0c81d1a8c32a4bcc39bdfdd66080ba7ce9" 1283 | integrity sha512-MOlX3doQ1fsfzxQX8Y+u6bC5Ssc1pBUBIPVyrS69EzKt+5LIZAOm0G5XGVNhwXFgkBF3r+Yk88ONyrFHo8iNFA== 1284 | 1285 | get-stream@^4.0.0: 1286 | version "4.1.0" 1287 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" 1288 | integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== 1289 | dependencies: 1290 | pump "^3.0.0" 1291 | 1292 | get-stream@^6.0.0: 1293 | version "6.0.0" 1294 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" 1295 | integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== 1296 | 1297 | glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: 1298 | version "5.1.2" 1299 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1300 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1301 | dependencies: 1302 | is-glob "^4.0.1" 1303 | 1304 | glob-to-regexp@^0.4.1: 1305 | version "0.4.1" 1306 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 1307 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 1308 | 1309 | glob@^7.0.0, glob@^7.0.3, glob@^7.1.3: 1310 | version "7.1.6" 1311 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 1312 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 1313 | dependencies: 1314 | fs.realpath "^1.0.0" 1315 | inflight "^1.0.4" 1316 | inherits "2" 1317 | minimatch "^3.0.4" 1318 | once "^1.3.0" 1319 | path-is-absolute "^1.0.0" 1320 | 1321 | globby@^11.0.2: 1322 | version "11.0.2" 1323 | resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.2.tgz#1af538b766a3b540ebfb58a32b2e2d5897321d83" 1324 | integrity sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og== 1325 | dependencies: 1326 | array-union "^2.1.0" 1327 | dir-glob "^3.0.1" 1328 | fast-glob "^3.1.1" 1329 | ignore "^5.1.4" 1330 | merge2 "^1.3.0" 1331 | slash "^3.0.0" 1332 | 1333 | globby@^6.1.0: 1334 | version "6.1.0" 1335 | resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" 1336 | integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= 1337 | dependencies: 1338 | array-union "^1.0.1" 1339 | glob "^7.0.3" 1340 | object-assign "^4.0.1" 1341 | pify "^2.0.0" 1342 | pinkie-promise "^2.0.0" 1343 | 1344 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: 1345 | version "4.2.6" 1346 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 1347 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 1348 | 1349 | graceful-fs@^4.2.9: 1350 | version "4.2.10" 1351 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" 1352 | integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== 1353 | 1354 | has-flag@^3.0.0: 1355 | version "3.0.0" 1356 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1357 | integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= 1358 | 1359 | has-flag@^4.0.0: 1360 | version "4.0.0" 1361 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1362 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1363 | 1364 | has@^1.0.3: 1365 | version "1.0.3" 1366 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 1367 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 1368 | dependencies: 1369 | function-bind "^1.1.1" 1370 | 1371 | he@^1.2.0: 1372 | version "1.2.0" 1373 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 1374 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1375 | 1376 | html-minifier-terser@^5.0.1: 1377 | version "5.1.1" 1378 | resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz#922e96f1f3bb60832c2634b79884096389b1f054" 1379 | integrity sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg== 1380 | dependencies: 1381 | camel-case "^4.1.1" 1382 | clean-css "^4.2.3" 1383 | commander "^4.1.1" 1384 | he "^1.2.0" 1385 | param-case "^3.0.3" 1386 | relateurl "^0.2.7" 1387 | terser "^4.6.3" 1388 | 1389 | html-webpack-plugin@^5.3.1: 1390 | version "5.3.1" 1391 | resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.3.1.tgz#8797327548e3de438e3494e0c6d06f181a7f20d1" 1392 | integrity sha512-rZsVvPXUYFyME0cuGkyOHfx9hmkFa4pWfxY/mdY38PsBEaVNsRoA+Id+8z6DBDgyv3zaw6XQszdF8HLwfQvcdQ== 1393 | dependencies: 1394 | "@types/html-minifier-terser" "^5.0.0" 1395 | html-minifier-terser "^5.0.1" 1396 | lodash "^4.17.20" 1397 | pretty-error "^2.1.1" 1398 | tapable "^2.0.0" 1399 | 1400 | htmlparser2@^3.10.1: 1401 | version "3.10.1" 1402 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" 1403 | integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== 1404 | dependencies: 1405 | domelementtype "^1.3.1" 1406 | domhandler "^2.3.0" 1407 | domutils "^1.5.1" 1408 | entities "^1.1.1" 1409 | inherits "^2.0.1" 1410 | readable-stream "^3.1.1" 1411 | 1412 | human-signals@^2.1.0: 1413 | version "2.1.0" 1414 | resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" 1415 | integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== 1416 | 1417 | icss-utils@^5.0.0, icss-utils@^5.1.0: 1418 | version "5.1.0" 1419 | resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" 1420 | integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== 1421 | 1422 | ignore@^5.1.4: 1423 | version "5.1.8" 1424 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" 1425 | integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== 1426 | 1427 | immediate@~3.0.5: 1428 | version "3.0.6" 1429 | resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" 1430 | integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps= 1431 | 1432 | import-fresh@^3.1.0: 1433 | version "3.3.0" 1434 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1435 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1436 | dependencies: 1437 | parent-module "^1.0.0" 1438 | resolve-from "^4.0.0" 1439 | 1440 | import-local@^3.0.2: 1441 | version "3.0.2" 1442 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" 1443 | integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== 1444 | dependencies: 1445 | pkg-dir "^4.2.0" 1446 | resolve-cwd "^3.0.0" 1447 | 1448 | indexes-of@^1.0.1: 1449 | version "1.0.1" 1450 | resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" 1451 | integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= 1452 | 1453 | inflight@^1.0.4: 1454 | version "1.0.6" 1455 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1456 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 1457 | dependencies: 1458 | once "^1.3.0" 1459 | wrappy "1" 1460 | 1461 | inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: 1462 | version "2.0.4" 1463 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1464 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1465 | 1466 | interpret@^1.0.0: 1467 | version "1.4.0" 1468 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" 1469 | integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== 1470 | 1471 | interpret@^2.2.0: 1472 | version "2.2.0" 1473 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" 1474 | integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== 1475 | 1476 | is-arrayish@^0.2.1: 1477 | version "0.2.1" 1478 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1479 | integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= 1480 | 1481 | is-binary-path@~2.1.0: 1482 | version "2.1.0" 1483 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1484 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1485 | dependencies: 1486 | binary-extensions "^2.0.0" 1487 | 1488 | is-core-module@^2.2.0: 1489 | version "2.2.0" 1490 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" 1491 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== 1492 | dependencies: 1493 | has "^1.0.3" 1494 | 1495 | is-extglob@^2.1.1: 1496 | version "2.1.1" 1497 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1498 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 1499 | 1500 | is-glob@^4.0.1, is-glob@~4.0.1: 1501 | version "4.0.1" 1502 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 1503 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 1504 | dependencies: 1505 | is-extglob "^2.1.1" 1506 | 1507 | is-number@^7.0.0: 1508 | version "7.0.0" 1509 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1510 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1511 | 1512 | is-path-cwd@^2.0.0: 1513 | version "2.2.0" 1514 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" 1515 | integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== 1516 | 1517 | is-path-in-cwd@^2.0.0: 1518 | version "2.1.0" 1519 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz#bfe2dca26c69f397265a4009963602935a053acb" 1520 | integrity sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ== 1521 | dependencies: 1522 | is-path-inside "^2.1.0" 1523 | 1524 | is-path-inside@^2.1.0: 1525 | version "2.1.0" 1526 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" 1527 | integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== 1528 | dependencies: 1529 | path-is-inside "^1.0.2" 1530 | 1531 | is-plain-object@^2.0.4: 1532 | version "2.0.4" 1533 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1534 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1535 | dependencies: 1536 | isobject "^3.0.1" 1537 | 1538 | is-plain-object@^5.0.0: 1539 | version "5.0.0" 1540 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" 1541 | integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== 1542 | 1543 | is-stream@^1.1.0: 1544 | version "1.1.0" 1545 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 1546 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 1547 | 1548 | is-stream@^2.0.0: 1549 | version "2.0.0" 1550 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" 1551 | integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== 1552 | 1553 | isarray@~1.0.0: 1554 | version "1.0.0" 1555 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1556 | integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= 1557 | 1558 | isexe@^2.0.0: 1559 | version "2.0.0" 1560 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1561 | integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= 1562 | 1563 | isobject@^3.0.1: 1564 | version "3.0.1" 1565 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1566 | integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= 1567 | 1568 | jest-worker@^27.4.5: 1569 | version "27.5.1" 1570 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 1571 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 1572 | dependencies: 1573 | "@types/node" "*" 1574 | merge-stream "^2.0.0" 1575 | supports-color "^8.0.0" 1576 | 1577 | js-tokens@^4.0.0: 1578 | version "4.0.0" 1579 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1580 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1581 | 1582 | json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: 1583 | version "2.3.1" 1584 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1585 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1586 | 1587 | json-schema-traverse@^0.4.1: 1588 | version "0.4.1" 1589 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1590 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1591 | 1592 | json5@^2.1.2: 1593 | version "2.2.0" 1594 | resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" 1595 | integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== 1596 | dependencies: 1597 | minimist "^1.2.5" 1598 | 1599 | jsonfile@^4.0.0: 1600 | version "4.0.0" 1601 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1602 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 1603 | optionalDependencies: 1604 | graceful-fs "^4.1.6" 1605 | 1606 | jsonfile@^6.0.1: 1607 | version "6.1.0" 1608 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 1609 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 1610 | dependencies: 1611 | universalify "^2.0.0" 1612 | optionalDependencies: 1613 | graceful-fs "^4.1.6" 1614 | 1615 | jszip@3.2.2: 1616 | version "3.2.2" 1617 | resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.2.2.tgz#b143816df7e106a9597a94c77493385adca5bd1d" 1618 | integrity sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA== 1619 | dependencies: 1620 | lie "~3.3.0" 1621 | pako "~1.0.2" 1622 | readable-stream "~2.3.6" 1623 | set-immediate-shim "~1.0.1" 1624 | 1625 | kind-of@^6.0.2: 1626 | version "6.0.3" 1627 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1628 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1629 | 1630 | klona@^2.0.4: 1631 | version "2.0.4" 1632 | resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" 1633 | integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== 1634 | 1635 | lie@~3.3.0: 1636 | version "3.3.0" 1637 | resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" 1638 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== 1639 | dependencies: 1640 | immediate "~3.0.5" 1641 | 1642 | lines-and-columns@^1.1.6: 1643 | version "1.1.6" 1644 | resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" 1645 | integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= 1646 | 1647 | loader-runner@^4.2.0: 1648 | version "4.2.0" 1649 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" 1650 | integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== 1651 | 1652 | loader-utils@^2.0.0: 1653 | version "2.0.0" 1654 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" 1655 | integrity sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ== 1656 | dependencies: 1657 | big.js "^5.2.2" 1658 | emojis-list "^3.0.0" 1659 | json5 "^2.1.2" 1660 | 1661 | loader-utils@^2.0.2: 1662 | version "2.0.3" 1663 | resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1" 1664 | integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A== 1665 | dependencies: 1666 | big.js "^5.2.2" 1667 | emojis-list "^3.0.0" 1668 | json5 "^2.1.2" 1669 | 1670 | locate-path@^5.0.0: 1671 | version "5.0.0" 1672 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1673 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1674 | dependencies: 1675 | p-locate "^4.1.0" 1676 | 1677 | lodash.get@^4.4.2: 1678 | version "4.4.2" 1679 | resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" 1680 | integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= 1681 | 1682 | lodash.set@^4.3.2: 1683 | version "4.3.2" 1684 | resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" 1685 | integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= 1686 | 1687 | lodash.uniq@^4.5.0: 1688 | version "4.5.0" 1689 | resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" 1690 | integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= 1691 | 1692 | lodash@^4.17.20: 1693 | version "4.17.21" 1694 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1695 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1696 | 1697 | logdown@3.3.0: 1698 | version "3.3.0" 1699 | resolved "https://registry.yarnpkg.com/logdown/-/logdown-3.3.0.tgz#639dd2d3becaf0d9657ab63e812fa0e0f0b19fe7" 1700 | integrity sha512-CECrThg4JtaVNJ8P7zlWDaFveHTg3VIrrUXvc8L2840VVuyZcLW3dDrdURgzHLSAxoKJt/F55RbKdQ0alI+Njg== 1701 | dependencies: 1702 | chalk "^2.3.0" 1703 | 1704 | lower-case@^2.0.2: 1705 | version "2.0.2" 1706 | resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" 1707 | integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== 1708 | dependencies: 1709 | tslib "^2.0.3" 1710 | 1711 | lru-cache@^6.0.0: 1712 | version "6.0.0" 1713 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1714 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1715 | dependencies: 1716 | yallist "^4.0.0" 1717 | 1718 | macos-release@^2.2.0: 1719 | version "2.4.1" 1720 | resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" 1721 | integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg== 1722 | 1723 | make-error@^1.1.1: 1724 | version "1.3.6" 1725 | resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" 1726 | integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== 1727 | 1728 | matcher@^4.0.0: 1729 | version "4.0.0" 1730 | resolved "https://registry.yarnpkg.com/matcher/-/matcher-4.0.0.tgz#a42a05a09aaed92e2d241eb91fddac689461ea51" 1731 | integrity sha512-S6x5wmcDmsDRRU/c2dkccDwQPXoFczc5+HpQ2lON8pnvHlnvHAHj5WlLVvw6n6vNyHuVugYrFohYxbS+pvFpKQ== 1732 | dependencies: 1733 | escape-string-regexp "^4.0.0" 1734 | 1735 | memfs@^3.1.2: 1736 | version "3.2.0" 1737 | resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.2.0.tgz#f9438e622b5acd1daa8a4ae160c496fdd1325b26" 1738 | integrity sha512-f/xxz2TpdKv6uDn6GtHee8ivFyxwxmPuXatBb1FBwxYNuVpbM3k/Y1Z+vC0mH/dIXXrukYfe3qe5J32Dfjg93A== 1739 | dependencies: 1740 | fs-monkey "1.0.1" 1741 | 1742 | merge-stream@^2.0.0: 1743 | version "2.0.0" 1744 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1745 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1746 | 1747 | merge2@^1.3.0: 1748 | version "1.4.1" 1749 | resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" 1750 | integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== 1751 | 1752 | micromatch@^4.0.0, micromatch@^4.0.2: 1753 | version "4.0.2" 1754 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.2.tgz#4fcb0999bf9fbc2fcbdd212f6d629b9a56c39259" 1755 | integrity sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q== 1756 | dependencies: 1757 | braces "^3.0.1" 1758 | picomatch "^2.0.5" 1759 | 1760 | mime-db@1.46.0: 1761 | version "1.46.0" 1762 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" 1763 | integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== 1764 | 1765 | mime-types@^2.1.27: 1766 | version "2.1.29" 1767 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" 1768 | integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== 1769 | dependencies: 1770 | mime-db "1.46.0" 1771 | 1772 | mimic-fn@^2.1.0: 1773 | version "2.1.0" 1774 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 1775 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 1776 | 1777 | mini-css-extract-plugin@^1.3.3: 1778 | version "1.3.9" 1779 | resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-1.3.9.tgz#47a32132b0fd97a119acd530e8421e8f6ab16d5e" 1780 | integrity sha512-Ac4s+xhVbqlyhXS5J/Vh/QXUz3ycXlCqoCPpg0vdfhsIBH9eg/It/9L1r1XhSCH737M1lqcWnMuWL13zcygn5A== 1781 | dependencies: 1782 | loader-utils "^2.0.0" 1783 | schema-utils "^3.0.0" 1784 | webpack-sources "^1.1.0" 1785 | 1786 | minimatch@^3.0.4: 1787 | version "3.0.4" 1788 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 1789 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 1790 | dependencies: 1791 | brace-expansion "^1.1.7" 1792 | 1793 | minimist@^1.2.3, minimist@^1.2.5: 1794 | version "1.2.5" 1795 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" 1796 | integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== 1797 | 1798 | monaco-editor-webpack-plugin@~7.0.1: 1799 | version "7.0.1" 1800 | resolved "https://registry.yarnpkg.com/monaco-editor-webpack-plugin/-/monaco-editor-webpack-plugin-7.0.1.tgz#ba19c60aba990184e36ad8722b1ed6a564527c7c" 1801 | integrity sha512-M8qIqizltrPlIbrb73cZdTWfU9sIsUVFvAZkL3KGjAHmVWEJ0hZKa/uad14JuOckc0GwnCaoGHvMoYtJjVyCzw== 1802 | dependencies: 1803 | loader-utils "^2.0.2" 1804 | 1805 | monaco-editor@~0.52.2: 1806 | version "0.52.2" 1807 | resolved "https://registry.yarnpkg.com/monaco-editor/-/monaco-editor-0.52.2.tgz#53c75a6fcc6802684e99fd1b2700299857002205" 1808 | integrity sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ== 1809 | 1810 | nanoid@^3.3.7: 1811 | version "3.3.7" 1812 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" 1813 | integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== 1814 | 1815 | neo-async@^2.6.2: 1816 | version "2.6.2" 1817 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1818 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1819 | 1820 | nice-try@^1.0.4: 1821 | version "1.0.5" 1822 | resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" 1823 | integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 1824 | 1825 | no-case@^3.0.4: 1826 | version "3.0.4" 1827 | resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" 1828 | integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== 1829 | dependencies: 1830 | lower-case "^2.0.2" 1831 | tslib "^2.0.3" 1832 | 1833 | node-fetch@^2.6.1: 1834 | version "2.6.1" 1835 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 1836 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 1837 | 1838 | node-releases@^1.1.70: 1839 | version "1.1.71" 1840 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" 1841 | integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== 1842 | 1843 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1844 | version "3.0.0" 1845 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1846 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1847 | 1848 | npm-run-path@^2.0.0: 1849 | version "2.0.2" 1850 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" 1851 | integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= 1852 | dependencies: 1853 | path-key "^2.0.0" 1854 | 1855 | npm-run-path@^4.0.1: 1856 | version "4.0.1" 1857 | resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" 1858 | integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== 1859 | dependencies: 1860 | path-key "^3.0.0" 1861 | 1862 | nth-check@^1.0.2: 1863 | version "1.0.2" 1864 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" 1865 | integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== 1866 | dependencies: 1867 | boolbase "~1.0.0" 1868 | 1869 | object-assign@^4.0.1: 1870 | version "4.1.1" 1871 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1872 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= 1873 | 1874 | octokit-pagination-methods@^1.1.0: 1875 | version "1.1.0" 1876 | resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" 1877 | integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== 1878 | 1879 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 1880 | version "1.4.0" 1881 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1882 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 1883 | dependencies: 1884 | wrappy "1" 1885 | 1886 | onetime@^5.1.2: 1887 | version "5.1.2" 1888 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 1889 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 1890 | dependencies: 1891 | mimic-fn "^2.1.0" 1892 | 1893 | os-name@^3.1.0: 1894 | version "3.1.0" 1895 | resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" 1896 | integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== 1897 | dependencies: 1898 | macos-release "^2.2.0" 1899 | windows-release "^3.1.0" 1900 | 1901 | p-finally@^1.0.0: 1902 | version "1.0.0" 1903 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 1904 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 1905 | 1906 | p-limit@^2.2.0: 1907 | version "2.3.0" 1908 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1909 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1910 | dependencies: 1911 | p-try "^2.0.0" 1912 | 1913 | p-limit@^3.1.0: 1914 | version "3.1.0" 1915 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1916 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1917 | dependencies: 1918 | yocto-queue "^0.1.0" 1919 | 1920 | p-locate@^4.1.0: 1921 | version "4.1.0" 1922 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1923 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1924 | dependencies: 1925 | p-limit "^2.2.0" 1926 | 1927 | p-map@^2.0.0: 1928 | version "2.1.0" 1929 | resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" 1930 | integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== 1931 | 1932 | p-try@^2.0.0: 1933 | version "2.2.0" 1934 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1935 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1936 | 1937 | pako@~1.0.2: 1938 | version "1.0.11" 1939 | resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" 1940 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 1941 | 1942 | param-case@^3.0.3: 1943 | version "3.0.4" 1944 | resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" 1945 | integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== 1946 | dependencies: 1947 | dot-case "^3.0.4" 1948 | tslib "^2.0.3" 1949 | 1950 | parent-module@^1.0.0: 1951 | version "1.0.1" 1952 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1953 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1954 | dependencies: 1955 | callsites "^3.0.0" 1956 | 1957 | parse-json@^5.0.0: 1958 | version "5.2.0" 1959 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" 1960 | integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== 1961 | dependencies: 1962 | "@babel/code-frame" "^7.0.0" 1963 | error-ex "^1.3.1" 1964 | json-parse-even-better-errors "^2.3.0" 1965 | lines-and-columns "^1.1.6" 1966 | 1967 | pascal-case@^3.1.2: 1968 | version "3.1.2" 1969 | resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" 1970 | integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== 1971 | dependencies: 1972 | no-case "^3.0.4" 1973 | tslib "^2.0.3" 1974 | 1975 | path-exists@^4.0.0: 1976 | version "4.0.0" 1977 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1978 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1979 | 1980 | path-is-absolute@^1.0.0: 1981 | version "1.0.1" 1982 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1983 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 1984 | 1985 | path-is-inside@^1.0.2: 1986 | version "1.0.2" 1987 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 1988 | integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= 1989 | 1990 | path-key@^2.0.0, path-key@^2.0.1: 1991 | version "2.0.1" 1992 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" 1993 | integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= 1994 | 1995 | path-key@^3.0.0, path-key@^3.1.0: 1996 | version "3.1.1" 1997 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1998 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1999 | 2000 | path-parse@^1.0.6: 2001 | version "1.0.6" 2002 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 2003 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 2004 | 2005 | path-type@^4.0.0: 2006 | version "4.0.0" 2007 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" 2008 | integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== 2009 | 2010 | picocolors@^1.1.0: 2011 | version "1.1.1" 2012 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" 2013 | integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== 2014 | 2015 | picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: 2016 | version "2.2.2" 2017 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" 2018 | integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== 2019 | 2020 | pify@^2.0.0: 2021 | version "2.3.0" 2022 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2023 | integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= 2024 | 2025 | pify@^4.0.1: 2026 | version "4.0.1" 2027 | resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" 2028 | integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== 2029 | 2030 | pin-github-action@^1.1.3: 2031 | version "1.1.3" 2032 | resolved "https://registry.yarnpkg.com/pin-github-action/-/pin-github-action-1.1.3.tgz#36ffac71463bfa44db0abc378674631c73d39833" 2033 | integrity sha512-HYmmu4ORAVts53OwSS37ZREmCRgU77+iOHb2PvzRN9Oht6stIBUEEpDexA5MjXjecUSOnJKs16LFyHoUzdLDjQ== 2034 | dependencies: 2035 | "@octokit/rest" "^16.35.2" 2036 | commander "^4.0.1" 2037 | matcher "^4.0.0" 2038 | yaml "^1.7.2" 2039 | 2040 | pinkie-promise@^2.0.0: 2041 | version "2.0.1" 2042 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2043 | integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= 2044 | dependencies: 2045 | pinkie "^2.0.0" 2046 | 2047 | pinkie@^2.0.0: 2048 | version "2.0.4" 2049 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2050 | integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= 2051 | 2052 | pkg-dir@^4.2.0: 2053 | version "4.2.0" 2054 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 2055 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 2056 | dependencies: 2057 | find-up "^4.0.0" 2058 | 2059 | postcss-modules-extract-imports@^3.1.0: 2060 | version "3.1.0" 2061 | resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" 2062 | integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== 2063 | 2064 | postcss-modules-local-by-default@^4.0.5: 2065 | version "4.0.5" 2066 | resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz#f1b9bd757a8edf4d8556e8d0f4f894260e3df78f" 2067 | integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw== 2068 | dependencies: 2069 | icss-utils "^5.0.0" 2070 | postcss-selector-parser "^6.0.2" 2071 | postcss-value-parser "^4.1.0" 2072 | 2073 | postcss-modules-scope@^3.2.0: 2074 | version "3.2.0" 2075 | resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz#a43d28289a169ce2c15c00c4e64c0858e43457d5" 2076 | integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ== 2077 | dependencies: 2078 | postcss-selector-parser "^6.0.4" 2079 | 2080 | postcss-modules-values@^4.0.0: 2081 | version "4.0.0" 2082 | resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" 2083 | integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== 2084 | dependencies: 2085 | icss-utils "^5.0.0" 2086 | 2087 | postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4: 2088 | version "6.0.4" 2089 | resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz#56075a1380a04604c38b063ea7767a129af5c2b3" 2090 | integrity sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw== 2091 | dependencies: 2092 | cssesc "^3.0.0" 2093 | indexes-of "^1.0.1" 2094 | uniq "^1.0.1" 2095 | util-deprecate "^1.0.2" 2096 | 2097 | postcss-value-parser@^4.1.0: 2098 | version "4.1.0" 2099 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" 2100 | integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== 2101 | 2102 | postcss-value-parser@^4.2.0: 2103 | version "4.2.0" 2104 | resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" 2105 | integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== 2106 | 2107 | postcss@^8.4.33, postcss@^8.4.47: 2108 | version "8.4.47" 2109 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365" 2110 | integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ== 2111 | dependencies: 2112 | nanoid "^3.3.7" 2113 | picocolors "^1.1.0" 2114 | source-map-js "^1.2.1" 2115 | 2116 | prettier@^2.2.1: 2117 | version "2.2.1" 2118 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" 2119 | integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== 2120 | 2121 | pretty-error@^2.1.1: 2122 | version "2.1.2" 2123 | resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.1.2.tgz#be89f82d81b1c86ec8fdfbc385045882727f93b6" 2124 | integrity sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw== 2125 | dependencies: 2126 | lodash "^4.17.20" 2127 | renderkid "^2.0.4" 2128 | 2129 | process-nextick-args@~2.0.0: 2130 | version "2.0.1" 2131 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" 2132 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 2133 | 2134 | progress@2.0.3: 2135 | version "2.0.3" 2136 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 2137 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 2138 | 2139 | pump@^3.0.0: 2140 | version "3.0.0" 2141 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 2142 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 2143 | dependencies: 2144 | end-of-stream "^1.1.0" 2145 | once "^1.3.1" 2146 | 2147 | punycode@^2.1.0: 2148 | version "2.1.1" 2149 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 2150 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 2151 | 2152 | queue-microtask@^1.2.2: 2153 | version "1.2.2" 2154 | resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.2.tgz#abf64491e6ecf0f38a6502403d4cda04f372dfd3" 2155 | integrity sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg== 2156 | 2157 | randombytes@^2.1.0: 2158 | version "2.1.0" 2159 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 2160 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 2161 | dependencies: 2162 | safe-buffer "^5.1.0" 2163 | 2164 | raw-loader@^4.0.0: 2165 | version "4.0.2" 2166 | resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-4.0.2.tgz#1aac6b7d1ad1501e66efdac1522c73e59a584eb6" 2167 | integrity sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA== 2168 | dependencies: 2169 | loader-utils "^2.0.0" 2170 | schema-utils "^3.0.0" 2171 | 2172 | readable-stream@^3.1.1: 2173 | version "3.6.0" 2174 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 2175 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 2176 | dependencies: 2177 | inherits "^2.0.3" 2178 | string_decoder "^1.1.1" 2179 | util-deprecate "^1.0.1" 2180 | 2181 | readable-stream@~2.3.6: 2182 | version "2.3.7" 2183 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" 2184 | integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== 2185 | dependencies: 2186 | core-util-is "~1.0.0" 2187 | inherits "~2.0.3" 2188 | isarray "~1.0.0" 2189 | process-nextick-args "~2.0.0" 2190 | safe-buffer "~5.1.1" 2191 | string_decoder "~1.1.1" 2192 | util-deprecate "~1.0.1" 2193 | 2194 | readdirp@~3.5.0: 2195 | version "3.5.0" 2196 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 2197 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 2198 | dependencies: 2199 | picomatch "^2.2.1" 2200 | 2201 | rechoir@^0.6.2: 2202 | version "0.6.2" 2203 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 2204 | integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= 2205 | dependencies: 2206 | resolve "^1.1.6" 2207 | 2208 | rechoir@^0.7.0: 2209 | version "0.7.0" 2210 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" 2211 | integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== 2212 | dependencies: 2213 | resolve "^1.9.0" 2214 | 2215 | relateurl@^0.2.7: 2216 | version "0.2.7" 2217 | resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" 2218 | integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= 2219 | 2220 | renderkid@^2.0.4: 2221 | version "2.0.5" 2222 | resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.5.tgz#483b1ac59c6601ab30a7a596a5965cabccfdd0a5" 2223 | integrity sha512-ccqoLg+HLOHq1vdfYNm4TBeaCDIi1FLt3wGojTDSvdewUv65oTmI3cnT2E4hRjl1gzKZIPK+KZrXzlUYKnR+vQ== 2224 | dependencies: 2225 | css-select "^2.0.2" 2226 | dom-converter "^0.2" 2227 | htmlparser2 "^3.10.1" 2228 | lodash "^4.17.20" 2229 | strip-ansi "^3.0.0" 2230 | 2231 | resolve-cwd@^3.0.0: 2232 | version "3.0.0" 2233 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 2234 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 2235 | dependencies: 2236 | resolve-from "^5.0.0" 2237 | 2238 | resolve-from@^4.0.0: 2239 | version "4.0.0" 2240 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 2241 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 2242 | 2243 | resolve-from@^5.0.0: 2244 | version "5.0.0" 2245 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 2246 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 2247 | 2248 | resolve@^1.1.6, resolve@^1.9.0: 2249 | version "1.20.0" 2250 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 2251 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 2252 | dependencies: 2253 | is-core-module "^2.2.0" 2254 | path-parse "^1.0.6" 2255 | 2256 | reusify@^1.0.4: 2257 | version "1.0.4" 2258 | resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" 2259 | integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== 2260 | 2261 | rimraf@^2.6.3: 2262 | version "2.7.1" 2263 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" 2264 | integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== 2265 | dependencies: 2266 | glob "^7.1.3" 2267 | 2268 | run-parallel@^1.1.9: 2269 | version "1.2.0" 2270 | resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" 2271 | integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== 2272 | dependencies: 2273 | queue-microtask "^1.2.2" 2274 | 2275 | safe-buffer@^5.1.0, safe-buffer@~5.2.0: 2276 | version "5.2.1" 2277 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 2278 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 2279 | 2280 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 2281 | version "5.1.2" 2282 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" 2283 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 2284 | 2285 | sass-loader@^11.0.1: 2286 | version "11.0.1" 2287 | resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-11.0.1.tgz#8672f896593466573b904f47693e0695368e38c9" 2288 | integrity sha512-Vp1LcP4slTsTNLEiDkTcm8zGN/XYYrZz2BZybQbliWA8eXveqA/AxsEjllQTpJbg2MzCsx/qNO48sHdZtOaxTw== 2289 | dependencies: 2290 | klona "^2.0.4" 2291 | neo-async "^2.6.2" 2292 | 2293 | sass@^1.25.0: 2294 | version "1.32.8" 2295 | resolved "https://registry.yarnpkg.com/sass/-/sass-1.32.8.tgz#f16a9abd8dc530add8834e506878a2808c037bdc" 2296 | integrity sha512-Sl6mIeGpzjIUZqvKnKETfMf0iDAswD9TNlv13A7aAF3XZlRPMq4VvJWBC2N2DXbp94MQVdNSFG6LfF/iOXrPHQ== 2297 | dependencies: 2298 | chokidar ">=2.0.0 <4.0.0" 2299 | 2300 | schema-utils@2.7.0: 2301 | version "2.7.0" 2302 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7" 2303 | integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A== 2304 | dependencies: 2305 | "@types/json-schema" "^7.0.4" 2306 | ajv "^6.12.2" 2307 | ajv-keywords "^3.4.1" 2308 | 2309 | schema-utils@^3.0.0: 2310 | version "3.0.0" 2311 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" 2312 | integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== 2313 | dependencies: 2314 | "@types/json-schema" "^7.0.6" 2315 | ajv "^6.12.5" 2316 | ajv-keywords "^3.5.2" 2317 | 2318 | schema-utils@^3.1.0, schema-utils@^3.1.1: 2319 | version "3.1.1" 2320 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" 2321 | integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== 2322 | dependencies: 2323 | "@types/json-schema" "^7.0.8" 2324 | ajv "^6.12.5" 2325 | ajv-keywords "^3.5.2" 2326 | 2327 | semver@^5.5.0: 2328 | version "5.7.1" 2329 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" 2330 | integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== 2331 | 2332 | semver@^7.3.2, semver@^7.3.4: 2333 | version "7.3.4" 2334 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" 2335 | integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== 2336 | dependencies: 2337 | lru-cache "^6.0.0" 2338 | 2339 | semver@^7.5.4: 2340 | version "7.6.3" 2341 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" 2342 | integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== 2343 | 2344 | serialize-javascript@^5.0.1: 2345 | version "5.0.1" 2346 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" 2347 | integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== 2348 | dependencies: 2349 | randombytes "^2.1.0" 2350 | 2351 | serialize-javascript@^6.0.0: 2352 | version "6.0.0" 2353 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 2354 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 2355 | dependencies: 2356 | randombytes "^2.1.0" 2357 | 2358 | set-immediate-shim@~1.0.1: 2359 | version "1.0.1" 2360 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2361 | integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= 2362 | 2363 | shallow-clone@^3.0.0: 2364 | version "3.0.1" 2365 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" 2366 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== 2367 | dependencies: 2368 | kind-of "^6.0.2" 2369 | 2370 | shebang-command@^1.2.0: 2371 | version "1.2.0" 2372 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" 2373 | integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= 2374 | dependencies: 2375 | shebang-regex "^1.0.0" 2376 | 2377 | shebang-command@^2.0.0: 2378 | version "2.0.0" 2379 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 2380 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 2381 | dependencies: 2382 | shebang-regex "^3.0.0" 2383 | 2384 | shebang-regex@^1.0.0: 2385 | version "1.0.0" 2386 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" 2387 | integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= 2388 | 2389 | shebang-regex@^3.0.0: 2390 | version "3.0.0" 2391 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 2392 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 2393 | 2394 | shelljs@^0.8.4: 2395 | version "0.8.4" 2396 | resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" 2397 | integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== 2398 | dependencies: 2399 | glob "^7.0.0" 2400 | interpret "^1.0.0" 2401 | rechoir "^0.6.2" 2402 | 2403 | shx@^0.3.2: 2404 | version "0.3.3" 2405 | resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.3.tgz#681a88c7c10db15abe18525349ed474f0f1e7b9f" 2406 | integrity sha512-nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA== 2407 | dependencies: 2408 | minimist "^1.2.3" 2409 | shelljs "^0.8.4" 2410 | 2411 | signal-exit@^3.0.0, signal-exit@^3.0.3: 2412 | version "3.0.3" 2413 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 2414 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 2415 | 2416 | slash@^3.0.0: 2417 | version "3.0.0" 2418 | resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" 2419 | integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== 2420 | 2421 | source-list-map@^2.0.0: 2422 | version "2.0.1" 2423 | resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" 2424 | integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== 2425 | 2426 | source-map-js@^1.2.1: 2427 | version "1.2.1" 2428 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" 2429 | integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== 2430 | 2431 | source-map-support@~0.5.12: 2432 | version "0.5.19" 2433 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" 2434 | integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== 2435 | dependencies: 2436 | buffer-from "^1.0.0" 2437 | source-map "^0.6.0" 2438 | 2439 | source-map-support@~0.5.20: 2440 | version "0.5.21" 2441 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 2442 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 2443 | dependencies: 2444 | buffer-from "^1.0.0" 2445 | source-map "^0.6.0" 2446 | 2447 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: 2448 | version "0.6.1" 2449 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 2450 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 2451 | 2452 | source-map@^0.7.3: 2453 | version "0.7.3" 2454 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" 2455 | integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== 2456 | 2457 | string_decoder@^1.1.1: 2458 | version "1.3.0" 2459 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 2460 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 2461 | dependencies: 2462 | safe-buffer "~5.2.0" 2463 | 2464 | string_decoder@~1.1.1: 2465 | version "1.1.1" 2466 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" 2467 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 2468 | dependencies: 2469 | safe-buffer "~5.1.0" 2470 | 2471 | strip-ansi@^3.0.0: 2472 | version "3.0.1" 2473 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2474 | integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= 2475 | dependencies: 2476 | ansi-regex "^2.0.0" 2477 | 2478 | strip-eof@^1.0.0: 2479 | version "1.0.0" 2480 | resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" 2481 | integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= 2482 | 2483 | strip-final-newline@^2.0.0: 2484 | version "2.0.0" 2485 | resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" 2486 | integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== 2487 | 2488 | style-loader@^2.0.0: 2489 | version "2.0.0" 2490 | resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" 2491 | integrity sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ== 2492 | dependencies: 2493 | loader-utils "^2.0.0" 2494 | schema-utils "^3.0.0" 2495 | 2496 | supports-color@^5.3.0: 2497 | version "5.5.0" 2498 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 2499 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 2500 | dependencies: 2501 | has-flag "^3.0.0" 2502 | 2503 | supports-color@^7.1.0: 2504 | version "7.2.0" 2505 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 2506 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 2507 | dependencies: 2508 | has-flag "^4.0.0" 2509 | 2510 | supports-color@^8.0.0: 2511 | version "8.1.1" 2512 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 2513 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 2514 | dependencies: 2515 | has-flag "^4.0.0" 2516 | 2517 | tapable@^1.0.0: 2518 | version "1.1.3" 2519 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" 2520 | integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== 2521 | 2522 | tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: 2523 | version "2.2.0" 2524 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" 2525 | integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== 2526 | 2527 | terser-webpack-plugin@^5.1.3: 2528 | version "5.3.6" 2529 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" 2530 | integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== 2531 | dependencies: 2532 | "@jridgewell/trace-mapping" "^0.3.14" 2533 | jest-worker "^27.4.5" 2534 | schema-utils "^3.1.1" 2535 | serialize-javascript "^6.0.0" 2536 | terser "^5.14.1" 2537 | 2538 | terser@^4.6.3: 2539 | version "4.8.0" 2540 | resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" 2541 | integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== 2542 | dependencies: 2543 | commander "^2.20.0" 2544 | source-map "~0.6.1" 2545 | source-map-support "~0.5.12" 2546 | 2547 | terser@^5.14.1: 2548 | version "5.15.1" 2549 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.1.tgz#8561af6e0fd6d839669c73b92bdd5777d870ed6c" 2550 | integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw== 2551 | dependencies: 2552 | "@jridgewell/source-map" "^0.3.2" 2553 | acorn "^8.5.0" 2554 | commander "^2.20.0" 2555 | source-map-support "~0.5.20" 2556 | 2557 | to-regex-range@^5.0.1: 2558 | version "5.0.1" 2559 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 2560 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 2561 | dependencies: 2562 | is-number "^7.0.0" 2563 | 2564 | ts-loader@^9.4.1: 2565 | version "9.4.1" 2566 | resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.4.1.tgz#b6f3d82db0eac5a8295994f8cb5e4940ff6b1060" 2567 | integrity sha512-384TYAqGs70rn9F0VBnh6BPTfhga7yFNdC5gXbQpDrBj9/KsT4iRkGqKXhziofHOlE2j6YEaiTYVGKKvPhGWvw== 2568 | dependencies: 2569 | chalk "^4.1.0" 2570 | enhanced-resolve "^5.0.0" 2571 | micromatch "^4.0.0" 2572 | semver "^7.3.4" 2573 | 2574 | ts-node@^10.9.1: 2575 | version "10.9.1" 2576 | resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" 2577 | integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== 2578 | dependencies: 2579 | "@cspotcode/source-map-support" "^0.8.0" 2580 | "@tsconfig/node10" "^1.0.7" 2581 | "@tsconfig/node12" "^1.0.7" 2582 | "@tsconfig/node14" "^1.0.0" 2583 | "@tsconfig/node16" "^1.0.2" 2584 | acorn "^8.4.1" 2585 | acorn-walk "^8.1.1" 2586 | arg "^4.1.0" 2587 | create-require "^1.1.0" 2588 | diff "^4.0.1" 2589 | make-error "^1.1.1" 2590 | v8-compile-cache-lib "^3.0.1" 2591 | yn "3.1.1" 2592 | 2593 | tslib@^1.9.0: 2594 | version "1.14.1" 2595 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 2596 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 2597 | 2598 | tslib@^2.0.3: 2599 | version "2.1.0" 2600 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" 2601 | integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== 2602 | 2603 | typescript@^4.8.4: 2604 | version "4.8.4" 2605 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" 2606 | integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== 2607 | 2608 | uniq@^1.0.1: 2609 | version "1.0.1" 2610 | resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" 2611 | integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= 2612 | 2613 | universal-user-agent@^4.0.0: 2614 | version "4.0.1" 2615 | resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-4.0.1.tgz#fd8d6cb773a679a709e967ef8288a31fcc03e557" 2616 | integrity sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg== 2617 | dependencies: 2618 | os-name "^3.1.0" 2619 | 2620 | universal-user-agent@^6.0.0: 2621 | version "6.0.0" 2622 | resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" 2623 | integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== 2624 | 2625 | universalify@^0.1.0: 2626 | version "0.1.2" 2627 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 2628 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 2629 | 2630 | universalify@^2.0.0: 2631 | version "2.0.0" 2632 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 2633 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 2634 | 2635 | uri-js@^4.2.2: 2636 | version "4.4.1" 2637 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 2638 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 2639 | dependencies: 2640 | punycode "^2.1.0" 2641 | 2642 | util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: 2643 | version "1.0.2" 2644 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2645 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 2646 | 2647 | utila@~0.4: 2648 | version "0.4.0" 2649 | resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c" 2650 | integrity sha1-ihagXURWV6Oupe7MWxKk+lN5dyw= 2651 | 2652 | v8-compile-cache-lib@^3.0.1: 2653 | version "3.0.1" 2654 | resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" 2655 | integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== 2656 | 2657 | v8-compile-cache@^2.2.0: 2658 | version "2.3.0" 2659 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 2660 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 2661 | 2662 | watchpack@^2.4.0: 2663 | version "2.4.0" 2664 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" 2665 | integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== 2666 | dependencies: 2667 | glob-to-regexp "^0.4.1" 2668 | graceful-fs "^4.1.2" 2669 | 2670 | webpack-cli@^4.5.0: 2671 | version "4.5.0" 2672 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.5.0.tgz#b5213b84adf6e1f5de6391334c9fa53a48850466" 2673 | integrity sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q== 2674 | dependencies: 2675 | "@discoveryjs/json-ext" "^0.5.0" 2676 | "@webpack-cli/configtest" "^1.0.1" 2677 | "@webpack-cli/info" "^1.2.2" 2678 | "@webpack-cli/serve" "^1.3.0" 2679 | colorette "^1.2.1" 2680 | commander "^7.0.0" 2681 | enquirer "^2.3.6" 2682 | execa "^5.0.0" 2683 | fastest-levenshtein "^1.0.12" 2684 | import-local "^3.0.2" 2685 | interpret "^2.2.0" 2686 | rechoir "^0.7.0" 2687 | v8-compile-cache "^2.2.0" 2688 | webpack-merge "^5.7.3" 2689 | 2690 | webpack-merge@^5.7.3: 2691 | version "5.7.3" 2692 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" 2693 | integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== 2694 | dependencies: 2695 | clone-deep "^4.0.1" 2696 | wildcard "^2.0.0" 2697 | 2698 | webpack-sources@^1.1.0: 2699 | version "1.4.3" 2700 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" 2701 | integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== 2702 | dependencies: 2703 | source-list-map "^2.0.0" 2704 | source-map "~0.6.1" 2705 | 2706 | webpack-sources@^3.2.3: 2707 | version "3.2.3" 2708 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" 2709 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== 2710 | 2711 | webpack@^5.75.0: 2712 | version "5.75.0" 2713 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" 2714 | integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== 2715 | dependencies: 2716 | "@types/eslint-scope" "^3.7.3" 2717 | "@types/estree" "^0.0.51" 2718 | "@webassemblyjs/ast" "1.11.1" 2719 | "@webassemblyjs/wasm-edit" "1.11.1" 2720 | "@webassemblyjs/wasm-parser" "1.11.1" 2721 | acorn "^8.7.1" 2722 | acorn-import-assertions "^1.7.6" 2723 | browserslist "^4.14.5" 2724 | chrome-trace-event "^1.0.2" 2725 | enhanced-resolve "^5.10.0" 2726 | es-module-lexer "^0.9.0" 2727 | eslint-scope "5.1.1" 2728 | events "^3.2.0" 2729 | glob-to-regexp "^0.4.1" 2730 | graceful-fs "^4.2.9" 2731 | json-parse-even-better-errors "^2.3.1" 2732 | loader-runner "^4.2.0" 2733 | mime-types "^2.1.27" 2734 | neo-async "^2.6.2" 2735 | schema-utils "^3.1.0" 2736 | tapable "^2.1.1" 2737 | terser-webpack-plugin "^5.1.3" 2738 | watchpack "^2.4.0" 2739 | webpack-sources "^3.2.3" 2740 | 2741 | which@^1.2.9: 2742 | version "1.3.1" 2743 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 2744 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 2745 | dependencies: 2746 | isexe "^2.0.0" 2747 | 2748 | which@^2.0.1: 2749 | version "2.0.2" 2750 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 2751 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 2752 | dependencies: 2753 | isexe "^2.0.0" 2754 | 2755 | wildcard@^2.0.0: 2756 | version "2.0.0" 2757 | resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" 2758 | integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== 2759 | 2760 | windows-release@^3.1.0: 2761 | version "3.3.3" 2762 | resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.3.3.tgz#1c10027c7225743eec6b89df160d64c2e0293999" 2763 | integrity sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg== 2764 | dependencies: 2765 | execa "^1.0.0" 2766 | 2767 | wrappy@1: 2768 | version "1.0.2" 2769 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 2770 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 2771 | 2772 | yallist@^4.0.0: 2773 | version "4.0.0" 2774 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 2775 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2776 | 2777 | yaml@^1.7.2: 2778 | version "1.10.2" 2779 | resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" 2780 | integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== 2781 | 2782 | yn@3.1.1: 2783 | version "3.1.1" 2784 | resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" 2785 | integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== 2786 | 2787 | yocto-queue@^0.1.0: 2788 | version "0.1.0" 2789 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2790 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2791 | --------------------------------------------------------------------------------