├── .eslintrc.json
├── .gitignore
├── .nvmrc
├── .prettierrc
├── README.md
├── beautify.js
├── content.js
├── dart-style.js
├── icons
├── icon128.png
├── icon16.png
├── icon48.png
└── static.png
├── images
├── dynamic_layout.png
├── format-demo.gif
├── format-demo2.gif
├── images 0.png
├── images 22.png
├── images
│ └── 12.png
├── new_ui.png
├── old_ui.png
└── screenshot.png
├── manifest.json
├── package-lock.json
├── package.json
├── parser-babel.mjs
├── parser-java.js
├── parser-typescript.mjs
├── script.js
└── standalone.js
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "browser": true,
4 | "commonjs": true,
5 | "es6": true,
6 | "node": false
7 | },
8 | "parserOptions": {
9 | "ecmaFeatures": {
10 | "jsx": true
11 | },
12 | "sourceType": "module"
13 | },
14 | "globals": {
15 | "dartfmt": true,
16 | "prettier": true,
17 | "js_beautify": true,
18 | "monaco": true,
19 | "chrome": true
20 |
21 | },
22 | "rules": {
23 | "no-const-assign": 2,
24 | "no-extra-semi": 0,
25 | "semi": 0,
26 | "no-fallthrough": 0,
27 | "no-empty": 0,
28 | "no-mixed-spaces-and-tabs": 0,
29 | "no-redeclare": 0,
30 | "no-this-before-super": 1,
31 | "no-undef": 1,
32 | "no-unreachable": 1,
33 | "no-unused-vars": 1,
34 | "no-use-before-define": 0,
35 | "constructor-super": 1,
36 | "curly": 0,
37 | "eqeqeq": 0,
38 | "func-names": 0,
39 | "valid-typeof": 1
40 | }
41 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | Archive.zip
2 | .DS_Store
3 | .keys.json
4 | node_modules
5 | *.zip
--------------------------------------------------------------------------------
/.nvmrc:
--------------------------------------------------------------------------------
1 | v20.10.0
2 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "trailingComma": "es5",
3 | "tabWidth": 4,
4 | "semi": true,
5 | "singleQuote": true
6 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # LeetCode Code Format Google Chrome Extension
2 |
3 | This extension adds the Format button to the [LeetCode](https://leetcode.com/) code editor. Available for [Google Chrome](https://chrome.google.com/webstore/detail/leetcode-format/imogghebhifnnlgogigikjecilkicfpp) and [Firefox](https://addons.mozilla.org/en-US/firefox/addon/leetcode-format/).
4 |
5 |
6 | The format button formats the code as per the [Prettier
7 | formatter](https://prettier.io/) and using [Dart style](https://github.com/dart-lang/dart_style) for Dart language
8 |
9 | Currently, following languages are supported, with plans to add more:
10 | * Java
11 | * C++
12 | * JavaScript
13 | * TypeScript
14 | * Dart
15 |
16 | ## KeyBindings
17 |
18 | Use CTRL + ALT + F to trigger the format action through keyboard
19 |
20 | ## Contributors
21 | * [@alushpranav](https://github.com/alushpranav) - added support for Dart language
22 | * [@prabaljainn](https://github.com/prabaljainn) - added support for new Leetcode UI
23 | * [@imsoumya18](https://github.com/imsoumya18) - added hotkey support (CTRL + ALT + F)
24 |
25 | Send your feedback and any bug reports [here](https://github.com/madhur/leetcode-format-chrome-extension/issues)
26 |
27 | ### Demo GIF
28 |
29 |
30 |
31 | ### Dynamic layout
32 |
33 |
34 |
35 | ### New UI
36 |
37 |
38 |
39 | ### Old UI
40 |
41 |
--------------------------------------------------------------------------------
/content.js:
--------------------------------------------------------------------------------
1 |
2 |
3 | let s = document.createElement("script");
4 |
5 | // Install beautify
6 | s.type = "module";
7 | s.src = chrome.runtime.getURL("beautify.js");
8 | (document.head || document.documentElement).appendChild(s);
9 |
10 | // install script.js
11 | s = document.createElement("script");
12 | s.type = "module";
13 | s.src = chrome.runtime.getURL("script.js");
14 | (document.head || document.documentElement).appendChild(s);
15 |
16 | s = document.createElement("script");
17 | s.src = chrome.runtime.getURL("standalone.js");
18 | (document.head || document.documentElement).appendChild(s);
19 |
20 | s = document.createElement("script");
21 | s.src = chrome.runtime.getURL("parser-babel.mjs");
22 | s.type = "module";
23 | (document.head || document.documentElement).appendChild(s);
24 |
25 | s = document.createElement("script");
26 | s.src = chrome.runtime.getURL("parser-typescript.mjs");
27 | s.type = "module";
28 | (document.head || document.documentElement).appendChild(s);
29 |
30 | s = document.createElement("script");
31 | s.src = chrome.runtime.getURL("parser-java.js");
32 | s.type = "module";
33 | (document.head || document.documentElement).appendChild(s);
34 |
--------------------------------------------------------------------------------
/icons/icon128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/icons/icon128.png
--------------------------------------------------------------------------------
/icons/icon16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/icons/icon16.png
--------------------------------------------------------------------------------
/icons/icon48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/icons/icon48.png
--------------------------------------------------------------------------------
/icons/static.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/icons/static.png
--------------------------------------------------------------------------------
/images/dynamic_layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/dynamic_layout.png
--------------------------------------------------------------------------------
/images/format-demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/format-demo.gif
--------------------------------------------------------------------------------
/images/format-demo2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/format-demo2.gif
--------------------------------------------------------------------------------
/images/images 0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/images 0.png
--------------------------------------------------------------------------------
/images/images 22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/images 22.png
--------------------------------------------------------------------------------
/images/images/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/images/12.png
--------------------------------------------------------------------------------
/images/new_ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/new_ui.png
--------------------------------------------------------------------------------
/images/old_ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/old_ui.png
--------------------------------------------------------------------------------
/images/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/madhur/leetcode-format-chrome-extension/ba9e85da180593d9d8b17509cd8fab46b8ad090e/images/screenshot.png
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Leetcode format",
3 | "version": "1.9",
4 | "manifest_version": 3,
5 | "description": "Adds Format code button on leetcode to format the code using Prettier code formatter",
6 | "homepage_url": "https://github.com/madhur/leetcode-format-chrome-extension",
7 | "icons": {
8 | "16": "icons/icon16.png",
9 | "48": "icons/icon48.png",
10 | "128": "icons/icon128.png"
11 | },
12 | "content_scripts": [
13 | {
14 | "js": [
15 | "content.js"
16 | ],
17 | "matches": [
18 | "https://*.leetcode.com/*",
19 | "https://*.leetcode.cn/*"
20 | ]
21 | }
22 | ],
23 | "web_accessible_resources": [
24 | {
25 | "resources": [
26 | "dart-style.js",
27 | "standalone.js",
28 | "parser-babel.mjs",
29 | "parser-typescript.mjs",
30 | "parser-java.js",
31 | "beautify.js",
32 | "script.js"
33 | ],
34 | "matches": [
35 | "https://*.leetcode.com/*",
36 | "https://*.leetcode.cn/*"
37 | ]
38 | }
39 | ]
40 | }
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "leetcode-format-chrome",
3 | "version": "1.8",
4 | "lockfileVersion": 2,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "leetcode-format-chrome",
9 | "version": "1.8",
10 | "license": "ISC",
11 | "devDependencies": {
12 | "eslint": "^8.6.0",
13 | "eslint-config-prettier": "^9.0.0",
14 | "prettier": "^2.2.1",
15 | "prettier-plugin-java": "^1.0.1"
16 | }
17 | },
18 | "node_modules/@eslint/eslintrc": {
19 | "version": "1.0.5",
20 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
21 | "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
22 | "dev": true,
23 | "dependencies": {
24 | "ajv": "^6.12.4",
25 | "debug": "^4.3.2",
26 | "espree": "^9.2.0",
27 | "globals": "^13.9.0",
28 | "ignore": "^4.0.6",
29 | "import-fresh": "^3.2.1",
30 | "js-yaml": "^4.1.0",
31 | "minimatch": "^3.0.4",
32 | "strip-json-comments": "^3.1.1"
33 | },
34 | "engines": {
35 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
36 | }
37 | },
38 | "node_modules/@humanwhocodes/config-array": {
39 | "version": "0.9.2",
40 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz",
41 | "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==",
42 | "dev": true,
43 | "dependencies": {
44 | "@humanwhocodes/object-schema": "^1.2.1",
45 | "debug": "^4.1.1",
46 | "minimatch": "^3.0.4"
47 | },
48 | "engines": {
49 | "node": ">=10.10.0"
50 | }
51 | },
52 | "node_modules/@humanwhocodes/object-schema": {
53 | "version": "1.2.1",
54 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
55 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
56 | "dev": true
57 | },
58 | "node_modules/acorn": {
59 | "version": "8.7.0",
60 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
61 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
62 | "dev": true,
63 | "bin": {
64 | "acorn": "bin/acorn"
65 | },
66 | "engines": {
67 | "node": ">=0.4.0"
68 | }
69 | },
70 | "node_modules/acorn-jsx": {
71 | "version": "5.3.2",
72 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
73 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
74 | "dev": true,
75 | "peerDependencies": {
76 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
77 | }
78 | },
79 | "node_modules/ajv": {
80 | "version": "6.12.6",
81 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
82 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
83 | "dev": true,
84 | "dependencies": {
85 | "fast-deep-equal": "^3.1.1",
86 | "fast-json-stable-stringify": "^2.0.0",
87 | "json-schema-traverse": "^0.4.1",
88 | "uri-js": "^4.2.2"
89 | },
90 | "funding": {
91 | "type": "github",
92 | "url": "https://github.com/sponsors/epoberezkin"
93 | }
94 | },
95 | "node_modules/ansi-colors": {
96 | "version": "4.1.1",
97 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
98 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
99 | "dev": true,
100 | "engines": {
101 | "node": ">=6"
102 | }
103 | },
104 | "node_modules/ansi-regex": {
105 | "version": "5.0.1",
106 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
107 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
108 | "dev": true,
109 | "engines": {
110 | "node": ">=8"
111 | }
112 | },
113 | "node_modules/ansi-styles": {
114 | "version": "4.3.0",
115 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
116 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
117 | "dev": true,
118 | "dependencies": {
119 | "color-convert": "^2.0.1"
120 | },
121 | "engines": {
122 | "node": ">=8"
123 | },
124 | "funding": {
125 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
126 | }
127 | },
128 | "node_modules/argparse": {
129 | "version": "2.0.1",
130 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
131 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
132 | "dev": true
133 | },
134 | "node_modules/balanced-match": {
135 | "version": "1.0.2",
136 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
137 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
138 | "dev": true
139 | },
140 | "node_modules/brace-expansion": {
141 | "version": "1.1.11",
142 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
143 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
144 | "dev": true,
145 | "dependencies": {
146 | "balanced-match": "^1.0.0",
147 | "concat-map": "0.0.1"
148 | }
149 | },
150 | "node_modules/callsites": {
151 | "version": "3.1.0",
152 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
153 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
154 | "dev": true,
155 | "engines": {
156 | "node": ">=6"
157 | }
158 | },
159 | "node_modules/chalk": {
160 | "version": "4.1.2",
161 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
162 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
163 | "dev": true,
164 | "dependencies": {
165 | "ansi-styles": "^4.1.0",
166 | "supports-color": "^7.1.0"
167 | },
168 | "engines": {
169 | "node": ">=10"
170 | },
171 | "funding": {
172 | "url": "https://github.com/chalk/chalk?sponsor=1"
173 | }
174 | },
175 | "node_modules/chevrotain": {
176 | "version": "6.5.0",
177 | "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz",
178 | "integrity": "sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==",
179 | "dev": true,
180 | "dependencies": {
181 | "regexp-to-ast": "0.4.0"
182 | }
183 | },
184 | "node_modules/color-convert": {
185 | "version": "2.0.1",
186 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
187 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
188 | "dev": true,
189 | "dependencies": {
190 | "color-name": "~1.1.4"
191 | },
192 | "engines": {
193 | "node": ">=7.0.0"
194 | }
195 | },
196 | "node_modules/color-name": {
197 | "version": "1.1.4",
198 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
199 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
200 | "dev": true
201 | },
202 | "node_modules/concat-map": {
203 | "version": "0.0.1",
204 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
205 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
206 | "dev": true
207 | },
208 | "node_modules/cross-spawn": {
209 | "version": "7.0.3",
210 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
211 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
212 | "dev": true,
213 | "dependencies": {
214 | "path-key": "^3.1.0",
215 | "shebang-command": "^2.0.0",
216 | "which": "^2.0.1"
217 | },
218 | "engines": {
219 | "node": ">= 8"
220 | }
221 | },
222 | "node_modules/debug": {
223 | "version": "4.3.3",
224 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
225 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
226 | "dev": true,
227 | "dependencies": {
228 | "ms": "2.1.2"
229 | },
230 | "engines": {
231 | "node": ">=6.0"
232 | },
233 | "peerDependenciesMeta": {
234 | "supports-color": {
235 | "optional": true
236 | }
237 | }
238 | },
239 | "node_modules/deep-is": {
240 | "version": "0.1.4",
241 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
242 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
243 | "dev": true
244 | },
245 | "node_modules/doctrine": {
246 | "version": "3.0.0",
247 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
248 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
249 | "dev": true,
250 | "dependencies": {
251 | "esutils": "^2.0.2"
252 | },
253 | "engines": {
254 | "node": ">=6.0.0"
255 | }
256 | },
257 | "node_modules/enquirer": {
258 | "version": "2.3.6",
259 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
260 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
261 | "dev": true,
262 | "dependencies": {
263 | "ansi-colors": "^4.1.1"
264 | },
265 | "engines": {
266 | "node": ">=8.6"
267 | }
268 | },
269 | "node_modules/escape-string-regexp": {
270 | "version": "4.0.0",
271 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
272 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
273 | "dev": true,
274 | "engines": {
275 | "node": ">=10"
276 | },
277 | "funding": {
278 | "url": "https://github.com/sponsors/sindresorhus"
279 | }
280 | },
281 | "node_modules/eslint": {
282 | "version": "8.6.0",
283 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz",
284 | "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==",
285 | "dev": true,
286 | "dependencies": {
287 | "@eslint/eslintrc": "^1.0.5",
288 | "@humanwhocodes/config-array": "^0.9.2",
289 | "ajv": "^6.10.0",
290 | "chalk": "^4.0.0",
291 | "cross-spawn": "^7.0.2",
292 | "debug": "^4.3.2",
293 | "doctrine": "^3.0.0",
294 | "enquirer": "^2.3.5",
295 | "escape-string-regexp": "^4.0.0",
296 | "eslint-scope": "^7.1.0",
297 | "eslint-utils": "^3.0.0",
298 | "eslint-visitor-keys": "^3.1.0",
299 | "espree": "^9.3.0",
300 | "esquery": "^1.4.0",
301 | "esutils": "^2.0.2",
302 | "fast-deep-equal": "^3.1.3",
303 | "file-entry-cache": "^6.0.1",
304 | "functional-red-black-tree": "^1.0.1",
305 | "glob-parent": "^6.0.1",
306 | "globals": "^13.6.0",
307 | "ignore": "^4.0.6",
308 | "import-fresh": "^3.0.0",
309 | "imurmurhash": "^0.1.4",
310 | "is-glob": "^4.0.0",
311 | "js-yaml": "^4.1.0",
312 | "json-stable-stringify-without-jsonify": "^1.0.1",
313 | "levn": "^0.4.1",
314 | "lodash.merge": "^4.6.2",
315 | "minimatch": "^3.0.4",
316 | "natural-compare": "^1.4.0",
317 | "optionator": "^0.9.1",
318 | "progress": "^2.0.0",
319 | "regexpp": "^3.2.0",
320 | "semver": "^7.2.1",
321 | "strip-ansi": "^6.0.1",
322 | "strip-json-comments": "^3.1.0",
323 | "text-table": "^0.2.0",
324 | "v8-compile-cache": "^2.0.3"
325 | },
326 | "bin": {
327 | "eslint": "bin/eslint.js"
328 | },
329 | "engines": {
330 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
331 | },
332 | "funding": {
333 | "url": "https://opencollective.com/eslint"
334 | }
335 | },
336 | "node_modules/eslint-config-prettier": {
337 | "version": "9.0.0",
338 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
339 | "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
340 | "dev": true,
341 | "bin": {
342 | "eslint-config-prettier": "bin/cli.js"
343 | },
344 | "peerDependencies": {
345 | "eslint": ">=7.0.0"
346 | }
347 | },
348 | "node_modules/eslint-scope": {
349 | "version": "7.1.0",
350 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
351 | "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
352 | "dev": true,
353 | "dependencies": {
354 | "esrecurse": "^4.3.0",
355 | "estraverse": "^5.2.0"
356 | },
357 | "engines": {
358 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
359 | }
360 | },
361 | "node_modules/eslint-utils": {
362 | "version": "3.0.0",
363 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
364 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
365 | "dev": true,
366 | "dependencies": {
367 | "eslint-visitor-keys": "^2.0.0"
368 | },
369 | "engines": {
370 | "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
371 | },
372 | "funding": {
373 | "url": "https://github.com/sponsors/mysticatea"
374 | },
375 | "peerDependencies": {
376 | "eslint": ">=5"
377 | }
378 | },
379 | "node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
380 | "version": "2.1.0",
381 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
382 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
383 | "dev": true,
384 | "engines": {
385 | "node": ">=10"
386 | }
387 | },
388 | "node_modules/eslint-visitor-keys": {
389 | "version": "3.1.0",
390 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
391 | "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
392 | "dev": true,
393 | "engines": {
394 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
395 | }
396 | },
397 | "node_modules/espree": {
398 | "version": "9.3.0",
399 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
400 | "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
401 | "dev": true,
402 | "dependencies": {
403 | "acorn": "^8.7.0",
404 | "acorn-jsx": "^5.3.1",
405 | "eslint-visitor-keys": "^3.1.0"
406 | },
407 | "engines": {
408 | "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
409 | }
410 | },
411 | "node_modules/esquery": {
412 | "version": "1.4.0",
413 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
414 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
415 | "dev": true,
416 | "dependencies": {
417 | "estraverse": "^5.1.0"
418 | },
419 | "engines": {
420 | "node": ">=0.10"
421 | }
422 | },
423 | "node_modules/esrecurse": {
424 | "version": "4.3.0",
425 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
426 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
427 | "dev": true,
428 | "dependencies": {
429 | "estraverse": "^5.2.0"
430 | },
431 | "engines": {
432 | "node": ">=4.0"
433 | }
434 | },
435 | "node_modules/estraverse": {
436 | "version": "5.3.0",
437 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
438 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
439 | "dev": true,
440 | "engines": {
441 | "node": ">=4.0"
442 | }
443 | },
444 | "node_modules/esutils": {
445 | "version": "2.0.3",
446 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
447 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
448 | "dev": true,
449 | "engines": {
450 | "node": ">=0.10.0"
451 | }
452 | },
453 | "node_modules/fast-deep-equal": {
454 | "version": "3.1.3",
455 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
456 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
457 | "dev": true
458 | },
459 | "node_modules/fast-json-stable-stringify": {
460 | "version": "2.1.0",
461 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
462 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
463 | "dev": true
464 | },
465 | "node_modules/fast-levenshtein": {
466 | "version": "2.0.6",
467 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
468 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
469 | "dev": true
470 | },
471 | "node_modules/file-entry-cache": {
472 | "version": "6.0.1",
473 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
474 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
475 | "dev": true,
476 | "dependencies": {
477 | "flat-cache": "^3.0.4"
478 | },
479 | "engines": {
480 | "node": "^10.12.0 || >=12.0.0"
481 | }
482 | },
483 | "node_modules/flat-cache": {
484 | "version": "3.0.4",
485 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
486 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
487 | "dev": true,
488 | "dependencies": {
489 | "flatted": "^3.1.0",
490 | "rimraf": "^3.0.2"
491 | },
492 | "engines": {
493 | "node": "^10.12.0 || >=12.0.0"
494 | }
495 | },
496 | "node_modules/flatted": {
497 | "version": "3.2.4",
498 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
499 | "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
500 | "dev": true
501 | },
502 | "node_modules/fs.realpath": {
503 | "version": "1.0.0",
504 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
505 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
506 | "dev": true
507 | },
508 | "node_modules/functional-red-black-tree": {
509 | "version": "1.0.1",
510 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
511 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
512 | "dev": true
513 | },
514 | "node_modules/glob": {
515 | "version": "7.2.0",
516 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
517 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
518 | "dev": true,
519 | "dependencies": {
520 | "fs.realpath": "^1.0.0",
521 | "inflight": "^1.0.4",
522 | "inherits": "2",
523 | "minimatch": "^3.0.4",
524 | "once": "^1.3.0",
525 | "path-is-absolute": "^1.0.0"
526 | },
527 | "engines": {
528 | "node": "*"
529 | },
530 | "funding": {
531 | "url": "https://github.com/sponsors/isaacs"
532 | }
533 | },
534 | "node_modules/glob-parent": {
535 | "version": "6.0.2",
536 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
537 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
538 | "dev": true,
539 | "dependencies": {
540 | "is-glob": "^4.0.3"
541 | },
542 | "engines": {
543 | "node": ">=10.13.0"
544 | }
545 | },
546 | "node_modules/globals": {
547 | "version": "13.12.0",
548 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
549 | "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
550 | "dev": true,
551 | "dependencies": {
552 | "type-fest": "^0.20.2"
553 | },
554 | "engines": {
555 | "node": ">=8"
556 | },
557 | "funding": {
558 | "url": "https://github.com/sponsors/sindresorhus"
559 | }
560 | },
561 | "node_modules/has-flag": {
562 | "version": "4.0.0",
563 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
564 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
565 | "dev": true,
566 | "engines": {
567 | "node": ">=8"
568 | }
569 | },
570 | "node_modules/ignore": {
571 | "version": "4.0.6",
572 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
573 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
574 | "dev": true,
575 | "engines": {
576 | "node": ">= 4"
577 | }
578 | },
579 | "node_modules/import-fresh": {
580 | "version": "3.3.0",
581 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
582 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
583 | "dev": true,
584 | "dependencies": {
585 | "parent-module": "^1.0.0",
586 | "resolve-from": "^4.0.0"
587 | },
588 | "engines": {
589 | "node": ">=6"
590 | },
591 | "funding": {
592 | "url": "https://github.com/sponsors/sindresorhus"
593 | }
594 | },
595 | "node_modules/imurmurhash": {
596 | "version": "0.1.4",
597 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
598 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
599 | "dev": true,
600 | "engines": {
601 | "node": ">=0.8.19"
602 | }
603 | },
604 | "node_modules/inflight": {
605 | "version": "1.0.6",
606 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
607 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
608 | "dev": true,
609 | "dependencies": {
610 | "once": "^1.3.0",
611 | "wrappy": "1"
612 | }
613 | },
614 | "node_modules/inherits": {
615 | "version": "2.0.4",
616 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
617 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
618 | "dev": true
619 | },
620 | "node_modules/is-extglob": {
621 | "version": "2.1.1",
622 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
623 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
624 | "dev": true,
625 | "engines": {
626 | "node": ">=0.10.0"
627 | }
628 | },
629 | "node_modules/is-glob": {
630 | "version": "4.0.3",
631 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
632 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
633 | "dev": true,
634 | "dependencies": {
635 | "is-extglob": "^2.1.1"
636 | },
637 | "engines": {
638 | "node": ">=0.10.0"
639 | }
640 | },
641 | "node_modules/isexe": {
642 | "version": "2.0.0",
643 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
644 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
645 | "dev": true
646 | },
647 | "node_modules/java-parser": {
648 | "version": "1.0.0",
649 | "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-1.0.0.tgz",
650 | "integrity": "sha512-z+1shDR4S1uC/v44uITWV87kP+PtaBT7dnZgmwZcAUhnA0wldJSlA6KhGHU8IXJHaLKtjgYPbSxvmWVaMbtM6g==",
651 | "dev": true,
652 | "dependencies": {
653 | "chevrotain": "6.5.0",
654 | "lodash": "4.17.20"
655 | }
656 | },
657 | "node_modules/js-yaml": {
658 | "version": "4.1.0",
659 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
660 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
661 | "dev": true,
662 | "dependencies": {
663 | "argparse": "^2.0.1"
664 | },
665 | "bin": {
666 | "js-yaml": "bin/js-yaml.js"
667 | }
668 | },
669 | "node_modules/json-schema-traverse": {
670 | "version": "0.4.1",
671 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
672 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
673 | "dev": true
674 | },
675 | "node_modules/json-stable-stringify-without-jsonify": {
676 | "version": "1.0.1",
677 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
678 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
679 | "dev": true
680 | },
681 | "node_modules/levn": {
682 | "version": "0.4.1",
683 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
684 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
685 | "dev": true,
686 | "dependencies": {
687 | "prelude-ls": "^1.2.1",
688 | "type-check": "~0.4.0"
689 | },
690 | "engines": {
691 | "node": ">= 0.8.0"
692 | }
693 | },
694 | "node_modules/lodash": {
695 | "version": "4.17.20",
696 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
697 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
698 | "dev": true
699 | },
700 | "node_modules/lodash.merge": {
701 | "version": "4.6.2",
702 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
703 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
704 | "dev": true
705 | },
706 | "node_modules/lru-cache": {
707 | "version": "6.0.0",
708 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
709 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
710 | "dev": true,
711 | "dependencies": {
712 | "yallist": "^4.0.0"
713 | },
714 | "engines": {
715 | "node": ">=10"
716 | }
717 | },
718 | "node_modules/minimatch": {
719 | "version": "3.0.4",
720 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
721 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
722 | "dev": true,
723 | "dependencies": {
724 | "brace-expansion": "^1.1.7"
725 | },
726 | "engines": {
727 | "node": "*"
728 | }
729 | },
730 | "node_modules/ms": {
731 | "version": "2.1.2",
732 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
733 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
734 | "dev": true
735 | },
736 | "node_modules/natural-compare": {
737 | "version": "1.4.0",
738 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
739 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
740 | "dev": true
741 | },
742 | "node_modules/once": {
743 | "version": "1.4.0",
744 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
745 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
746 | "dev": true,
747 | "dependencies": {
748 | "wrappy": "1"
749 | }
750 | },
751 | "node_modules/optionator": {
752 | "version": "0.9.1",
753 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
754 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
755 | "dev": true,
756 | "dependencies": {
757 | "deep-is": "^0.1.3",
758 | "fast-levenshtein": "^2.0.6",
759 | "levn": "^0.4.1",
760 | "prelude-ls": "^1.2.1",
761 | "type-check": "^0.4.0",
762 | "word-wrap": "^1.2.3"
763 | },
764 | "engines": {
765 | "node": ">= 0.8.0"
766 | }
767 | },
768 | "node_modules/parent-module": {
769 | "version": "1.0.1",
770 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
771 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
772 | "dev": true,
773 | "dependencies": {
774 | "callsites": "^3.0.0"
775 | },
776 | "engines": {
777 | "node": ">=6"
778 | }
779 | },
780 | "node_modules/path-is-absolute": {
781 | "version": "1.0.1",
782 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
783 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
784 | "dev": true,
785 | "engines": {
786 | "node": ">=0.10.0"
787 | }
788 | },
789 | "node_modules/path-key": {
790 | "version": "3.1.1",
791 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
792 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
793 | "dev": true,
794 | "engines": {
795 | "node": ">=8"
796 | }
797 | },
798 | "node_modules/prelude-ls": {
799 | "version": "1.2.1",
800 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
801 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
802 | "dev": true,
803 | "engines": {
804 | "node": ">= 0.8.0"
805 | }
806 | },
807 | "node_modules/prettier": {
808 | "version": "2.2.1",
809 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
810 | "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==",
811 | "dev": true,
812 | "bin": {
813 | "prettier": "bin-prettier.js"
814 | },
815 | "engines": {
816 | "node": ">=10.13.0"
817 | }
818 | },
819 | "node_modules/prettier-plugin-java": {
820 | "version": "1.0.1",
821 | "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-1.0.1.tgz",
822 | "integrity": "sha512-QaNLrBra0pzSba29cq7N5JPqHPlEM+3FRp17ViL66fKcStu+5mDOS+YV99mbkpHTrsMAuChW3rZ85ZDs4Smupw==",
823 | "dev": true,
824 | "dependencies": {
825 | "java-parser": "1.0.0",
826 | "lodash": "4.17.20",
827 | "prettier": "2.2.1"
828 | }
829 | },
830 | "node_modules/progress": {
831 | "version": "2.0.3",
832 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
833 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
834 | "dev": true,
835 | "engines": {
836 | "node": ">=0.4.0"
837 | }
838 | },
839 | "node_modules/punycode": {
840 | "version": "2.1.1",
841 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
842 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
843 | "dev": true,
844 | "engines": {
845 | "node": ">=6"
846 | }
847 | },
848 | "node_modules/regexp-to-ast": {
849 | "version": "0.4.0",
850 | "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz",
851 | "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==",
852 | "dev": true
853 | },
854 | "node_modules/regexpp": {
855 | "version": "3.2.0",
856 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
857 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
858 | "dev": true,
859 | "engines": {
860 | "node": ">=8"
861 | },
862 | "funding": {
863 | "url": "https://github.com/sponsors/mysticatea"
864 | }
865 | },
866 | "node_modules/resolve-from": {
867 | "version": "4.0.0",
868 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
869 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
870 | "dev": true,
871 | "engines": {
872 | "node": ">=4"
873 | }
874 | },
875 | "node_modules/rimraf": {
876 | "version": "3.0.2",
877 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
878 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
879 | "dev": true,
880 | "dependencies": {
881 | "glob": "^7.1.3"
882 | },
883 | "bin": {
884 | "rimraf": "bin.js"
885 | },
886 | "funding": {
887 | "url": "https://github.com/sponsors/isaacs"
888 | }
889 | },
890 | "node_modules/semver": {
891 | "version": "7.3.5",
892 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
893 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
894 | "dev": true,
895 | "dependencies": {
896 | "lru-cache": "^6.0.0"
897 | },
898 | "bin": {
899 | "semver": "bin/semver.js"
900 | },
901 | "engines": {
902 | "node": ">=10"
903 | }
904 | },
905 | "node_modules/shebang-command": {
906 | "version": "2.0.0",
907 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
908 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
909 | "dev": true,
910 | "dependencies": {
911 | "shebang-regex": "^3.0.0"
912 | },
913 | "engines": {
914 | "node": ">=8"
915 | }
916 | },
917 | "node_modules/shebang-regex": {
918 | "version": "3.0.0",
919 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
920 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
921 | "dev": true,
922 | "engines": {
923 | "node": ">=8"
924 | }
925 | },
926 | "node_modules/strip-ansi": {
927 | "version": "6.0.1",
928 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
929 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
930 | "dev": true,
931 | "dependencies": {
932 | "ansi-regex": "^5.0.1"
933 | },
934 | "engines": {
935 | "node": ">=8"
936 | }
937 | },
938 | "node_modules/strip-json-comments": {
939 | "version": "3.1.1",
940 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
941 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
942 | "dev": true,
943 | "engines": {
944 | "node": ">=8"
945 | },
946 | "funding": {
947 | "url": "https://github.com/sponsors/sindresorhus"
948 | }
949 | },
950 | "node_modules/supports-color": {
951 | "version": "7.2.0",
952 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
953 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
954 | "dev": true,
955 | "dependencies": {
956 | "has-flag": "^4.0.0"
957 | },
958 | "engines": {
959 | "node": ">=8"
960 | }
961 | },
962 | "node_modules/text-table": {
963 | "version": "0.2.0",
964 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
965 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
966 | "dev": true
967 | },
968 | "node_modules/type-check": {
969 | "version": "0.4.0",
970 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
971 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
972 | "dev": true,
973 | "dependencies": {
974 | "prelude-ls": "^1.2.1"
975 | },
976 | "engines": {
977 | "node": ">= 0.8.0"
978 | }
979 | },
980 | "node_modules/type-fest": {
981 | "version": "0.20.2",
982 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
983 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
984 | "dev": true,
985 | "engines": {
986 | "node": ">=10"
987 | },
988 | "funding": {
989 | "url": "https://github.com/sponsors/sindresorhus"
990 | }
991 | },
992 | "node_modules/uri-js": {
993 | "version": "4.4.1",
994 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
995 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
996 | "dev": true,
997 | "dependencies": {
998 | "punycode": "^2.1.0"
999 | }
1000 | },
1001 | "node_modules/v8-compile-cache": {
1002 | "version": "2.3.0",
1003 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
1004 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
1005 | "dev": true
1006 | },
1007 | "node_modules/which": {
1008 | "version": "2.0.2",
1009 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1010 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1011 | "dev": true,
1012 | "dependencies": {
1013 | "isexe": "^2.0.0"
1014 | },
1015 | "bin": {
1016 | "node-which": "bin/node-which"
1017 | },
1018 | "engines": {
1019 | "node": ">= 8"
1020 | }
1021 | },
1022 | "node_modules/word-wrap": {
1023 | "version": "1.2.3",
1024 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1025 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1026 | "dev": true,
1027 | "engines": {
1028 | "node": ">=0.10.0"
1029 | }
1030 | },
1031 | "node_modules/wrappy": {
1032 | "version": "1.0.2",
1033 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1034 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1035 | "dev": true
1036 | },
1037 | "node_modules/yallist": {
1038 | "version": "4.0.0",
1039 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1040 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1041 | "dev": true
1042 | }
1043 | },
1044 | "dependencies": {
1045 | "@eslint/eslintrc": {
1046 | "version": "1.0.5",
1047 | "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.0.5.tgz",
1048 | "integrity": "sha512-BLxsnmK3KyPunz5wmCCpqy0YelEoxxGmH73Is+Z74oOTMtExcjkr3dDR6quwrjh1YspA8DH9gnX1o069KiS9AQ==",
1049 | "dev": true,
1050 | "requires": {
1051 | "ajv": "^6.12.4",
1052 | "debug": "^4.3.2",
1053 | "espree": "^9.2.0",
1054 | "globals": "^13.9.0",
1055 | "ignore": "^4.0.6",
1056 | "import-fresh": "^3.2.1",
1057 | "js-yaml": "^4.1.0",
1058 | "minimatch": "^3.0.4",
1059 | "strip-json-comments": "^3.1.1"
1060 | }
1061 | },
1062 | "@humanwhocodes/config-array": {
1063 | "version": "0.9.2",
1064 | "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.2.tgz",
1065 | "integrity": "sha512-UXOuFCGcwciWckOpmfKDq/GyhlTf9pN/BzG//x8p8zTOFEcGuA68ANXheFS0AGvy3qgZqLBUkMs7hqzqCKOVwA==",
1066 | "dev": true,
1067 | "requires": {
1068 | "@humanwhocodes/object-schema": "^1.2.1",
1069 | "debug": "^4.1.1",
1070 | "minimatch": "^3.0.4"
1071 | }
1072 | },
1073 | "@humanwhocodes/object-schema": {
1074 | "version": "1.2.1",
1075 | "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
1076 | "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
1077 | "dev": true
1078 | },
1079 | "acorn": {
1080 | "version": "8.7.0",
1081 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz",
1082 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==",
1083 | "dev": true
1084 | },
1085 | "acorn-jsx": {
1086 | "version": "5.3.2",
1087 | "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
1088 | "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
1089 | "dev": true,
1090 | "requires": {}
1091 | },
1092 | "ajv": {
1093 | "version": "6.12.6",
1094 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
1095 | "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
1096 | "dev": true,
1097 | "requires": {
1098 | "fast-deep-equal": "^3.1.1",
1099 | "fast-json-stable-stringify": "^2.0.0",
1100 | "json-schema-traverse": "^0.4.1",
1101 | "uri-js": "^4.2.2"
1102 | }
1103 | },
1104 | "ansi-colors": {
1105 | "version": "4.1.1",
1106 | "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
1107 | "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
1108 | "dev": true
1109 | },
1110 | "ansi-regex": {
1111 | "version": "5.0.1",
1112 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1113 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1114 | "dev": true
1115 | },
1116 | "ansi-styles": {
1117 | "version": "4.3.0",
1118 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
1119 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
1120 | "dev": true,
1121 | "requires": {
1122 | "color-convert": "^2.0.1"
1123 | }
1124 | },
1125 | "argparse": {
1126 | "version": "2.0.1",
1127 | "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
1128 | "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
1129 | "dev": true
1130 | },
1131 | "balanced-match": {
1132 | "version": "1.0.2",
1133 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1134 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1135 | "dev": true
1136 | },
1137 | "brace-expansion": {
1138 | "version": "1.1.11",
1139 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
1140 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
1141 | "dev": true,
1142 | "requires": {
1143 | "balanced-match": "^1.0.0",
1144 | "concat-map": "0.0.1"
1145 | }
1146 | },
1147 | "callsites": {
1148 | "version": "3.1.0",
1149 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
1150 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
1151 | "dev": true
1152 | },
1153 | "chalk": {
1154 | "version": "4.1.2",
1155 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
1156 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
1157 | "dev": true,
1158 | "requires": {
1159 | "ansi-styles": "^4.1.0",
1160 | "supports-color": "^7.1.0"
1161 | }
1162 | },
1163 | "chevrotain": {
1164 | "version": "6.5.0",
1165 | "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-6.5.0.tgz",
1166 | "integrity": "sha512-BwqQ/AgmKJ8jcMEjaSnfMybnKMgGTrtDKowfTP3pX4jwVy0kNjRsT/AP6h+wC3+3NC+X8X15VWBnTCQlX+wQFg==",
1167 | "dev": true,
1168 | "requires": {
1169 | "regexp-to-ast": "0.4.0"
1170 | }
1171 | },
1172 | "color-convert": {
1173 | "version": "2.0.1",
1174 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1175 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1176 | "dev": true,
1177 | "requires": {
1178 | "color-name": "~1.1.4"
1179 | }
1180 | },
1181 | "color-name": {
1182 | "version": "1.1.4",
1183 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1184 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1185 | "dev": true
1186 | },
1187 | "concat-map": {
1188 | "version": "0.0.1",
1189 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
1190 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
1191 | "dev": true
1192 | },
1193 | "cross-spawn": {
1194 | "version": "7.0.3",
1195 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
1196 | "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
1197 | "dev": true,
1198 | "requires": {
1199 | "path-key": "^3.1.0",
1200 | "shebang-command": "^2.0.0",
1201 | "which": "^2.0.1"
1202 | }
1203 | },
1204 | "debug": {
1205 | "version": "4.3.3",
1206 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
1207 | "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
1208 | "dev": true,
1209 | "requires": {
1210 | "ms": "2.1.2"
1211 | }
1212 | },
1213 | "deep-is": {
1214 | "version": "0.1.4",
1215 | "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
1216 | "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
1217 | "dev": true
1218 | },
1219 | "doctrine": {
1220 | "version": "3.0.0",
1221 | "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
1222 | "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
1223 | "dev": true,
1224 | "requires": {
1225 | "esutils": "^2.0.2"
1226 | }
1227 | },
1228 | "enquirer": {
1229 | "version": "2.3.6",
1230 | "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
1231 | "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
1232 | "dev": true,
1233 | "requires": {
1234 | "ansi-colors": "^4.1.1"
1235 | }
1236 | },
1237 | "escape-string-regexp": {
1238 | "version": "4.0.0",
1239 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
1240 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
1241 | "dev": true
1242 | },
1243 | "eslint": {
1244 | "version": "8.6.0",
1245 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.6.0.tgz",
1246 | "integrity": "sha512-UvxdOJ7mXFlw7iuHZA4jmzPaUqIw54mZrv+XPYKNbKdLR0et4rf60lIZUU9kiNtnzzMzGWxMV+tQ7uG7JG8DPw==",
1247 | "dev": true,
1248 | "requires": {
1249 | "@eslint/eslintrc": "^1.0.5",
1250 | "@humanwhocodes/config-array": "^0.9.2",
1251 | "ajv": "^6.10.0",
1252 | "chalk": "^4.0.0",
1253 | "cross-spawn": "^7.0.2",
1254 | "debug": "^4.3.2",
1255 | "doctrine": "^3.0.0",
1256 | "enquirer": "^2.3.5",
1257 | "escape-string-regexp": "^4.0.0",
1258 | "eslint-scope": "^7.1.0",
1259 | "eslint-utils": "^3.0.0",
1260 | "eslint-visitor-keys": "^3.1.0",
1261 | "espree": "^9.3.0",
1262 | "esquery": "^1.4.0",
1263 | "esutils": "^2.0.2",
1264 | "fast-deep-equal": "^3.1.3",
1265 | "file-entry-cache": "^6.0.1",
1266 | "functional-red-black-tree": "^1.0.1",
1267 | "glob-parent": "^6.0.1",
1268 | "globals": "^13.6.0",
1269 | "ignore": "^4.0.6",
1270 | "import-fresh": "^3.0.0",
1271 | "imurmurhash": "^0.1.4",
1272 | "is-glob": "^4.0.0",
1273 | "js-yaml": "^4.1.0",
1274 | "json-stable-stringify-without-jsonify": "^1.0.1",
1275 | "levn": "^0.4.1",
1276 | "lodash.merge": "^4.6.2",
1277 | "minimatch": "^3.0.4",
1278 | "natural-compare": "^1.4.0",
1279 | "optionator": "^0.9.1",
1280 | "progress": "^2.0.0",
1281 | "regexpp": "^3.2.0",
1282 | "semver": "^7.2.1",
1283 | "strip-ansi": "^6.0.1",
1284 | "strip-json-comments": "^3.1.0",
1285 | "text-table": "^0.2.0",
1286 | "v8-compile-cache": "^2.0.3"
1287 | }
1288 | },
1289 | "eslint-config-prettier": {
1290 | "version": "9.0.0",
1291 | "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz",
1292 | "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==",
1293 | "dev": true,
1294 | "requires": {}
1295 | },
1296 | "eslint-scope": {
1297 | "version": "7.1.0",
1298 | "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.0.tgz",
1299 | "integrity": "sha512-aWwkhnS0qAXqNOgKOK0dJ2nvzEbhEvpy8OlJ9kZ0FeZnA6zpjv1/Vei+puGFFX7zkPCkHHXb7IDX3A+7yPrRWg==",
1300 | "dev": true,
1301 | "requires": {
1302 | "esrecurse": "^4.3.0",
1303 | "estraverse": "^5.2.0"
1304 | }
1305 | },
1306 | "eslint-utils": {
1307 | "version": "3.0.0",
1308 | "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
1309 | "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
1310 | "dev": true,
1311 | "requires": {
1312 | "eslint-visitor-keys": "^2.0.0"
1313 | },
1314 | "dependencies": {
1315 | "eslint-visitor-keys": {
1316 | "version": "2.1.0",
1317 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
1318 | "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
1319 | "dev": true
1320 | }
1321 | }
1322 | },
1323 | "eslint-visitor-keys": {
1324 | "version": "3.1.0",
1325 | "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.1.0.tgz",
1326 | "integrity": "sha512-yWJFpu4DtjsWKkt5GeNBBuZMlNcYVs6vRCLoCVEJrTjaSB6LC98gFipNK/erM2Heg/E8mIK+hXG/pJMLK+eRZA==",
1327 | "dev": true
1328 | },
1329 | "espree": {
1330 | "version": "9.3.0",
1331 | "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.0.tgz",
1332 | "integrity": "sha512-d/5nCsb0JcqsSEeQzFZ8DH1RmxPcglRWh24EFTlUEmCKoehXGdpsx0RkHDubqUI8LSAIKMQp4r9SzQ3n+sm4HQ==",
1333 | "dev": true,
1334 | "requires": {
1335 | "acorn": "^8.7.0",
1336 | "acorn-jsx": "^5.3.1",
1337 | "eslint-visitor-keys": "^3.1.0"
1338 | }
1339 | },
1340 | "esquery": {
1341 | "version": "1.4.0",
1342 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz",
1343 | "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
1344 | "dev": true,
1345 | "requires": {
1346 | "estraverse": "^5.1.0"
1347 | }
1348 | },
1349 | "esrecurse": {
1350 | "version": "4.3.0",
1351 | "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
1352 | "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
1353 | "dev": true,
1354 | "requires": {
1355 | "estraverse": "^5.2.0"
1356 | }
1357 | },
1358 | "estraverse": {
1359 | "version": "5.3.0",
1360 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
1361 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
1362 | "dev": true
1363 | },
1364 | "esutils": {
1365 | "version": "2.0.3",
1366 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
1367 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
1368 | "dev": true
1369 | },
1370 | "fast-deep-equal": {
1371 | "version": "3.1.3",
1372 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
1373 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
1374 | "dev": true
1375 | },
1376 | "fast-json-stable-stringify": {
1377 | "version": "2.1.0",
1378 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
1379 | "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
1380 | "dev": true
1381 | },
1382 | "fast-levenshtein": {
1383 | "version": "2.0.6",
1384 | "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
1385 | "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
1386 | "dev": true
1387 | },
1388 | "file-entry-cache": {
1389 | "version": "6.0.1",
1390 | "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
1391 | "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
1392 | "dev": true,
1393 | "requires": {
1394 | "flat-cache": "^3.0.4"
1395 | }
1396 | },
1397 | "flat-cache": {
1398 | "version": "3.0.4",
1399 | "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
1400 | "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
1401 | "dev": true,
1402 | "requires": {
1403 | "flatted": "^3.1.0",
1404 | "rimraf": "^3.0.2"
1405 | }
1406 | },
1407 | "flatted": {
1408 | "version": "3.2.4",
1409 | "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz",
1410 | "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==",
1411 | "dev": true
1412 | },
1413 | "fs.realpath": {
1414 | "version": "1.0.0",
1415 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1416 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1417 | "dev": true
1418 | },
1419 | "functional-red-black-tree": {
1420 | "version": "1.0.1",
1421 | "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
1422 | "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
1423 | "dev": true
1424 | },
1425 | "glob": {
1426 | "version": "7.2.0",
1427 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
1428 | "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
1429 | "dev": true,
1430 | "requires": {
1431 | "fs.realpath": "^1.0.0",
1432 | "inflight": "^1.0.4",
1433 | "inherits": "2",
1434 | "minimatch": "^3.0.4",
1435 | "once": "^1.3.0",
1436 | "path-is-absolute": "^1.0.0"
1437 | }
1438 | },
1439 | "glob-parent": {
1440 | "version": "6.0.2",
1441 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
1442 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
1443 | "dev": true,
1444 | "requires": {
1445 | "is-glob": "^4.0.3"
1446 | }
1447 | },
1448 | "globals": {
1449 | "version": "13.12.0",
1450 | "resolved": "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz",
1451 | "integrity": "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==",
1452 | "dev": true,
1453 | "requires": {
1454 | "type-fest": "^0.20.2"
1455 | }
1456 | },
1457 | "has-flag": {
1458 | "version": "4.0.0",
1459 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
1460 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
1461 | "dev": true
1462 | },
1463 | "ignore": {
1464 | "version": "4.0.6",
1465 | "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
1466 | "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
1467 | "dev": true
1468 | },
1469 | "import-fresh": {
1470 | "version": "3.3.0",
1471 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
1472 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
1473 | "dev": true,
1474 | "requires": {
1475 | "parent-module": "^1.0.0",
1476 | "resolve-from": "^4.0.0"
1477 | }
1478 | },
1479 | "imurmurhash": {
1480 | "version": "0.1.4",
1481 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
1482 | "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
1483 | "dev": true
1484 | },
1485 | "inflight": {
1486 | "version": "1.0.6",
1487 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1488 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1489 | "dev": true,
1490 | "requires": {
1491 | "once": "^1.3.0",
1492 | "wrappy": "1"
1493 | }
1494 | },
1495 | "inherits": {
1496 | "version": "2.0.4",
1497 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
1498 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
1499 | "dev": true
1500 | },
1501 | "is-extglob": {
1502 | "version": "2.1.1",
1503 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
1504 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
1505 | "dev": true
1506 | },
1507 | "is-glob": {
1508 | "version": "4.0.3",
1509 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
1510 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
1511 | "dev": true,
1512 | "requires": {
1513 | "is-extglob": "^2.1.1"
1514 | }
1515 | },
1516 | "isexe": {
1517 | "version": "2.0.0",
1518 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1519 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1520 | "dev": true
1521 | },
1522 | "java-parser": {
1523 | "version": "1.0.0",
1524 | "resolved": "https://registry.npmjs.org/java-parser/-/java-parser-1.0.0.tgz",
1525 | "integrity": "sha512-z+1shDR4S1uC/v44uITWV87kP+PtaBT7dnZgmwZcAUhnA0wldJSlA6KhGHU8IXJHaLKtjgYPbSxvmWVaMbtM6g==",
1526 | "dev": true,
1527 | "requires": {
1528 | "chevrotain": "6.5.0",
1529 | "lodash": "4.17.20"
1530 | }
1531 | },
1532 | "js-yaml": {
1533 | "version": "4.1.0",
1534 | "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
1535 | "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
1536 | "dev": true,
1537 | "requires": {
1538 | "argparse": "^2.0.1"
1539 | }
1540 | },
1541 | "json-schema-traverse": {
1542 | "version": "0.4.1",
1543 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1544 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1545 | "dev": true
1546 | },
1547 | "json-stable-stringify-without-jsonify": {
1548 | "version": "1.0.1",
1549 | "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
1550 | "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
1551 | "dev": true
1552 | },
1553 | "levn": {
1554 | "version": "0.4.1",
1555 | "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
1556 | "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
1557 | "dev": true,
1558 | "requires": {
1559 | "prelude-ls": "^1.2.1",
1560 | "type-check": "~0.4.0"
1561 | }
1562 | },
1563 | "lodash": {
1564 | "version": "4.17.20",
1565 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
1566 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==",
1567 | "dev": true
1568 | },
1569 | "lodash.merge": {
1570 | "version": "4.6.2",
1571 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1572 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
1573 | "dev": true
1574 | },
1575 | "lru-cache": {
1576 | "version": "6.0.0",
1577 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
1578 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
1579 | "dev": true,
1580 | "requires": {
1581 | "yallist": "^4.0.0"
1582 | }
1583 | },
1584 | "minimatch": {
1585 | "version": "3.0.4",
1586 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
1587 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
1588 | "dev": true,
1589 | "requires": {
1590 | "brace-expansion": "^1.1.7"
1591 | }
1592 | },
1593 | "ms": {
1594 | "version": "2.1.2",
1595 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
1596 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
1597 | "dev": true
1598 | },
1599 | "natural-compare": {
1600 | "version": "1.4.0",
1601 | "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
1602 | "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
1603 | "dev": true
1604 | },
1605 | "once": {
1606 | "version": "1.4.0",
1607 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
1608 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
1609 | "dev": true,
1610 | "requires": {
1611 | "wrappy": "1"
1612 | }
1613 | },
1614 | "optionator": {
1615 | "version": "0.9.1",
1616 | "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
1617 | "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
1618 | "dev": true,
1619 | "requires": {
1620 | "deep-is": "^0.1.3",
1621 | "fast-levenshtein": "^2.0.6",
1622 | "levn": "^0.4.1",
1623 | "prelude-ls": "^1.2.1",
1624 | "type-check": "^0.4.0",
1625 | "word-wrap": "^1.2.3"
1626 | }
1627 | },
1628 | "parent-module": {
1629 | "version": "1.0.1",
1630 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
1631 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
1632 | "dev": true,
1633 | "requires": {
1634 | "callsites": "^3.0.0"
1635 | }
1636 | },
1637 | "path-is-absolute": {
1638 | "version": "1.0.1",
1639 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
1640 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
1641 | "dev": true
1642 | },
1643 | "path-key": {
1644 | "version": "3.1.1",
1645 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1646 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1647 | "dev": true
1648 | },
1649 | "prelude-ls": {
1650 | "version": "1.2.1",
1651 | "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
1652 | "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
1653 | "dev": true
1654 | },
1655 | "prettier": {
1656 | "version": "2.2.1",
1657 | "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
1658 | "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==",
1659 | "dev": true
1660 | },
1661 | "prettier-plugin-java": {
1662 | "version": "1.0.1",
1663 | "resolved": "https://registry.npmjs.org/prettier-plugin-java/-/prettier-plugin-java-1.0.1.tgz",
1664 | "integrity": "sha512-QaNLrBra0pzSba29cq7N5JPqHPlEM+3FRp17ViL66fKcStu+5mDOS+YV99mbkpHTrsMAuChW3rZ85ZDs4Smupw==",
1665 | "dev": true,
1666 | "requires": {
1667 | "java-parser": "1.0.0",
1668 | "lodash": "4.17.20",
1669 | "prettier": "2.2.1"
1670 | }
1671 | },
1672 | "progress": {
1673 | "version": "2.0.3",
1674 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
1675 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
1676 | "dev": true
1677 | },
1678 | "punycode": {
1679 | "version": "2.1.1",
1680 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
1681 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
1682 | "dev": true
1683 | },
1684 | "regexp-to-ast": {
1685 | "version": "0.4.0",
1686 | "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz",
1687 | "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==",
1688 | "dev": true
1689 | },
1690 | "regexpp": {
1691 | "version": "3.2.0",
1692 | "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
1693 | "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
1694 | "dev": true
1695 | },
1696 | "resolve-from": {
1697 | "version": "4.0.0",
1698 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
1699 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
1700 | "dev": true
1701 | },
1702 | "rimraf": {
1703 | "version": "3.0.2",
1704 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
1705 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
1706 | "dev": true,
1707 | "requires": {
1708 | "glob": "^7.1.3"
1709 | }
1710 | },
1711 | "semver": {
1712 | "version": "7.3.5",
1713 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
1714 | "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
1715 | "dev": true,
1716 | "requires": {
1717 | "lru-cache": "^6.0.0"
1718 | }
1719 | },
1720 | "shebang-command": {
1721 | "version": "2.0.0",
1722 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1723 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1724 | "dev": true,
1725 | "requires": {
1726 | "shebang-regex": "^3.0.0"
1727 | }
1728 | },
1729 | "shebang-regex": {
1730 | "version": "3.0.0",
1731 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1732 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1733 | "dev": true
1734 | },
1735 | "strip-ansi": {
1736 | "version": "6.0.1",
1737 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1738 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1739 | "dev": true,
1740 | "requires": {
1741 | "ansi-regex": "^5.0.1"
1742 | }
1743 | },
1744 | "strip-json-comments": {
1745 | "version": "3.1.1",
1746 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
1747 | "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
1748 | "dev": true
1749 | },
1750 | "supports-color": {
1751 | "version": "7.2.0",
1752 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
1753 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
1754 | "dev": true,
1755 | "requires": {
1756 | "has-flag": "^4.0.0"
1757 | }
1758 | },
1759 | "text-table": {
1760 | "version": "0.2.0",
1761 | "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
1762 | "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
1763 | "dev": true
1764 | },
1765 | "type-check": {
1766 | "version": "0.4.0",
1767 | "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
1768 | "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
1769 | "dev": true,
1770 | "requires": {
1771 | "prelude-ls": "^1.2.1"
1772 | }
1773 | },
1774 | "type-fest": {
1775 | "version": "0.20.2",
1776 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
1777 | "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
1778 | "dev": true
1779 | },
1780 | "uri-js": {
1781 | "version": "4.4.1",
1782 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
1783 | "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
1784 | "dev": true,
1785 | "requires": {
1786 | "punycode": "^2.1.0"
1787 | }
1788 | },
1789 | "v8-compile-cache": {
1790 | "version": "2.3.0",
1791 | "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
1792 | "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
1793 | "dev": true
1794 | },
1795 | "which": {
1796 | "version": "2.0.2",
1797 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1798 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1799 | "dev": true,
1800 | "requires": {
1801 | "isexe": "^2.0.0"
1802 | }
1803 | },
1804 | "word-wrap": {
1805 | "version": "1.2.3",
1806 | "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
1807 | "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
1808 | "dev": true
1809 | },
1810 | "wrappy": {
1811 | "version": "1.0.2",
1812 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1813 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
1814 | "dev": true
1815 | },
1816 | "yallist": {
1817 | "version": "4.0.0",
1818 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
1819 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
1820 | "dev": true
1821 | }
1822 | }
1823 | }
1824 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "leetcode-format-chrome",
3 | "version": "1.8",
4 | "description": "LeetCode Code Format Google Chrome Extension",
5 | "main": "content.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "Madhur Ahuja",
10 | "license": "ISC",
11 | "devDependencies": {
12 | "eslint": "^8.6.0",
13 | "prettier": "^2.2.1",
14 | "eslint-config-prettier": "^9.0.0",
15 | "prettier-plugin-java": "^1.0.1"
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/script.js:
--------------------------------------------------------------------------------
1 | import parserBabel from './parser-babel.mjs';
2 | import parserTypeScript from './parser-typescript.mjs';
3 | import prettierFormat_formatCode from './parser-java.js';
4 | import './dart-style.js';
5 |
6 | /*Old UI Variables */
7 | const codeMirrorDOM = '.CodeMirror';
8 | let codeMirror = null;
9 | /* Old UI Variables End */
10 |
11 | /* New UI Variables */
12 | let btn = null;
13 | const supportedLanguages = ['JAVA', 'JAVASCRIPT', 'TYPESCRIPT', 'C++', 'DART', "CPP"];
14 | let theme = null;
15 | const lightTextColor = '#000000';
16 | const darkTextColor = '#eff1f6ff';
17 | /* New UI Variables END */
18 |
19 | /* Common Variables */
20 | let activeLanguage = null;
21 | /* Common Variables End */
22 |
23 | let uiVersion = -1;
24 |
25 | window.addEventListener('load', startLoading, false);
26 | window.addEventListener('locationchange', function (event) {
27 | // Log the state data to the console
28 | console.log(event);
29 | if (document.getElementById('button-format') !== null) {
30 | console.debug('Button present');
31 | } else {
32 | console.debug('Button not present');
33 | }
34 | });
35 |
36 | function startLoading() {
37 | let codeMirrorSelector = document.querySelector(codeMirrorDOM);
38 | if (codeMirrorSelector === undefined || codeMirrorSelector === null) {
39 | // codemirror not found on page
40 | // Check for new UI
41 | checkAndLoadNewUI();
42 | return;
43 | }
44 | codeMirror = codeMirrorSelector.CodeMirror;
45 | if (codeMirror === undefined) {
46 | // codeMirror not found
47 | // this should not happen
48 | console.debug('FATAL: CodeMirror not found');
49 | return;
50 | }
51 |
52 | activeLanguage = document.querySelector(
53 | '.ant-select-selection-selected-value'
54 | );
55 |
56 | if (!activeLanguage || !activeLanguage.title) {
57 | // Dom not loaded yet
58 | return;
59 | }
60 |
61 | if (document.getElementById('format-button') !== null) {
62 | return;
63 | } else {
64 | console.debug('installing button');
65 | }
66 |
67 | let button = getFormatButton();
68 | uiVersion = 0;
69 | console.debug("Ui version is 0");
70 | addShortcutBinding(formatCodeMirror);
71 | button.addEventListener('click', function () {
72 | formatCodeMirror();
73 | });
74 |
75 | activeLanguage.parentElement.parentElement.parentElement.parentElement.parentElement.appendChild(
76 | button
77 | );
78 | }
79 |
80 | function checkAndLoadNewUI() {
81 | const buttonLocation = '.mr-auto.flex.flex-nowrap.items-center.gap-3';
82 |
83 | if (!document.querySelector(buttonLocation)) {
84 | checkAndLoadNewUIv2();
85 | return;
86 | }
87 |
88 | if (
89 | !document.querySelector('.tool-button') &&
90 | document.querySelector(buttonLocation)
91 | ) {
92 | uiVersion = 1;
93 | console.debug("Ui version is 1");
94 | btn = getFormatButtonNew();
95 | document.querySelector(buttonLocation).appendChild(btn);
96 | addShortcutBinding(formatCodeMonaco);
97 | setupLanguageObserver();
98 | }
99 | }
100 |
101 | function checkAndLoadNewUIv2() {
102 |
103 |
104 | let buttonLocation = 'div.flex.flex-nowrap.items-center';
105 |
106 | if (
107 | !document.querySelector('.tool-button') &&
108 | document.querySelector(buttonLocation)
109 | ) {
110 | uiVersion = 2;
111 | console.debug("Ui version is 2");
112 | btn = getFormatButtonNew();
113 | document.querySelector(buttonLocation).appendChild(btn);
114 | addShortcutBinding(formatCodeMonacov2);
115 | setupLanguageObserverv2();
116 | }
117 |
118 | }
119 |
120 |
121 | function setupLanguageObserver() {
122 | const languageObserver = '.relative.notranslate';
123 | const languageSelector = '.relative.notranslate div div';
124 | const targetNode = document.querySelector(languageObserver);
125 |
126 | // Options for the observer (which mutations to observe)
127 | const config = { attributes: true, childList: true, subtree: true };
128 |
129 | // Callback function to execute when mutations are observed
130 | const callback = (mutationList, observer) => {
131 | activeLanguage = document.querySelector(languageSelector).innerText;
132 | console.debug(activeLanguage);
133 | if (supportedLanguages.includes(activeLanguage.toUpperCase())) {
134 | btn.style.visibility = 'visible';
135 | } else {
136 | btn.style.visibility = 'hidden';
137 | }
138 | setButtonTheme(btn);
139 | };
140 |
141 | // Create an observer instance linked to the callback function
142 | const observer = new MutationObserver(callback);
143 |
144 | // Start observing the target node for configured mutations
145 | observer.observe(targetNode, config);
146 | }
147 |
148 |
149 | function setupLanguageObserverv2() {
150 | const languageObserver = '[data-mode-id]';
151 | const targetNode = document.querySelector(languageObserver);
152 |
153 | // Options for the observer (which mutations to observe)
154 | const config = { attributes: true, childList: false, subtree: false };
155 |
156 | // Callback function to execute when mutations are observed
157 | const callback = (mutationList, observer) => {
158 | let d = document.querySelector('[data-mode-id]');
159 | let activeLanguage = d.getAttribute('data-mode-id');
160 | console.debug(activeLanguage);
161 | if (supportedLanguages.includes(activeLanguage.toUpperCase())) {
162 | btn.style.visibility = 'visible';
163 | } else {
164 | btn.style.visibility = 'hidden';
165 | }
166 | setButtonTheme(btn);
167 | };
168 |
169 | // Create an observer instance linked to the callback function
170 | const observer = new MutationObserver(callback);
171 |
172 | // Start observing the target node for configured mutations
173 | observer.observe(targetNode, config);
174 | }
175 |
176 | const getFormatButtonNew = function () {
177 | var button = document.createElement('button');
178 | button.innerHTML = 'Format';
179 | button.className = 'tool-button';
180 | button.id = 'format-button';
181 | button.setAttribute('icon', 'information');
182 | button.setAttribute('data-no-border', 'true');
183 | button.setAttribute('type', 'ghost');
184 | button.style.marginRight = '10px';
185 | button.style.marginLeft = '10px';
186 | button.style.border = 'none';
187 | setButtonTheme(button);
188 | button.style.borderImage = 'none';
189 | button.style.outline = 'none';
190 | button.style.cursor = 'pointer';
191 | button.title = 'Ctrl + Alt + F';
192 | button.style.padding = '4px 20px';
193 | button.style.fontWeight = '600';
194 | button.style.borderRadius = '3px';
195 |
196 | if (uiVersion == 1){
197 | button.addEventListener('click', formatCodeMonaco);
198 | }
199 | else if (uiVersion == 2) {
200 | button.addEventListener('click', formatCodeMonacov2);
201 | }
202 | else {
203 | console.error("uiVersion variable not set", uiVersion);
204 | }
205 | return button;
206 | };
207 |
208 | function addShortcutBinding(func) {
209 | window.addEventListener('keyup', (event) => {
210 | if (event.ctrlKey && event.altKey && event.key == 'f')
211 | func();
212 | });
213 | }
214 |
215 | const getFormatButton = function () {
216 | var button = document.createElement('button');
217 | button.innerHTML = '▤';
218 | button.className = 'tool-button';
219 | button.id = 'format-button';
220 | button.setAttribute('icon', 'information');
221 | button.setAttribute('data-no-border', 'true');
222 | button.setAttribute('type', 'ghost');
223 | button.style.marginRight = '10px';
224 | button.style.border = 'none';
225 | button.style.backgroundColor = 'transparent';
226 | button.style.borderImage = 'none';
227 | button.style.outline = 'none';
228 | button.style.cursor = 'pointer';
229 | button.title = 'Ctrl + Alt + F';
230 | return button;
231 | };
232 |
233 | const formatCodeMirror = function () {
234 | let language = getLanguage();
235 | let codeText = codeMirror.getValue();
236 | const formattedCode = formatCode(codeText, language);
237 | if (formattedCode) {
238 | codeMirror.setValue(formattedCode);
239 | console.debug(`Code formatted for ${language}`);
240 | }
241 | };
242 |
243 | const formatCodeMonaco = function () {
244 | let language = getLanguage();
245 |
246 | let codeText = getCode();
247 | const formattedCode = formatCode(codeText, language);
248 | if (formattedCode) {
249 | insertCode(formattedCode);
250 | console.debug(`Code formatted for ${language}`);
251 | }
252 | };
253 |
254 | const formatCodeMonacov2 = function () {
255 | let language = getLanguage();
256 |
257 | let codeText = getCodev2();
258 | const formattedCode = formatCode(codeText, language);
259 | if (formattedCode) {
260 | insertCodev2(formattedCode);
261 | console.debug(`Code formatted for ${language}`);
262 | }
263 | };
264 |
265 | function getLanguage() {
266 | if (uiVersion == 1) {
267 | return document.querySelector('.relative.notranslate').innerText;
268 | }
269 | else if (uiVersion == 2) {
270 | let d = document.querySelector('[data-mode-id]');
271 | return d.getAttribute('data-mode-id');
272 | }
273 | else if (uiVersion == 0) {
274 | return document.querySelector(
275 | '.ant-select-selection-selected-value'
276 | ).title;
277 |
278 | }
279 | }
280 |
281 |
282 | function insertCode(code) {
283 | if (code) {
284 | let model = monaco.editor.getModels()[0];
285 | model.setValue(code);
286 | }
287 | }
288 |
289 | function insertCodev2(code) {
290 | if (code) {
291 | let model = findMonaco();
292 | model.setValue(code);
293 | }
294 | }
295 |
296 |
297 | function getCode() {
298 | const model = monaco.editor.getModels()[0];
299 | const code = model.getValue();
300 |
301 | return code;
302 | }
303 |
304 | function getCodev2() {
305 | const model = findMonaco();
306 | if (model == null) {
307 | console.error("Could not found instance of monaco editor");
308 | return;
309 | }
310 | const code = model.getValue();
311 |
312 | return code;
313 | }
314 |
315 | function findMonaco() {
316 | let models = monaco.editor.getModels();
317 | const filter = function(m) {
318 | return m._languageId != "plaintext";
319 | }
320 | if (models && models.length >= 1) {
321 | return models.find(filter);
322 | }
323 |
324 | }
325 |
326 | const formatCode = function (codeText, language) {
327 | if (language === undefined) {
328 | return;
329 | }
330 | if (codeText === undefined) {
331 | return;
332 | }
333 | let formattedCode = null;
334 | if (language.toUpperCase() === 'JavaScript'.toUpperCase()) {
335 | formattedCode = prettier.format(codeText, {
336 | parser: 'babel',
337 | plugins: [parserBabel],
338 | });
339 | } else if (language.toUpperCase() === 'TypeScript'.toUpperCase()) {
340 | formattedCode = prettier.format(codeText, {
341 | parser: 'typescript',
342 | plugins: [parserTypeScript],
343 | });
344 | } else if (language.toUpperCase() === 'Java'.toUpperCase()) {
345 | formattedCode = prettierFormat_formatCode.formatCode(codeText, {
346 | printWidth: 200,
347 | tabWidth: 4,
348 | });
349 | } else if (language.toUpperCase() === 'C++'.toUpperCase() || language.toUpperCase() === "cpp".toUpperCase()) {
350 | formattedCode = js_beautify(codeText, {
351 | indent_size: 4,
352 | brace_style: 'expand',
353 | });
354 | formattedCode = applyCustomRules(formattedCode);
355 | } else if (language.toUpperCase() === 'Dart'.toUpperCase()) {
356 | formattedCode = dartfmt.formatCode(codeText).code;
357 | } else {
358 | console.debug(
359 | `Formatter not available for ${language}`
360 | );
361 | return;
362 | }
363 |
364 | return formattedCode;
365 | };
366 |
367 | const applyCustomRules = function (formatted) {
368 | return formatted
369 | .replace(/\}\r\n/g, '}\n\n')
370 | .replace(/\<\s([a-zA-Z0-9_,: *&<>]+)\s>/g, '<$1>')
371 | .replace(/\<\s([a-zA-Z0-9_,: *&<>]+)>/g, '<$1>')
372 | .replace(/\<([a-zA-Z0-9_:*]+)\s>/g, '<$1>')
373 | .replace(/iterator\s?;:"'`!@#$%^&*()\[\]{}_+=|\\-]+)#include/g,
394 | '$1\r\n#include'
395 | )
396 | .replace(/vector /g, '->')
406 | .replace(/\(\s+{\s+/g, '({ ')
407 | .replace(/\s+\}\)/g, ' })')
408 | .replace(/\tpublic_colon/g, 'public:')
409 | .replace(/\tprivate_colon/g, 'private:')
410 | .replace(/\tprotected_colon/g, 'protected:')
411 |
412 | .replace(/^#define(.*)$/, '#define')
413 |
414 | .replace(/xxxx/g, 'const')
415 | .replace(/\*(\s+)const/g, '*const')
416 |
417 | .replace(/operator (\W+) /g, 'operator$1')
418 | .replace(/operator<= >/g, 'operator<=>')
419 | .replace(/=(\s+)default/g, '= default')
420 | .replace(/; \}/g, ';\n}')
421 | .replace(/{\n\t\t\t/g, '{ ')
422 | .replace(/= { {/g, '= {\n\t\t{')
423 | .replace(/} };/g, '}\n\t};')
424 |
425 | .replace(/(\W+)\* /g, '$1*')
426 | .replace(/;\*/g, '; *')
427 | .replace(/(\w+) \*(\w+);/g, '$1 * $2;')
428 | .replace(/(\w+) \*(\w+)\)/g, '$1 * $2)')
429 | .replace(/(\w+) \*(\w+)\(/g, '$1 * $2(')
430 | .replace(/(\w+)(\s*)\*(\w+)(\s*)\/g, '$1 * $3 >')
432 | .replace(/(\w+)(\s*)\*(\w+)(\s*)\=/g, '$1 * $3 =')
433 | .replace(/(\d+)(\s*)\*(\d+)/g, '$1 * $3')
434 |
435 | .replace(/(\W) \* (\w)/g, '$1 *$2')
436 | .replace(/->\* /g, '->*')
437 | .replace(/ \[ &/g, ' [&')
438 | .replace(/\r\n\r\nusing/g, '\r\nusing')
439 | .replace(/\n\nusing/g, '\nusing')
440 | .replace(/\s,\s/g, ', ')
441 | .replace(/> ::/g, '>::')
442 |
443 | .replace(/(\s+)&\s+/g, '$1&')
444 | .replace(/\s\[/g, '[')
445 | .replace(/\(\s/g, '(')
446 | .replace(/\s\)/g, ')')
447 |
448 | .replace(/int \* /g, 'int *')
449 | .replace(/char \* /g, 'char *')
450 | .replace(/double \* /g, 'double *')
451 | .replace(/float \* /g, 'float *')
452 | .replace(/bool \* /g, 'bool *')
453 | .replace(/void \* /g, 'void *')
454 | .replace(/wchar_t \* /g, 'wchar_t *')
455 |
456 | .replace(/(\w+) \*\* /g, '$1 **')
457 |
458 | .replace(/\((\w+) \*\)/g, '($1*)')
459 | .replace(/(\w+) \*\>/g, '$1*>')
460 |
461 | .replace(/(\s)\<= /g, '$1 <= ')
462 |
463 | .replace(/\((\w+) &(\w+)\)/g, '($1 & $2)')
464 | .replace(/\[(\w+) &(\w+)\]/g, '[$1 & $2]')
465 |
466 | .replace(/\s<\s/g, '<')
467 | .replace(/\s<([^<])/g, '<$1')
468 | .replace(
469 | /([A-Za-z0-9_,\.\(\)\[\]\-\>]+)<([A-Za-z0-9_,\.\(\)\[\]\-\>]+)([\s\;\)])/g,
470 | '$1 < $2$3'
471 | )
472 |
473 | .replace(/<(\s+)const/g, ' /g, '$1 > ')
478 | .replace(/(\w)\>= /g, '$1 >= ')
479 | .replace(/\s+{}/g, ' {}')
480 | .replace(/\s+{\s+}/g, ' {}')
481 |
482 | .replace(/\s\<\s(\w+)\s\*,/g, '<$1*,')
483 | .replace(/\[ \*/g, '[*')
484 |
485 | .replace(/\<(\w+)\s\>/g, '<$1>')
486 | .replace(/, (\w+)\s\>/g, ', $1>')
487 |
488 | .replace(/\/\/TEMPLATE/g, 'template <')
489 | .replace(/\[ = \]/g, '[=]')
490 | .replace(/\}\n\n}/g, '}\n}')
491 | .replace(/\}\n\n(\s*)\}/g, '}\n$1}')
492 | .replace(/\}\n\n(\s+)\}/g, '}\n$1}')
493 |
494 | .replace(/\}\n\n(\s+)else/g, '}\n$1else')
495 |
496 | .replace(/\n\}\)\;/g, '\n\t});')
497 | .replace(/\,\[/g, ', [')
498 |
499 | .replace(/\;\n\n(\s+)\}/g, ';\n$1}')
500 |
501 | .replace(/(\s+)\{([ \t]+)(\w+)/g, '$1{$1\t$3')
502 | .replace(/(\s+)\{([ \t]+)\/\//g, '$1{$1$2//')
503 | .replace(/=\s{(\s+)/g, '= { ')
504 |
505 | .replace(/\{\r\n\s+([0-9,-\s.]+)\r\n\s+\}/g, '{ $1 }')
506 | .replace(/\{\n\s+([0-9,-\s.]+)\n\s+\}/g, '{ $1 }')
507 | .replace(/\{ \{/g, '{\n\t\t{')
508 | .replace(/ \/\//g, '\t//')
509 |
510 | .replace(/(['"])(\s+)\}/g, '$1 }')
511 | .replace(/(\w+) \* (\w+) =/g, '$1 *$2 =')
512 | .replace(/(\w+) \* (\w+)\)/g, '$1 *$2)')
513 | .replace(/(\w+) \* (\w+)\(/g, '$1* $2(')
514 |
515 | .replace(/(\w+) \*\& (\w+)/g, '$1* &$2')
516 |
517 | .replace(/\s\<\s(\w+)\s\>/g, '<$1>')
518 | .replace(/\s\<\s(\w+)\,/g, '<$1,')
519 | .replace(/\{\}~/g, '{}\n\t~')
520 | .replace(/_cast \s+\{\s*([A-Za-z0-9 ,-.\"]+)\s+\}\;/g, '> { $1 };');
523 | };
524 |
525 | const setButtonTheme = function (btn) {
526 | theme = document.getElementsByTagName('html')[0].getAttribute('data-theme');
527 | if (theme === 'dark') {
528 | btn.style.color = darkTextColor;
529 | } else if (theme === 'light') {
530 | btn.style.color = lightTextColor;
531 | }
532 | };
533 |
534 | setTimeout(startLoading, 5000);
535 |
--------------------------------------------------------------------------------