@minecraft/api-docs-generator 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +20 -0
- package/CHANGELOG.md +13 -0
- package/README.md +92 -0
- package/lib/ChangelogStrategy.d.ts +39 -0
- package/lib/ChangelogStrategy.js +114 -0
- package/lib/ChangelogStrategy.js.map +1 -0
- package/lib/Config.d.ts +76 -0
- package/lib/Config.js +68 -0
- package/lib/Config.js.map +1 -0
- package/lib/Context.d.ts +28 -0
- package/lib/Context.js +323 -0
- package/lib/Context.js.map +1 -0
- package/lib/FileLoader.d.ts +13 -0
- package/lib/FileLoader.js +91 -0
- package/lib/FileLoader.js.map +1 -0
- package/lib/Logger.d.ts +65 -0
- package/lib/Logger.js +179 -0
- package/lib/Logger.js.map +1 -0
- package/lib/MinecraftRelease.d.ts +37 -0
- package/lib/MinecraftRelease.js +157 -0
- package/lib/MinecraftRelease.js.map +1 -0
- package/lib/PrettierConfiguration.d.ts +2 -0
- package/lib/PrettierConfiguration.js +17 -0
- package/lib/PrettierConfiguration.js.map +1 -0
- package/lib/changelog.d.ts +11 -0
- package/lib/changelog.js +459 -0
- package/lib/changelog.js.map +1 -0
- package/lib/cli.d.ts +2 -0
- package/lib/cli.js +172 -0
- package/lib/cli.js.map +1 -0
- package/lib/filters/CommandFilters.d.ts +2 -0
- package/lib/filters/CommandFilters.js +171 -0
- package/lib/filters/CommandFilters.js.map +1 -0
- package/lib/filters/CommonFilters.d.ts +2 -0
- package/lib/filters/CommonFilters.js +2518 -0
- package/lib/filters/CommonFilters.js.map +1 -0
- package/lib/filters/Filters.d.ts +17 -0
- package/lib/filters/Filters.js +5 -0
- package/lib/filters/Filters.js.map +1 -0
- package/lib/filters/MarkdownFilters.d.ts +2 -0
- package/lib/filters/MarkdownFilters.js +63 -0
- package/lib/filters/MarkdownFilters.js.map +1 -0
- package/lib/filters/TypeScriptFilters.d.ts +2 -0
- package/lib/filters/TypeScriptFilters.js +387 -0
- package/lib/filters/TypeScriptFilters.js.map +1 -0
- package/lib/filters/index.d.ts +4 -0
- package/lib/filters/index.js +23 -0
- package/lib/filters/index.js.map +1 -0
- package/lib/generator.d.ts +8 -0
- package/lib/generator.js +511 -0
- package/lib/generator.js.map +1 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.js +50 -0
- package/lib/index.js.map +1 -0
- package/lib/modules/IMinecraftModule.d.ts +123 -0
- package/lib/modules/IMinecraftModule.js +71 -0
- package/lib/modules/IMinecraftModule.js.map +1 -0
- package/lib/modules/KeyToTypeMapping.d.ts +77 -0
- package/lib/modules/KeyToTypeMapping.js +5 -0
- package/lib/modules/KeyToTypeMapping.js.map +1 -0
- package/lib/modules/MinecraftAfterEventsOrderModule.d.ts +57 -0
- package/lib/modules/MinecraftAfterEventsOrderModule.js +28 -0
- package/lib/modules/MinecraftAfterEventsOrderModule.js.map +1 -0
- package/lib/modules/MinecraftBlockModule.d.ts +139 -0
- package/lib/modules/MinecraftBlockModule.js +37 -0
- package/lib/modules/MinecraftBlockModule.js.map +1 -0
- package/lib/modules/MinecraftChangelogTypes.d.ts +60 -0
- package/lib/modules/MinecraftChangelogTypes.js +17 -0
- package/lib/modules/MinecraftChangelogTypes.js.map +1 -0
- package/lib/modules/MinecraftCommandModule.d.ts +270 -0
- package/lib/modules/MinecraftCommandModule.js +87 -0
- package/lib/modules/MinecraftCommandModule.js.map +1 -0
- package/lib/modules/MinecraftDimensionsModule.d.ts +44 -0
- package/lib/modules/MinecraftDimensionsModule.js +11 -0
- package/lib/modules/MinecraftDimensionsModule.js.map +1 -0
- package/lib/modules/MinecraftDocsTypes.d.ts +475 -0
- package/lib/modules/MinecraftDocsTypes.js +77 -0
- package/lib/modules/MinecraftDocsTypes.js.map +1 -0
- package/lib/modules/MinecraftEffectsModule.d.ts +44 -0
- package/lib/modules/MinecraftEffectsModule.js +11 -0
- package/lib/modules/MinecraftEffectsModule.js.map +1 -0
- package/lib/modules/MinecraftEnchantmentsModule.d.ts +44 -0
- package/lib/modules/MinecraftEnchantmentsModule.js +11 -0
- package/lib/modules/MinecraftEnchantmentsModule.js.map +1 -0
- package/lib/modules/MinecraftEngineDataModules.d.ts +2 -0
- package/lib/modules/MinecraftEngineDataModules.js +5 -0
- package/lib/modules/MinecraftEngineDataModules.js.map +1 -0
- package/lib/modules/MinecraftEntitiesModule.d.ts +44 -0
- package/lib/modules/MinecraftEntitiesModule.js +11 -0
- package/lib/modules/MinecraftEntitiesModule.js.map +1 -0
- package/lib/modules/MinecraftItemsModule.d.ts +44 -0
- package/lib/modules/MinecraftItemsModule.js +11 -0
- package/lib/modules/MinecraftItemsModule.js.map +1 -0
- package/lib/modules/MinecraftSchemaObject.d.ts +16 -0
- package/lib/modules/MinecraftSchemaObject.js +5 -0
- package/lib/modules/MinecraftSchemaObject.js.map +1 -0
- package/lib/modules/MinecraftScriptModule.d.ts +3677 -0
- package/lib/modules/MinecraftScriptModule.js +374 -0
- package/lib/modules/MinecraftScriptModule.js.map +1 -0
- package/lib/modules/MinecraftVanillaDataModules.d.ts +4 -0
- package/lib/modules/MinecraftVanillaDataModules.js +9 -0
- package/lib/modules/MinecraftVanillaDataModules.js.map +1 -0
- package/lib/modules/index.d.ts +15 -0
- package/lib/modules/index.js +34 -0
- package/lib/modules/index.js.map +1 -0
- package/lib/plugins/MarkupGenerator.d.ts +28 -0
- package/lib/plugins/MarkupGenerator.js +5 -0
- package/lib/plugins/MarkupGenerator.js.map +1 -0
- package/lib/plugins/Plugin.d.ts +16 -0
- package/lib/plugins/Plugin.js +5 -0
- package/lib/plugins/Plugin.js.map +1 -0
- package/lib/plugins/index.d.ts +2 -0
- package/lib/plugins/index.js +21 -0
- package/lib/plugins/index.js.map +1 -0
- package/lib/test/commonFilterUnitTests.spec.d.ts +1 -0
- package/lib/test/commonFilterUnitTests.spec.js +85 -0
- package/lib/test/commonFilterUnitTests.spec.js.map +1 -0
- package/lib/test/diffingUnitTests.test.d.ts +1 -0
- package/lib/test/diffingUnitTests.test.js +238 -0
- package/lib/test/diffingUnitTests.test.js.map +1 -0
- package/lib/test/scanObjectUnitTests.test.d.ts +1 -0
- package/lib/test/scanObjectUnitTests.test.js +162 -0
- package/lib/test/scanObjectUnitTests.test.js.map +1 -0
- package/lib/test/versionParsing.test.d.ts +1 -0
- package/lib/test/versionParsing.test.js +147 -0
- package/lib/test/versionParsing.test.js.map +1 -0
- package/lib/utilities/AppendVersion.d.ts +8 -0
- package/lib/utilities/AppendVersion.js +46 -0
- package/lib/utilities/AppendVersion.js.map +1 -0
- package/lib/utilities/Complete.d.ts +7 -0
- package/lib/utilities/Complete.js +5 -0
- package/lib/utilities/Complete.js.map +1 -0
- package/lib/utilities/DeepCopyJson.d.ts +4 -0
- package/lib/utilities/DeepCopyJson.js +46 -0
- package/lib/utilities/DeepCopyJson.js.map +1 -0
- package/lib/utilities/GetFiles.d.ts +3 -0
- package/lib/utilities/GetFiles.js +44 -0
- package/lib/utilities/GetFiles.js.map +1 -0
- package/lib/utilities/LongestCommonSubsequence.d.ts +3 -0
- package/lib/utilities/LongestCommonSubsequence.js +123 -0
- package/lib/utilities/LongestCommonSubsequence.js.map +1 -0
- package/lib/utilities/MergeArrays.d.ts +1 -0
- package/lib/utilities/MergeArrays.js +15 -0
- package/lib/utilities/MergeArrays.js.map +1 -0
- package/lib/utilities/RemoveProperty.d.ts +1 -0
- package/lib/utilities/RemoveProperty.js +16 -0
- package/lib/utilities/RemoveProperty.js.map +1 -0
- package/lib/utilities/ScanObject.d.ts +13 -0
- package/lib/utilities/ScanObject.js +101 -0
- package/lib/utilities/ScanObject.js.map +1 -0
- package/lib/utilities/SortComparers.d.ts +3 -0
- package/lib/utilities/SortComparers.js +21 -0
- package/lib/utilities/SortComparers.js.map +1 -0
- package/lib/utilities/index.d.ts +9 -0
- package/lib/utilities/index.js +28 -0
- package/lib/utilities/index.js.map +1 -0
- package/package.json +72 -0
package/lib/Context.js
ADDED
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
+
if (mod && mod.__esModule) return mod;
|
|
22
|
+
var result = {};
|
|
23
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
+
__setModuleDefault(result, mod);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.GeneratorContext = void 0;
|
|
32
|
+
const cosmiconfig_1 = require("cosmiconfig");
|
|
33
|
+
const path_1 = __importDefault(require("path"));
|
|
34
|
+
const resolve_from_1 = __importDefault(require("resolve-from"));
|
|
35
|
+
const toposort_1 = __importDefault(require("toposort"));
|
|
36
|
+
const ChangelogStrategy_1 = require("./ChangelogStrategy");
|
|
37
|
+
const Config_1 = require("./Config");
|
|
38
|
+
const FileLoader_1 = require("./FileLoader");
|
|
39
|
+
const log = __importStar(require("./Logger"));
|
|
40
|
+
/**
|
|
41
|
+
* Markup generators ran by default when none are specified
|
|
42
|
+
*/
|
|
43
|
+
const DefaultGenerators = ['ts', 'ts-source', 'changelog', 'npm', 'typedoc', 'msdocs'];
|
|
44
|
+
/**
|
|
45
|
+
* Parse CLI options and merge with the loaded config if it exists
|
|
46
|
+
*/
|
|
47
|
+
async function parseConfig(generateOptions) {
|
|
48
|
+
let configFile;
|
|
49
|
+
if (!generateOptions.ignoreConfig) {
|
|
50
|
+
if (generateOptions.configPath) {
|
|
51
|
+
configFile = await (0, cosmiconfig_1.cosmiconfig)(Config_1.CONFIG_NAME).load(generateOptions.configPath);
|
|
52
|
+
if (!configFile) {
|
|
53
|
+
log.warn(`Could not load config file from '${generateOptions.configPath}', will search for one instead.`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!configFile) {
|
|
57
|
+
configFile = await (0, Config_1.findConfig)();
|
|
58
|
+
if (configFile) {
|
|
59
|
+
generateOptions.configPath = configFile.filepath;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const parsedConfig = configFile ? (0, Config_1.checkConfig)(configFile.config) : {};
|
|
64
|
+
const parsedOptions = Object.fromEntries(Object.entries(generateOptions).filter(([, v]) => v));
|
|
65
|
+
return {
|
|
66
|
+
...parsedConfig,
|
|
67
|
+
...parsedOptions,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function initGenerators(generatorsToInit, allGenerators) {
|
|
71
|
+
const ids = [];
|
|
72
|
+
for (const generator of generatorsToInit) {
|
|
73
|
+
if (!allGenerators.has(generator.id)) {
|
|
74
|
+
allGenerators.set(generator.id, generator);
|
|
75
|
+
ids.push(generator.id);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
log.warn(`Multiple generators with identical ID '${generator.id}' present. Ignoring duplicate.`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return ids;
|
|
82
|
+
}
|
|
83
|
+
function initTemplates(templatesToInit, allTemplates) {
|
|
84
|
+
const ids = [];
|
|
85
|
+
for (const id in templatesToInit) {
|
|
86
|
+
if (!allTemplates.has(id)) {
|
|
87
|
+
const fileLoader = new FileLoader_1.FileLoader(templatesToInit[id]);
|
|
88
|
+
if (!fileLoader.loaded()) {
|
|
89
|
+
log.warn(`No template files were loaded from directory: ${templatesToInit[id]}`);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
allTemplates.set(id, fileLoader);
|
|
93
|
+
ids.push(id);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
log.warn(`Multiple templates with identical ID '${id}' present. Ignoring duplicates.`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return ids;
|
|
100
|
+
}
|
|
101
|
+
function initStrategies(strategiesToInit, allStrategies) {
|
|
102
|
+
const ids = [];
|
|
103
|
+
for (const id in strategiesToInit) {
|
|
104
|
+
if (!allStrategies.has(id)) {
|
|
105
|
+
allStrategies.set(id, strategiesToInit[id]);
|
|
106
|
+
ids.push(id);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
log.warn(`Multiple changelog strategies with identical ID '${id}' present. Ignoring duplicates.`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return ids;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Initialize markup generators imported from plugin modules
|
|
116
|
+
*/
|
|
117
|
+
async function initPlugins(config) {
|
|
118
|
+
const allGenerators = new Map();
|
|
119
|
+
const allTemplates = new Map();
|
|
120
|
+
const allStrategies = new Map(ChangelogStrategy_1.CoreChangelogStrategies);
|
|
121
|
+
if (config.plugins && config.plugins.length === 0) {
|
|
122
|
+
throw new Error('No plugins defined in config, must specify at least one plugin to import generators from.');
|
|
123
|
+
}
|
|
124
|
+
else if (!config.plugins) {
|
|
125
|
+
log.debug(`No plugins specified, adding '@minecraft/markup-generators-plugin'.`);
|
|
126
|
+
config.plugins = ['@minecraft/markup-generators-plugin'];
|
|
127
|
+
}
|
|
128
|
+
if (config.plugins) {
|
|
129
|
+
for (const plugin of config.plugins) {
|
|
130
|
+
let pluginName;
|
|
131
|
+
let pluginConfig = {};
|
|
132
|
+
if (typeof plugin === 'string') {
|
|
133
|
+
pluginName = plugin;
|
|
134
|
+
}
|
|
135
|
+
else if (Array.isArray(plugin)) {
|
|
136
|
+
if (plugin.length <= 2) {
|
|
137
|
+
if (plugin.length >= 1 && typeof plugin[0] === 'string') {
|
|
138
|
+
pluginName = plugin[0];
|
|
139
|
+
}
|
|
140
|
+
if (plugin.length === 2 && typeof plugin[1] === 'object') {
|
|
141
|
+
pluginConfig = plugin[1];
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
throw new Error(`Plugin config should be a tuple, but has ${plugin.length} values. Expected format: ['plugin-name', { setting: true }]`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
if (!pluginName) {
|
|
149
|
+
throw new Error(`Incorrectly formatted plugin config in '${config.configPath}'. Expected format: ['plugin-name', { setting: true }]`);
|
|
150
|
+
}
|
|
151
|
+
let importPath = pluginName;
|
|
152
|
+
if (pluginConfig.path) {
|
|
153
|
+
importPath = (0, resolve_from_1.default)(process.cwd(), pluginConfig.path);
|
|
154
|
+
}
|
|
155
|
+
log.info(`Importing plugin: '${importPath}'`);
|
|
156
|
+
try {
|
|
157
|
+
const { default: pluginModule } = (await Promise.resolve(`${importPath}`).then(s => __importStar(require(s))));
|
|
158
|
+
const generatorIds = initGenerators(pluginModule.generators ?? [], allGenerators);
|
|
159
|
+
const templateIds = initTemplates(pluginModule.templates ?? {}, allTemplates);
|
|
160
|
+
const strategyIds = initStrategies(pluginModule.changelogStrategies ?? {}, allStrategies);
|
|
161
|
+
if (generatorIds.length > 0) {
|
|
162
|
+
log.info(`Imported generators: [${generatorIds.join(', ')}]`);
|
|
163
|
+
}
|
|
164
|
+
if (templateIds.length > 0) {
|
|
165
|
+
log.info(`Imported templates: [${templateIds.join(', ')}]`);
|
|
166
|
+
}
|
|
167
|
+
if (strategyIds.length > 0) {
|
|
168
|
+
log.info(`Imported changelog strategies: [${strategyIds.join(', ')}]`);
|
|
169
|
+
}
|
|
170
|
+
if (generatorIds.length === 0 && templateIds.length === 0 && strategyIds.length === 0) {
|
|
171
|
+
log.warn('Plugin has nothing to import!');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
if (e instanceof Error) {
|
|
176
|
+
log.error(`Could not import plugin module '${importPath}'.`);
|
|
177
|
+
throw e;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
let changelogStrategy;
|
|
183
|
+
if (config.changelogStrategy) {
|
|
184
|
+
if (allStrategies.has(config.changelogStrategy)) {
|
|
185
|
+
changelogStrategy = allStrategies.get(config.changelogStrategy);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
log.warn(`Changelog Strategy '${config.changelogStrategy}' is invalid, will default to 'module_version'.`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (!changelogStrategy) {
|
|
192
|
+
changelogStrategy = allStrategies.get('module_version');
|
|
193
|
+
}
|
|
194
|
+
const generatorsToRun = new Map();
|
|
195
|
+
const initGeneratorRecursive = (generatorId) => {
|
|
196
|
+
let generator = generatorsToRun.get(generatorId);
|
|
197
|
+
if (!generator) {
|
|
198
|
+
if (allGenerators.has(generatorId)) {
|
|
199
|
+
generator = allGenerators.get(generatorId);
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
throw new Error(`Attempted to run generator '${generatorId}' but it has not been imported from a plugin module.\n
|
|
203
|
+
Verify that all required plugins are included in config.`);
|
|
204
|
+
}
|
|
205
|
+
generatorsToRun.set(generatorId, generator);
|
|
206
|
+
if (generator.dependencies) {
|
|
207
|
+
for (const dependencyId of generator.dependencies) {
|
|
208
|
+
initGeneratorRecursive(dependencyId);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
for (const generatorId of config.generatorsToRun ?? DefaultGenerators) {
|
|
214
|
+
initGeneratorRecursive(generatorId);
|
|
215
|
+
}
|
|
216
|
+
const generatorDependencyEdges = [];
|
|
217
|
+
for (const generator of generatorsToRun.values()) {
|
|
218
|
+
if (generator.dependencies) {
|
|
219
|
+
for (const depId of generator.dependencies) {
|
|
220
|
+
generatorDependencyEdges.push([depId, generator.id]);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const sortedGeneratorIds = toposort_1.default.array(Array.from(generatorsToRun.keys()), generatorDependencyEdges);
|
|
225
|
+
const sortedGeneratorMap = new Map(sortedGeneratorIds.map(id => {
|
|
226
|
+
const generator = generatorsToRun.get(id);
|
|
227
|
+
return [
|
|
228
|
+
id,
|
|
229
|
+
[
|
|
230
|
+
generator,
|
|
231
|
+
{
|
|
232
|
+
...generator.defaultOptions,
|
|
233
|
+
...config.generators?.[id],
|
|
234
|
+
},
|
|
235
|
+
],
|
|
236
|
+
];
|
|
237
|
+
}));
|
|
238
|
+
return {
|
|
239
|
+
generators: sortedGeneratorMap,
|
|
240
|
+
templates: allTemplates,
|
|
241
|
+
changelogStrategy,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
class GeneratorContext {
|
|
245
|
+
config;
|
|
246
|
+
changelogStrategy;
|
|
247
|
+
inputDirectory;
|
|
248
|
+
rootOutputDirectory;
|
|
249
|
+
documentationFileLoader;
|
|
250
|
+
generators;
|
|
251
|
+
templates;
|
|
252
|
+
constructor(config, generators, templates, changelogStrategy) {
|
|
253
|
+
this.config = { ...config };
|
|
254
|
+
this.generators = generators;
|
|
255
|
+
this.templates = templates;
|
|
256
|
+
this.changelogStrategy = changelogStrategy;
|
|
257
|
+
this.inputDirectory = path_1.default.resolve(config.inputDirectory);
|
|
258
|
+
this.rootOutputDirectory = path_1.default.resolve(config.outputDirectory);
|
|
259
|
+
if (config.documentationDirectory) {
|
|
260
|
+
const docsPath = path_1.default.resolve(config.documentationDirectory);
|
|
261
|
+
const loader = new FileLoader_1.FileLoader(docsPath, ['.json', '.js', '.ts']);
|
|
262
|
+
if (loader.loaded()) {
|
|
263
|
+
this.documentationFileLoader = loader;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
log.warn(`No documentation files were loaded from directory: ${docsPath}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
static async Init(cliOptions) {
|
|
271
|
+
const config = await parseConfig(cliOptions);
|
|
272
|
+
log.setLogOptions(config.log);
|
|
273
|
+
if (config.configPath) {
|
|
274
|
+
log.info(`Loaded config file: ${config.configPath}`);
|
|
275
|
+
}
|
|
276
|
+
const { generators, templates, changelogStrategy } = await initPlugins(config);
|
|
277
|
+
return new GeneratorContext(config, generators, templates, changelogStrategy);
|
|
278
|
+
}
|
|
279
|
+
get minecraftReleaseVersion() {
|
|
280
|
+
return this.config.minecraftReleaseVersion;
|
|
281
|
+
}
|
|
282
|
+
get preexistingModuleReleases() {
|
|
283
|
+
return this.config.preexistingModuleReleases;
|
|
284
|
+
}
|
|
285
|
+
get includeModules() {
|
|
286
|
+
return this.config.includeModulesMode ?? 'all';
|
|
287
|
+
}
|
|
288
|
+
get includeBaseModules() {
|
|
289
|
+
return this.config.includeBaseModules ?? false;
|
|
290
|
+
}
|
|
291
|
+
get skipMerging() {
|
|
292
|
+
return this.config.skipMerging ?? false;
|
|
293
|
+
}
|
|
294
|
+
getGenerator(generatorId) {
|
|
295
|
+
return this.generators.get(generatorId)[0];
|
|
296
|
+
}
|
|
297
|
+
getGeneratorOptions(generatorId) {
|
|
298
|
+
return this.generators.get(generatorId)[1];
|
|
299
|
+
}
|
|
300
|
+
getGenerators() {
|
|
301
|
+
return Array.from(this.generators.values()).map(g => g[0]);
|
|
302
|
+
}
|
|
303
|
+
getGeneratorIds() {
|
|
304
|
+
return Array.from(this.generators.keys());
|
|
305
|
+
}
|
|
306
|
+
hasGenerators(...generatorIds) {
|
|
307
|
+
return generatorIds.every(id => this.generators.has(id));
|
|
308
|
+
}
|
|
309
|
+
getTemplates(...templateIds) {
|
|
310
|
+
return Object.fromEntries(Array.from(this.templates.entries()).filter(([id]) => templateIds.includes(id)));
|
|
311
|
+
}
|
|
312
|
+
hasTemplates(...templateIds) {
|
|
313
|
+
return templateIds.every(id => this.templates.has(id));
|
|
314
|
+
}
|
|
315
|
+
shutdown() {
|
|
316
|
+
this.documentationFileLoader?.logUnusedFiles();
|
|
317
|
+
for (const id in this.templates) {
|
|
318
|
+
this.templates.get(id).logUnusedFiles();
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
exports.GeneratorContext = GeneratorContext;
|
|
323
|
+
//# sourceMappingURL=Context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../src/Context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare class FileLoader {
|
|
2
|
+
private fileCache;
|
|
3
|
+
private filePathIsCached;
|
|
4
|
+
private rootFilePath;
|
|
5
|
+
private supportedExtensions;
|
|
6
|
+
constructor(rootFilePath: string, extensions?: string[]);
|
|
7
|
+
loaded(): boolean;
|
|
8
|
+
canLoadFile(filePath: string): boolean;
|
|
9
|
+
readFile(filePath: string): Buffer;
|
|
10
|
+
readFileAsString(filePath: string): string;
|
|
11
|
+
joinToRoot(directory: string): string;
|
|
12
|
+
logUnusedFiles(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) Microsoft Corporation.
|
|
3
|
+
// Licensed under the MIT License.
|
|
4
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
5
|
+
if (k2 === undefined) k2 = k;
|
|
6
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
7
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
8
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(o, k2, desc);
|
|
11
|
+
}) : (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
o[k2] = m[k];
|
|
14
|
+
}));
|
|
15
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
16
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
17
|
+
}) : function(o, v) {
|
|
18
|
+
o["default"] = v;
|
|
19
|
+
});
|
|
20
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
21
|
+
if (mod && mod.__esModule) return mod;
|
|
22
|
+
var result = {};
|
|
23
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
24
|
+
__setModuleDefault(result, mod);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
28
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
29
|
+
};
|
|
30
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
31
|
+
exports.FileLoader = void 0;
|
|
32
|
+
const path_1 = __importDefault(require("path"));
|
|
33
|
+
const log = __importStar(require("./Logger"));
|
|
34
|
+
const utils = __importStar(require("./utilities"));
|
|
35
|
+
class FileLoader {
|
|
36
|
+
fileCache;
|
|
37
|
+
filePathIsCached;
|
|
38
|
+
rootFilePath;
|
|
39
|
+
supportedExtensions;
|
|
40
|
+
constructor(rootFilePath, extensions) {
|
|
41
|
+
this.fileCache = new Map();
|
|
42
|
+
this.rootFilePath = rootFilePath;
|
|
43
|
+
this.supportedExtensions = extensions ?? [];
|
|
44
|
+
this.filePathIsCached = {};
|
|
45
|
+
let filePaths = utils.getFilesRecursively(this.rootFilePath);
|
|
46
|
+
if (this.supportedExtensions.length > 0) {
|
|
47
|
+
filePaths = filePaths.filter(p => this.supportedExtensions.includes(path_1.default.extname(p)));
|
|
48
|
+
}
|
|
49
|
+
for (const p of filePaths) {
|
|
50
|
+
this.filePathIsCached[p.toLowerCase()] = false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
loaded() {
|
|
54
|
+
return Object.keys(this.filePathIsCached).length > 0;
|
|
55
|
+
}
|
|
56
|
+
canLoadFile(filePath) {
|
|
57
|
+
const realPath = path_1.default.resolve(path_1.default.join(this.rootFilePath, filePath));
|
|
58
|
+
return Object.hasOwn(this.filePathIsCached, realPath.toLowerCase());
|
|
59
|
+
}
|
|
60
|
+
readFile(filePath) {
|
|
61
|
+
const realPath = path_1.default.resolve(path_1.default.join(this.rootFilePath, filePath));
|
|
62
|
+
const ext = path_1.default.extname(realPath);
|
|
63
|
+
if (this.supportedExtensions.length > 0 && !this.supportedExtensions.includes(ext)) {
|
|
64
|
+
throw new Error(`Attempted to read file of type '${ext}' not supported by this FileLoader.\nFile: ${realPath}`);
|
|
65
|
+
}
|
|
66
|
+
if (!Object.hasOwn(this.filePathIsCached, realPath.toLowerCase())) {
|
|
67
|
+
throw new Error(`Attempted to read file outside of FileLoader input directory.\nFile: ${realPath}\nInput Directory: ${this.rootFilePath}`);
|
|
68
|
+
}
|
|
69
|
+
if (!this.fileCache.has(realPath)) {
|
|
70
|
+
this.fileCache.set(realPath, utils.readFile(realPath));
|
|
71
|
+
// Mark this file as having been read so we can log unused files
|
|
72
|
+
this.filePathIsCached[realPath.toLowerCase()] = true;
|
|
73
|
+
}
|
|
74
|
+
return this.fileCache.get(realPath);
|
|
75
|
+
}
|
|
76
|
+
readFileAsString(filePath) {
|
|
77
|
+
return this.readFile(filePath).toString('utf-8');
|
|
78
|
+
}
|
|
79
|
+
joinToRoot(directory) {
|
|
80
|
+
return path_1.default.join(this.rootFilePath, directory);
|
|
81
|
+
}
|
|
82
|
+
logUnusedFiles() {
|
|
83
|
+
for (const filePath in this.filePathIsCached) {
|
|
84
|
+
if (!this.filePathIsCached[filePath]) {
|
|
85
|
+
log.printOption(`Documentation file was not used: ${filePath}`, 'unusedDocumentation');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.FileLoader = FileLoader;
|
|
91
|
+
//# sourceMappingURL=FileLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileLoader.js","sourceRoot":"","sources":["../src/FileLoader.ts"],"names":[],"mappings":"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"}
|
package/lib/Logger.d.ts
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as rt from 'runtypes';
|
|
2
|
+
export declare enum LogLevel {
|
|
3
|
+
Debug = 0,
|
|
4
|
+
Info = 1,
|
|
5
|
+
Warn = 2,
|
|
6
|
+
Error = 3
|
|
7
|
+
}
|
|
8
|
+
declare const LogMessageRecord: rt.Union<[rt.Literal<"undocumentedApis">, rt.Literal<"unusedDocumentation">, rt.Literal<"unresolvedDependencies">, rt.Literal<"unresolvedTypes">]>;
|
|
9
|
+
export type LogMessage = rt.Static<typeof LogMessageRecord>;
|
|
10
|
+
export declare const LogOptionsRecord: rt.Record<{
|
|
11
|
+
level: rt.Optional<rt.Union<[rt.Literal<"debug">, rt.Literal<"info">, rt.Literal<"warn">, rt.Literal<"error">]>>;
|
|
12
|
+
allMessages: rt.Optional<rt.Union<[rt.Boolean, rt.Union<[rt.Literal<"debug">, rt.Literal<"info">, rt.Literal<"warn">, rt.Literal<"error">]>]>>;
|
|
13
|
+
undocumentedApis: rt.Optional<rt.Union<[rt.Boolean, rt.Union<[rt.Literal<"debug">, rt.Literal<"info">, rt.Literal<"warn">, rt.Literal<"error">]>]>>;
|
|
14
|
+
unusedDocumentation: rt.Optional<rt.Union<[rt.Boolean, rt.Union<[rt.Literal<"debug">, rt.Literal<"info">, rt.Literal<"warn">, rt.Literal<"error">]>]>>;
|
|
15
|
+
unresolvedDependencies: rt.Optional<rt.Union<[rt.Boolean, rt.Union<[rt.Literal<"debug">, rt.Literal<"info">, rt.Literal<"warn">, rt.Literal<"error">]>]>>;
|
|
16
|
+
unresolvedTypes: rt.Optional<rt.Union<[rt.Boolean, rt.Union<[rt.Literal<"debug">, rt.Literal<"info">, rt.Literal<"warn">, rt.Literal<"error">]>]>>;
|
|
17
|
+
}, false>;
|
|
18
|
+
export type LogOptions = rt.Static<typeof LogOptionsRecord>;
|
|
19
|
+
/**
|
|
20
|
+
* `printOption()` uses the log levels defined here to determine the level a message should be printed at.
|
|
21
|
+
*
|
|
22
|
+
* Note: true is equivalent to 'warn', undefined defaults to 'debug', false does not print.
|
|
23
|
+
*/
|
|
24
|
+
export declare const DefaultLogOptions: LogOptions;
|
|
25
|
+
export declare function print(text: string, level?: LogLevel): void;
|
|
26
|
+
/**
|
|
27
|
+
* Prints according to the specified log level setting for 'messageId', or:
|
|
28
|
+
*
|
|
29
|
+
* If 'messageId' is set to true, will print to 'warn' log level.
|
|
30
|
+
* If 'messageId' is undefined, will print to 'debug' log level.
|
|
31
|
+
* If 'messageId' is set to false, will not print.
|
|
32
|
+
*/
|
|
33
|
+
export declare function printOption(text: string, messageId: LogMessage): void;
|
|
34
|
+
export declare function debug(text: string): void;
|
|
35
|
+
export declare function info(text: string): void;
|
|
36
|
+
export declare function warn(text: string): void;
|
|
37
|
+
export declare function error(text: string): void;
|
|
38
|
+
export declare function assert(assertion: boolean, text: string): void;
|
|
39
|
+
export declare function setLogOptions(options: LogOptions): void;
|
|
40
|
+
export declare function getLogOptions(): LogOptions;
|
|
41
|
+
export declare function getLogLevel(): LogLevel;
|
|
42
|
+
export interface ILogger {
|
|
43
|
+
options: LogOptions;
|
|
44
|
+
level: LogLevel;
|
|
45
|
+
debug(text: string): void;
|
|
46
|
+
info(text: string): void;
|
|
47
|
+
warn(text: string): void;
|
|
48
|
+
error(text: string): void;
|
|
49
|
+
assert(text: string): void;
|
|
50
|
+
setLogOptions(options: LogOptions): void;
|
|
51
|
+
}
|
|
52
|
+
export declare class TerminalLogger implements ILogger {
|
|
53
|
+
options: LogOptions;
|
|
54
|
+
level: LogLevel;
|
|
55
|
+
debug(text: string): void;
|
|
56
|
+
info(text: string): void;
|
|
57
|
+
warn(text: string): void;
|
|
58
|
+
error(text: string): void;
|
|
59
|
+
assert(text: string): void;
|
|
60
|
+
setLogOptions(options: LogOptions): void;
|
|
61
|
+
}
|
|
62
|
+
export declare class LoggerInstance {
|
|
63
|
+
static instance: ILogger;
|
|
64
|
+
}
|
|
65
|
+
export {};
|