├── .gitattributes ├── .github └── workflows │ └── tick.yml ├── .gitignore ├── LICENSE ├── README.md ├── package-lock.json ├── package.json ├── scripts ├── download_inputs.ts ├── generate.ts ├── get_latest_version.ts ├── github_action_tick.ts └── utils.ts └── tsconfig.json /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | -------------------------------------------------------------------------------- /.github/workflows/tick.yml: -------------------------------------------------------------------------------- 1 | name: Tick 2 | on: 3 | schedule: 4 | - cron: '0/15 * * * *' 5 | workflow_dispatch: 6 | jobs: 7 | tick: 8 | name: Tick 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/checkout@v2 12 | with: 13 | fetch-depth: 0 14 | 15 | - uses: actions/setup-java@v2 16 | with: 17 | distribution: 'temurin' 18 | java-version: '17' 19 | 20 | - name: Cache Node Modules 21 | uses: actions/cache@v1 22 | with: 23 | path: ~/.npm 24 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 25 | restore-keys: | 26 | ${{ runner.os }}-node- 27 | ${{ runner.os }}- 28 | 29 | - name: Install Dependencies 30 | run: npm ci 31 | 32 | - name: Tick 33 | run: npm run github_action_tick 34 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | /generated 3 | /input 4 | /temp 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ```diff 2 | -! This Repository Has Been Archived !- 3 | ``` 4 | 5 | ## TL;DR: [Click Here](https://github.com/misode/mcmeta/tree/data). 6 | 7 | [misode](https://github.com/misode) has created [mcmeta](https://github.com/misode/mcmeta), 8 | an amazing repository with "processed, version controlled history of Minecraft's generated data 9 | and assets." 10 | 11 | You can find the vanilla data pack of every Minecraft version since 1.14 (inclusive) on the 12 | [`data` branch](https://github.com/misode/mcmeta/tree/data), and more useful information can be 13 | found on other branches of that repository. 14 | 15 | ```diff 16 | -! ================================= !- 17 | ``` 18 | 19 |
20 | Click to view the original README 21 | 22 | # Vanilla Data Pack 23 | 24 | ![Tick](https://github.com/SPGoding/vanilla-datapack/workflows/Tick/badge.svg) 25 | 26 | A repository with automated scripts to generate the vanilla data pack from the Minecraft: Java Edition server jar. 27 | 28 | **Click [here][data-branch] to go to the `data` branch.** 29 | 30 | ## Branches and Tags 31 | 32 | All version identifiers used in this repository can be found from 33 | [version_manifest.json](https://launchermeta.mojang.com/mc/game/version_manifest.json). 34 | 35 | Only the data for versions released after `1.16.2` (inclusive) can be found in this repository. 36 | 37 | ### Branches 38 | 39 | - [`main`][main-branch]: Stores the scripts. This is the default branch of the repository. 40 | - [`data`][data-branch]: Stores the auto-generated vanilla data pack. 41 | - [`summary`][summary-branch]: Stores the auto-generated vanilla data pack content summaries. 42 | 43 | ### Tags 44 | 45 | - `${version}-data`: Stores the corresponding vanilla data pack for the specific version. 46 | - `${version}-summary`: Stores the corresponding summaries for the specific version. 47 | 48 | ## Repository Structure 49 | 50 | Here's the file structure on the `main` branch. 51 | 52 | - `generated`: Stores all generated files. This folder is excluded from git. 53 | - `data`: Stores the generated data pack files. Uses the same structure as the `data` folder in a data pack. 54 | The `data` git branch and all `${version}-data` git tags stores this folder directly with the `structures` folder 55 | removed. 56 | - `advancements`/`loot_tables`/... 57 | - `summary`: Stores summaries of the vanilla data pack. The `summary` git branch and all `${version}-summary` git 58 | tags stores this folder directly. 59 | - `flattened.json`: The [flattened summary](#flattened-summary) of vanilla data pack. 60 | - `flattened.min.json`: Minified [flattened summary](#flattened-summary) of vanilla data pack. 61 | - `tree.json`: The [tree summary](#tree-summary) of vanilla data pack. 62 | - `tree.min.json`: Minified [tree summary](#tree-summary) of vanilla data pack. 63 | - `input`: Stores all input files for the scripts. This folder is excluded from git to avoid 64 | [EULA](https://account.mojang.com/documents/minecraft_eula) violation. 65 | - `game.jar`: A *Minecraft: Java Edition* server jar file. 66 | - `scripts`: All the scripts you're intrested in. 67 | - `download_inputs.ts`: Downloads the input files for the passed-in JSON parameter. 68 | - `generate.ts`: Generates the data pack and summaries from the input. 69 | - `get_latest_version.ts`: Prints a JSON with `version`, `download`, and `sha1` to the stdout. 70 | - `github_action_tick.ts`: Executes the things that the GitHub Action likes. 71 | - `utils.ts`: Some common functions used by other scripts. 72 | 73 | ## Summary Format 74 | 75 | A summary file stores all the namespaced IDs that the vanilla data pack has. Both summaries use a dictionary 76 | from [file type](https://github.com/SPGoding/datapack-language-server/wiki/Cache-Type#file-types) to their 77 | own structure to store the information. 78 | 79 | ### Flattened Summary 80 | 81 | Flattened summary is... flattened. 82 | 83 | ```json 84 | { 85 | "advancement": [ 86 | "minecraft:adventure/adventuring_time", 87 | "minecraft:adventure/arbalistic", 88 | ... 89 | ], 90 | "dimension": [...], 91 | ... 92 | } 93 | ``` 94 | 95 | ### Tree Summary 96 | 97 | Tree summary stores children of a path segment in its `$children` property, and uses `$end` to indicate 98 | if the namespaced ID can end at this segment. 99 | 100 | For example, the ID `minecraft:foo` can be represented with 101 | 102 | ```json 103 | { 104 | "minecraft": { 105 | "$children": { 106 | "foo": { 107 | "$end": true 108 | } 109 | } 110 | } 111 | } 112 | ``` 113 | 114 | `minecraft:foo`, `minecraft:bar`, and `minecraft:bar/qux` can be represented with 115 | 116 | ```json 117 | { 118 | "minecraft": { 119 | "$children": { 120 | "foo": { 121 | "$end": true 122 | }, 123 | "bar": { 124 | "$end": true, 125 | "$children": { 126 | "qux": { 127 | "$end": true 128 | } 129 | } 130 | } 131 | } 132 | } 133 | } 134 | ``` 135 | 136 | ## Scripts 137 | 138 | ### Get Latest Version 139 | 140 | Execution: `npm run get_latest_version` 141 | 142 | Prints a JSON object containing `version`, `download`, and `sha1`. 143 | 144 | ### Download Inputs 145 | 146 | Execution: `npm run download_inputs {"version": "", "download": "", "sha1": "SHA-1 of the game core jar"}` 147 | 148 | Downloads and saves the input files (`game.jar` and `vanilla_worldgen.zip`) for the specific version. 149 | 150 | ### Generate 151 | 152 | Execution: `npm run generate` or `npm run gen` 153 | 154 | Generates the vanilla data pack and summary from the input files. 155 | 156 | ### GitHub Action Tick 157 | 158 | Execution: `npm run github_action_tick` 159 | 160 | Executes the things that the GitHub Action needs. 161 | 162 | ### Quick Start 163 | 164 | The generated result for all vanilla game versions released after `1.16.2` (inclusive) are served on the GitHub repository's 165 | [`data` branch][data-branch]. If for some reasons you want to generate files by yourself, please refer to the following steps: 166 | 167 | 1. Clone this repository to your local environment. 168 | 2. Copy your game core jar to `input/game.jar`. Only server files are acceptable due to use of the data generator. 169 | 3. Install [Node.js](https://nodejs.org) if you haven't. 170 | 4. Execute `npm i` and `npm run generate` in the root of this repository. 171 | 5. Enjoy the generated stuff in the `generated` folder! 172 | 173 | ## Disclaimer 174 | 175 | The `data` git branch and all `${version}-data` git tags don't contain the generated `structures` category because the 176 | only way to get them is from the game core file and I don't want to potentially violate the 177 | [EULA](https://account.mojang.com/documents/minecraft_eula) by redistributing those structure files. Another reason 178 | is that they are all binary files and it means little to put them in the git system. 179 | 180 | All other contents in the `data` git branch and `${version}-data` git tags are either accessible through the data 181 | generator or from [slicedlime](https://github.com/slicedlime)'s [examples respository][examples], 182 | and I assume it's okay to put them under public. 183 | 184 | However, please [open an issue](https://github.com/SPGoding/vanilla-datapack/issues/new) if the assumption is ever 185 | contradicted, and I will have the `data` git branch and all `${version}-data` git tags removed from this GitHub 186 | repository as soon as possible. 187 | 188 | ## License 189 | 190 | The [LICENSE](https://github.com/SPGoding/vanilla-datapack/blob/main/LICENSE) only applies to the `main` git 191 | branch and the `summary` git branch. 192 | 193 |
194 | 195 | [data-branch]: https://github.com/SPGoding/vanilla-datapack/tree/data 196 | [examples]: https://github.com/slicedlime/examples 197 | [main-branch]: https://github.com/SPGoding/vanilla-datapack 198 | [summary-branch]: https://github.com/SPGoding/vanilla-datapack/tree/summary 199 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vanilla-datapack", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "version": "1.0.0", 9 | "license": "WTFPL", 10 | "dependencies": { 11 | "@spgoding/datapack-language-server": "3.3.16", 12 | "decompress": "^4.2.1", 13 | "fs-extra": "^9.0.1", 14 | "simple-git": "^2.17.0", 15 | "ts-node": "^10.4.0", 16 | "typescript": "^4.5.5" 17 | }, 18 | "devDependencies": { 19 | "@types/decompress": "^4.2.3", 20 | "@types/fs-extra": "^9.0.1", 21 | "@types/node": "^14.0.27" 22 | } 23 | }, 24 | "node_modules/@cspotcode/source-map-consumer": { 25 | "version": "0.8.0", 26 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", 27 | "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", 28 | "engines": { 29 | "node": ">= 12" 30 | } 31 | }, 32 | "node_modules/@cspotcode/source-map-support": { 33 | "version": "0.7.0", 34 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", 35 | "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", 36 | "dependencies": { 37 | "@cspotcode/source-map-consumer": "0.8.0" 38 | }, 39 | "engines": { 40 | "node": ">=12" 41 | } 42 | }, 43 | "node_modules/@kwsites/file-exists": { 44 | "version": "1.1.1", 45 | "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", 46 | "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", 47 | "dependencies": { 48 | "debug": "^4.1.1" 49 | } 50 | }, 51 | "node_modules/@kwsites/promise-deferred": { 52 | "version": "1.1.1", 53 | "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", 54 | "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" 55 | }, 56 | "node_modules/@mcschema/core": { 57 | "version": "0.12.20", 58 | "resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.20.tgz", 59 | "integrity": "sha512-HwBDtlWhKVW6akU+WN8A+tPtj497LHp6nJClbnWIXw4Wrq+/L/2PkuEA5F5/fqKlytFBn6dWdjSCJnRDCkihzA==" 60 | }, 61 | "node_modules/@mcschema/java-1.16": { 62 | "version": "0.6.5", 63 | "resolved": "https://registry.npmjs.org/@mcschema/java-1.16/-/java-1.16-0.6.5.tgz", 64 | "integrity": "sha512-yAB98OFMXUuPRJyyUwkHlHFiSRsZbQC4rQC/InRdPMMY1xdjrP5gRRjKsC9rhej3VOSD9q/rbEWQ+wWxorcKBA==", 65 | "dependencies": { 66 | "@mcschema/core": "^0.12.0" 67 | } 68 | }, 69 | "node_modules/@mcschema/java-1.17": { 70 | "version": "0.2.24", 71 | "resolved": "https://registry.npmjs.org/@mcschema/java-1.17/-/java-1.17-0.2.24.tgz", 72 | "integrity": "sha512-sw+02IBAhq9x3mpHElYshJWxQoTAXya28btdQjsWe9BCPic5N8fUonXRAIA7czksZmsX5cqL9hCum0tV8L+X8A==", 73 | "dependencies": { 74 | "@mcschema/core": "^0.12.4" 75 | } 76 | }, 77 | "node_modules/@mcschema/java-1.18": { 78 | "version": "0.2.13", 79 | "resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.2.13.tgz", 80 | "integrity": "sha512-h7AL5TiFa3QOew7YzvUGuY3205VXeEPLPoa7ggcT4jFqJHGF6w4zZxadLkP9UwbN7HW48Nv2bf2Eh0S6MVp+cQ==", 81 | "dependencies": { 82 | "@mcschema/core": "^0.12.20" 83 | } 84 | }, 85 | "node_modules/@mcschema/locales": { 86 | "version": "0.1.42", 87 | "resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.42.tgz", 88 | "integrity": "sha512-ru8bdM09rb66pCczWOJsnQrNbNUaCdv0JVCmfwNpFHVMHmw3y2SdN5Cqssc8JEUqJ69h0rjliXz4wlnOJWmLBQ==" 89 | }, 90 | "node_modules/@spgoding/datapack-language-server": { 91 | "version": "3.3.16", 92 | "resolved": "https://registry.npmjs.org/@spgoding/datapack-language-server/-/datapack-language-server-3.3.16.tgz", 93 | "integrity": "sha512-lo4K5Fx+y9PHt5ILFv/GYzngbi1k43J9LRWxMO1C91r/bThLgGg0giUxO+dlVnu2P40ORChm0fb0ZLuBeKX4Yg==", 94 | "dependencies": { 95 | "@mcschema/core": "^0.12.20", 96 | "@mcschema/java-1.16": "^0.6.5", 97 | "@mcschema/java-1.17": "^0.2.24", 98 | "@mcschema/java-1.18": "^0.2.12", 99 | "@mcschema/locales": "^0.1.40", 100 | "appdata-path": "^1.0.0", 101 | "clone": "^2.1.2", 102 | "fast-deep-equal": "^3.1.3", 103 | "fs-extra": "^9.0.1", 104 | "minimatch": "^3.0.4", 105 | "python-range": "^1.0.4", 106 | "rfdc": "^1.1.4", 107 | "synchronous-promise": "^2.0.13", 108 | "uuid": "^8.3.0", 109 | "vscode-json-languageservice": "^4.0.0", 110 | "vscode-languageserver": "^7.0.0", 111 | "vscode-languageserver-textdocument": "^1.0.1", 112 | "vscode-uri": "^3.0.2" 113 | }, 114 | "bin": { 115 | "datapack-language-server": "bin/server" 116 | } 117 | }, 118 | "node_modules/@tsconfig/node10": { 119 | "version": "1.0.8", 120 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", 121 | "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" 122 | }, 123 | "node_modules/@tsconfig/node12": { 124 | "version": "1.0.9", 125 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", 126 | "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" 127 | }, 128 | "node_modules/@tsconfig/node14": { 129 | "version": "1.0.1", 130 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", 131 | "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" 132 | }, 133 | "node_modules/@tsconfig/node16": { 134 | "version": "1.0.2", 135 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", 136 | "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" 137 | }, 138 | "node_modules/@types/decompress": { 139 | "version": "4.2.3", 140 | "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.3.tgz", 141 | "integrity": "sha512-W24e3Ycz1UZPgr1ZEDHlK4XnvOr+CpJH3qNsFeqXwwlW/9END9gxn3oJSsp7gYdiQxrXUHwUUd3xuzVz37MrZQ==", 142 | "dev": true, 143 | "dependencies": { 144 | "@types/node": "*" 145 | } 146 | }, 147 | "node_modules/@types/fs-extra": { 148 | "version": "9.0.1", 149 | "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.1.tgz", 150 | "integrity": "sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg==", 151 | "dev": true, 152 | "dependencies": { 153 | "@types/node": "*" 154 | } 155 | }, 156 | "node_modules/@types/node": { 157 | "version": "14.0.27", 158 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", 159 | "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" 160 | }, 161 | "node_modules/acorn": { 162 | "version": "8.7.0", 163 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", 164 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", 165 | "bin": { 166 | "acorn": "bin/acorn" 167 | }, 168 | "engines": { 169 | "node": ">=0.4.0" 170 | } 171 | }, 172 | "node_modules/acorn-walk": { 173 | "version": "8.2.0", 174 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 175 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 176 | "engines": { 177 | "node": ">=0.4.0" 178 | } 179 | }, 180 | "node_modules/appdata-path": { 181 | "version": "1.0.0", 182 | "resolved": "https://registry.npmjs.org/appdata-path/-/appdata-path-1.0.0.tgz", 183 | "integrity": "sha512-ZbH3ezXfnT/YE3NdqduIt4lBV+H0ybvA2Qx3K76gIjQvh8gROpDFdDLpx6B1QJtW7zxisCbpTlCLhKqoR8cDBw==" 184 | }, 185 | "node_modules/arg": { 186 | "version": "4.1.3", 187 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 188 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" 189 | }, 190 | "node_modules/at-least-node": { 191 | "version": "1.0.0", 192 | "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", 193 | "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", 194 | "engines": { 195 | "node": ">= 4.0.0" 196 | } 197 | }, 198 | "node_modules/balanced-match": { 199 | "version": "1.0.0", 200 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 201 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 202 | }, 203 | "node_modules/base64-js": { 204 | "version": "1.3.1", 205 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 206 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" 207 | }, 208 | "node_modules/bl": { 209 | "version": "1.2.3", 210 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 211 | "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 212 | "dependencies": { 213 | "readable-stream": "^2.3.5", 214 | "safe-buffer": "^5.1.1" 215 | } 216 | }, 217 | "node_modules/brace-expansion": { 218 | "version": "1.1.11", 219 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 220 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 221 | "dependencies": { 222 | "balanced-match": "^1.0.0", 223 | "concat-map": "0.0.1" 224 | } 225 | }, 226 | "node_modules/buffer": { 227 | "version": "5.6.0", 228 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", 229 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", 230 | "dependencies": { 231 | "base64-js": "^1.0.2", 232 | "ieee754": "^1.1.4" 233 | } 234 | }, 235 | "node_modules/buffer-alloc": { 236 | "version": "1.2.0", 237 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 238 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 239 | "dependencies": { 240 | "buffer-alloc-unsafe": "^1.1.0", 241 | "buffer-fill": "^1.0.0" 242 | } 243 | }, 244 | "node_modules/buffer-alloc-unsafe": { 245 | "version": "1.1.0", 246 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 247 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" 248 | }, 249 | "node_modules/buffer-crc32": { 250 | "version": "0.2.13", 251 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 252 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", 253 | "engines": { 254 | "node": "*" 255 | } 256 | }, 257 | "node_modules/buffer-fill": { 258 | "version": "1.0.0", 259 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 260 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" 261 | }, 262 | "node_modules/clone": { 263 | "version": "2.1.2", 264 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 265 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", 266 | "engines": { 267 | "node": ">=0.8" 268 | } 269 | }, 270 | "node_modules/commander": { 271 | "version": "2.20.3", 272 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 273 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 274 | }, 275 | "node_modules/concat-map": { 276 | "version": "0.0.1", 277 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 278 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 279 | }, 280 | "node_modules/core-util-is": { 281 | "version": "1.0.2", 282 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 283 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 284 | }, 285 | "node_modules/create-require": { 286 | "version": "1.1.1", 287 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 288 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" 289 | }, 290 | "node_modules/debug": { 291 | "version": "4.1.1", 292 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 293 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 294 | "dependencies": { 295 | "ms": "^2.1.1" 296 | } 297 | }, 298 | "node_modules/decompress": { 299 | "version": "4.2.1", 300 | "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", 301 | "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", 302 | "dependencies": { 303 | "decompress-tar": "^4.0.0", 304 | "decompress-tarbz2": "^4.0.0", 305 | "decompress-targz": "^4.0.0", 306 | "decompress-unzip": "^4.0.1", 307 | "graceful-fs": "^4.1.10", 308 | "make-dir": "^1.0.0", 309 | "pify": "^2.3.0", 310 | "strip-dirs": "^2.0.0" 311 | }, 312 | "engines": { 313 | "node": ">=4" 314 | } 315 | }, 316 | "node_modules/decompress-tar": { 317 | "version": "4.1.1", 318 | "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", 319 | "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", 320 | "dependencies": { 321 | "file-type": "^5.2.0", 322 | "is-stream": "^1.1.0", 323 | "tar-stream": "^1.5.2" 324 | }, 325 | "engines": { 326 | "node": ">=4" 327 | } 328 | }, 329 | "node_modules/decompress-tarbz2": { 330 | "version": "4.1.1", 331 | "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", 332 | "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", 333 | "dependencies": { 334 | "decompress-tar": "^4.1.0", 335 | "file-type": "^6.1.0", 336 | "is-stream": "^1.1.0", 337 | "seek-bzip": "^1.0.5", 338 | "unbzip2-stream": "^1.0.9" 339 | }, 340 | "engines": { 341 | "node": ">=4" 342 | } 343 | }, 344 | "node_modules/decompress-tarbz2/node_modules/file-type": { 345 | "version": "6.2.0", 346 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", 347 | "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", 348 | "engines": { 349 | "node": ">=4" 350 | } 351 | }, 352 | "node_modules/decompress-targz": { 353 | "version": "4.1.1", 354 | "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", 355 | "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", 356 | "dependencies": { 357 | "decompress-tar": "^4.1.1", 358 | "file-type": "^5.2.0", 359 | "is-stream": "^1.1.0" 360 | }, 361 | "engines": { 362 | "node": ">=4" 363 | } 364 | }, 365 | "node_modules/decompress-unzip": { 366 | "version": "4.0.1", 367 | "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", 368 | "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", 369 | "dependencies": { 370 | "file-type": "^3.8.0", 371 | "get-stream": "^2.2.0", 372 | "pify": "^2.3.0", 373 | "yauzl": "^2.4.2" 374 | }, 375 | "engines": { 376 | "node": ">=4" 377 | } 378 | }, 379 | "node_modules/decompress-unzip/node_modules/file-type": { 380 | "version": "3.9.0", 381 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", 382 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=", 383 | "engines": { 384 | "node": ">=0.10.0" 385 | } 386 | }, 387 | "node_modules/diff": { 388 | "version": "4.0.2", 389 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 390 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 391 | "engines": { 392 | "node": ">=0.3.1" 393 | } 394 | }, 395 | "node_modules/end-of-stream": { 396 | "version": "1.4.4", 397 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 398 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 399 | "dependencies": { 400 | "once": "^1.4.0" 401 | } 402 | }, 403 | "node_modules/fast-deep-equal": { 404 | "version": "3.1.3", 405 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 406 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 407 | }, 408 | "node_modules/fd-slicer": { 409 | "version": "1.1.0", 410 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 411 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 412 | "dependencies": { 413 | "pend": "~1.2.0" 414 | } 415 | }, 416 | "node_modules/file-type": { 417 | "version": "5.2.0", 418 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", 419 | "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=", 420 | "engines": { 421 | "node": ">=4" 422 | } 423 | }, 424 | "node_modules/fs-constants": { 425 | "version": "1.0.0", 426 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 427 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 428 | }, 429 | "node_modules/fs-extra": { 430 | "version": "9.0.1", 431 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", 432 | "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", 433 | "dependencies": { 434 | "at-least-node": "^1.0.0", 435 | "graceful-fs": "^4.2.0", 436 | "jsonfile": "^6.0.1", 437 | "universalify": "^1.0.0" 438 | }, 439 | "engines": { 440 | "node": ">=10" 441 | } 442 | }, 443 | "node_modules/get-stream": { 444 | "version": "2.3.1", 445 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", 446 | "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", 447 | "dependencies": { 448 | "object-assign": "^4.0.1", 449 | "pinkie-promise": "^2.0.0" 450 | }, 451 | "engines": { 452 | "node": ">=0.10.0" 453 | } 454 | }, 455 | "node_modules/graceful-fs": { 456 | "version": "4.2.4", 457 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 458 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 459 | }, 460 | "node_modules/ieee754": { 461 | "version": "1.1.13", 462 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 463 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" 464 | }, 465 | "node_modules/inherits": { 466 | "version": "2.0.4", 467 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 468 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 469 | }, 470 | "node_modules/is-natural-number": { 471 | "version": "4.0.1", 472 | "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", 473 | "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" 474 | }, 475 | "node_modules/is-stream": { 476 | "version": "1.1.0", 477 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 478 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 479 | "engines": { 480 | "node": ">=0.10.0" 481 | } 482 | }, 483 | "node_modules/isarray": { 484 | "version": "1.0.0", 485 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 486 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 487 | }, 488 | "node_modules/jsonc-parser": { 489 | "version": "3.0.0", 490 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", 491 | "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" 492 | }, 493 | "node_modules/jsonfile": { 494 | "version": "6.0.1", 495 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", 496 | "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", 497 | "dependencies": { 498 | "graceful-fs": "^4.1.6", 499 | "universalify": "^1.0.0" 500 | } 501 | }, 502 | "node_modules/lodash.frompairs": { 503 | "version": "4.0.1", 504 | "resolved": "https://registry.npmjs.org/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz", 505 | "integrity": "sha1-vE5SB/onV8E25XNhTpZkUGsrG9I=" 506 | }, 507 | "node_modules/make-dir": { 508 | "version": "1.3.0", 509 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 510 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 511 | "dependencies": { 512 | "pify": "^3.0.0" 513 | }, 514 | "engines": { 515 | "node": ">=4" 516 | } 517 | }, 518 | "node_modules/make-dir/node_modules/pify": { 519 | "version": "3.0.0", 520 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 521 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", 522 | "engines": { 523 | "node": ">=4" 524 | } 525 | }, 526 | "node_modules/make-error": { 527 | "version": "1.3.6", 528 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 529 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 530 | }, 531 | "node_modules/minimatch": { 532 | "version": "3.0.4", 533 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 534 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 535 | "dependencies": { 536 | "brace-expansion": "^1.1.7" 537 | }, 538 | "engines": { 539 | "node": "*" 540 | } 541 | }, 542 | "node_modules/ms": { 543 | "version": "2.1.2", 544 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 545 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 546 | }, 547 | "node_modules/object-assign": { 548 | "version": "4.1.1", 549 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 550 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 551 | "engines": { 552 | "node": ">=0.10.0" 553 | } 554 | }, 555 | "node_modules/once": { 556 | "version": "1.4.0", 557 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 558 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 559 | "dependencies": { 560 | "wrappy": "1" 561 | } 562 | }, 563 | "node_modules/pend": { 564 | "version": "1.2.0", 565 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 566 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 567 | }, 568 | "node_modules/pify": { 569 | "version": "2.3.0", 570 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 571 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 572 | "engines": { 573 | "node": ">=0.10.0" 574 | } 575 | }, 576 | "node_modules/pinkie": { 577 | "version": "2.0.4", 578 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 579 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 580 | "engines": { 581 | "node": ">=0.10.0" 582 | } 583 | }, 584 | "node_modules/pinkie-promise": { 585 | "version": "2.0.1", 586 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 587 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 588 | "dependencies": { 589 | "pinkie": "^2.0.0" 590 | }, 591 | "engines": { 592 | "node": ">=0.10.0" 593 | } 594 | }, 595 | "node_modules/process-nextick-args": { 596 | "version": "2.0.1", 597 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 598 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 599 | }, 600 | "node_modules/python-range": { 601 | "version": "1.0.4", 602 | "resolved": "https://registry.npmjs.org/python-range/-/python-range-1.0.4.tgz", 603 | "integrity": "sha512-yapjRst4wzWH2Si0F6kYJ/prlp4CtXSk3IJiD7iVGtv2dXfj9VZXqQPPf66Sg4iwLWjUa+wz42Ktp9QpsjZUwg==", 604 | "dependencies": { 605 | "lodash.frompairs": "^4.0.1" 606 | } 607 | }, 608 | "node_modules/readable-stream": { 609 | "version": "2.3.7", 610 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 611 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 612 | "dependencies": { 613 | "core-util-is": "~1.0.0", 614 | "inherits": "~2.0.3", 615 | "isarray": "~1.0.0", 616 | "process-nextick-args": "~2.0.0", 617 | "safe-buffer": "~5.1.1", 618 | "string_decoder": "~1.1.1", 619 | "util-deprecate": "~1.0.1" 620 | } 621 | }, 622 | "node_modules/readable-stream/node_modules/safe-buffer": { 623 | "version": "5.1.2", 624 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 625 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 626 | }, 627 | "node_modules/rfdc": { 628 | "version": "1.1.4", 629 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", 630 | "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==" 631 | }, 632 | "node_modules/safe-buffer": { 633 | "version": "5.2.1", 634 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 635 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 636 | }, 637 | "node_modules/seek-bzip": { 638 | "version": "1.0.6", 639 | "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", 640 | "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", 641 | "dependencies": { 642 | "commander": "^2.8.1" 643 | }, 644 | "bin": { 645 | "seek-bunzip": "bin/seek-bunzip", 646 | "seek-table": "bin/seek-bzip-table" 647 | } 648 | }, 649 | "node_modules/simple-git": { 650 | "version": "2.17.0", 651 | "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.17.0.tgz", 652 | "integrity": "sha512-l2F16fJvHWSx+E1C8WduwpNDfqf+JDD8nsEaD5szUZlbz5Y6paSnR4wlGxIa6Mr6I4kl3F9QmTaPIQjSxlcafA==", 653 | "dependencies": { 654 | "@kwsites/file-exists": "^1.1.1", 655 | "@kwsites/promise-deferred": "^1.1.1", 656 | "debug": "^4.1.1" 657 | } 658 | }, 659 | "node_modules/string_decoder": { 660 | "version": "1.1.1", 661 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 662 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 663 | "dependencies": { 664 | "safe-buffer": "~5.1.0" 665 | } 666 | }, 667 | "node_modules/string_decoder/node_modules/safe-buffer": { 668 | "version": "5.1.2", 669 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 670 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 671 | }, 672 | "node_modules/strip-dirs": { 673 | "version": "2.1.0", 674 | "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", 675 | "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", 676 | "dependencies": { 677 | "is-natural-number": "^4.0.1" 678 | } 679 | }, 680 | "node_modules/synchronous-promise": { 681 | "version": "2.0.13", 682 | "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.13.tgz", 683 | "integrity": "sha512-R9N6uDkVsghHePKh1TEqbnLddO2IY25OcsksyFp/qBe7XYd0PVbKEWxhcdMhpLzE1I6skj5l4aEZ3CRxcbArlA==" 684 | }, 685 | "node_modules/tar-stream": { 686 | "version": "1.6.2", 687 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", 688 | "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", 689 | "dependencies": { 690 | "bl": "^1.0.0", 691 | "buffer-alloc": "^1.2.0", 692 | "end-of-stream": "^1.0.0", 693 | "fs-constants": "^1.0.0", 694 | "readable-stream": "^2.3.0", 695 | "to-buffer": "^1.1.1", 696 | "xtend": "^4.0.0" 697 | }, 698 | "engines": { 699 | "node": ">= 0.8.0" 700 | } 701 | }, 702 | "node_modules/through": { 703 | "version": "2.3.8", 704 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 705 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 706 | }, 707 | "node_modules/to-buffer": { 708 | "version": "1.1.1", 709 | "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", 710 | "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" 711 | }, 712 | "node_modules/ts-node": { 713 | "version": "10.4.0", 714 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", 715 | "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", 716 | "dependencies": { 717 | "@cspotcode/source-map-support": "0.7.0", 718 | "@tsconfig/node10": "^1.0.7", 719 | "@tsconfig/node12": "^1.0.7", 720 | "@tsconfig/node14": "^1.0.0", 721 | "@tsconfig/node16": "^1.0.2", 722 | "acorn": "^8.4.1", 723 | "acorn-walk": "^8.1.1", 724 | "arg": "^4.1.0", 725 | "create-require": "^1.1.0", 726 | "diff": "^4.0.1", 727 | "make-error": "^1.1.1", 728 | "yn": "3.1.1" 729 | }, 730 | "bin": { 731 | "ts-node": "dist/bin.js", 732 | "ts-node-cwd": "dist/bin-cwd.js", 733 | "ts-node-script": "dist/bin-script.js", 734 | "ts-node-transpile-only": "dist/bin-transpile.js", 735 | "ts-script": "dist/bin-script-deprecated.js" 736 | }, 737 | "peerDependencies": { 738 | "@swc/core": ">=1.2.50", 739 | "@swc/wasm": ">=1.2.50", 740 | "@types/node": "*", 741 | "typescript": ">=2.7" 742 | }, 743 | "peerDependenciesMeta": { 744 | "@swc/core": { 745 | "optional": true 746 | }, 747 | "@swc/wasm": { 748 | "optional": true 749 | } 750 | } 751 | }, 752 | "node_modules/typescript": { 753 | "version": "4.5.5", 754 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", 755 | "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", 756 | "bin": { 757 | "tsc": "bin/tsc", 758 | "tsserver": "bin/tsserver" 759 | }, 760 | "engines": { 761 | "node": ">=4.2.0" 762 | } 763 | }, 764 | "node_modules/unbzip2-stream": { 765 | "version": "1.4.3", 766 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 767 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 768 | "dependencies": { 769 | "buffer": "^5.2.1", 770 | "through": "^2.3.8" 771 | } 772 | }, 773 | "node_modules/universalify": { 774 | "version": "1.0.0", 775 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", 776 | "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", 777 | "engines": { 778 | "node": ">= 10.0.0" 779 | } 780 | }, 781 | "node_modules/util-deprecate": { 782 | "version": "1.0.2", 783 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 784 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 785 | }, 786 | "node_modules/uuid": { 787 | "version": "8.3.0", 788 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", 789 | "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", 790 | "bin": { 791 | "uuid": "dist/bin/uuid" 792 | } 793 | }, 794 | "node_modules/vscode-json-languageservice": { 795 | "version": "4.1.0", 796 | "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.0.tgz", 797 | "integrity": "sha512-QW2SFk4kln5lTPQajGNuXWtmr2z9hVA6Sfi4qPFEW2vjt2XaUAp38/1OrcUQYiJXOyXntbWN2jZJaGxg+hDUxw==", 798 | "dependencies": { 799 | "jsonc-parser": "^3.0.0", 800 | "minimatch": "^3.0.4", 801 | "vscode-languageserver-textdocument": "^1.0.1", 802 | "vscode-languageserver-types": "^3.16.0", 803 | "vscode-nls": "^5.0.0", 804 | "vscode-uri": "^3.0.2" 805 | }, 806 | "engines": { 807 | "npm": ">=7.0.0" 808 | } 809 | }, 810 | "node_modules/vscode-jsonrpc": { 811 | "version": "6.0.0", 812 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", 813 | "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==", 814 | "engines": { 815 | "node": ">=8.0.0 || >=10.0.0" 816 | } 817 | }, 818 | "node_modules/vscode-languageserver": { 819 | "version": "7.0.0", 820 | "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", 821 | "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", 822 | "dependencies": { 823 | "vscode-languageserver-protocol": "3.16.0" 824 | }, 825 | "bin": { 826 | "installServerIntoExtension": "bin/installServerIntoExtension" 827 | } 828 | }, 829 | "node_modules/vscode-languageserver-protocol": { 830 | "version": "3.16.0", 831 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", 832 | "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", 833 | "dependencies": { 834 | "vscode-jsonrpc": "6.0.0", 835 | "vscode-languageserver-types": "3.16.0" 836 | } 837 | }, 838 | "node_modules/vscode-languageserver-textdocument": { 839 | "version": "1.0.3", 840 | "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.3.tgz", 841 | "integrity": "sha512-ynEGytvgTb6HVSUwPJIAZgiHQmPCx8bZ8w5um5Lz+q5DjP0Zj8wTFhQpyg8xaMvefDytw2+HH5yzqS+FhsR28A==" 842 | }, 843 | "node_modules/vscode-languageserver-types": { 844 | "version": "3.16.0", 845 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", 846 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" 847 | }, 848 | "node_modules/vscode-nls": { 849 | "version": "5.0.0", 850 | "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz", 851 | "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==" 852 | }, 853 | "node_modules/vscode-uri": { 854 | "version": "3.0.2", 855 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.2.tgz", 856 | "integrity": "sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA==" 857 | }, 858 | "node_modules/wrappy": { 859 | "version": "1.0.2", 860 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 861 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 862 | }, 863 | "node_modules/xtend": { 864 | "version": "4.0.2", 865 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 866 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 867 | "engines": { 868 | "node": ">=0.4" 869 | } 870 | }, 871 | "node_modules/yauzl": { 872 | "version": "2.10.0", 873 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 874 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 875 | "dependencies": { 876 | "buffer-crc32": "~0.2.3", 877 | "fd-slicer": "~1.1.0" 878 | } 879 | }, 880 | "node_modules/yn": { 881 | "version": "3.1.1", 882 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 883 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 884 | "engines": { 885 | "node": ">=6" 886 | } 887 | } 888 | }, 889 | "dependencies": { 890 | "@cspotcode/source-map-consumer": { 891 | "version": "0.8.0", 892 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", 893 | "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" 894 | }, 895 | "@cspotcode/source-map-support": { 896 | "version": "0.7.0", 897 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", 898 | "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", 899 | "requires": { 900 | "@cspotcode/source-map-consumer": "0.8.0" 901 | } 902 | }, 903 | "@kwsites/file-exists": { 904 | "version": "1.1.1", 905 | "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", 906 | "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", 907 | "requires": { 908 | "debug": "^4.1.1" 909 | } 910 | }, 911 | "@kwsites/promise-deferred": { 912 | "version": "1.1.1", 913 | "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", 914 | "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" 915 | }, 916 | "@mcschema/core": { 917 | "version": "0.12.20", 918 | "resolved": "https://registry.npmjs.org/@mcschema/core/-/core-0.12.20.tgz", 919 | "integrity": "sha512-HwBDtlWhKVW6akU+WN8A+tPtj497LHp6nJClbnWIXw4Wrq+/L/2PkuEA5F5/fqKlytFBn6dWdjSCJnRDCkihzA==" 920 | }, 921 | "@mcschema/java-1.16": { 922 | "version": "0.6.5", 923 | "resolved": "https://registry.npmjs.org/@mcschema/java-1.16/-/java-1.16-0.6.5.tgz", 924 | "integrity": "sha512-yAB98OFMXUuPRJyyUwkHlHFiSRsZbQC4rQC/InRdPMMY1xdjrP5gRRjKsC9rhej3VOSD9q/rbEWQ+wWxorcKBA==", 925 | "requires": { 926 | "@mcschema/core": "^0.12.0" 927 | } 928 | }, 929 | "@mcschema/java-1.17": { 930 | "version": "0.2.24", 931 | "resolved": "https://registry.npmjs.org/@mcschema/java-1.17/-/java-1.17-0.2.24.tgz", 932 | "integrity": "sha512-sw+02IBAhq9x3mpHElYshJWxQoTAXya28btdQjsWe9BCPic5N8fUonXRAIA7czksZmsX5cqL9hCum0tV8L+X8A==", 933 | "requires": { 934 | "@mcschema/core": "^0.12.4" 935 | } 936 | }, 937 | "@mcschema/java-1.18": { 938 | "version": "0.2.13", 939 | "resolved": "https://registry.npmjs.org/@mcschema/java-1.18/-/java-1.18-0.2.13.tgz", 940 | "integrity": "sha512-h7AL5TiFa3QOew7YzvUGuY3205VXeEPLPoa7ggcT4jFqJHGF6w4zZxadLkP9UwbN7HW48Nv2bf2Eh0S6MVp+cQ==", 941 | "requires": { 942 | "@mcschema/core": "^0.12.20" 943 | } 944 | }, 945 | "@mcschema/locales": { 946 | "version": "0.1.42", 947 | "resolved": "https://registry.npmjs.org/@mcschema/locales/-/locales-0.1.42.tgz", 948 | "integrity": "sha512-ru8bdM09rb66pCczWOJsnQrNbNUaCdv0JVCmfwNpFHVMHmw3y2SdN5Cqssc8JEUqJ69h0rjliXz4wlnOJWmLBQ==" 949 | }, 950 | "@spgoding/datapack-language-server": { 951 | "version": "3.3.16", 952 | "resolved": "https://registry.npmjs.org/@spgoding/datapack-language-server/-/datapack-language-server-3.3.16.tgz", 953 | "integrity": "sha512-lo4K5Fx+y9PHt5ILFv/GYzngbi1k43J9LRWxMO1C91r/bThLgGg0giUxO+dlVnu2P40ORChm0fb0ZLuBeKX4Yg==", 954 | "requires": { 955 | "@mcschema/core": "^0.12.20", 956 | "@mcschema/java-1.16": "^0.6.5", 957 | "@mcschema/java-1.17": "^0.2.24", 958 | "@mcschema/java-1.18": "^0.2.12", 959 | "@mcschema/locales": "^0.1.40", 960 | "appdata-path": "^1.0.0", 961 | "clone": "^2.1.2", 962 | "fast-deep-equal": "^3.1.3", 963 | "fs-extra": "^9.0.1", 964 | "minimatch": "^3.0.4", 965 | "python-range": "^1.0.4", 966 | "rfdc": "^1.1.4", 967 | "synchronous-promise": "^2.0.13", 968 | "uuid": "^8.3.0", 969 | "vscode-json-languageservice": "^4.0.0", 970 | "vscode-languageserver": "^7.0.0", 971 | "vscode-languageserver-textdocument": "^1.0.1", 972 | "vscode-uri": "^3.0.2" 973 | } 974 | }, 975 | "@tsconfig/node10": { 976 | "version": "1.0.8", 977 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", 978 | "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" 979 | }, 980 | "@tsconfig/node12": { 981 | "version": "1.0.9", 982 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", 983 | "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" 984 | }, 985 | "@tsconfig/node14": { 986 | "version": "1.0.1", 987 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", 988 | "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" 989 | }, 990 | "@tsconfig/node16": { 991 | "version": "1.0.2", 992 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", 993 | "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" 994 | }, 995 | "@types/decompress": { 996 | "version": "4.2.3", 997 | "resolved": "https://registry.npmjs.org/@types/decompress/-/decompress-4.2.3.tgz", 998 | "integrity": "sha512-W24e3Ycz1UZPgr1ZEDHlK4XnvOr+CpJH3qNsFeqXwwlW/9END9gxn3oJSsp7gYdiQxrXUHwUUd3xuzVz37MrZQ==", 999 | "dev": true, 1000 | "requires": { 1001 | "@types/node": "*" 1002 | } 1003 | }, 1004 | "@types/fs-extra": { 1005 | "version": "9.0.1", 1006 | "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.1.tgz", 1007 | "integrity": "sha512-B42Sxuaz09MhC3DDeW5kubRcQ5by4iuVQ0cRRWM2lggLzAa/KVom0Aft/208NgMvNQQZ86s5rVcqDdn/SH0/mg==", 1008 | "dev": true, 1009 | "requires": { 1010 | "@types/node": "*" 1011 | } 1012 | }, 1013 | "@types/node": { 1014 | "version": "14.0.27", 1015 | "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", 1016 | "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" 1017 | }, 1018 | "acorn": { 1019 | "version": "8.7.0", 1020 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", 1021 | "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" 1022 | }, 1023 | "acorn-walk": { 1024 | "version": "8.2.0", 1025 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 1026 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" 1027 | }, 1028 | "appdata-path": { 1029 | "version": "1.0.0", 1030 | "resolved": "https://registry.npmjs.org/appdata-path/-/appdata-path-1.0.0.tgz", 1031 | "integrity": "sha512-ZbH3ezXfnT/YE3NdqduIt4lBV+H0ybvA2Qx3K76gIjQvh8gROpDFdDLpx6B1QJtW7zxisCbpTlCLhKqoR8cDBw==" 1032 | }, 1033 | "arg": { 1034 | "version": "4.1.3", 1035 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 1036 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" 1037 | }, 1038 | "at-least-node": { 1039 | "version": "1.0.0", 1040 | "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", 1041 | "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==" 1042 | }, 1043 | "balanced-match": { 1044 | "version": "1.0.0", 1045 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 1046 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 1047 | }, 1048 | "base64-js": { 1049 | "version": "1.3.1", 1050 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", 1051 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" 1052 | }, 1053 | "bl": { 1054 | "version": "1.2.3", 1055 | "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", 1056 | "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", 1057 | "requires": { 1058 | "readable-stream": "^2.3.5", 1059 | "safe-buffer": "^5.1.1" 1060 | } 1061 | }, 1062 | "brace-expansion": { 1063 | "version": "1.1.11", 1064 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1065 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1066 | "requires": { 1067 | "balanced-match": "^1.0.0", 1068 | "concat-map": "0.0.1" 1069 | } 1070 | }, 1071 | "buffer": { 1072 | "version": "5.6.0", 1073 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", 1074 | "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", 1075 | "requires": { 1076 | "base64-js": "^1.0.2", 1077 | "ieee754": "^1.1.4" 1078 | } 1079 | }, 1080 | "buffer-alloc": { 1081 | "version": "1.2.0", 1082 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 1083 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 1084 | "requires": { 1085 | "buffer-alloc-unsafe": "^1.1.0", 1086 | "buffer-fill": "^1.0.0" 1087 | } 1088 | }, 1089 | "buffer-alloc-unsafe": { 1090 | "version": "1.1.0", 1091 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 1092 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" 1093 | }, 1094 | "buffer-crc32": { 1095 | "version": "0.2.13", 1096 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 1097 | "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" 1098 | }, 1099 | "buffer-fill": { 1100 | "version": "1.0.0", 1101 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 1102 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" 1103 | }, 1104 | "clone": { 1105 | "version": "2.1.2", 1106 | "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", 1107 | "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" 1108 | }, 1109 | "commander": { 1110 | "version": "2.20.3", 1111 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", 1112 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" 1113 | }, 1114 | "concat-map": { 1115 | "version": "0.0.1", 1116 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1117 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 1118 | }, 1119 | "core-util-is": { 1120 | "version": "1.0.2", 1121 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1122 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 1123 | }, 1124 | "create-require": { 1125 | "version": "1.1.1", 1126 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 1127 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" 1128 | }, 1129 | "debug": { 1130 | "version": "4.1.1", 1131 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", 1132 | "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", 1133 | "requires": { 1134 | "ms": "^2.1.1" 1135 | } 1136 | }, 1137 | "decompress": { 1138 | "version": "4.2.1", 1139 | "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", 1140 | "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", 1141 | "requires": { 1142 | "decompress-tar": "^4.0.0", 1143 | "decompress-tarbz2": "^4.0.0", 1144 | "decompress-targz": "^4.0.0", 1145 | "decompress-unzip": "^4.0.1", 1146 | "graceful-fs": "^4.1.10", 1147 | "make-dir": "^1.0.0", 1148 | "pify": "^2.3.0", 1149 | "strip-dirs": "^2.0.0" 1150 | } 1151 | }, 1152 | "decompress-tar": { 1153 | "version": "4.1.1", 1154 | "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", 1155 | "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", 1156 | "requires": { 1157 | "file-type": "^5.2.0", 1158 | "is-stream": "^1.1.0", 1159 | "tar-stream": "^1.5.2" 1160 | } 1161 | }, 1162 | "decompress-tarbz2": { 1163 | "version": "4.1.1", 1164 | "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", 1165 | "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", 1166 | "requires": { 1167 | "decompress-tar": "^4.1.0", 1168 | "file-type": "^6.1.0", 1169 | "is-stream": "^1.1.0", 1170 | "seek-bzip": "^1.0.5", 1171 | "unbzip2-stream": "^1.0.9" 1172 | }, 1173 | "dependencies": { 1174 | "file-type": { 1175 | "version": "6.2.0", 1176 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", 1177 | "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" 1178 | } 1179 | } 1180 | }, 1181 | "decompress-targz": { 1182 | "version": "4.1.1", 1183 | "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", 1184 | "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", 1185 | "requires": { 1186 | "decompress-tar": "^4.1.1", 1187 | "file-type": "^5.2.0", 1188 | "is-stream": "^1.1.0" 1189 | } 1190 | }, 1191 | "decompress-unzip": { 1192 | "version": "4.0.1", 1193 | "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", 1194 | "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", 1195 | "requires": { 1196 | "file-type": "^3.8.0", 1197 | "get-stream": "^2.2.0", 1198 | "pify": "^2.3.0", 1199 | "yauzl": "^2.4.2" 1200 | }, 1201 | "dependencies": { 1202 | "file-type": { 1203 | "version": "3.9.0", 1204 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", 1205 | "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" 1206 | } 1207 | } 1208 | }, 1209 | "diff": { 1210 | "version": "4.0.2", 1211 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1212 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" 1213 | }, 1214 | "end-of-stream": { 1215 | "version": "1.4.4", 1216 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 1217 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 1218 | "requires": { 1219 | "once": "^1.4.0" 1220 | } 1221 | }, 1222 | "fast-deep-equal": { 1223 | "version": "3.1.3", 1224 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 1225 | "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" 1226 | }, 1227 | "fd-slicer": { 1228 | "version": "1.1.0", 1229 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 1230 | "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", 1231 | "requires": { 1232 | "pend": "~1.2.0" 1233 | } 1234 | }, 1235 | "file-type": { 1236 | "version": "5.2.0", 1237 | "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", 1238 | "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" 1239 | }, 1240 | "fs-constants": { 1241 | "version": "1.0.0", 1242 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 1243 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 1244 | }, 1245 | "fs-extra": { 1246 | "version": "9.0.1", 1247 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", 1248 | "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", 1249 | "requires": { 1250 | "at-least-node": "^1.0.0", 1251 | "graceful-fs": "^4.2.0", 1252 | "jsonfile": "^6.0.1", 1253 | "universalify": "^1.0.0" 1254 | } 1255 | }, 1256 | "get-stream": { 1257 | "version": "2.3.1", 1258 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", 1259 | "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", 1260 | "requires": { 1261 | "object-assign": "^4.0.1", 1262 | "pinkie-promise": "^2.0.0" 1263 | } 1264 | }, 1265 | "graceful-fs": { 1266 | "version": "4.2.4", 1267 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", 1268 | "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" 1269 | }, 1270 | "ieee754": { 1271 | "version": "1.1.13", 1272 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", 1273 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" 1274 | }, 1275 | "inherits": { 1276 | "version": "2.0.4", 1277 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1278 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1279 | }, 1280 | "is-natural-number": { 1281 | "version": "4.0.1", 1282 | "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", 1283 | "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" 1284 | }, 1285 | "is-stream": { 1286 | "version": "1.1.0", 1287 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1288 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" 1289 | }, 1290 | "isarray": { 1291 | "version": "1.0.0", 1292 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1293 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 1294 | }, 1295 | "jsonc-parser": { 1296 | "version": "3.0.0", 1297 | "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", 1298 | "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" 1299 | }, 1300 | "jsonfile": { 1301 | "version": "6.0.1", 1302 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz", 1303 | "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==", 1304 | "requires": { 1305 | "graceful-fs": "^4.1.6", 1306 | "universalify": "^1.0.0" 1307 | } 1308 | }, 1309 | "lodash.frompairs": { 1310 | "version": "4.0.1", 1311 | "resolved": "https://registry.npmjs.org/lodash.frompairs/-/lodash.frompairs-4.0.1.tgz", 1312 | "integrity": "sha1-vE5SB/onV8E25XNhTpZkUGsrG9I=" 1313 | }, 1314 | "make-dir": { 1315 | "version": "1.3.0", 1316 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", 1317 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", 1318 | "requires": { 1319 | "pify": "^3.0.0" 1320 | }, 1321 | "dependencies": { 1322 | "pify": { 1323 | "version": "3.0.0", 1324 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", 1325 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" 1326 | } 1327 | } 1328 | }, 1329 | "make-error": { 1330 | "version": "1.3.6", 1331 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1332 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 1333 | }, 1334 | "minimatch": { 1335 | "version": "3.0.4", 1336 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1337 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1338 | "requires": { 1339 | "brace-expansion": "^1.1.7" 1340 | } 1341 | }, 1342 | "ms": { 1343 | "version": "2.1.2", 1344 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1345 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1346 | }, 1347 | "object-assign": { 1348 | "version": "4.1.1", 1349 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1350 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 1351 | }, 1352 | "once": { 1353 | "version": "1.4.0", 1354 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1355 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1356 | "requires": { 1357 | "wrappy": "1" 1358 | } 1359 | }, 1360 | "pend": { 1361 | "version": "1.2.0", 1362 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1363 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" 1364 | }, 1365 | "pify": { 1366 | "version": "2.3.0", 1367 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1368 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" 1369 | }, 1370 | "pinkie": { 1371 | "version": "2.0.4", 1372 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1373 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" 1374 | }, 1375 | "pinkie-promise": { 1376 | "version": "2.0.1", 1377 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1378 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1379 | "requires": { 1380 | "pinkie": "^2.0.0" 1381 | } 1382 | }, 1383 | "process-nextick-args": { 1384 | "version": "2.0.1", 1385 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 1386 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 1387 | }, 1388 | "python-range": { 1389 | "version": "1.0.4", 1390 | "resolved": "https://registry.npmjs.org/python-range/-/python-range-1.0.4.tgz", 1391 | "integrity": "sha512-yapjRst4wzWH2Si0F6kYJ/prlp4CtXSk3IJiD7iVGtv2dXfj9VZXqQPPf66Sg4iwLWjUa+wz42Ktp9QpsjZUwg==", 1392 | "requires": { 1393 | "lodash.frompairs": "^4.0.1" 1394 | } 1395 | }, 1396 | "readable-stream": { 1397 | "version": "2.3.7", 1398 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 1399 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 1400 | "requires": { 1401 | "core-util-is": "~1.0.0", 1402 | "inherits": "~2.0.3", 1403 | "isarray": "~1.0.0", 1404 | "process-nextick-args": "~2.0.0", 1405 | "safe-buffer": "~5.1.1", 1406 | "string_decoder": "~1.1.1", 1407 | "util-deprecate": "~1.0.1" 1408 | }, 1409 | "dependencies": { 1410 | "safe-buffer": { 1411 | "version": "5.1.2", 1412 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1413 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1414 | } 1415 | } 1416 | }, 1417 | "rfdc": { 1418 | "version": "1.1.4", 1419 | "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", 1420 | "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==" 1421 | }, 1422 | "safe-buffer": { 1423 | "version": "5.2.1", 1424 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1425 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1426 | }, 1427 | "seek-bzip": { 1428 | "version": "1.0.6", 1429 | "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", 1430 | "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", 1431 | "requires": { 1432 | "commander": "^2.8.1" 1433 | } 1434 | }, 1435 | "simple-git": { 1436 | "version": "2.17.0", 1437 | "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.17.0.tgz", 1438 | "integrity": "sha512-l2F16fJvHWSx+E1C8WduwpNDfqf+JDD8nsEaD5szUZlbz5Y6paSnR4wlGxIa6Mr6I4kl3F9QmTaPIQjSxlcafA==", 1439 | "requires": { 1440 | "@kwsites/file-exists": "^1.1.1", 1441 | "@kwsites/promise-deferred": "^1.1.1", 1442 | "debug": "^4.1.1" 1443 | } 1444 | }, 1445 | "string_decoder": { 1446 | "version": "1.1.1", 1447 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 1448 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 1449 | "requires": { 1450 | "safe-buffer": "~5.1.0" 1451 | }, 1452 | "dependencies": { 1453 | "safe-buffer": { 1454 | "version": "5.1.2", 1455 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1456 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 1457 | } 1458 | } 1459 | }, 1460 | "strip-dirs": { 1461 | "version": "2.1.0", 1462 | "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", 1463 | "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", 1464 | "requires": { 1465 | "is-natural-number": "^4.0.1" 1466 | } 1467 | }, 1468 | "synchronous-promise": { 1469 | "version": "2.0.13", 1470 | "resolved": "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.13.tgz", 1471 | "integrity": "sha512-R9N6uDkVsghHePKh1TEqbnLddO2IY25OcsksyFp/qBe7XYd0PVbKEWxhcdMhpLzE1I6skj5l4aEZ3CRxcbArlA==" 1472 | }, 1473 | "tar-stream": { 1474 | "version": "1.6.2", 1475 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", 1476 | "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", 1477 | "requires": { 1478 | "bl": "^1.0.0", 1479 | "buffer-alloc": "^1.2.0", 1480 | "end-of-stream": "^1.0.0", 1481 | "fs-constants": "^1.0.0", 1482 | "readable-stream": "^2.3.0", 1483 | "to-buffer": "^1.1.1", 1484 | "xtend": "^4.0.0" 1485 | } 1486 | }, 1487 | "through": { 1488 | "version": "2.3.8", 1489 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", 1490 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" 1491 | }, 1492 | "to-buffer": { 1493 | "version": "1.1.1", 1494 | "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", 1495 | "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" 1496 | }, 1497 | "ts-node": { 1498 | "version": "10.4.0", 1499 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", 1500 | "integrity": "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==", 1501 | "requires": { 1502 | "@cspotcode/source-map-support": "0.7.0", 1503 | "@tsconfig/node10": "^1.0.7", 1504 | "@tsconfig/node12": "^1.0.7", 1505 | "@tsconfig/node14": "^1.0.0", 1506 | "@tsconfig/node16": "^1.0.2", 1507 | "acorn": "^8.4.1", 1508 | "acorn-walk": "^8.1.1", 1509 | "arg": "^4.1.0", 1510 | "create-require": "^1.1.0", 1511 | "diff": "^4.0.1", 1512 | "make-error": "^1.1.1", 1513 | "yn": "3.1.1" 1514 | } 1515 | }, 1516 | "typescript": { 1517 | "version": "4.5.5", 1518 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", 1519 | "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==" 1520 | }, 1521 | "unbzip2-stream": { 1522 | "version": "1.4.3", 1523 | "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", 1524 | "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", 1525 | "requires": { 1526 | "buffer": "^5.2.1", 1527 | "through": "^2.3.8" 1528 | } 1529 | }, 1530 | "universalify": { 1531 | "version": "1.0.0", 1532 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", 1533 | "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==" 1534 | }, 1535 | "util-deprecate": { 1536 | "version": "1.0.2", 1537 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1538 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1539 | }, 1540 | "uuid": { 1541 | "version": "8.3.0", 1542 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", 1543 | "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" 1544 | }, 1545 | "vscode-json-languageservice": { 1546 | "version": "4.1.0", 1547 | "resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-4.1.0.tgz", 1548 | "integrity": "sha512-QW2SFk4kln5lTPQajGNuXWtmr2z9hVA6Sfi4qPFEW2vjt2XaUAp38/1OrcUQYiJXOyXntbWN2jZJaGxg+hDUxw==", 1549 | "requires": { 1550 | "jsonc-parser": "^3.0.0", 1551 | "minimatch": "^3.0.4", 1552 | "vscode-languageserver-textdocument": "^1.0.1", 1553 | "vscode-languageserver-types": "^3.16.0", 1554 | "vscode-nls": "^5.0.0", 1555 | "vscode-uri": "^3.0.2" 1556 | } 1557 | }, 1558 | "vscode-jsonrpc": { 1559 | "version": "6.0.0", 1560 | "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz", 1561 | "integrity": "sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==" 1562 | }, 1563 | "vscode-languageserver": { 1564 | "version": "7.0.0", 1565 | "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz", 1566 | "integrity": "sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==", 1567 | "requires": { 1568 | "vscode-languageserver-protocol": "3.16.0" 1569 | } 1570 | }, 1571 | "vscode-languageserver-protocol": { 1572 | "version": "3.16.0", 1573 | "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz", 1574 | "integrity": "sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==", 1575 | "requires": { 1576 | "vscode-jsonrpc": "6.0.0", 1577 | "vscode-languageserver-types": "3.16.0" 1578 | } 1579 | }, 1580 | "vscode-languageserver-textdocument": { 1581 | "version": "1.0.3", 1582 | "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.3.tgz", 1583 | "integrity": "sha512-ynEGytvgTb6HVSUwPJIAZgiHQmPCx8bZ8w5um5Lz+q5DjP0Zj8wTFhQpyg8xaMvefDytw2+HH5yzqS+FhsR28A==" 1584 | }, 1585 | "vscode-languageserver-types": { 1586 | "version": "3.16.0", 1587 | "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz", 1588 | "integrity": "sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==" 1589 | }, 1590 | "vscode-nls": { 1591 | "version": "5.0.0", 1592 | "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.0.0.tgz", 1593 | "integrity": "sha512-u0Lw+IYlgbEJFF6/qAqG2d1jQmJl0eyAGJHoAJqr2HT4M2BNuQYSEiSE75f52pXHSJm8AlTjnLLbBFPrdz2hpA==" 1594 | }, 1595 | "vscode-uri": { 1596 | "version": "3.0.2", 1597 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.2.tgz", 1598 | "integrity": "sha512-jkjy6pjU1fxUvI51P+gCsxg1u2n8LSt0W6KrCNQceaziKzff74GoWmjVG46KieVzybO1sttPQmYfrwSHey7GUA==" 1599 | }, 1600 | "wrappy": { 1601 | "version": "1.0.2", 1602 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1603 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1604 | }, 1605 | "xtend": { 1606 | "version": "4.0.2", 1607 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1608 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 1609 | }, 1610 | "yauzl": { 1611 | "version": "2.10.0", 1612 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1613 | "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", 1614 | "requires": { 1615 | "buffer-crc32": "~0.2.3", 1616 | "fd-slicer": "~1.1.0" 1617 | } 1618 | }, 1619 | "yn": { 1620 | "version": "3.1.1", 1621 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 1622 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" 1623 | } 1624 | } 1625 | } 1626 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vanilla-datapack", 3 | "version": "1.0.0", 4 | "description": "A repository with scripts to generate the vanilla data pack from Minecraft: Java Edition server/client files and [vanilla worldgen files](https://github.com/slicedlime/examples).", 5 | "main": "scripts/github_action_tick.ts", 6 | "private": true, 7 | "scripts": { 8 | "download_inputs": "ts-node scripts/download_inputs", 9 | "gen": "npm run generate", 10 | "generate": "ts-node scripts/generate", 11 | "get_latest_version": "ts-node scripts/get_latest_version", 12 | "github_action_tick": "ts-node scripts/github_action_tick", 13 | "test": "echo \"Error: no test specified\" && exit 1" 14 | }, 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/SPGoding/vanilla-datapack.git" 18 | }, 19 | "author": "SPGoding", 20 | "license": "WTFPL", 21 | "bugs": { 22 | "url": "https://github.com/SPGoding/vanilla-datapack/issues" 23 | }, 24 | "homepage": "https://github.com/SPGoding/vanilla-datapack#readme", 25 | "devDependencies": { 26 | "@types/decompress": "^4.2.3", 27 | "@types/fs-extra": "^9.0.1", 28 | "@types/node": "^14.0.27" 29 | }, 30 | "dependencies": { 31 | "@spgoding/datapack-language-server": "3.3.16", 32 | "decompress": "^4.2.1", 33 | "fs-extra": "^9.0.1", 34 | "simple-git": "^2.17.0", 35 | "ts-node": "^10.4.0", 36 | "typescript": "^4.5.5" 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /scripts/download_inputs.ts: -------------------------------------------------------------------------------- 1 | import { LatestVersionResult } from './get_latest_version' 2 | import { JarPath, createDirs, download } from './utils' 3 | 4 | export async function downloadInputs(json: LatestVersionResult) { 5 | console.log(`Downloading inputs for "${json.version}"...`) 6 | createDirs() 7 | await download(json.download, JarPath, json.sha1) 8 | console.log('Saved "game.jar".') 9 | } 10 | 11 | if (require.main === module) { 12 | (async () => { 13 | try { 14 | await downloadInputs(JSON.parse(process.argv.slice(2).join(' '))) 15 | } catch (e) { 16 | console.error(e) 17 | } 18 | })() 19 | } 20 | -------------------------------------------------------------------------------- /scripts/generate.ts: -------------------------------------------------------------------------------- 1 | import { IdentityNode } from '@spgoding/datapack-language-server/lib/nodes' 2 | import { walkFile } from '@spgoding/datapack-language-server/lib/services/common' 3 | import decompress from 'decompress' 4 | import cp from 'child_process' 5 | import fs from 'fs-extra' 6 | import path from 'path' 7 | import { createDirs, DataGeneratorGeneratedDimensionPath, DataGeneratorGeneratedDimensionTypePath, DataGeneratorGeneratedDirName, DataGeneratorGeneratedWorldgenPath, GeneratedDataPath, GeneratedDefaultNamespacePath, GeneratedDimensionPath, GeneratedDimensionTypePath, GeneratedFlattenedSummaryPath, GeneratedMinFlattenedSummaryPath, GeneratedMinTreeSummaryPath, GeneratedPath, GeneratedSummaryPath, GeneratedTreeSummaryPath, GeneratedWorldgenPath, InputPath, JarPath, TreeSummary } from './utils' 8 | 9 | export async function generate() { 10 | console.time('generate') 11 | if (!fs.existsSync(JarPath)) { 12 | throw new Error(`No input at "${JarPath}"`) 13 | } 14 | createDirs() 15 | if (fs.existsSync(GeneratedDataPath)) { 16 | fs.rmdirSync(GeneratedDataPath, { recursive: true }) 17 | } 18 | fs.mkdirSync(GeneratedDefaultNamespacePath, { recursive: true }) 19 | fs.mkdirSync(GeneratedSummaryPath, { recursive: true }) 20 | console.time('generateData') 21 | await generateData() 22 | console.timeEnd('generateData') 23 | console.time('generateSummary') 24 | await generateSummary() 25 | console.timeEnd('generateSummary') 26 | console.timeEnd('generate') 27 | } 28 | 29 | async function generateData() { 30 | console.time('generateJarData') 31 | await generateJarData() 32 | console.timeEnd('generateJarData') 33 | console.time('generateWorldgenData') 34 | generateWorldgenData() 35 | console.timeEnd('generateWorldgenData') 36 | fs.writeFileSync(path.join(GeneratedDefaultNamespacePath, 'loot_tables/empty.json'), '{}', 'utf-8') 37 | } 38 | 39 | async function generateJarData() { 40 | function getFile(files: decompress.File[], path: string): decompress.File | undefined { 41 | return files.find(f => f.path.replace(/\\/g, '/') === path) 42 | } 43 | 44 | try { 45 | const files = await decompress(JarPath) 46 | const versionsList = getFile(files, 'META-INF/versions.list') 47 | 48 | let versionJarFiles: decompress.File[] 49 | if (versionsList) { 50 | // New bundler format after 21w39a. 51 | const [, , versionJarRelPath] = versionsList.data.toString('utf-8').split(/[\t\r\n]/) 52 | const versionJarPath = path.posix.join('META-INF/versions', versionJarRelPath) 53 | const versionJar = getFile(files, versionJarPath) 54 | if (!versionJar) { 55 | throw new Error(`Cannot find version jar ${versionJarPath}`) 56 | } 57 | versionJarFiles = await decompress(versionJar.data) 58 | } else { 59 | // Legacy format before 21w39a. 60 | versionJarFiles = files 61 | } 62 | 63 | await Promise.all(versionJarFiles.map(async file => { 64 | if (file.path.startsWith('data') && ['.json', '.mcfunction', '.nbt'].includes(path.posix.extname(file.path))) { 65 | const outputPath = path.join(GeneratedPath, file.path) 66 | await fs.promises.mkdir(path.resolve(outputPath, '..'), { recursive: true }) 67 | await fs.promises.writeFile(path.join(GeneratedPath, file.path), file.data) 68 | } 69 | })) 70 | } catch (e) { 71 | console.error(`Handling ${JarPath}: `, e) 72 | } 73 | } 74 | 75 | function generateWorldgenData() { 76 | cp.execSync(`java -DbundlerMainClass=net.minecraft.data.Main -jar game.jar --reports --output ${DataGeneratorGeneratedDirName}`, { 77 | cwd: InputPath, 78 | }) 79 | fs.moveSync(DataGeneratorGeneratedDimensionPath, GeneratedDimensionPath) 80 | fs.moveSync(DataGeneratorGeneratedDimensionTypePath, GeneratedDimensionTypePath) 81 | fs.moveSync(DataGeneratorGeneratedWorldgenPath, GeneratedWorldgenPath) 82 | } 83 | 84 | async function generateSummary() { 85 | const tree: Record = {} 86 | const flattened: Record = {} 87 | const rels: string[] = [] 88 | await walkFile( 89 | GeneratedPath, 90 | GeneratedDataPath, 91 | (_, rel) => rels.push(rel) 92 | ) 93 | 94 | for (const rel of rels.sort()) { 95 | const result = IdentityNode.fromRel(rel) 96 | if (result) { 97 | (flattened[result.category] ??= []).push(result.id.toString()) 98 | const arr = [result.id.getNamespace(), ...result.id.path] 99 | let object = (tree[result.category] ??= {}) 100 | for (const [i, seg] of arr.entries()) { 101 | object[seg] ??= {} 102 | if (i === arr.length - 1) { 103 | object[seg].$end = true 104 | } else { 105 | object = (object[seg].$children ??= {}) 106 | } 107 | } 108 | } 109 | } 110 | 111 | fs.writeFileSync(GeneratedTreeSummaryPath, JSON.stringify(tree, undefined, 2) + '\n', { encoding: 'utf-8' }) 112 | fs.writeFileSync(GeneratedMinTreeSummaryPath, JSON.stringify(tree), { encoding: 'utf-8' }) 113 | fs.writeFileSync(GeneratedFlattenedSummaryPath, JSON.stringify(flattened, undefined, 2) + '\n', { encoding: 'utf-8' }) 114 | fs.writeFileSync(GeneratedMinFlattenedSummaryPath, JSON.stringify(flattened), { encoding: 'utf-8' }) 115 | } 116 | 117 | if (require.main === module) { 118 | (async () => { 119 | try { 120 | await generate() 121 | } catch (e) { 122 | console.error(e) 123 | } 124 | })() 125 | } 126 | -------------------------------------------------------------------------------- /scripts/get_latest_version.ts: -------------------------------------------------------------------------------- 1 | import { getPlainText } from './utils' 2 | 3 | const VersionManifestUri = 'https://launchermeta.mojang.com/mc/game/version_manifest.json' 4 | 5 | export async function getLatestVersion(): Promise { 6 | const manifest = JSON.parse(await getPlainText(VersionManifestUri)) as { latest: { snapshot: string }, versions: { id: string, url: string }[] } 7 | const clientJsonUri = manifest.versions.find(v => v.id === manifest.latest.snapshot)?.url 8 | if (!clientJsonUri) { 9 | throw new Error(`No clientJsonUri for "${manifest.latest.snapshot}".`) 10 | } 11 | const clientJson = JSON.parse(await getPlainText(clientJsonUri)) as { downloads: { server: { sha1: string, url: string } } } 12 | const ans = { 13 | version: manifest.latest.snapshot, 14 | download: clientJson.downloads.server.url, 15 | sha1: clientJson.downloads.server.sha1 16 | } 17 | if (require.main === module) { 18 | console.log(JSON.stringify(ans)) 19 | } 20 | return ans 21 | } 22 | 23 | export type LatestVersionResult = { 24 | version: string, 25 | download: string, 26 | sha1: string 27 | } 28 | 29 | if (require.main === module) { 30 | (async () => { 31 | try { 32 | await getLatestVersion() 33 | } catch (e) { 34 | console.error(e) 35 | } 36 | })() 37 | } 38 | -------------------------------------------------------------------------------- /scripts/github_action_tick.ts: -------------------------------------------------------------------------------- 1 | import fs from 'fs-extra' 2 | import simpleGit, { ResetMode, SimpleGit } from 'simple-git' 3 | import { downloadInputs } from './download_inputs' 4 | import { generate } from './generate' 5 | import { getLatestVersion } from './get_latest_version' 6 | import { createDirs, GeneratedDataPath, GeneratedSummaryPath, RootDataPath, RootSummaryPath } from './utils' 7 | 8 | (async () => { 9 | try { 10 | createDirs() 11 | const latestResult = await getLatestVersion() 12 | const git = simpleGit() 13 | const { all: allTags } = await git.tags() 14 | console.log(`The latest version is "${latestResult.version}".`) 15 | console.log(`A list of git tags: ${JSON.stringify(allTags)}.`) 16 | if (allTags.includes(`${latestResult.version}-summary`)) { 17 | console.log(`The latest version already exists in git tags.`) 18 | return 19 | } else { 20 | await downloadInputs(latestResult) 21 | await generate() 22 | await deploy(git, latestResult.version) 23 | } 24 | } catch (e) { 25 | console.error(e) 26 | process.exit(42) 27 | } 28 | })() 29 | 30 | async function deploy(git: SimpleGit, version: string) { 31 | console.time('deploy') 32 | await git.addConfig('user.name', 'actions-user') 33 | await git.addConfig('user.email', 'action@github.com') 34 | console.time('deployTo data') 35 | await deployTo(git, version, 'data', GeneratedDataPath, RootDataPath) 36 | console.timeEnd('deployTo data') 37 | console.time('deployTo summary') 38 | await deployTo(git, version, 'summary', GeneratedSummaryPath, RootSummaryPath) 39 | console.timeEnd('deployTo summary') 40 | console.timeEnd('deploy') 41 | } 42 | 43 | async function deployTo(git: SimpleGit, version: string, type: 'data' | 'summary', generatedPath: string, rootStorePath: string) { 44 | await git.reset(ResetMode.HARD) 45 | await git.checkout(type) 46 | if (fs.existsSync(rootStorePath)) { 47 | fs.rmdirSync(rootStorePath, { recursive: true }) 48 | } 49 | await fs.ensureDir(rootStorePath) 50 | await fs.copy(generatedPath, rootStorePath) 51 | await git.add('.') 52 | await git.commit(`🚀 Update ${type} for ${version}`) 53 | await git.addTag(`${version}-${type}`) 54 | await git.push() 55 | await git.pushTags() 56 | } 57 | -------------------------------------------------------------------------------- /scripts/utils.ts: -------------------------------------------------------------------------------- 1 | import crypto from 'crypto' 2 | import fs from 'fs' 3 | import https from 'https' 4 | import path from 'path' 5 | 6 | export interface TreeSummary extends Record {} 7 | 8 | export type TreeSummaryNode = { 9 | $end?: true, 10 | $children?: TreeSummary 11 | } 12 | 13 | export async function download(uri: string, path: string, sha1?: string): Promise { 14 | return new Promise((resolve, reject) => { 15 | if (fs.existsSync(path)) { 16 | fs.unlinkSync(path) 17 | } 18 | const stream = fs.createWriteStream(path, { encoding: 'utf-8' }) 19 | let hash = sha1 ? crypto.createHash('sha1') : undefined 20 | https.get(uri, res => { 21 | res 22 | .on('data', chunk => hash?.update(chunk)) 23 | .on('end', () => { 24 | const expected = sha1?.toLowerCase() 25 | const actual = hash?.digest('hex').toLowerCase() 26 | if (expected !== actual) { 27 | fs.unlinkSync(path) 28 | reject(new Error(`Expected SHA-1 ${expected} but got ${actual} for "${uri}"`)) 29 | } else if (expected) { 30 | console.log(`Checksum passed for "${uri}".`) 31 | } 32 | }) 33 | .on('error', e => { 34 | fs.unlinkSync(path) 35 | reject(e) 36 | }) 37 | .pipe(stream) 38 | stream 39 | .on('error', e => { 40 | fs.unlinkSync(path) 41 | reject(e) 42 | }) 43 | .on('finish', () => { 44 | stream.close() 45 | }) 46 | .on('close', resolve) 47 | }) 48 | }) 49 | } 50 | 51 | export async function getPlainText(uri: string): Promise { 52 | return new Promise((resolve, reject) => { 53 | let data = '' 54 | https.get(uri, res => { 55 | if (res.statusCode === 200) { 56 | res 57 | .on('error', reject) 58 | .on('data', chunk => data += chunk) 59 | .on('end', () => resolve(data)) 60 | } else { 61 | reject(res.statusCode) 62 | } 63 | }) 64 | }) 65 | } 66 | 67 | export function createDirs(): void { 68 | if (!fs.existsSync(GeneratedPath)) { 69 | fs.mkdirSync(GeneratedPath) 70 | } 71 | if (!fs.existsSync(InputPath)) { 72 | fs.mkdirSync(InputPath) 73 | } 74 | } 75 | 76 | export const RootPath = path.join(__dirname, '..') 77 | export const RootDataPath = path.join(RootPath, 'data') 78 | export const RootSummaryPath = path.join(RootPath, 'summary') 79 | export const GeneratedPath = path.join(__dirname, '../generated') 80 | export const GeneratedDataPath = path.join(GeneratedPath, 'data') 81 | export const GeneratedDefaultNamespacePath = path.join(GeneratedDataPath, 'minecraft') 82 | export const GeneratedDimensionPath = path.join(GeneratedDefaultNamespacePath, 'dimension') 83 | export const GeneratedDimensionTypePath = path.join(GeneratedDefaultNamespacePath, 'dimension_type') 84 | export const GeneratedWorldgenPath = path.join(GeneratedDefaultNamespacePath, 'worldgen') 85 | export const GeneratedSummaryPath = path.join(GeneratedPath, 'summary') 86 | export const GeneratedTreeSummaryPath = path.join(GeneratedSummaryPath, 'tree.json') 87 | export const GeneratedMinTreeSummaryPath = path.join(GeneratedSummaryPath, 'tree.min.json') 88 | export const GeneratedFlattenedSummaryPath = path.join(GeneratedSummaryPath, 'flattened.json') 89 | export const GeneratedMinFlattenedSummaryPath = path.join(GeneratedSummaryPath, 'flattened.min.json') 90 | 91 | export const InputPath = path.join(__dirname, '../input') 92 | export const JarPath = path.join(InputPath, 'game.jar') 93 | export const DataGeneratorGeneratedDirName = 'data_generator_generated' 94 | export const DataGeneratorGeneratedWorldgenRoot = path.join(InputPath, DataGeneratorGeneratedDirName, 'reports', 'worldgen', 'minecraft') 95 | export const DataGeneratorGeneratedDimensionPath = path.join(DataGeneratorGeneratedWorldgenRoot, 'dimension') 96 | export const DataGeneratorGeneratedDimensionTypePath = path.join(DataGeneratorGeneratedWorldgenRoot, 'dimension_type') 97 | export const DataGeneratorGeneratedWorldgenPath = path.join(DataGeneratorGeneratedWorldgenRoot, 'worldgen') 98 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "allowSyntheticDefaultImports": true, 4 | "esModuleInterop": true, 5 | "moduleResolution": "node", 6 | "module": "commonjs", 7 | "target": "ES2015", 8 | "rootDir": "scripts", 9 | "noFallthroughCasesInSwitch": true, 10 | "noImplicitAny": true, 11 | "noImplicitReturns": true, 12 | "noImplicitThis": true, 13 | "pretty": true, 14 | "alwaysStrict": true, 15 | "strictNullChecks": true, 16 | "declaration": true, 17 | "newLine": "LF", 18 | "resolveJsonModule": true 19 | } 20 | } 21 | --------------------------------------------------------------------------------