├── .editorconfig ├── .github └── screenshot.png ├── .gitignore ├── .gitmodules ├── .npmrc ├── .prettierignore ├── .prettierrc ├── LICENSE.txt ├── README.md ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── src ├── app.css ├── app.d.ts ├── app.html ├── lib │ ├── CheerpJ.svelte │ ├── Loading.svelte │ ├── Repl.svelte │ ├── assets │ │ ├── cheerpj │ │ │ ├── logotype-grey.svg │ │ │ └── logotype-white.svg │ │ ├── loading-spinner-white.svg │ │ └── loading-spinner.svg │ ├── cheerpj.d.ts │ ├── compress-fiddle.ts │ ├── repl │ │ ├── Editor.svelte │ │ ├── FileTab.svelte │ │ ├── FileTabs.svelte │ │ ├── Menu.svelte │ │ ├── Output.svelte │ │ ├── Sidebar.svelte │ │ ├── codemirror.css │ │ ├── linter.ts │ │ ├── menu │ │ │ ├── FavouriteButton.svelte │ │ │ ├── FiddleTitle.svelte │ │ │ └── SettingsButton.svelte │ │ ├── sidebar │ │ │ ├── Examples.svelte │ │ │ ├── Favourites.svelte │ │ │ └── SidebarOptions.svelte │ │ └── state.ts │ ├── settings │ │ ├── SettingsPanel.svelte │ │ ├── ThemeSwitcher.svelte │ │ └── store.ts │ └── utilities.ts └── routes │ ├── (app) │ ├── +layout.svelte │ ├── +page.svelte │ ├── embed │ │ └── +page.svelte │ └── output │ │ └── +page.svelte │ └── (legacy) │ └── [id] │ ├── +page.svelte │ ├── embed │ └── +page.svelte │ └── output │ └── +page.svelte ├── static ├── examples │ ├── hello-world-swing │ │ └── Main.java │ └── hello-world │ │ └── Main.java ├── favicon.ico ├── old │ ├── index.html │ └── utils │ │ ├── assets │ │ ├── cheerpj-logo.png │ │ ├── cheerpx-icon.png │ │ ├── cheerpx_logo_white.png │ │ ├── cheerpx_logo_whitebg-300x77.png │ │ ├── discord-logo-blue.svg │ │ ├── leaningtech.png │ │ ├── reddit.png │ │ └── social.png │ │ ├── fiddle.css │ │ ├── fiddle.js │ │ ├── flexbox.css │ │ ├── lz-string │ │ └── lz-string.min.js │ │ ├── scrollbar.css │ │ └── xterm │ │ ├── xterm-addon-fit.js │ │ ├── xterm.css │ │ └── xterm.js └── tools.jar ├── svelte.config.js ├── tailwind.config.js ├── tsconfig.json └── vite.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = tab 5 | end_of_line = lf 6 | charset = utf-8 7 | trim_trailing_whitespace = false 8 | insert_final_newline = true 9 | 10 | [*.java] 11 | indent_style = space 12 | indent_size = 4 13 | -------------------------------------------------------------------------------- /.github/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/.github/screenshot.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env.* 7 | !.env.example 8 | vite.config.js.timestamp-* 9 | vite.config.ts.timestamp-* 10 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "static/cheerpj-natives"] 2 | path = static/cheerpj-natives 3 | url = https://github.com/leaningtech/cheerpj-natives.git 4 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | resolution-mode=highest 3 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | 10 | # Ignore files for PNPM, NPM and YARN 11 | pnpm-lock.yaml 12 | package-lock.json 13 | yarn.lock 14 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "useTabs": true, 3 | "singleQuote": true, 4 | "trailingComma": "none", 5 | "printWidth": 100, 6 | "plugins": ["prettier-plugin-svelte"], 7 | "pluginSearchDirs": ["."], 8 | "overrides": [{ "files": "*.svelte", "options": { "parser": "svelte" } }] 9 | } 10 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # JavaFiddle 2 | 3 | [![Discord server](https://img.shields.io/discord/988743885121548329?color=%237289DA&logo=discord&logoColor=ffffff)](https://discord.leaningtech.com) 4 | 5 | JavaFiddle is an online tool to build and share snippets of Java code, powered by [CheerpJ](https://labs.leaningtech.com/cheerpj). 6 | 7 | [![Screenshot of website](.github/screenshot.png)](https://javafiddle.leaningtech.com) 8 | 9 | ## Developing 10 | 11 | ```bash 12 | pnpm install 13 | pnpm run dev 14 | ``` 15 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "javafiddle", 3 | "version": "0.0.1", 4 | "license": "Apache-2.0", 5 | "private": true, 6 | "scripts": { 7 | "dev": "vite dev", 8 | "build": "vite build", 9 | "preview": "vite preview", 10 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 11 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", 12 | "lint": "prettier --plugin-search-dir . --check .", 13 | "format": "prettier --plugin-search-dir . --write ." 14 | }, 15 | "devDependencies": { 16 | "@sveltejs/adapter-auto": "^2.0.0", 17 | "@sveltejs/kit": "^1.20.4", 18 | "autoprefixer": "^10.4.15", 19 | "postcss": "^8.4.29", 20 | "prettier": "^2.8.0", 21 | "prettier-plugin-svelte": "^2.10.1", 22 | "svelte": "^4.0.5", 23 | "svelte-check": "^3.4.3", 24 | "tailwindcss": "^3.3.3", 25 | "tslib": "^2.4.1", 26 | "typescript": "^5.0.0", 27 | "vite": "^4.4.2" 28 | }, 29 | "type": "module", 30 | "dependencies": { 31 | "@codemirror/commands": "^6.2.5", 32 | "@codemirror/lang-java": "^6.0.1", 33 | "@codemirror/language": "^6.9.0", 34 | "@codemirror/lint": "^6.4.1", 35 | "@codemirror/state": "^6.2.1", 36 | "@codemirror/view": "^6.17.1", 37 | "@iconify/svelte": "^3.1.4", 38 | "@macfja/svelte-persistent-store": "^2.4.0", 39 | "@rich_harris/svelte-split-pane": "^1.1.1", 40 | "codemirror": "^6.0.1", 41 | "lz-string": "^1.5.0", 42 | "svelte-relative-time": "^0.0.4", 43 | "thememirror": "^2.0.1", 44 | "zod": "^3.22.2" 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@codemirror/commands': 9 | specifier: ^6.2.5 10 | version: 6.2.5 11 | '@codemirror/lang-java': 12 | specifier: ^6.0.1 13 | version: 6.0.1 14 | '@codemirror/language': 15 | specifier: ^6.9.0 16 | version: 6.9.0 17 | '@codemirror/lint': 18 | specifier: ^6.4.1 19 | version: 6.4.1 20 | '@codemirror/state': 21 | specifier: ^6.2.1 22 | version: 6.2.1 23 | '@codemirror/view': 24 | specifier: ^6.17.1 25 | version: 6.17.1 26 | '@iconify/svelte': 27 | specifier: ^3.1.4 28 | version: 3.1.4(svelte@4.2.0) 29 | '@macfja/svelte-persistent-store': 30 | specifier: ^2.4.0 31 | version: 2.4.0(svelte@4.2.0) 32 | '@rich_harris/svelte-split-pane': 33 | specifier: ^1.1.1 34 | version: 1.1.1(svelte@4.2.0) 35 | codemirror: 36 | specifier: ^6.0.1 37 | version: 6.0.1(@lezer/common@1.0.4) 38 | lz-string: 39 | specifier: ^1.5.0 40 | version: 1.5.0 41 | svelte-relative-time: 42 | specifier: ^0.0.4 43 | version: 0.0.4(svelte@4.2.0) 44 | thememirror: 45 | specifier: ^2.0.1 46 | version: 2.0.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.17.1) 47 | zod: 48 | specifier: ^3.22.2 49 | version: 3.22.2 50 | 51 | devDependencies: 52 | '@sveltejs/adapter-auto': 53 | specifier: ^2.0.0 54 | version: 2.1.0(@sveltejs/kit@1.24.0) 55 | '@sveltejs/kit': 56 | specifier: ^1.20.4 57 | version: 1.24.0(svelte@4.2.0)(vite@4.4.9) 58 | autoprefixer: 59 | specifier: ^10.4.15 60 | version: 10.4.15(postcss@8.4.29) 61 | postcss: 62 | specifier: ^8.4.29 63 | version: 8.4.29 64 | prettier: 65 | specifier: ^2.8.0 66 | version: 2.8.8 67 | prettier-plugin-svelte: 68 | specifier: ^2.10.1 69 | version: 2.10.1(prettier@2.8.8)(svelte@4.2.0) 70 | svelte: 71 | specifier: ^4.0.5 72 | version: 4.2.0 73 | svelte-check: 74 | specifier: ^3.4.3 75 | version: 3.5.1(postcss@8.4.29)(svelte@4.2.0) 76 | tailwindcss: 77 | specifier: ^3.3.3 78 | version: 3.3.3 79 | tslib: 80 | specifier: ^2.4.1 81 | version: 2.6.2 82 | typescript: 83 | specifier: ^5.0.0 84 | version: 5.2.2 85 | vite: 86 | specifier: ^4.4.2 87 | version: 4.4.9 88 | 89 | packages: 90 | 91 | /@alloc/quick-lru@5.2.0: 92 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 93 | engines: {node: '>=10'} 94 | dev: true 95 | 96 | /@ampproject/remapping@2.2.1: 97 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 98 | engines: {node: '>=6.0.0'} 99 | dependencies: 100 | '@jridgewell/gen-mapping': 0.3.3 101 | '@jridgewell/trace-mapping': 0.3.19 102 | 103 | /@codemirror/autocomplete@6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.17.1)(@lezer/common@1.0.4): 104 | resolution: {integrity: sha512-Fbwm0V/Wn3BkEJZRhr0hi5BhCo5a7eBL6LYaliPjOSwCyfOpnjXY59HruSxOUNV+1OYer0Tgx1zRNQttjXyDog==} 105 | peerDependencies: 106 | '@codemirror/language': ^6.0.0 107 | '@codemirror/state': ^6.0.0 108 | '@codemirror/view': ^6.0.0 109 | '@lezer/common': ^1.0.0 110 | dependencies: 111 | '@codemirror/language': 6.9.0 112 | '@codemirror/state': 6.2.1 113 | '@codemirror/view': 6.17.1 114 | '@lezer/common': 1.0.4 115 | dev: false 116 | 117 | /@codemirror/commands@6.2.5: 118 | resolution: {integrity: sha512-dSi7ow2P2YgPBZflR9AJoaTHvqmeGIgkhignYMd5zK5y6DANTvxKxp6eMEpIDUJkRAaOY/TFZ4jP1ADIO/GLVA==} 119 | dependencies: 120 | '@codemirror/language': 6.9.0 121 | '@codemirror/state': 6.2.1 122 | '@codemirror/view': 6.17.1 123 | '@lezer/common': 1.0.4 124 | dev: false 125 | 126 | /@codemirror/lang-java@6.0.1: 127 | resolution: {integrity: sha512-OOnmhH67h97jHzCuFaIEspbmsT98fNdhVhmA3zCxW0cn7l8rChDhZtwiwJ/JOKXgfm4J+ELxQihxaI7bj7mJRg==} 128 | dependencies: 129 | '@codemirror/language': 6.9.0 130 | '@lezer/java': 1.0.4 131 | dev: false 132 | 133 | /@codemirror/language@6.9.0: 134 | resolution: {integrity: sha512-nFu311/0ne/qGuGCL3oKuktBgzVOaxCHZPZv1tLSZkNjPYxxvkjSbzno3MlErG2tgw1Yw1yF8BxMCegeMXqpiw==} 135 | dependencies: 136 | '@codemirror/state': 6.2.1 137 | '@codemirror/view': 6.17.1 138 | '@lezer/common': 1.0.4 139 | '@lezer/highlight': 1.1.6 140 | '@lezer/lr': 1.3.10 141 | style-mod: 4.1.0 142 | dev: false 143 | 144 | /@codemirror/lint@6.4.1: 145 | resolution: {integrity: sha512-2Hx945qKX7FBan5/gUdTM8fsMYrNG9clIgEcPXestbLVFAUyQYFAuju/5BMNf/PwgpVaX5pvRm4+ovjbp9D9gQ==} 146 | dependencies: 147 | '@codemirror/state': 6.2.1 148 | '@codemirror/view': 6.17.1 149 | crelt: 1.0.6 150 | dev: false 151 | 152 | /@codemirror/search@6.5.2: 153 | resolution: {integrity: sha512-WRihpqd0l9cEh9J3IZe45Yi+Z5MfTsEXnyc3V7qXHP4ZYtIYpGOn+EJ7fyLIkyAm/8S6QIr7/mMISfAadf8zCg==} 154 | dependencies: 155 | '@codemirror/state': 6.2.1 156 | '@codemirror/view': 6.17.1 157 | crelt: 1.0.6 158 | dev: false 159 | 160 | /@codemirror/state@6.2.1: 161 | resolution: {integrity: sha512-RupHSZ8+OjNT38zU9fKH2sv+Dnlr8Eb8sl4NOnnqz95mCFTZUaiRP8Xv5MeeaG0px2b8Bnfe7YGwCV3nsBhbuw==} 162 | dev: false 163 | 164 | /@codemirror/view@6.17.1: 165 | resolution: {integrity: sha512-I5KVxsLbm1f56n9SUajLW0/AzMXYEZVvkiYahMw/yGl5gUjT2WquuKO39xUtiT4z/hNhGD7YuAEVPI8u0mncaQ==} 166 | dependencies: 167 | '@codemirror/state': 6.2.1 168 | style-mod: 4.1.0 169 | w3c-keyname: 2.2.8 170 | dev: false 171 | 172 | /@esbuild/android-arm64@0.18.20: 173 | resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 174 | engines: {node: '>=12'} 175 | cpu: [arm64] 176 | os: [android] 177 | requiresBuild: true 178 | dev: true 179 | optional: true 180 | 181 | /@esbuild/android-arm@0.18.20: 182 | resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 183 | engines: {node: '>=12'} 184 | cpu: [arm] 185 | os: [android] 186 | requiresBuild: true 187 | dev: true 188 | optional: true 189 | 190 | /@esbuild/android-x64@0.18.20: 191 | resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 192 | engines: {node: '>=12'} 193 | cpu: [x64] 194 | os: [android] 195 | requiresBuild: true 196 | dev: true 197 | optional: true 198 | 199 | /@esbuild/darwin-arm64@0.18.20: 200 | resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 201 | engines: {node: '>=12'} 202 | cpu: [arm64] 203 | os: [darwin] 204 | requiresBuild: true 205 | dev: true 206 | optional: true 207 | 208 | /@esbuild/darwin-x64@0.18.20: 209 | resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 210 | engines: {node: '>=12'} 211 | cpu: [x64] 212 | os: [darwin] 213 | requiresBuild: true 214 | dev: true 215 | optional: true 216 | 217 | /@esbuild/freebsd-arm64@0.18.20: 218 | resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 219 | engines: {node: '>=12'} 220 | cpu: [arm64] 221 | os: [freebsd] 222 | requiresBuild: true 223 | dev: true 224 | optional: true 225 | 226 | /@esbuild/freebsd-x64@0.18.20: 227 | resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 228 | engines: {node: '>=12'} 229 | cpu: [x64] 230 | os: [freebsd] 231 | requiresBuild: true 232 | dev: true 233 | optional: true 234 | 235 | /@esbuild/linux-arm64@0.18.20: 236 | resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 237 | engines: {node: '>=12'} 238 | cpu: [arm64] 239 | os: [linux] 240 | requiresBuild: true 241 | dev: true 242 | optional: true 243 | 244 | /@esbuild/linux-arm@0.18.20: 245 | resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 246 | engines: {node: '>=12'} 247 | cpu: [arm] 248 | os: [linux] 249 | requiresBuild: true 250 | dev: true 251 | optional: true 252 | 253 | /@esbuild/linux-ia32@0.18.20: 254 | resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 255 | engines: {node: '>=12'} 256 | cpu: [ia32] 257 | os: [linux] 258 | requiresBuild: true 259 | dev: true 260 | optional: true 261 | 262 | /@esbuild/linux-loong64@0.18.20: 263 | resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 264 | engines: {node: '>=12'} 265 | cpu: [loong64] 266 | os: [linux] 267 | requiresBuild: true 268 | dev: true 269 | optional: true 270 | 271 | /@esbuild/linux-mips64el@0.18.20: 272 | resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 273 | engines: {node: '>=12'} 274 | cpu: [mips64el] 275 | os: [linux] 276 | requiresBuild: true 277 | dev: true 278 | optional: true 279 | 280 | /@esbuild/linux-ppc64@0.18.20: 281 | resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 282 | engines: {node: '>=12'} 283 | cpu: [ppc64] 284 | os: [linux] 285 | requiresBuild: true 286 | dev: true 287 | optional: true 288 | 289 | /@esbuild/linux-riscv64@0.18.20: 290 | resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 291 | engines: {node: '>=12'} 292 | cpu: [riscv64] 293 | os: [linux] 294 | requiresBuild: true 295 | dev: true 296 | optional: true 297 | 298 | /@esbuild/linux-s390x@0.18.20: 299 | resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 300 | engines: {node: '>=12'} 301 | cpu: [s390x] 302 | os: [linux] 303 | requiresBuild: true 304 | dev: true 305 | optional: true 306 | 307 | /@esbuild/linux-x64@0.18.20: 308 | resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 309 | engines: {node: '>=12'} 310 | cpu: [x64] 311 | os: [linux] 312 | requiresBuild: true 313 | dev: true 314 | optional: true 315 | 316 | /@esbuild/netbsd-x64@0.18.20: 317 | resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 318 | engines: {node: '>=12'} 319 | cpu: [x64] 320 | os: [netbsd] 321 | requiresBuild: true 322 | dev: true 323 | optional: true 324 | 325 | /@esbuild/openbsd-x64@0.18.20: 326 | resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 327 | engines: {node: '>=12'} 328 | cpu: [x64] 329 | os: [openbsd] 330 | requiresBuild: true 331 | dev: true 332 | optional: true 333 | 334 | /@esbuild/sunos-x64@0.18.20: 335 | resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 336 | engines: {node: '>=12'} 337 | cpu: [x64] 338 | os: [sunos] 339 | requiresBuild: true 340 | dev: true 341 | optional: true 342 | 343 | /@esbuild/win32-arm64@0.18.20: 344 | resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 345 | engines: {node: '>=12'} 346 | cpu: [arm64] 347 | os: [win32] 348 | requiresBuild: true 349 | dev: true 350 | optional: true 351 | 352 | /@esbuild/win32-ia32@0.18.20: 353 | resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 354 | engines: {node: '>=12'} 355 | cpu: [ia32] 356 | os: [win32] 357 | requiresBuild: true 358 | dev: true 359 | optional: true 360 | 361 | /@esbuild/win32-x64@0.18.20: 362 | resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 363 | engines: {node: '>=12'} 364 | cpu: [x64] 365 | os: [win32] 366 | requiresBuild: true 367 | dev: true 368 | optional: true 369 | 370 | /@iconify/svelte@3.1.4(svelte@4.2.0): 371 | resolution: {integrity: sha512-YDwQlN46ka8KPRayDb7TivmkAPizfTXi6BSRNqa1IV0+byA907n8JcgQafA7FD//pW5XCuuAhVx6uRbKTo+CfA==} 372 | peerDependencies: 373 | svelte: '*' 374 | dependencies: 375 | '@iconify/types': 2.0.0 376 | svelte: 4.2.0 377 | dev: false 378 | 379 | /@iconify/types@2.0.0: 380 | resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} 381 | dev: false 382 | 383 | /@jridgewell/gen-mapping@0.3.3: 384 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 385 | engines: {node: '>=6.0.0'} 386 | dependencies: 387 | '@jridgewell/set-array': 1.1.2 388 | '@jridgewell/sourcemap-codec': 1.4.15 389 | '@jridgewell/trace-mapping': 0.3.19 390 | 391 | /@jridgewell/resolve-uri@3.1.1: 392 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 393 | engines: {node: '>=6.0.0'} 394 | 395 | /@jridgewell/set-array@1.1.2: 396 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 397 | engines: {node: '>=6.0.0'} 398 | 399 | /@jridgewell/sourcemap-codec@1.4.15: 400 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 401 | 402 | /@jridgewell/trace-mapping@0.3.19: 403 | resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==} 404 | dependencies: 405 | '@jridgewell/resolve-uri': 3.1.1 406 | '@jridgewell/sourcemap-codec': 1.4.15 407 | 408 | /@lezer/common@1.0.4: 409 | resolution: {integrity: sha512-lZHlk8p67x4aIDtJl6UQrXSOP6oi7dQR3W/geFVrENdA1JDaAJWldnVqVjPMJupbTKbzDfFcePfKttqVidS/dg==} 410 | dev: false 411 | 412 | /@lezer/highlight@1.1.6: 413 | resolution: {integrity: sha512-cmSJYa2us+r3SePpRCjN5ymCqCPv+zyXmDl0ciWtVaNiORT/MxM7ZgOMQZADD0o51qOaOg24qc/zBViOIwAjJg==} 414 | dependencies: 415 | '@lezer/common': 1.0.4 416 | dev: false 417 | 418 | /@lezer/java@1.0.4: 419 | resolution: {integrity: sha512-POc53LHf2AuNeRXjqZbXNu88GKj0KZTjjSx0L7tYeXlrEHF+3NAQx+dEwKVuCbkl0ZMtpRy2VsDYOV7KKV0oyg==} 420 | dependencies: 421 | '@lezer/highlight': 1.1.6 422 | '@lezer/lr': 1.3.10 423 | dev: false 424 | 425 | /@lezer/lr@1.3.10: 426 | resolution: {integrity: sha512-BZfVvf7Re5BIwJHlZXbJn9L8lus5EonxQghyn+ih8Wl36XMFBPTXC0KM0IdUtj9w/diPHsKlXVgL+AlX2jYJ0Q==} 427 | dependencies: 428 | '@lezer/common': 1.0.4 429 | dev: false 430 | 431 | /@macfja/serializer@1.1.2: 432 | resolution: {integrity: sha512-kqEg3Zu5/g3ivdeb+jP4rBVVdmtKXVsRwH+x9KdM2Y7d2mKLq54g+YLSgTQ4KwJvWmyHFvRq0ouX5Dr4H1Hw3Q==} 433 | dev: false 434 | 435 | /@macfja/svelte-persistent-store@2.4.0(svelte@4.2.0): 436 | resolution: {integrity: sha512-01aumH+i4iIrr8GyGtRvKlgz58llvUpys3CTva1Hf4RR5/PmshRUSkl8q3vyT4beCf4lxDHnFxEq//QJyJFVbw==} 437 | peerDependencies: 438 | svelte: ^3.0 || ^4.0 439 | dependencies: 440 | '@macfja/serializer': 1.1.2 441 | browser-cookies: 1.2.0 442 | idb-keyval: 6.2.1 443 | sjcl-codec-hex: 1.0.0 444 | sjcl-es: 2.0.0 445 | svelte: 4.2.0 446 | dev: false 447 | 448 | /@nodelib/fs.scandir@2.1.5: 449 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 450 | engines: {node: '>= 8'} 451 | dependencies: 452 | '@nodelib/fs.stat': 2.0.5 453 | run-parallel: 1.2.0 454 | dev: true 455 | 456 | /@nodelib/fs.stat@2.0.5: 457 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 458 | engines: {node: '>= 8'} 459 | dev: true 460 | 461 | /@nodelib/fs.walk@1.2.8: 462 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 463 | engines: {node: '>= 8'} 464 | dependencies: 465 | '@nodelib/fs.scandir': 2.1.5 466 | fastq: 1.15.0 467 | dev: true 468 | 469 | /@polka/url@1.0.0-next.21: 470 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 471 | dev: true 472 | 473 | /@rich_harris/svelte-split-pane@1.1.1(svelte@4.2.0): 474 | resolution: {integrity: sha512-y2RRLyrN6DCeIgwA423aAIv/T5JqQeOl2XogBQ/21DvA2IF7oyrLUtXMxmQL2va2NFdeJO6MDx6nDX5X7kau7A==} 475 | peerDependencies: 476 | svelte: ^3.54.0 477 | dependencies: 478 | svelte: 4.2.0 479 | dev: false 480 | 481 | /@sveltejs/adapter-auto@2.1.0(@sveltejs/kit@1.24.0): 482 | resolution: {integrity: sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==} 483 | peerDependencies: 484 | '@sveltejs/kit': ^1.0.0 485 | dependencies: 486 | '@sveltejs/kit': 1.24.0(svelte@4.2.0)(vite@4.4.9) 487 | import-meta-resolve: 3.0.0 488 | dev: true 489 | 490 | /@sveltejs/kit@1.24.0(svelte@4.2.0)(vite@4.4.9): 491 | resolution: {integrity: sha512-r7Gj0/VcdAIRL1yE1cJ5rurWJ5drrR7BzRv+P+NAathtvnMCi0u4FhezO7T4bj7DJdQ3TNsax3yQcrVWxh60fg==} 492 | engines: {node: ^16.14 || >=18} 493 | hasBin: true 494 | requiresBuild: true 495 | peerDependencies: 496 | svelte: ^3.54.0 || ^4.0.0-next.0 497 | vite: ^4.0.0 498 | dependencies: 499 | '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.2.0)(vite@4.4.9) 500 | '@types/cookie': 0.5.1 501 | cookie: 0.5.0 502 | devalue: 4.3.2 503 | esm-env: 1.0.0 504 | kleur: 4.1.5 505 | magic-string: 0.30.3 506 | mime: 3.0.0 507 | sade: 1.8.1 508 | set-cookie-parser: 2.6.0 509 | sirv: 2.0.3 510 | svelte: 4.2.0 511 | tiny-glob: 0.2.9 512 | undici: 5.23.0 513 | vite: 4.4.9 514 | transitivePeerDependencies: 515 | - supports-color 516 | dev: true 517 | 518 | /@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.2.0)(vite@4.4.9): 519 | resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==} 520 | engines: {node: ^14.18.0 || >= 16} 521 | peerDependencies: 522 | '@sveltejs/vite-plugin-svelte': ^2.2.0 523 | svelte: ^3.54.0 || ^4.0.0 524 | vite: ^4.0.0 525 | dependencies: 526 | '@sveltejs/vite-plugin-svelte': 2.4.5(svelte@4.2.0)(vite@4.4.9) 527 | debug: 4.3.4 528 | svelte: 4.2.0 529 | vite: 4.4.9 530 | transitivePeerDependencies: 531 | - supports-color 532 | dev: true 533 | 534 | /@sveltejs/vite-plugin-svelte@2.4.5(svelte@4.2.0)(vite@4.4.9): 535 | resolution: {integrity: sha512-UJKsFNwhzCVuiZd06jM/psscyNJNDwjQC+qIeb7GBJK9iWeQCcIyfcPWDvbCudfcJggY9jtxJeeaZH7uny93FQ==} 536 | engines: {node: ^14.18.0 || >= 16} 537 | peerDependencies: 538 | svelte: ^3.54.0 || ^4.0.0 539 | vite: ^4.0.0 540 | dependencies: 541 | '@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.4.5)(svelte@4.2.0)(vite@4.4.9) 542 | debug: 4.3.4 543 | deepmerge: 4.3.1 544 | kleur: 4.1.5 545 | magic-string: 0.30.3 546 | svelte: 4.2.0 547 | svelte-hmr: 0.15.3(svelte@4.2.0) 548 | vite: 4.4.9 549 | vitefu: 0.2.4(vite@4.4.9) 550 | transitivePeerDependencies: 551 | - supports-color 552 | dev: true 553 | 554 | /@types/cookie@0.5.1: 555 | resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} 556 | dev: true 557 | 558 | /@types/estree@1.0.1: 559 | resolution: {integrity: sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==} 560 | 561 | /@types/pug@2.0.6: 562 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 563 | dev: true 564 | 565 | /acorn@8.10.0: 566 | resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} 567 | engines: {node: '>=0.4.0'} 568 | hasBin: true 569 | 570 | /any-promise@1.3.0: 571 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 572 | dev: true 573 | 574 | /anymatch@3.1.3: 575 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 576 | engines: {node: '>= 8'} 577 | dependencies: 578 | normalize-path: 3.0.0 579 | picomatch: 2.3.1 580 | dev: true 581 | 582 | /arg@5.0.2: 583 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 584 | dev: true 585 | 586 | /aria-query@5.3.0: 587 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 588 | dependencies: 589 | dequal: 2.0.3 590 | 591 | /autoprefixer@10.4.15(postcss@8.4.29): 592 | resolution: {integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==} 593 | engines: {node: ^10 || ^12 || >=14} 594 | hasBin: true 595 | peerDependencies: 596 | postcss: ^8.1.0 597 | dependencies: 598 | browserslist: 4.21.10 599 | caniuse-lite: 1.0.30001525 600 | fraction.js: 4.3.6 601 | normalize-range: 0.1.2 602 | picocolors: 1.0.0 603 | postcss: 8.4.29 604 | postcss-value-parser: 4.2.0 605 | dev: true 606 | 607 | /axobject-query@3.2.1: 608 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 609 | dependencies: 610 | dequal: 2.0.3 611 | 612 | /balanced-match@1.0.2: 613 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 614 | dev: true 615 | 616 | /binary-extensions@2.2.0: 617 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 618 | engines: {node: '>=8'} 619 | dev: true 620 | 621 | /brace-expansion@1.1.11: 622 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 623 | dependencies: 624 | balanced-match: 1.0.2 625 | concat-map: 0.0.1 626 | dev: true 627 | 628 | /braces@3.0.2: 629 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 630 | engines: {node: '>=8'} 631 | dependencies: 632 | fill-range: 7.0.1 633 | dev: true 634 | 635 | /browser-cookies@1.2.0: 636 | resolution: {integrity: sha512-cg2WuoOJo+F+g2XjEaP8nmeRp1vDHjt7sqpKJMsTNXKrpyIBNVslYJeehvs6FEddj8usV2+qyRSBEX244yN5/g==} 637 | dev: false 638 | 639 | /browserslist@4.21.10: 640 | resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} 641 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 642 | hasBin: true 643 | dependencies: 644 | caniuse-lite: 1.0.30001525 645 | electron-to-chromium: 1.4.508 646 | node-releases: 2.0.13 647 | update-browserslist-db: 1.0.11(browserslist@4.21.10) 648 | dev: true 649 | 650 | /buffer-crc32@0.2.13: 651 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 652 | dev: true 653 | 654 | /busboy@1.6.0: 655 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 656 | engines: {node: '>=10.16.0'} 657 | dependencies: 658 | streamsearch: 1.1.0 659 | dev: true 660 | 661 | /callsites@3.1.0: 662 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 663 | engines: {node: '>=6'} 664 | dev: true 665 | 666 | /camelcase-css@2.0.1: 667 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 668 | engines: {node: '>= 6'} 669 | dev: true 670 | 671 | /caniuse-lite@1.0.30001525: 672 | resolution: {integrity: sha512-/3z+wB4icFt3r0USMwxujAqRvaD/B7rvGTsKhbhSQErVrJvkZCLhgNLJxU8MevahQVH6hCU9FsHdNUFbiwmE7Q==} 673 | dev: true 674 | 675 | /chokidar@3.5.3: 676 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 677 | engines: {node: '>= 8.10.0'} 678 | dependencies: 679 | anymatch: 3.1.3 680 | braces: 3.0.2 681 | glob-parent: 5.1.2 682 | is-binary-path: 2.1.0 683 | is-glob: 4.0.3 684 | normalize-path: 3.0.0 685 | readdirp: 3.6.0 686 | optionalDependencies: 687 | fsevents: 2.3.3 688 | dev: true 689 | 690 | /code-red@1.0.4: 691 | resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} 692 | dependencies: 693 | '@jridgewell/sourcemap-codec': 1.4.15 694 | '@types/estree': 1.0.1 695 | acorn: 8.10.0 696 | estree-walker: 3.0.3 697 | periscopic: 3.1.0 698 | 699 | /codemirror@6.0.1(@lezer/common@1.0.4): 700 | resolution: {integrity: sha512-J8j+nZ+CdWmIeFIGXEFbFPtpiYacFMDR8GlHK3IyHQJMCaVRfGx9NT+Hxivv1ckLWPvNdZqndbr/7lVhrf/Svg==} 701 | dependencies: 702 | '@codemirror/autocomplete': 6.9.0(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.17.1)(@lezer/common@1.0.4) 703 | '@codemirror/commands': 6.2.5 704 | '@codemirror/language': 6.9.0 705 | '@codemirror/lint': 6.4.1 706 | '@codemirror/search': 6.5.2 707 | '@codemirror/state': 6.2.1 708 | '@codemirror/view': 6.17.1 709 | transitivePeerDependencies: 710 | - '@lezer/common' 711 | dev: false 712 | 713 | /commander@4.1.1: 714 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 715 | engines: {node: '>= 6'} 716 | dev: true 717 | 718 | /concat-map@0.0.1: 719 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 720 | dev: true 721 | 722 | /cookie@0.5.0: 723 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 724 | engines: {node: '>= 0.6'} 725 | dev: true 726 | 727 | /crelt@1.0.6: 728 | resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} 729 | dev: false 730 | 731 | /css-tree@2.3.1: 732 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 733 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 734 | dependencies: 735 | mdn-data: 2.0.30 736 | source-map-js: 1.0.2 737 | 738 | /cssesc@3.0.0: 739 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 740 | engines: {node: '>=4'} 741 | hasBin: true 742 | dev: true 743 | 744 | /debug@4.3.4: 745 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 746 | engines: {node: '>=6.0'} 747 | peerDependencies: 748 | supports-color: '*' 749 | peerDependenciesMeta: 750 | supports-color: 751 | optional: true 752 | dependencies: 753 | ms: 2.1.2 754 | dev: true 755 | 756 | /deepmerge@4.3.1: 757 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 758 | engines: {node: '>=0.10.0'} 759 | dev: true 760 | 761 | /dequal@2.0.3: 762 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 763 | engines: {node: '>=6'} 764 | 765 | /detect-indent@6.1.0: 766 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 767 | engines: {node: '>=8'} 768 | dev: true 769 | 770 | /devalue@4.3.2: 771 | resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} 772 | dev: true 773 | 774 | /didyoumean@1.2.2: 775 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 776 | dev: true 777 | 778 | /dlv@1.1.3: 779 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 780 | dev: true 781 | 782 | /electron-to-chromium@1.4.508: 783 | resolution: {integrity: sha512-FFa8QKjQK/A5QuFr2167myhMesGrhlOBD+3cYNxO9/S4XzHEXesyTD/1/xF644gC8buFPz3ca6G1LOQD0tZrrg==} 784 | dev: true 785 | 786 | /es6-promise@3.3.1: 787 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 788 | dev: true 789 | 790 | /esbuild@0.18.20: 791 | resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 792 | engines: {node: '>=12'} 793 | hasBin: true 794 | requiresBuild: true 795 | optionalDependencies: 796 | '@esbuild/android-arm': 0.18.20 797 | '@esbuild/android-arm64': 0.18.20 798 | '@esbuild/android-x64': 0.18.20 799 | '@esbuild/darwin-arm64': 0.18.20 800 | '@esbuild/darwin-x64': 0.18.20 801 | '@esbuild/freebsd-arm64': 0.18.20 802 | '@esbuild/freebsd-x64': 0.18.20 803 | '@esbuild/linux-arm': 0.18.20 804 | '@esbuild/linux-arm64': 0.18.20 805 | '@esbuild/linux-ia32': 0.18.20 806 | '@esbuild/linux-loong64': 0.18.20 807 | '@esbuild/linux-mips64el': 0.18.20 808 | '@esbuild/linux-ppc64': 0.18.20 809 | '@esbuild/linux-riscv64': 0.18.20 810 | '@esbuild/linux-s390x': 0.18.20 811 | '@esbuild/linux-x64': 0.18.20 812 | '@esbuild/netbsd-x64': 0.18.20 813 | '@esbuild/openbsd-x64': 0.18.20 814 | '@esbuild/sunos-x64': 0.18.20 815 | '@esbuild/win32-arm64': 0.18.20 816 | '@esbuild/win32-ia32': 0.18.20 817 | '@esbuild/win32-x64': 0.18.20 818 | dev: true 819 | 820 | /escalade@3.1.1: 821 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 822 | engines: {node: '>=6'} 823 | dev: true 824 | 825 | /esm-env@1.0.0: 826 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 827 | dev: true 828 | 829 | /estree-walker@3.0.3: 830 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 831 | dependencies: 832 | '@types/estree': 1.0.1 833 | 834 | /fast-glob@3.3.1: 835 | resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} 836 | engines: {node: '>=8.6.0'} 837 | dependencies: 838 | '@nodelib/fs.stat': 2.0.5 839 | '@nodelib/fs.walk': 1.2.8 840 | glob-parent: 5.1.2 841 | merge2: 1.4.1 842 | micromatch: 4.0.5 843 | dev: true 844 | 845 | /fastq@1.15.0: 846 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 847 | dependencies: 848 | reusify: 1.0.4 849 | dev: true 850 | 851 | /fill-range@7.0.1: 852 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 853 | engines: {node: '>=8'} 854 | dependencies: 855 | to-regex-range: 5.0.1 856 | dev: true 857 | 858 | /fraction.js@4.3.6: 859 | resolution: {integrity: sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==} 860 | dev: true 861 | 862 | /fs.realpath@1.0.0: 863 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 864 | dev: true 865 | 866 | /fsevents@2.3.3: 867 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 868 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 869 | os: [darwin] 870 | requiresBuild: true 871 | dev: true 872 | optional: true 873 | 874 | /function-bind@1.1.1: 875 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 876 | dev: true 877 | 878 | /glob-parent@5.1.2: 879 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 880 | engines: {node: '>= 6'} 881 | dependencies: 882 | is-glob: 4.0.3 883 | dev: true 884 | 885 | /glob-parent@6.0.2: 886 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 887 | engines: {node: '>=10.13.0'} 888 | dependencies: 889 | is-glob: 4.0.3 890 | dev: true 891 | 892 | /glob@7.1.6: 893 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 894 | dependencies: 895 | fs.realpath: 1.0.0 896 | inflight: 1.0.6 897 | inherits: 2.0.4 898 | minimatch: 3.1.2 899 | once: 1.4.0 900 | path-is-absolute: 1.0.1 901 | dev: true 902 | 903 | /glob@7.2.3: 904 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 905 | dependencies: 906 | fs.realpath: 1.0.0 907 | inflight: 1.0.6 908 | inherits: 2.0.4 909 | minimatch: 3.1.2 910 | once: 1.4.0 911 | path-is-absolute: 1.0.1 912 | dev: true 913 | 914 | /globalyzer@0.1.0: 915 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 916 | dev: true 917 | 918 | /globrex@0.1.2: 919 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 920 | dev: true 921 | 922 | /graceful-fs@4.2.11: 923 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 924 | dev: true 925 | 926 | /has@1.0.3: 927 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 928 | engines: {node: '>= 0.4.0'} 929 | dependencies: 930 | function-bind: 1.1.1 931 | dev: true 932 | 933 | /idb-keyval@6.2.1: 934 | resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} 935 | dev: false 936 | 937 | /import-fresh@3.3.0: 938 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 939 | engines: {node: '>=6'} 940 | dependencies: 941 | parent-module: 1.0.1 942 | resolve-from: 4.0.0 943 | dev: true 944 | 945 | /import-meta-resolve@3.0.0: 946 | resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} 947 | dev: true 948 | 949 | /inflight@1.0.6: 950 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 951 | dependencies: 952 | once: 1.4.0 953 | wrappy: 1.0.2 954 | dev: true 955 | 956 | /inherits@2.0.4: 957 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 958 | dev: true 959 | 960 | /is-binary-path@2.1.0: 961 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 962 | engines: {node: '>=8'} 963 | dependencies: 964 | binary-extensions: 2.2.0 965 | dev: true 966 | 967 | /is-core-module@2.13.0: 968 | resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} 969 | dependencies: 970 | has: 1.0.3 971 | dev: true 972 | 973 | /is-extglob@2.1.1: 974 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 975 | engines: {node: '>=0.10.0'} 976 | dev: true 977 | 978 | /is-glob@4.0.3: 979 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 980 | engines: {node: '>=0.10.0'} 981 | dependencies: 982 | is-extglob: 2.1.1 983 | dev: true 984 | 985 | /is-number@7.0.0: 986 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 987 | engines: {node: '>=0.12.0'} 988 | dev: true 989 | 990 | /is-reference@3.0.1: 991 | resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==} 992 | dependencies: 993 | '@types/estree': 1.0.1 994 | 995 | /jiti@1.19.3: 996 | resolution: {integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==} 997 | hasBin: true 998 | dev: true 999 | 1000 | /kleur@4.1.5: 1001 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1002 | engines: {node: '>=6'} 1003 | dev: true 1004 | 1005 | /lilconfig@2.1.0: 1006 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 1007 | engines: {node: '>=10'} 1008 | dev: true 1009 | 1010 | /lines-and-columns@1.2.4: 1011 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1012 | dev: true 1013 | 1014 | /locate-character@3.0.0: 1015 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 1016 | 1017 | /lz-string@1.5.0: 1018 | resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} 1019 | hasBin: true 1020 | dev: false 1021 | 1022 | /magic-string@0.27.0: 1023 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 1024 | engines: {node: '>=12'} 1025 | dependencies: 1026 | '@jridgewell/sourcemap-codec': 1.4.15 1027 | dev: true 1028 | 1029 | /magic-string@0.30.3: 1030 | resolution: {integrity: sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==} 1031 | engines: {node: '>=12'} 1032 | dependencies: 1033 | '@jridgewell/sourcemap-codec': 1.4.15 1034 | 1035 | /mdn-data@2.0.30: 1036 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 1037 | 1038 | /merge2@1.4.1: 1039 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1040 | engines: {node: '>= 8'} 1041 | dev: true 1042 | 1043 | /micromatch@4.0.5: 1044 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1045 | engines: {node: '>=8.6'} 1046 | dependencies: 1047 | braces: 3.0.2 1048 | picomatch: 2.3.1 1049 | dev: true 1050 | 1051 | /mime@3.0.0: 1052 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1053 | engines: {node: '>=10.0.0'} 1054 | hasBin: true 1055 | dev: true 1056 | 1057 | /min-indent@1.0.1: 1058 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 1059 | engines: {node: '>=4'} 1060 | dev: true 1061 | 1062 | /minimatch@3.1.2: 1063 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1064 | dependencies: 1065 | brace-expansion: 1.1.11 1066 | dev: true 1067 | 1068 | /minimist@1.2.8: 1069 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1070 | dev: true 1071 | 1072 | /mkdirp@0.5.6: 1073 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 1074 | hasBin: true 1075 | dependencies: 1076 | minimist: 1.2.8 1077 | dev: true 1078 | 1079 | /mri@1.2.0: 1080 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 1081 | engines: {node: '>=4'} 1082 | dev: true 1083 | 1084 | /mrmime@1.0.1: 1085 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 1086 | engines: {node: '>=10'} 1087 | dev: true 1088 | 1089 | /ms@2.1.2: 1090 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1091 | dev: true 1092 | 1093 | /mz@2.7.0: 1094 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 1095 | dependencies: 1096 | any-promise: 1.3.0 1097 | object-assign: 4.1.1 1098 | thenify-all: 1.6.0 1099 | dev: true 1100 | 1101 | /nanoid@3.3.6: 1102 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 1103 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1104 | hasBin: true 1105 | dev: true 1106 | 1107 | /node-releases@2.0.13: 1108 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 1109 | dev: true 1110 | 1111 | /normalize-path@3.0.0: 1112 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1113 | engines: {node: '>=0.10.0'} 1114 | dev: true 1115 | 1116 | /normalize-range@0.1.2: 1117 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 1118 | engines: {node: '>=0.10.0'} 1119 | dev: true 1120 | 1121 | /object-assign@4.1.1: 1122 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 1123 | engines: {node: '>=0.10.0'} 1124 | dev: true 1125 | 1126 | /object-hash@3.0.0: 1127 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 1128 | engines: {node: '>= 6'} 1129 | dev: true 1130 | 1131 | /once@1.4.0: 1132 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1133 | dependencies: 1134 | wrappy: 1.0.2 1135 | dev: true 1136 | 1137 | /parent-module@1.0.1: 1138 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 1139 | engines: {node: '>=6'} 1140 | dependencies: 1141 | callsites: 3.1.0 1142 | dev: true 1143 | 1144 | /path-is-absolute@1.0.1: 1145 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1146 | engines: {node: '>=0.10.0'} 1147 | dev: true 1148 | 1149 | /path-parse@1.0.7: 1150 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1151 | dev: true 1152 | 1153 | /periscopic@3.1.0: 1154 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 1155 | dependencies: 1156 | '@types/estree': 1.0.1 1157 | estree-walker: 3.0.3 1158 | is-reference: 3.0.1 1159 | 1160 | /picocolors@1.0.0: 1161 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1162 | dev: true 1163 | 1164 | /picomatch@2.3.1: 1165 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1166 | engines: {node: '>=8.6'} 1167 | dev: true 1168 | 1169 | /pify@2.3.0: 1170 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 1171 | engines: {node: '>=0.10.0'} 1172 | dev: true 1173 | 1174 | /pirates@4.0.6: 1175 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1176 | engines: {node: '>= 6'} 1177 | dev: true 1178 | 1179 | /postcss-import@15.1.0(postcss@8.4.29): 1180 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 1181 | engines: {node: '>=14.0.0'} 1182 | peerDependencies: 1183 | postcss: ^8.0.0 1184 | dependencies: 1185 | postcss: 8.4.29 1186 | postcss-value-parser: 4.2.0 1187 | read-cache: 1.0.0 1188 | resolve: 1.22.4 1189 | dev: true 1190 | 1191 | /postcss-js@4.0.1(postcss@8.4.29): 1192 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 1193 | engines: {node: ^12 || ^14 || >= 16} 1194 | peerDependencies: 1195 | postcss: ^8.4.21 1196 | dependencies: 1197 | camelcase-css: 2.0.1 1198 | postcss: 8.4.29 1199 | dev: true 1200 | 1201 | /postcss-load-config@4.0.1(postcss@8.4.29): 1202 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} 1203 | engines: {node: '>= 14'} 1204 | peerDependencies: 1205 | postcss: '>=8.0.9' 1206 | ts-node: '>=9.0.0' 1207 | peerDependenciesMeta: 1208 | postcss: 1209 | optional: true 1210 | ts-node: 1211 | optional: true 1212 | dependencies: 1213 | lilconfig: 2.1.0 1214 | postcss: 8.4.29 1215 | yaml: 2.3.2 1216 | dev: true 1217 | 1218 | /postcss-nested@6.0.1(postcss@8.4.29): 1219 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 1220 | engines: {node: '>=12.0'} 1221 | peerDependencies: 1222 | postcss: ^8.2.14 1223 | dependencies: 1224 | postcss: 8.4.29 1225 | postcss-selector-parser: 6.0.13 1226 | dev: true 1227 | 1228 | /postcss-selector-parser@6.0.13: 1229 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 1230 | engines: {node: '>=4'} 1231 | dependencies: 1232 | cssesc: 3.0.0 1233 | util-deprecate: 1.0.2 1234 | dev: true 1235 | 1236 | /postcss-value-parser@4.2.0: 1237 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 1238 | dev: true 1239 | 1240 | /postcss@8.4.29: 1241 | resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==} 1242 | engines: {node: ^10 || ^12 || >=14} 1243 | dependencies: 1244 | nanoid: 3.3.6 1245 | picocolors: 1.0.0 1246 | source-map-js: 1.0.2 1247 | dev: true 1248 | 1249 | /prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@4.2.0): 1250 | resolution: {integrity: sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==} 1251 | peerDependencies: 1252 | prettier: ^1.16.4 || ^2.0.0 1253 | svelte: ^3.2.0 || ^4.0.0-next.0 1254 | dependencies: 1255 | prettier: 2.8.8 1256 | svelte: 4.2.0 1257 | dev: true 1258 | 1259 | /prettier@2.8.8: 1260 | resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} 1261 | engines: {node: '>=10.13.0'} 1262 | hasBin: true 1263 | dev: true 1264 | 1265 | /queue-microtask@1.2.3: 1266 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1267 | dev: true 1268 | 1269 | /read-cache@1.0.0: 1270 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 1271 | dependencies: 1272 | pify: 2.3.0 1273 | dev: true 1274 | 1275 | /readdirp@3.6.0: 1276 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1277 | engines: {node: '>=8.10.0'} 1278 | dependencies: 1279 | picomatch: 2.3.1 1280 | dev: true 1281 | 1282 | /resolve-from@4.0.0: 1283 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 1284 | engines: {node: '>=4'} 1285 | dev: true 1286 | 1287 | /resolve@1.22.4: 1288 | resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} 1289 | hasBin: true 1290 | dependencies: 1291 | is-core-module: 2.13.0 1292 | path-parse: 1.0.7 1293 | supports-preserve-symlinks-flag: 1.0.0 1294 | dev: true 1295 | 1296 | /reusify@1.0.4: 1297 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1298 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1299 | dev: true 1300 | 1301 | /rimraf@2.7.1: 1302 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 1303 | hasBin: true 1304 | dependencies: 1305 | glob: 7.2.3 1306 | dev: true 1307 | 1308 | /rollup@3.28.1: 1309 | resolution: {integrity: sha512-R9OMQmIHJm9znrU3m3cpE8uhN0fGdXiawME7aZIpQqvpS/85+Vt1Hq1/yVIcYfOmaQiHjvXkQAoJukvLpau6Yw==} 1310 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 1311 | hasBin: true 1312 | optionalDependencies: 1313 | fsevents: 2.3.3 1314 | dev: true 1315 | 1316 | /run-parallel@1.2.0: 1317 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1318 | dependencies: 1319 | queue-microtask: 1.2.3 1320 | dev: true 1321 | 1322 | /sade@1.8.1: 1323 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 1324 | engines: {node: '>=6'} 1325 | dependencies: 1326 | mri: 1.2.0 1327 | dev: true 1328 | 1329 | /sander@0.5.1: 1330 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 1331 | dependencies: 1332 | es6-promise: 3.3.1 1333 | graceful-fs: 4.2.11 1334 | mkdirp: 0.5.6 1335 | rimraf: 2.7.1 1336 | dev: true 1337 | 1338 | /set-cookie-parser@2.6.0: 1339 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 1340 | dev: true 1341 | 1342 | /sirv@2.0.3: 1343 | resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} 1344 | engines: {node: '>= 10'} 1345 | dependencies: 1346 | '@polka/url': 1.0.0-next.21 1347 | mrmime: 1.0.1 1348 | totalist: 3.0.1 1349 | dev: true 1350 | 1351 | /sjcl-bit-array@1.0.0: 1352 | resolution: {integrity: sha512-xoR134YJa7AHToLqCWuLYGpAdcBuLbSgwXe9c5HTIN4vr5TILXO/jVF8pLeXDhC7JTOvpmXUkiOupawVNTZVdQ==} 1353 | dev: false 1354 | 1355 | /sjcl-codec-hex@1.0.0: 1356 | resolution: {integrity: sha512-lBBjqky1BEH+WZdABR/iSl2Pu3HO8n8r2D7nkzYLZfcR9ke4kUGMvO0ztRkla5oi4Esbc9pOlBtyGeMjYOU0ng==} 1357 | dependencies: 1358 | sjcl-bit-array: 1.0.0 1359 | dev: false 1360 | 1361 | /sjcl-es@2.0.0: 1362 | resolution: {integrity: sha512-P8O+4pAt95XqmTlvvPdbmBggjAgSE0LQnhSEYUKYKepN176b/8K9zcVrrqhuLu5EUQyeCYy/56J9FzxvzvMavg==} 1363 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1364 | dev: false 1365 | 1366 | /sorcery@0.11.0: 1367 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 1368 | hasBin: true 1369 | dependencies: 1370 | '@jridgewell/sourcemap-codec': 1.4.15 1371 | buffer-crc32: 0.2.13 1372 | minimist: 1.2.8 1373 | sander: 0.5.1 1374 | dev: true 1375 | 1376 | /source-map-js@1.0.2: 1377 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 1378 | engines: {node: '>=0.10.0'} 1379 | 1380 | /streamsearch@1.1.0: 1381 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 1382 | engines: {node: '>=10.0.0'} 1383 | dev: true 1384 | 1385 | /strip-indent@3.0.0: 1386 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 1387 | engines: {node: '>=8'} 1388 | dependencies: 1389 | min-indent: 1.0.1 1390 | dev: true 1391 | 1392 | /style-mod@4.1.0: 1393 | resolution: {integrity: sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==} 1394 | dev: false 1395 | 1396 | /sucrase@3.34.0: 1397 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} 1398 | engines: {node: '>=8'} 1399 | hasBin: true 1400 | dependencies: 1401 | '@jridgewell/gen-mapping': 0.3.3 1402 | commander: 4.1.1 1403 | glob: 7.1.6 1404 | lines-and-columns: 1.2.4 1405 | mz: 2.7.0 1406 | pirates: 4.0.6 1407 | ts-interface-checker: 0.1.13 1408 | dev: true 1409 | 1410 | /supports-preserve-symlinks-flag@1.0.0: 1411 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 1412 | engines: {node: '>= 0.4'} 1413 | dev: true 1414 | 1415 | /svelte-check@3.5.1(postcss@8.4.29)(svelte@4.2.0): 1416 | resolution: {integrity: sha512-+Zb4iHxAhdUtcUg/WJPRjlS1RJalIsWAe9Mz6G1zyznSs7dDkT7VUBdXc3q7Iwg49O/VrZgyJRvOJkjuBfKjFA==} 1417 | hasBin: true 1418 | peerDependencies: 1419 | svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 1420 | dependencies: 1421 | '@jridgewell/trace-mapping': 0.3.19 1422 | chokidar: 3.5.3 1423 | fast-glob: 3.3.1 1424 | import-fresh: 3.3.0 1425 | picocolors: 1.0.0 1426 | sade: 1.8.1 1427 | svelte: 4.2.0 1428 | svelte-preprocess: 5.0.4(postcss@8.4.29)(svelte@4.2.0)(typescript@5.2.2) 1429 | typescript: 5.2.2 1430 | transitivePeerDependencies: 1431 | - '@babel/core' 1432 | - coffeescript 1433 | - less 1434 | - postcss 1435 | - postcss-load-config 1436 | - pug 1437 | - sass 1438 | - stylus 1439 | - sugarss 1440 | dev: true 1441 | 1442 | /svelte-hmr@0.15.3(svelte@4.2.0): 1443 | resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==} 1444 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 1445 | peerDependencies: 1446 | svelte: ^3.19.0 || ^4.0.0 1447 | dependencies: 1448 | svelte: 4.2.0 1449 | dev: true 1450 | 1451 | /svelte-preprocess@5.0.4(postcss@8.4.29)(svelte@4.2.0)(typescript@5.2.2): 1452 | resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} 1453 | engines: {node: '>= 14.10.0'} 1454 | requiresBuild: true 1455 | peerDependencies: 1456 | '@babel/core': ^7.10.2 1457 | coffeescript: ^2.5.1 1458 | less: ^3.11.3 || ^4.0.0 1459 | postcss: ^7 || ^8 1460 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 1461 | pug: ^3.0.0 1462 | sass: ^1.26.8 1463 | stylus: ^0.55.0 1464 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 1465 | svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 1466 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 1467 | peerDependenciesMeta: 1468 | '@babel/core': 1469 | optional: true 1470 | coffeescript: 1471 | optional: true 1472 | less: 1473 | optional: true 1474 | postcss: 1475 | optional: true 1476 | postcss-load-config: 1477 | optional: true 1478 | pug: 1479 | optional: true 1480 | sass: 1481 | optional: true 1482 | stylus: 1483 | optional: true 1484 | sugarss: 1485 | optional: true 1486 | typescript: 1487 | optional: true 1488 | dependencies: 1489 | '@types/pug': 2.0.6 1490 | detect-indent: 6.1.0 1491 | magic-string: 0.27.0 1492 | postcss: 8.4.29 1493 | sorcery: 0.11.0 1494 | strip-indent: 3.0.0 1495 | svelte: 4.2.0 1496 | typescript: 5.2.2 1497 | dev: true 1498 | 1499 | /svelte-relative-time@0.0.4(svelte@4.2.0): 1500 | resolution: {integrity: sha512-R6z6E0BqgqbSdhB40rRaqN9oAWLtiAK7b3G/7BxAQztn8q8+oa1mpDljvtSAW4xb471HA4tn8R+9/v/JhpeFtA==} 1501 | peerDependencies: 1502 | svelte: ^3.54.0 || ^4.0.0 1503 | dependencies: 1504 | svelte: 4.2.0 1505 | dev: false 1506 | 1507 | /svelte@4.2.0: 1508 | resolution: {integrity: sha512-kVsdPjDbLrv74SmLSUzAsBGquMs4MPgWGkGLpH+PjOYnFOziAvENVzgJmyOCV2gntxE32aNm8/sqNKD6LbIpeQ==} 1509 | engines: {node: '>=16'} 1510 | dependencies: 1511 | '@ampproject/remapping': 2.2.1 1512 | '@jridgewell/sourcemap-codec': 1.4.15 1513 | '@jridgewell/trace-mapping': 0.3.19 1514 | acorn: 8.10.0 1515 | aria-query: 5.3.0 1516 | axobject-query: 3.2.1 1517 | code-red: 1.0.4 1518 | css-tree: 2.3.1 1519 | estree-walker: 3.0.3 1520 | is-reference: 3.0.1 1521 | locate-character: 3.0.0 1522 | magic-string: 0.30.3 1523 | periscopic: 3.1.0 1524 | 1525 | /tailwindcss@3.3.3: 1526 | resolution: {integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==} 1527 | engines: {node: '>=14.0.0'} 1528 | hasBin: true 1529 | dependencies: 1530 | '@alloc/quick-lru': 5.2.0 1531 | arg: 5.0.2 1532 | chokidar: 3.5.3 1533 | didyoumean: 1.2.2 1534 | dlv: 1.1.3 1535 | fast-glob: 3.3.1 1536 | glob-parent: 6.0.2 1537 | is-glob: 4.0.3 1538 | jiti: 1.19.3 1539 | lilconfig: 2.1.0 1540 | micromatch: 4.0.5 1541 | normalize-path: 3.0.0 1542 | object-hash: 3.0.0 1543 | picocolors: 1.0.0 1544 | postcss: 8.4.29 1545 | postcss-import: 15.1.0(postcss@8.4.29) 1546 | postcss-js: 4.0.1(postcss@8.4.29) 1547 | postcss-load-config: 4.0.1(postcss@8.4.29) 1548 | postcss-nested: 6.0.1(postcss@8.4.29) 1549 | postcss-selector-parser: 6.0.13 1550 | resolve: 1.22.4 1551 | sucrase: 3.34.0 1552 | transitivePeerDependencies: 1553 | - ts-node 1554 | dev: true 1555 | 1556 | /thememirror@2.0.1(@codemirror/language@6.9.0)(@codemirror/state@6.2.1)(@codemirror/view@6.17.1): 1557 | resolution: {integrity: sha512-d5i6FVvWWPkwrm4cHLI3t9AT1OrkAt7Ig8dtdYSofgF7C/eiyNuq6zQzSTusWTde3jpW9WLvA9J/fzNKMUsd0w==} 1558 | peerDependencies: 1559 | '@codemirror/language': ^6.0.0 1560 | '@codemirror/state': ^6.0.0 1561 | '@codemirror/view': ^6.0.0 1562 | dependencies: 1563 | '@codemirror/language': 6.9.0 1564 | '@codemirror/state': 6.2.1 1565 | '@codemirror/view': 6.17.1 1566 | dev: false 1567 | 1568 | /thenify-all@1.6.0: 1569 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 1570 | engines: {node: '>=0.8'} 1571 | dependencies: 1572 | thenify: 3.3.1 1573 | dev: true 1574 | 1575 | /thenify@3.3.1: 1576 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 1577 | dependencies: 1578 | any-promise: 1.3.0 1579 | dev: true 1580 | 1581 | /tiny-glob@0.2.9: 1582 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 1583 | dependencies: 1584 | globalyzer: 0.1.0 1585 | globrex: 0.1.2 1586 | dev: true 1587 | 1588 | /to-regex-range@5.0.1: 1589 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1590 | engines: {node: '>=8.0'} 1591 | dependencies: 1592 | is-number: 7.0.0 1593 | dev: true 1594 | 1595 | /totalist@3.0.1: 1596 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 1597 | engines: {node: '>=6'} 1598 | dev: true 1599 | 1600 | /ts-interface-checker@0.1.13: 1601 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 1602 | dev: true 1603 | 1604 | /tslib@2.6.2: 1605 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 1606 | dev: true 1607 | 1608 | /typescript@5.2.2: 1609 | resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} 1610 | engines: {node: '>=14.17'} 1611 | hasBin: true 1612 | dev: true 1613 | 1614 | /undici@5.23.0: 1615 | resolution: {integrity: sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==} 1616 | engines: {node: '>=14.0'} 1617 | dependencies: 1618 | busboy: 1.6.0 1619 | dev: true 1620 | 1621 | /update-browserslist-db@1.0.11(browserslist@4.21.10): 1622 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 1623 | hasBin: true 1624 | peerDependencies: 1625 | browserslist: '>= 4.21.0' 1626 | dependencies: 1627 | browserslist: 4.21.10 1628 | escalade: 3.1.1 1629 | picocolors: 1.0.0 1630 | dev: true 1631 | 1632 | /util-deprecate@1.0.2: 1633 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 1634 | dev: true 1635 | 1636 | /vite@4.4.9: 1637 | resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} 1638 | engines: {node: ^14.18.0 || >=16.0.0} 1639 | hasBin: true 1640 | peerDependencies: 1641 | '@types/node': '>= 14' 1642 | less: '*' 1643 | lightningcss: ^1.21.0 1644 | sass: '*' 1645 | stylus: '*' 1646 | sugarss: '*' 1647 | terser: ^5.4.0 1648 | peerDependenciesMeta: 1649 | '@types/node': 1650 | optional: true 1651 | less: 1652 | optional: true 1653 | lightningcss: 1654 | optional: true 1655 | sass: 1656 | optional: true 1657 | stylus: 1658 | optional: true 1659 | sugarss: 1660 | optional: true 1661 | terser: 1662 | optional: true 1663 | dependencies: 1664 | esbuild: 0.18.20 1665 | postcss: 8.4.29 1666 | rollup: 3.28.1 1667 | optionalDependencies: 1668 | fsevents: 2.3.3 1669 | dev: true 1670 | 1671 | /vitefu@0.2.4(vite@4.4.9): 1672 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 1673 | peerDependencies: 1674 | vite: ^3.0.0 || ^4.0.0 1675 | peerDependenciesMeta: 1676 | vite: 1677 | optional: true 1678 | dependencies: 1679 | vite: 4.4.9 1680 | dev: true 1681 | 1682 | /w3c-keyname@2.2.8: 1683 | resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} 1684 | dev: false 1685 | 1686 | /wrappy@1.0.2: 1687 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1688 | dev: true 1689 | 1690 | /yaml@2.3.2: 1691 | resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} 1692 | engines: {node: '>= 14'} 1693 | dev: true 1694 | 1695 | /zod@3.22.2: 1696 | resolution: {integrity: sha512-wvWkphh5WQsJbVk1tbx1l1Ly4yg+XecD+Mq280uBGt9wa5BKSWf4Mhp6GmrkPixhMxmabYY7RbzlwVP32pbGCg==} 1697 | dev: false 1698 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {} 5 | } 6 | }; 7 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | .dark { 6 | color-scheme: dark; 7 | } 8 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | import type { Session } from 'svelte-kit-cookie-session'; 2 | 3 | type SessionData = { 4 | userId?: number; 5 | }; 6 | 7 | // See https://kit.svelte.dev/docs/types#app 8 | // for information about these interfaces 9 | declare global { 10 | namespace App { 11 | // interface Error {} 12 | interface Locals { 13 | session: Session; 14 | } 15 | interface PageData { 16 | // can add any properties here, return it from your root layout 17 | session: SessionData; 18 | } 19 | // interface Platform {} 20 | } 21 | 22 | interface Window { 23 | lwjglCanvasElement: HTMLCanvasElement; 24 | } 25 | } 26 | 27 | export {}; 28 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 16 | %sveltekit.head% 17 | 18 | 19 |
%sveltekit.body%
20 | 21 | 22 | -------------------------------------------------------------------------------- /src/lib/CheerpJ.svelte: -------------------------------------------------------------------------------- 1 | 117 | -------------------------------------------------------------------------------- /src/lib/Loading.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 |
10 | Loading 11 |
12 | -------------------------------------------------------------------------------- /src/lib/Repl.svelte: -------------------------------------------------------------------------------- 1 | 32 | 33 | 34 | 35 |
36 | {#if enableMenu} 37 | 38 | {/if} 39 |
40 | {#if enableSidebar} 41 | 42 | {/if} 43 |
44 | 45 |
46 |
47 | 48 |
49 | 50 | 51 |
52 |
53 | 54 |
55 |
56 |
57 |
58 |
59 | -------------------------------------------------------------------------------- /src/lib/assets/cheerpj/logotype-grey.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/lib/assets/cheerpj/logotype-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | 12 | 13 | 14 | 16 | 18 | 21 | 24 | 25 | 28 | 30 | 32 | 36 | 40 | 41 | 44 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /src/lib/assets/loading-spinner-white.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/lib/assets/loading-spinner.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/lib/cheerpj.d.ts: -------------------------------------------------------------------------------- 1 | const cheerpjInit: (options?: object) => Promise; 2 | const cheerpjRunMain: any; 3 | const cheerpjRunJar: any; 4 | const cheerpjRunLibrary: any; 5 | const cheerpjCreateDisplay: any; 6 | const cjFileBlob: any; 7 | const cjGetRuntimeResources: any; 8 | const cjGetProguardConfiguration: any; 9 | const dumpMethod: any; 10 | const dumpClass: any; 11 | const dumpAllThreads: any; 12 | const cheerpjAddStringFile: any; 13 | -------------------------------------------------------------------------------- /src/lib/compress-fiddle.ts: -------------------------------------------------------------------------------- 1 | import lz from 'lz-string'; 2 | import z from 'zod'; 3 | 4 | const fiddle = z.object({ 5 | files: z.array( 6 | z.object({ 7 | path: z.string(), 8 | content: z.string() 9 | }) 10 | ), 11 | title: z.string(), 12 | updated: z.coerce.date().optional() 13 | }); 14 | 15 | export type Fiddle = z.infer; 16 | 17 | export function compress(data: Fiddle): string { 18 | return lz.compressToEncodedURIComponent(JSON.stringify(data)); 19 | } 20 | 21 | export function decompress(str: string): Fiddle { 22 | return fiddle.parse(JSON.parse(lz.decompressFromEncodedURIComponent(str))); 23 | } 24 | 25 | export const defaultFiddle: Fiddle = { 26 | title: '', 27 | files: [ 28 | { 29 | path: 'Main.java', 30 | content: `package fiddle; 31 | 32 | class Main { 33 | public static void main(String[] args) { 34 | System.out.println("Hello, World!"); 35 | } 36 | } 37 | ` 38 | } 39 | ] 40 | }; 41 | -------------------------------------------------------------------------------- /src/lib/repl/Editor.svelte: -------------------------------------------------------------------------------- 1 | 156 | 157 |
158 | -------------------------------------------------------------------------------- /src/lib/repl/FileTab.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 | 70 | {/if} 71 | 72 | -------------------------------------------------------------------------------- /src/lib/repl/FileTabs.svelte: -------------------------------------------------------------------------------- 1 | 16 | 17 |
18 | {#each $files as file, i} 19 | 0} /> 20 | {/each} 21 | 46 |
47 | -------------------------------------------------------------------------------- /src/lib/repl/Menu.svelte: -------------------------------------------------------------------------------- 1 | 43 | 44 | 45 | 46 |
49 | 52 | 53 |
54 | 55 | {#if $fiddleUpdated} 56 |
57 | 58 |
59 | {/if} 60 |
61 | 62 |
    63 | {#if showShareMessage} 64 |
  • 69 | URL copied to clipboard 70 |
  • 71 | {/if} 72 | 73 | {#if !$autoRun} 74 |
  • 75 | 82 |
  • 83 | {/if} 84 |
  • 85 | 96 |
  • 97 |
  • 98 | 99 |
  • 100 |
101 |
102 | -------------------------------------------------------------------------------- /src/lib/repl/Output.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 |
11 | 12 |
13 | 14 |
15 |
16 |
17 |
18 | Console 19 | 20 | 26 |
27 | 28 | 29 |
31 |
32 |
33 |
Result
34 |
35 | 36 |
37 |
38 |
39 | 40 |
41 | 42 | 43 | 44 | 45 |
46 | 47 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /src/lib/repl/Sidebar.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | 87 | -------------------------------------------------------------------------------- /src/lib/repl/codemirror.css: -------------------------------------------------------------------------------- 1 | .codemirror-wrapper { 2 | height: 100%; 3 | } 4 | 5 | .cm-editor { 6 | height: 100%; 7 | } 8 | 9 | .cm-editor .cm-content { 10 | font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 11 | 'Courier New', monospace; /* font-mono */ 12 | font-size: 13px; 13 | } 14 | 15 | .dark .cm-editor, 16 | .dark .cm-gutters { 17 | background-color: rgb(28 25 23 / 1); /* bg-stone-900 */ 18 | } 19 | 20 | .cm-gutters { 21 | border-right: 0 !important; 22 | } 23 | -------------------------------------------------------------------------------- /src/lib/repl/linter.ts: -------------------------------------------------------------------------------- 1 | import { linter, type Diagnostic } from '@codemirror/lint'; 2 | import { Compartment, Facet } from '@codemirror/state'; 3 | import type { File } from './state'; 4 | 5 | const linterService = linter( 6 | (view) => { 7 | return view.state.facet(diagnostic).flat(); 8 | }, 9 | { 10 | needsRefresh: (update) => update.startState.facet(diagnostic) !== update.state.facet(diagnostic) 11 | } 12 | ); 13 | 14 | export const diagnostic = Facet.define({ 15 | enables: linterService 16 | }); 17 | 18 | export const compartment = new Compartment(); 19 | 20 | export function parseCompileLog(log: string, files: File[]): Diagnostic[][] { 21 | const logLines = log.split('\n'); 22 | const diagnostics: Diagnostic[][] = []; 23 | const re = /^\/str\/([^:]+):(\d+): ([^:]+): ([^:]+)$/; 24 | 25 | const filePathToIndex = new Map(); 26 | for (let i = 0; i < files.length; i++) { 27 | filePathToIndex.set(files[i].path, i); 28 | diagnostics.push([]); 29 | } 30 | 31 | for (let i = 0; i < logLines.length; i++) { 32 | const line = logLines[i]; 33 | const groups = line.match(re); 34 | if (!groups) continue; 35 | const [, path, lineNoStr, severity, message] = groups; 36 | const fileIndex = filePathToIndex.get(path); 37 | if (typeof fileIndex !== 'number') continue; 38 | const lineNo = parseInt(lineNoStr); 39 | 40 | // Find index that the line starts in the source file 41 | const sourceFile = files[fileIndex]; 42 | let pos = 0; 43 | for (let linesLeft = lineNo; linesLeft > 1 && pos < sourceFile.content.length; pos++) { 44 | if (sourceFile.content[pos] === '\n') linesLeft--; 45 | } 46 | 47 | // Column; position of "^" 48 | pos += logLines[i + 2].length - 1; 49 | 50 | diagnostics[fileIndex].push({ 51 | from: pos, 52 | to: pos + 1, 53 | severity: severity === 'error' ? 'error' : 'warning', 54 | message 55 | }); 56 | } 57 | return diagnostics; 58 | } 59 | -------------------------------------------------------------------------------- /src/lib/repl/menu/FavouriteButton.svelte: -------------------------------------------------------------------------------- 1 | 33 | 34 | 44 | -------------------------------------------------------------------------------- /src/lib/repl/menu/FiddleTitle.svelte: -------------------------------------------------------------------------------- 1 | 12 | 13 | {#if isEditing} 14 | (isEditing = false)} 19 | on:keydown={(evt) => { 20 | if (evt.key === 'Enter') { 21 | isEditing = false; 22 | // since title changed, update URL 23 | const fiddleFragmentURL = compress({ 24 | title: $fiddleTitle, 25 | updated: $fiddleUpdated, 26 | files: $files 27 | }); 28 | goto(`/#${fiddleFragmentURL}`, { 29 | replaceState: true 30 | }); 31 | }; 32 | }} 33 | class="text-lg block focus:outline-0 bg-inherit" 34 | autocomplete="off" 35 | /> 36 | {:else} 37 |

38 | {$fiddleTitle || 'Untitled'} 39 | 43 |

44 | {/if} 45 | -------------------------------------------------------------------------------- /src/lib/repl/menu/SettingsButton.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | (isOpen = false)} /> 10 | 11 | 21 | 22 | {#if isOpen} 23 | 24 | 25 |
evt.stopPropagation()} 28 | transition:scale={{ start: 0.9, duration: 100 }} 29 | > 30 | 31 |
32 | {/if} 33 | -------------------------------------------------------------------------------- /src/lib/repl/sidebar/Examples.svelte: -------------------------------------------------------------------------------- 1 | 58 | 59 | {#each examples as fiddle} 60 | 66 | {:else} 67 |
68 | 69 |
70 | {/each} 71 | -------------------------------------------------------------------------------- /src/lib/repl/sidebar/Favourites.svelte: -------------------------------------------------------------------------------- 1 | 20 | 21 |

22 | Click the heart icon on a fiddle to have it appear in this list. 23 |

24 | 25 |
    26 | {#each $favourites as fiddle, index} 27 |
  • 28 | 39 |
  • 40 | {/each} 41 |
42 | -------------------------------------------------------------------------------- /src/lib/repl/sidebar/SidebarOptions.svelte: -------------------------------------------------------------------------------- 1 | 32 | 33 | {#if selectedOption} 34 |
35 | 42 |
43 | {#if selectedOptionIndex === 0} 44 | 45 | {:else if selectedOptionIndex === 1} 46 | 47 | {/if} 48 | {:else} 49 |
    50 | {#each options as option, index} 51 |
  • 52 | 64 |
  • 65 | {/each} 66 |
67 | {/if} 68 | -------------------------------------------------------------------------------- /src/lib/repl/state.ts: -------------------------------------------------------------------------------- 1 | import { writable } from 'svelte/store'; 2 | import { 3 | persist, 4 | createLocalStorage, 5 | createIndexedDBStorage 6 | } from '@macfja/svelte-persistent-store'; 7 | import type { Fiddle } from '$lib/compress-fiddle'; 8 | 9 | export type File = { 10 | path: string; 11 | content: string; 12 | }; 13 | 14 | export const files = writable([]); 15 | 16 | export const selectedFilePath = writable('Main.java'); 17 | 18 | export const isSidebarOpen = persist(writable(true), createLocalStorage(), 'isSidebarOpen'); 19 | 20 | export const fiddleTitle = writable(''); 21 | export const fiddleUpdated = writable(); 22 | 23 | export const favourites = persist(writable([]), createIndexedDBStorage(), 'favourites'); 24 | 25 | // If loaded from favourites, this is the index of this fiddle in favourites 26 | export const favouriteIndex = writable(-1); 27 | 28 | export const description = writable('JavaFiddle is an online, browser-based Java IDE. Create and share Swing applications for free!'); 29 | 30 | export const autoRun = persist(writable(false), createLocalStorage(), 'autoRun'); 31 | 32 | export const isRunning = writable(false); 33 | 34 | export const isSaved = writable(true); 35 | 36 | export const runCode = writable(false); 37 | 38 | export const compileLog = writable(''); 39 | -------------------------------------------------------------------------------- /src/lib/settings/SettingsPanel.svelte: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 14 | 15 | 16 | 17 |
20 |

Appearance

21 |
22 | Theme: 23 | 24 |
25 | 26 |
27 | 28 |

Behaviour

29 |
30 | { 31 | // if autorun is set force re-run by updating files 32 | $runCode = $autoRun && !$isRunning; 33 | }} id="auto-run" /> 34 | 35 |
36 |
37 | -------------------------------------------------------------------------------- /src/lib/settings/ThemeSwitcher.svelte: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 | -------------------------------------------------------------------------------- /src/lib/settings/store.ts: -------------------------------------------------------------------------------- 1 | import { browser } from '$app/environment'; 2 | import { persist, createLocalStorage } from '@macfja/svelte-persistent-store'; 3 | import { writable, derived } from 'svelte/store'; 4 | 5 | export type Theme = 'system' | 'light' | 'dark'; 6 | export const theme = persist(writable('system'), createLocalStorage(), 'theme'); 7 | 8 | export const effectiveTheme = derived(theme, ($theme) => { 9 | if (browser) { 10 | const params = new URLSearchParams(document.location.search); 11 | if (params.has('theme')) { 12 | return params.get('theme'); 13 | } 14 | } 15 | 16 | if ($theme === 'system') { 17 | return browser && window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'; 18 | } 19 | return $theme; 20 | }); 21 | -------------------------------------------------------------------------------- /src/lib/utilities.ts: -------------------------------------------------------------------------------- 1 | // for adblockers protection 2 | export function tryPlausible(msg: string) { 3 | if (self.plausible) 4 | plausible(msg) 5 | } 6 | 7 | export function debounceFunction(fn: () => void, delay: number) { 8 | let timeoutId: number; 9 | return(() => { 10 | clearInterval(timeoutId); 11 | timeoutId = setTimeout(() => fn(), delay); 12 | }); 13 | } -------------------------------------------------------------------------------- /src/routes/(app)/+layout.svelte: -------------------------------------------------------------------------------- 1 | 33 | 34 | 35 | {$fiddleTitle 37 | ? `${$fiddleTitle} - JavaFiddle` 38 | : 'JavaFiddle - Build and share Java code snippets in your browser'} 40 | 41 | 42 | 43 |
44 |
45 | 46 |
47 |
48 | -------------------------------------------------------------------------------- /src/routes/(app)/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/(app)/embed/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/(app)/output/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/routes/(legacy)/[id]/+page.svelte: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /src/routes/(legacy)/[id]/embed/+page.svelte: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /src/routes/(legacy)/[id]/output/+page.svelte: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /static/examples/hello-world-swing/Main.java: -------------------------------------------------------------------------------- 1 | import java.awt.Font; 2 | import javax.swing.JFrame; 3 | import javax.swing.JLabel; 4 | import javax.swing.SwingUtilities; 5 | 6 | class Main implements Runnable { 7 | public static void main(String[] args) { 8 | SwingUtilities.invokeLater(new Main()); 9 | } 10 | 11 | public void run() { 12 | JFrame f = new JFrame("Swing example"); 13 | JLabel l = new JLabel("Hello, world!"); 14 | l.setFont(new Font("Serif", Font.PLAIN, 42)); 15 | f.add(l); 16 | f.pack(); 17 | f.setLocationRelativeTo(null); 18 | f.setVisible(true); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /static/examples/hello-world/Main.java: -------------------------------------------------------------------------------- 1 | class Main { 2 | public static void main(String[] args) { 3 | System.out.println("Hello, World!"); 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/favicon.ico -------------------------------------------------------------------------------- /static/old/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | CheerpJ - JavaFiddle 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 39 | 40 | 49 | 78 | 79 | 80 | 81 | 82 | 89 | 90 |
91 | 116 |
117 | 118 |
119 | 120 |
121 |
122 | 127 |
128 | 129 |
130 | 131 | 132 |
133 |
134 |
135 |
136 |
 > Java output console
137 |
138 |
139 | 140 |
141 | 142 |
143 | 144 | 145 | 146 | 147 | 148 | 149 | 211 | 212 | 213 | -------------------------------------------------------------------------------- /static/old/utils/assets/cheerpj-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/old/utils/assets/cheerpj-logo.png -------------------------------------------------------------------------------- /static/old/utils/assets/cheerpx-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/old/utils/assets/cheerpx-icon.png -------------------------------------------------------------------------------- /static/old/utils/assets/cheerpx_logo_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/old/utils/assets/cheerpx_logo_white.png -------------------------------------------------------------------------------- /static/old/utils/assets/cheerpx_logo_whitebg-300x77.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/old/utils/assets/cheerpx_logo_whitebg-300x77.png -------------------------------------------------------------------------------- /static/old/utils/assets/discord-logo-blue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/old/utils/assets/leaningtech.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/old/utils/assets/leaningtech.png -------------------------------------------------------------------------------- /static/old/utils/assets/reddit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/old/utils/assets/reddit.png -------------------------------------------------------------------------------- /static/old/utils/assets/social.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/old/utils/assets/social.png -------------------------------------------------------------------------------- /static/old/utils/fiddle.css: -------------------------------------------------------------------------------- 1 | html,body 2 | { 3 | height: 100%; 4 | margin: 0; 5 | font-family: "Roboto","Helvetica","Arial",sans-serif; 6 | } 7 | 8 | div.header 9 | { 10 | height: 55px; 11 | font-size: 2.8em; font-weight:200; margin:0.1em; 12 | } 13 | .title 14 | { 15 | text-align: right; 16 | padding: 0.3em; 17 | font-weight: 200; 18 | 19 | } 20 | #compileButton{ 21 | 22 | z-index:100; 23 | font-weight: 200; 24 | font-size: 1em; 25 | background-color: var(--button-color-enabled, #ff7c00); 26 | color:white; 27 | 28 | height: 50px; 29 | 30 | margin-left: 42px; 31 | border: none; 32 | 33 | 34 | } 35 | 36 | #compileButton:disabled{ 37 | 38 | background-color: var(--button-color-disabled, #ccc) 39 | color:white; 40 | 41 | 42 | } 43 | 44 | 45 | body{ 46 | background-color: #2F3129; 47 | color: white; 48 | } 49 | 50 | #console { 51 | padding:0.5em; 52 | background-color: var(--background-color,#272822); 53 | margin: 0; 54 | } 55 | 56 | pre#console { 57 | overflow-y: scroll; 58 | overflow-x: scroll; 59 | } 60 | 61 | -------------------------------------------------------------------------------- /static/old/utils/fiddle.js: -------------------------------------------------------------------------------- 1 | //Editor related logic 2 | editor = ace.edit("input"); 3 | function setupAceEdit(version, theme) 4 | { 5 | editor.setTheme("ace/theme/" + theme); 6 | editor.$blockScrolling = Infinity; 7 | editor.getSession().setMode("ace/mode/" + version); 8 | editor.setShowPrintMargin(false); 9 | } 10 | 11 | // Code Sharing 12 | var lzstring = document.createElement('script'); 13 | lzstring.type = 'text/javascript'; 14 | lzstring.src = '/old/utils/lz-string-1.4.4/libs/lz-string.js'; 15 | lzstring.src = '/old/utils/lz-string/lz-string.min.js'; 16 | document.head.appendChild(lzstring); 17 | 18 | lzstring.addEventListener("load", () => { 19 | function updateUrl() 20 | { 21 | var newCode = editor.getValue(); 22 | compressed = "#" + LZString.compressToEncodedURIComponent(newCode); 23 | history.replaceState(null, '', compressed); 24 | } 25 | editor.addEventListener("input", updateUrl); 26 | 27 | var encodedCode = window.location.hash; 28 | if (encodedCode) 29 | { 30 | var decompressedCode = LZString.decompressFromEncodedURIComponent(encodedCode.substring(1)); 31 | editor.setValue(decompressedCode); 32 | } 33 | else 34 | { 35 | editor.setValue(document.getElementById("sample_HW").textContent,1); 36 | } 37 | 38 | }, false); 39 | 40 | // Example selection 41 | function example(el) 42 | { 43 | editor.setValue(document.getElementById("sample_" + el.value).textContent,1); 44 | el.value = "0"; 45 | } 46 | 47 | 48 | -------------------------------------------------------------------------------- /static/old/utils/flexbox.css: -------------------------------------------------------------------------------- 1 | .layout 2 | { 3 | display: flex; 4 | 5 | } 6 | 7 | .vertical 8 | { 9 | flex-direction: column; 10 | 11 | } 12 | 13 | .flex 14 | { 15 | flex-grow: 1; 16 | 17 | } 18 | 19 | .horizontal 20 | { 21 | flex-direction: row; 22 | 23 | } 24 | 25 | .covering 26 | { 27 | width: 100%; height: 100%; margin: 0em; 28 | left: 0em; top: 0em; 29 | position: fixed; 30 | 31 | } 32 | 33 | .red 34 | { 35 | background-color: red; 36 | } 37 | 38 | .yellow 39 | { 40 | background-color: yellow; 41 | } 42 | 43 | .blue 44 | { 45 | background-color: blue; 46 | 47 | } 48 | 49 | .green 50 | { 51 | background-color: green; 52 | 53 | } 54 | 55 | .black 56 | { 57 | background-color: black; 58 | 59 | } 60 | 61 | .fill-w 62 | { 63 | width: 100%; 64 | } 65 | 66 | .fill-h 67 | { 68 | height: 100%; 69 | 70 | } 71 | 72 | .center-x 73 | { 74 | margin-left: auto; 75 | margin-right: auto; 76 | } 77 | 78 | .center-y 79 | { 80 | 81 | margin-top: auto; 82 | margin-bottom: auto; 83 | 84 | 85 | } 86 | 87 | -------------------------------------------------------------------------------- /static/old/utils/lz-string/lz-string.min.js: -------------------------------------------------------------------------------- 1 | var LZString=function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;ne;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(o){return null==o?"":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return"";var e,t,i,s={},p={},u="",c="",a="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;ie;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(""!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join("")},decompress:function(o){return null==o?"":""==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v="",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return""}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return"";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module&&(module.exports=LZString); 2 | -------------------------------------------------------------------------------- /static/old/utils/scrollbar.css: -------------------------------------------------------------------------------- 1 | .console { 2 | scrollbar-color: #777 #000; 3 | } 4 | 5 | .console *::-webkit-scrollbar { 6 | width: 6px; 7 | height: 8px; 8 | background-color: #272a30; 9 | } 10 | 11 | /* Add a thumb */ 12 | .console *::-webkit-scrollbar-thumb { 13 | border-radius: 3px; 14 | background: #777; 15 | } 16 | 17 | .console *::-webkit-scrollbar-thumb:hover { 18 | background: #555; 19 | } 20 | -------------------------------------------------------------------------------- /static/old/utils/xterm/xterm-addon-fit.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.FitAddon=t():e.FitAddon=t()}(self,(function(){return(()=>{"use strict";var e={775:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.FitAddon=void 0;var r=function(){function e(){}return e.prototype.activate=function(e){this._terminal=e},e.prototype.dispose=function(){},e.prototype.fit=function(){var e=this.proposeDimensions();if(e&&this._terminal){var t=this._terminal._core;this._terminal.rows===e.rows&&this._terminal.cols===e.cols||(t._renderService.clear(),this._terminal.resize(e.cols,e.rows))}},e.prototype.proposeDimensions=function(){if(this._terminal&&this._terminal.element&&this._terminal.element.parentElement){var e=this._terminal._core;if(0!==e._renderService.dimensions.actualCellWidth&&0!==e._renderService.dimensions.actualCellHeight){var t=window.getComputedStyle(this._terminal.element.parentElement),r=parseInt(t.getPropertyValue("height")),i=Math.max(0,parseInt(t.getPropertyValue("width"))),n=window.getComputedStyle(this._terminal.element),o=r-(parseInt(n.getPropertyValue("padding-top"))+parseInt(n.getPropertyValue("padding-bottom"))),a=i-(parseInt(n.getPropertyValue("padding-right"))+parseInt(n.getPropertyValue("padding-left")))-e.viewport.scrollBarWidth;return{cols:Math.max(2,Math.floor(a/e._renderService.dimensions.actualCellWidth)),rows:Math.max(1,Math.floor(o/e._renderService.dimensions.actualCellHeight))}}}},e}();t.FitAddon=r}},t={};return function r(i){if(t[i])return t[i].exports;var n=t[i]={exports:{}};return e[i](n,n.exports,r),n.exports}(775)})()})); 2 | //# sourceMappingURL=xterm-addon-fit.js.map -------------------------------------------------------------------------------- /static/old/utils/xterm/xterm.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) 2014 The xterm.js authors. All rights reserved. 3 | * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License) 4 | * https://github.com/chjj/term.js 5 | * @license MIT 6 | * 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy 8 | * of this software and associated documentation files (the "Software"), to deal 9 | * in the Software without restriction, including without limitation the rights 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 | * copies of the Software, and to permit persons to whom the Software is 12 | * furnished to do so, subject to the following conditions: 13 | * 14 | * The above copyright notice and this permission notice shall be included in 15 | * all copies or substantial portions of the Software. 16 | * 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 | * THE SOFTWARE. 24 | * 25 | * Originally forked from (with the author's permission): 26 | * Fabrice Bellard's javascript vt100 for jslinux: 27 | * http://bellard.org/jslinux/ 28 | * Copyright (c) 2011 Fabrice Bellard 29 | * The original design remains. The terminal itself 30 | * has been extended to include xterm CSI codes, among 31 | * other features. 32 | */ 33 | 34 | /** 35 | * Default styles for xterm.js 36 | */ 37 | 38 | .xterm { 39 | position: relative; 40 | user-select: none; 41 | -ms-user-select: none; 42 | -webkit-user-select: none; 43 | } 44 | 45 | .xterm.focus, 46 | .xterm:focus { 47 | outline: none; 48 | } 49 | 50 | .xterm .xterm-helpers { 51 | position: absolute; 52 | top: 0; 53 | /** 54 | * The z-index of the helpers must be higher than the canvases in order for 55 | * IMEs to appear on top. 56 | */ 57 | z-index: 5; 58 | } 59 | 60 | .xterm .xterm-helper-textarea { 61 | padding: 0; 62 | border: 0; 63 | margin: 0; 64 | /* Move textarea out of the screen to the far left, so that the cursor is not visible */ 65 | position: absolute; 66 | opacity: 0; 67 | left: -9999em; 68 | top: 0; 69 | width: 0; 70 | height: 0; 71 | z-index: -5; 72 | /** Prevent wrapping so the IME appears against the textarea at the correct position */ 73 | white-space: nowrap; 74 | overflow: hidden; 75 | resize: none; 76 | } 77 | 78 | .xterm .composition-view { 79 | /* TODO: Composition position got messed up somewhere */ 80 | background: #000; 81 | color: #FFF; 82 | display: none; 83 | position: absolute; 84 | white-space: nowrap; 85 | z-index: 1; 86 | } 87 | 88 | .xterm .composition-view.active { 89 | display: block; 90 | } 91 | 92 | .xterm .xterm-viewport { 93 | /* On OS X this is required in order for the scroll bar to appear fully opaque */ 94 | background-color: #000; 95 | overflow-y: scroll; 96 | cursor: default; 97 | position: absolute; 98 | right: 0; 99 | left: 0; 100 | top: 0; 101 | bottom: 0; 102 | } 103 | 104 | .xterm .xterm-screen { 105 | position: relative; 106 | } 107 | 108 | .xterm .xterm-screen canvas { 109 | position: absolute; 110 | left: 0; 111 | top: 0; 112 | } 113 | 114 | .xterm .xterm-scroll-area { 115 | visibility: hidden; 116 | } 117 | 118 | .xterm-char-measure-element { 119 | display: inline-block; 120 | visibility: hidden; 121 | position: absolute; 122 | top: 0; 123 | left: -9999em; 124 | line-height: normal; 125 | } 126 | 127 | .xterm { 128 | cursor: text; 129 | } 130 | 131 | .xterm.enable-mouse-events { 132 | /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */ 133 | cursor: default; 134 | } 135 | 136 | .xterm.xterm-cursor-pointer, 137 | .xterm .xterm-cursor-pointer { 138 | cursor: pointer; 139 | } 140 | 141 | .xterm.column-select.focus { 142 | /* Column selection mode */ 143 | cursor: crosshair; 144 | } 145 | 146 | .xterm .xterm-accessibility, 147 | .xterm .xterm-message { 148 | position: absolute; 149 | left: 0; 150 | top: 0; 151 | bottom: 0; 152 | right: 0; 153 | z-index: 10; 154 | color: transparent; 155 | } 156 | 157 | .xterm .live-region { 158 | position: absolute; 159 | left: -9999px; 160 | width: 1px; 161 | height: 1px; 162 | overflow: hidden; 163 | } 164 | 165 | .xterm-dim { 166 | opacity: 0.5; 167 | } 168 | 169 | .xterm-underline { 170 | text-decoration: underline; 171 | } 172 | 173 | .xterm-strikethrough { 174 | text-decoration: line-through; 175 | } 176 | 177 | .xterm-screen .xterm-decoration-container .xterm-decoration { 178 | z-index: 6; 179 | position: absolute; 180 | } 181 | -------------------------------------------------------------------------------- /static/tools.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/leaningtech/javafiddle/a7ce8659f5253c17db48fd443b27dfe9f0c1a406/static/tools.jar -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/kit/vite'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter() 15 | } 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | export default { 3 | content: ['./src/**/*.{html,js,svelte,ts}'], 4 | theme: { 5 | extend: {} 6 | }, 7 | plugins: [], 8 | darkMode: 'class', 9 | blocklist: [ 10 | 'container' // conflicts with svelte-split-pane 11 | ] 12 | }; 13 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | } 13 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 14 | // 15 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 16 | // from the referenced tsconfig.json - TypeScript does not merge them in 17 | } 18 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | --------------------------------------------------------------------------------