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