@minecraft/markup-generators-plugin 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.
Files changed (84) hide show
  1. package/CHANGELOG.json +26 -0
  2. package/CHANGELOG.md +14 -0
  3. package/README.md +17 -0
  4. package/lib/generators/ChangelogJSONGenerator.d.ts +7 -0
  5. package/lib/generators/ChangelogJSONGenerator.js +46 -0
  6. package/lib/generators/ChangelogJSONGenerator.js.map +1 -0
  7. package/lib/generators/ChangelogMDGenerator.d.ts +9 -0
  8. package/lib/generators/ChangelogMDGenerator.js +54 -0
  9. package/lib/generators/ChangelogMDGenerator.js.map +1 -0
  10. package/lib/generators/MSDocsMarkdownGenerator.d.ts +26 -0
  11. package/lib/generators/MSDocsMarkdownGenerator.js +434 -0
  12. package/lib/generators/MSDocsMarkdownGenerator.js.map +1 -0
  13. package/lib/generators/NPMModuleGenerator.d.ts +10 -0
  14. package/lib/generators/NPMModuleGenerator.js +176 -0
  15. package/lib/generators/NPMModuleGenerator.js.map +1 -0
  16. package/lib/generators/TypeDocGenerator.d.ts +8 -0
  17. package/lib/generators/TypeDocGenerator.js +123 -0
  18. package/lib/generators/TypeDocGenerator.js.map +1 -0
  19. package/lib/generators/TypeScriptDefinitionGenerator.d.ts +9 -0
  20. package/lib/generators/TypeScriptDefinitionGenerator.js +64 -0
  21. package/lib/generators/TypeScriptDefinitionGenerator.js.map +1 -0
  22. package/lib/generators/TypeScriptGenerator.d.ts +10 -0
  23. package/lib/generators/TypeScriptGenerator.js +128 -0
  24. package/lib/generators/TypeScriptGenerator.js.map +1 -0
  25. package/lib/generators/index.d.ts +7 -0
  26. package/lib/generators/index.js +26 -0
  27. package/lib/generators/index.js.map +1 -0
  28. package/lib/index.d.ts +3 -0
  29. package/lib/index.js +30 -0
  30. package/lib/index.js.map +1 -0
  31. package/lib/msdocsGeneratorUnitTests.spec.d.ts +1 -0
  32. package/lib/msdocsGeneratorUnitTests.spec.js +67 -0
  33. package/lib/msdocsGeneratorUnitTests.spec.js.map +1 -0
  34. package/package.json +66 -0
  35. package/templates/msdocs/blocks/block.mustache +18 -0
  36. package/templates/msdocs/blocks/block_property.mustache +26 -0
  37. package/templates/msdocs/blocks/default_metadata.mustache +4 -0
  38. package/templates/msdocs/commands/command.mustache +52 -0
  39. package/templates/msdocs/commands/default_metadata.mustache +4 -0
  40. package/templates/msdocs/commands/enum.mustache +25 -0
  41. package/templates/msdocs/commands/inline_enum.mustache +15 -0
  42. package/templates/msdocs/commands/overload.mustache +11 -0
  43. package/templates/msdocs/commands/parameter.mustache +1 -0
  44. package/templates/msdocs/commands/summary.mustache +21 -0
  45. package/templates/msdocs/commands/toc.mustache +6 -0
  46. package/templates/msdocs/script/class.mustache +162 -0
  47. package/templates/msdocs/script/default_metadata.mustache +5 -0
  48. package/templates/msdocs/script/enum.mustache +39 -0
  49. package/templates/msdocs/script/examples.mustache +15 -0
  50. package/templates/msdocs/script/function.mustache +95 -0
  51. package/templates/msdocs/script/module.mustache +139 -0
  52. package/templates/msdocs/script/module_changelog.mustache +235 -0
  53. package/templates/msdocs/script/property.mustache +81 -0
  54. package/templates/msdocs/script/property_declaration.mustache +6 -0
  55. package/templates/msdocs/script/toc.mustache +24 -0
  56. package/templates/msdocs/script/type_alias.mustache +56 -0
  57. package/templates/msdocs/script/type_with_links.mustache +1 -0
  58. package/templates/msdocs/script/value.mustache +1 -0
  59. package/templates/npm/README.md.mustache +13 -0
  60. package/templates/npm/package.json.mustache +30 -0
  61. package/templates/npm/vanilla-data/README.md +3 -0
  62. package/templates/npm/vanilla-data/bundle.js.mustache +10 -0
  63. package/templates/npm/vanilla-data/data-package.json.mustache +22 -0
  64. package/templates/npm/vanilla-data/index.ts.mustache +3 -0
  65. package/templates/npm/vanilla-data/template.npmignore +1 -0
  66. package/templates/npm/vanilla-data/tsconfig.json +18 -0
  67. package/templates/ts/data_items_enum.mustache +13 -0
  68. package/templates/ts/module.mustache +5 -0
  69. package/templates/ts/module_header.mustache +9 -0
  70. package/templates/ts/state_mapping.mustache +50 -0
  71. package/templates/tsdef/class.mustache +86 -0
  72. package/templates/tsdef/enum.mustache +32 -0
  73. package/templates/tsdef/examples.mustache +10 -0
  74. package/templates/tsdef/function.mustache +98 -0
  75. package/templates/tsdef/function_argument_declaration.mustache +1 -0
  76. package/templates/tsdef/function_declaration.mustache +1 -0
  77. package/templates/tsdef/module.mustache +63 -0
  78. package/templates/tsdef/module_header.mustache +8 -0
  79. package/templates/tsdef/property.mustache +99 -0
  80. package/templates/tsdef/property_declaration.mustache +1 -0
  81. package/templates/tsdef/type.mustache +1 -0
  82. package/templates/tsdef/type_alias.mustache +37 -0
  83. package/templates/tsdef/value.mustache +1 -0
  84. package/templates/txt/md_changelog.mustache +247 -0
package/CHANGELOG.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@minecraft/markup-generators-plugin",
3
+ "entries": [
4
+ {
5
+ "date": "Thu, 26 Jun 2025 22:33:07 GMT",
6
+ "version": "1.0.0",
7
+ "tag": "@minecraft/markup-generators-plugin_v1.0.0",
8
+ "comments": {
9
+ "major": [
10
+ {
11
+ "author": "zachary.campbell@skyboxlabs.com",
12
+ "package": "@minecraft/markup-generators-plugin",
13
+ "commit": "6dbbce7231a4daceb4ddbba5681891de7fc481e7",
14
+ "comment": "Add api-docs-generator and markup-generators-plugin"
15
+ },
16
+ {
17
+ "author": "beachball",
18
+ "package": "@minecraft/markup-generators-plugin",
19
+ "comment": "Bump @minecraft/api-docs-generator to v1.0.0",
20
+ "commit": "not available"
21
+ }
22
+ ]
23
+ }
24
+ }
25
+ ]
26
+ }
package/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Change Log - @minecraft/markup-generators-plugin
2
+
3
+ <!-- This log was last generated on Thu, 26 Jun 2025 22:33:07 GMT and should not be manually modified. -->
4
+
5
+ <!-- Start content -->
6
+
7
+ ## 1.0.0
8
+
9
+ Thu, 26 Jun 2025 22:33:07 GMT
10
+
11
+ ### Major changes
12
+
13
+ - Add api-docs-generator and markup-generators-plugin (zachary.campbell@skyboxlabs.com)
14
+ - Bump @minecraft/api-docs-generator to v1.0.0
package/README.md ADDED
@@ -0,0 +1,17 @@
1
+ # @minecraft/markup-generators-plugin
2
+
3
+ This package extends [@minecraft/api-docs-generator](../api-docs-generator/README.md) with a core set of markup generators used to generate Minecraft API scripting types and documentation.
4
+
5
+ ## Markup Generators
6
+
7
+ The optional `run-generators` argument uses a list of markup generator IDs described in the table below. If `run-generators` is not provided, then the generators marked as default will run:
8
+
9
+ | ID | Name | Default? | Description |
10
+ | :-- | :-- | :-: | :-- |
11
+ | msdocs | MSDocs | :heavy_check_mark: | Markdown documentation for Minecraft APIs. |
12
+ | ts | Typescript Definitions | :heavy_check_mark: | TypeScript type definitions for Minecraft APIs. |
13
+ | ts-source | Typescript Source | :heavy_check_mark: | TypeScript source generation for Minecraft `vanilla-data` APIs. |
14
+ | npm | NPM | :heavy_check_mark: | NPM module packaging. Requires `ts` and `ts-source`. |
15
+ | typedoc | TypeDoc | :heavy_check_mark: | TypeDoc formatted documentation. Requires `ts` and `ts-source`. |
16
+ | changelog | Changelog | :heavy_check_mark: | Markdown formatted changelog output for differences between API module versions. |
17
+ | changelog-json | Changelog JSON | | JSON changelog output. |
@@ -0,0 +1,7 @@
1
+ import { GeneratorContext, MarkupGenerator, MinecraftRelease } from '@minecraft/api-docs-generator';
2
+ export declare class ChangelogJSONGenerator implements MarkupGenerator {
3
+ generateFiles(context: GeneratorContext, releases: MinecraftRelease[], outputDirectory: string): Promise<void>;
4
+ readonly id: string;
5
+ readonly name: string;
6
+ readonly outputDirectoryName: string;
7
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ChangelogJSONGenerator = void 0;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const path_1 = __importDefault(require("path"));
11
+ const api_docs_generator_1 = require("@minecraft/api-docs-generator");
12
+ class ChangelogJSONGenerator {
13
+ generateFiles(context, releases, outputDirectory) {
14
+ if (releases.length === 0) {
15
+ api_docs_generator_1.Logger.warn(`No releases found, '${this.name}' generation not possible.`);
16
+ return;
17
+ }
18
+ if (context.changelogStrategy instanceof api_docs_generator_1.DisabledChangelogStrategy) {
19
+ api_docs_generator_1.Logger.warn(`Generator '${this.name}' requires a changelog strategy!`);
20
+ return;
21
+ }
22
+ let modulesToChangelog = releases[0].getLatestScriptModules();
23
+ modulesToChangelog = modulesToChangelog.concat(releases[0].command_modules);
24
+ const afterEventsModule = (0, api_docs_generator_1.getAfterEventsOrderingModuleFrom)(releases[0].engine_data_modules);
25
+ if (afterEventsModule) {
26
+ modulesToChangelog = modulesToChangelog.concat(afterEventsModule);
27
+ }
28
+ for (const moduleJson of modulesToChangelog) {
29
+ if ((0, api_docs_generator_1.moduleHasChangelog)(moduleJson)) {
30
+ const moduleName = moduleJson.name;
31
+ const changelogsFile = path_1.default.join(outputDirectory, `${moduleName}.json`);
32
+ api_docs_generator_1.Logger.info(`Writing changelog to disk: ${changelogsFile}`);
33
+ fs_1.default.mkdirSync(path_1.default.dirname(changelogsFile), { recursive: true });
34
+ let fileContents = JSON.stringify(moduleJson.changelog, undefined, 2);
35
+ fileContents = fileContents.replace(/\r?\n/g, '\r\n');
36
+ fs_1.default.writeFileSync(changelogsFile, fileContents);
37
+ }
38
+ }
39
+ return Promise.resolve();
40
+ }
41
+ id = 'changelog-json';
42
+ name = 'Changelog JSON';
43
+ outputDirectoryName = 'changelog';
44
+ }
45
+ exports.ChangelogJSONGenerator = ChangelogJSONGenerator;
46
+ //# sourceMappingURL=ChangelogJSONGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangelogJSONGenerator.js","sourceRoot":"","sources":["../../src/generators/ChangelogJSONGenerator.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC,4CAAoB;AACpB,gDAAwB;AAExB,sEASuC;AAEvC,MAAa,sBAAsB;IAC/B,aAAa,CAAC,OAAyB,EAAE,QAA4B,EAAE,eAAuB;QAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,2BAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC;YAC1E,OAAO;QACX,CAAC;QACD,IAAI,OAAO,CAAC,iBAAiB,YAAY,8CAAyB,EAAE,CAAC;YACjE,2BAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,kCAAkC,CAAC,CAAC;YACvE,OAAO;QACX,CAAC;QAED,IAAI,kBAAkB,GAAuB,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;QAClF,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAE5E,MAAM,iBAAiB,GAAG,IAAA,qDAAgC,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC5F,IAAI,iBAAiB,EAAE,CAAC;YACpB,kBAAkB,GAAG,kBAAkB,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtE,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;YAC1C,IAAI,IAAA,uCAAkB,EAAC,UAAU,CAAC,EAAE,CAAC;gBACjC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;gBAEnC,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,UAAU,OAAO,CAAC,CAAC;gBACxE,2BAAM,CAAC,IAAI,CAAC,8BAA8B,cAAc,EAAE,CAAC,CAAC;gBAC5D,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEhE,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;gBACtE,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACtD,YAAE,CAAC,aAAa,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACnD,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEQ,EAAE,GAAW,gBAAgB,CAAC;IAC9B,IAAI,GAAW,gBAAgB,CAAC;IAChC,mBAAmB,GAAW,WAAW,CAAC;CACtD;AAvCD,wDAuCC"}
@@ -0,0 +1,9 @@
1
+ import { GeneratorContext, FilterGroup, MinecraftRelease, MarkupGenerator } from '@minecraft/api-docs-generator';
2
+ export declare class ChangelogMDGenerator implements MarkupGenerator {
3
+ generateFiles(context: GeneratorContext, releases: MinecraftRelease[], outputDirectory: string): Promise<void>;
4
+ readonly id: string;
5
+ readonly name: string;
6
+ readonly outputDirectoryName: string;
7
+ readonly templates: string[];
8
+ readonly filterGroups: FilterGroup[];
9
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ var __importDefault = (this && this.__importDefault) || function (mod) {
5
+ return (mod && mod.__esModule) ? mod : { "default": mod };
6
+ };
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.ChangelogMDGenerator = void 0;
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const mustache_1 = __importDefault(require("mustache"));
11
+ const path_1 = __importDefault(require("path"));
12
+ const api_docs_generator_1 = require("@minecraft/api-docs-generator");
13
+ class ChangelogMDGenerator {
14
+ generateFiles(context, releases, outputDirectory) {
15
+ if (releases.length === 0) {
16
+ api_docs_generator_1.Logger.warn(`No releases found, '${this.name}' generation not possible.`);
17
+ return;
18
+ }
19
+ if (context.changelogStrategy instanceof api_docs_generator_1.DisabledChangelogStrategy) {
20
+ api_docs_generator_1.Logger.warn(`Generator '${this.name}' requires a changelog strategy!`);
21
+ return;
22
+ }
23
+ const { txt: txtTemplateFiles, tsdef: tsTemplateFiles } = context.getTemplates(...this.templates);
24
+ for (const moduleJson of releases[0].getLatestScriptModules()) {
25
+ const moduleName = moduleJson.name;
26
+ const txtTemplateFileData = txtTemplateFiles.readFileAsString('md_changelog.mustache');
27
+ const txtProcessedData = mustache_1.default.render(txtTemplateFileData, moduleJson, {
28
+ // TypeScript Partials
29
+ type: tsTemplateFiles.readFileAsString('type.mustache'),
30
+ value: tsTemplateFiles.readFileAsString('value.mustache'),
31
+ function_declaration: tsTemplateFiles.readFileAsString('function_declaration.mustache'),
32
+ function: tsTemplateFiles.readFileAsString('function.mustache'),
33
+ property_declaration: tsTemplateFiles.readFileAsString('property_declaration.mustache'),
34
+ property: tsTemplateFiles.readFileAsString('property.mustache'),
35
+ enum: tsTemplateFiles.readFileAsString('enum.mustache'),
36
+ class: tsTemplateFiles.readFileAsString('class.mustache'),
37
+ type_alias: tsTemplateFiles.readFileAsString('type_alias.mustache'),
38
+ module: tsTemplateFiles.readFileAsString('module.mustache'),
39
+ function_argument_declaration: tsTemplateFiles.readFileAsString('function_argument_declaration.mustache'),
40
+ });
41
+ const txtModuleFilePath = path_1.default.join(outputDirectory, `${moduleName}.txt`);
42
+ fs_1.default.mkdirSync(path_1.default.dirname(txtModuleFilePath), { recursive: true });
43
+ fs_1.default.writeFileSync(txtModuleFilePath, txtProcessedData);
44
+ }
45
+ return Promise.resolve();
46
+ }
47
+ id = 'changelog';
48
+ name = 'Changelog';
49
+ outputDirectoryName = 'txt';
50
+ templates = ['txt', 'tsdef'];
51
+ filterGroups = [api_docs_generator_1.CommonFilters];
52
+ }
53
+ exports.ChangelogMDGenerator = ChangelogMDGenerator;
54
+ //# sourceMappingURL=ChangelogMDGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangelogMDGenerator.js","sourceRoot":"","sources":["../../src/generators/ChangelogMDGenerator.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;;;;AAElC,4CAAoB;AACpB,wDAAgC;AAChC,gDAAwB;AAExB,sEAQuC;AAEvC,MAAa,oBAAoB;IAC7B,aAAa,CAAC,OAAyB,EAAE,QAA4B,EAAE,eAAuB;QAC1F,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,2BAAM,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC;YAC1E,OAAO;QACX,CAAC;QACD,IAAI,OAAO,CAAC,iBAAiB,YAAY,8CAAyB,EAAE,CAAC;YACjE,2BAAM,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,kCAAkC,CAAC,CAAC;YACvE,OAAO;QACX,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QAElG,KAAK,MAAM,UAAU,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC5D,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC;YAEnC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC;YACvF,MAAM,gBAAgB,GAAG,kBAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,UAAU,EAAE;gBACtE,sBAAsB;gBACtB,IAAI,EAAE,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC;gBACvD,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;gBACzD,oBAAoB,EAAE,eAAe,CAAC,gBAAgB,CAAC,+BAA+B,CAAC;gBACvF,QAAQ,EAAE,eAAe,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;gBAC/D,oBAAoB,EAAE,eAAe,CAAC,gBAAgB,CAAC,+BAA+B,CAAC;gBACvF,QAAQ,EAAE,eAAe,CAAC,gBAAgB,CAAC,mBAAmB,CAAC;gBAC/D,IAAI,EAAE,eAAe,CAAC,gBAAgB,CAAC,eAAe,CAAC;gBACvD,KAAK,EAAE,eAAe,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;gBACzD,UAAU,EAAE,eAAe,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;gBACnE,MAAM,EAAE,eAAe,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;gBAC3D,6BAA6B,EAAE,eAAe,CAAC,gBAAgB,CAC3D,wCAAwC,CAC3C;aACJ,CAAC,CAAC;YACH,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,UAAU,MAAM,CAAC,CAAC;YAC1E,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnE,YAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEQ,EAAE,GAAW,WAAW,CAAC;IACzB,IAAI,GAAW,WAAW,CAAC;IAC3B,mBAAmB,GAAW,KAAK,CAAC;IAEpC,SAAS,GAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,YAAY,GAAkB,CAAC,kCAAa,CAAC,CAAC;CAC1D;AA/CD,oDA+CC"}
@@ -0,0 +1,26 @@
1
+ import { FilterGroup, GeneratorContext, MarkupGenerator, MinecraftRelease, MinecraftScriptModule } from '@minecraft/api-docs-generator';
2
+ export declare const MSDocsFilters: FilterGroup;
3
+ export declare class MSDocsMarkdownGenerator implements MarkupGenerator {
4
+ private generateScriptClassFiles;
5
+ private generateScriptEnumFiles;
6
+ private generateScriptTypeAliasFiles;
7
+ private generateScriptModuleFile;
8
+ private generateScriptModuleChangelogFile;
9
+ getSortedModules(release: MinecraftRelease): {
10
+ latest: MinecraftScriptModule[];
11
+ prior: MinecraftScriptModule[];
12
+ };
13
+ private generateScriptTableOfContents;
14
+ private generateCommandFiles;
15
+ private generateCommandEnumFiles;
16
+ private generateCommandsTableOfContents;
17
+ private generateCommandsSummaryFile;
18
+ private generateBlockFiles;
19
+ private generateBlockPropertyFiles;
20
+ generateFiles(context: GeneratorContext, releases: MinecraftRelease[], outputDirectory: string): Promise<void>;
21
+ readonly id: string;
22
+ readonly name: string;
23
+ readonly outputDirectoryName: string;
24
+ readonly templates: string[];
25
+ readonly filterGroups: FilterGroup[];
26
+ }
@@ -0,0 +1,434 @@
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.MSDocsMarkdownGenerator = exports.MSDocsFilters = void 0;
32
+ const fs_1 = __importDefault(require("fs"));
33
+ const mustache_1 = __importDefault(require("mustache"));
34
+ const path_1 = __importDefault(require("path"));
35
+ const semver = __importStar(require("semver"));
36
+ const api_docs_generator_1 = require("@minecraft/api-docs-generator");
37
+ exports.MSDocsFilters = {
38
+ id: 'msdoc',
39
+ filters: [
40
+ ['add_headers_to_prior_docs', addHeaderToPrior],
41
+ ['add_changed_stable_apis', checkForChangedStableAPIs],
42
+ ],
43
+ };
44
+ function addHeaderToPrior(releases) {
45
+ if (releases.length !== 1) {
46
+ api_docs_generator_1.Logger.assert(false, 'There should only be one release for MSDocs.');
47
+ return;
48
+ }
49
+ const markPrior = (c, isModule) => {
50
+ if (!c.from_module.prior_version) {
51
+ return;
52
+ }
53
+ c.show_prior_warning = true;
54
+ if (c.deprecated_version === undefined) {
55
+ if (isModule) {
56
+ c.prior_link = `../../../scriptapi/${c.from_module.bookmark_name.startsWith('minecraft-')
57
+ ? `minecraft/${c.from_module.bookmark_name.substring(10)}`
58
+ : c.from_module.bookmark_name}/${c.from_module.bookmark_name}.md`;
59
+ }
60
+ else {
61
+ c.prior_link = `../../../scriptapi/${c.from_module.bookmark_name.startsWith('minecraft-')
62
+ ? `minecraft/${c.from_module.bookmark_name.substring(10)}`
63
+ : c.from_module.bookmark_name}/${c.name}.md`;
64
+ }
65
+ }
66
+ };
67
+ const release = releases[0];
68
+ for (const scriptModule of release.script_modules) {
69
+ markPrior(scriptModule, true);
70
+ for (const arr of [
71
+ scriptModule.classes,
72
+ scriptModule.interfaces,
73
+ scriptModule.enums,
74
+ scriptModule.type_aliases,
75
+ ]) {
76
+ for (const c of arr) {
77
+ markPrior(c);
78
+ }
79
+ }
80
+ }
81
+ }
82
+ function getLatestBeta(scriptModules, uuid) {
83
+ const betas = scriptModules.filter(module => module.uuid === uuid && semver.prerelease(module.version)?.some(prerelease => prerelease === 'beta'));
84
+ if (betas.length > 1) {
85
+ api_docs_generator_1.Logger.warn(`Unexpected amount of betas for ${uuid}`);
86
+ return undefined;
87
+ }
88
+ return betas.length === 1 ? betas[0] : undefined;
89
+ }
90
+ function getLatestStable(scriptModules, uuid, majorVersion) {
91
+ let latestStable;
92
+ for (const module of scriptModules) {
93
+ if (module.uuid !== uuid) {
94
+ continue;
95
+ }
96
+ const moduleVersion = semver.parse(module.version);
97
+ if (moduleVersion.major !== majorVersion) {
98
+ continue;
99
+ }
100
+ if (moduleVersion.prerelease &&
101
+ moduleVersion.prerelease.some(pr => pr === 'beta' || pr === 'alpha' || pr === 'internal')) {
102
+ continue;
103
+ }
104
+ if (!latestStable || moduleVersion.minor > semver.minor(latestStable.version)) {
105
+ latestStable = module;
106
+ }
107
+ }
108
+ return latestStable;
109
+ }
110
+ function checkForChangedStableAPIs(releases) {
111
+ if (releases.length !== 1) {
112
+ api_docs_generator_1.Logger.assert(false, 'There should only be one release for MSDocs.');
113
+ return;
114
+ }
115
+ const release = releases[0];
116
+ const moduleUUIDs = [...new Set(release.script_modules.map(m => m.uuid))];
117
+ for (const uuid of moduleUUIDs) {
118
+ const latestBeta = getLatestBeta(release.script_modules, uuid);
119
+ if (!latestBeta) {
120
+ continue;
121
+ }
122
+ const latestStable = getLatestStable(release.script_modules, uuid, semver.major(latestBeta.version));
123
+ if (!latestStable) {
124
+ continue;
125
+ }
126
+ const compareFunctionLists = (betaFuncs, stableFuncs) => {
127
+ const newBetaFuncs = [];
128
+ for (const betaFunc of betaFuncs ?? []) {
129
+ for (const stableFunc of stableFuncs ?? []) {
130
+ if (betaFunc.name === stableFunc.name) {
131
+ if (betaFunc.arguments.length !== stableFunc.arguments.length ||
132
+ betaFunc.return_type.name !== stableFunc.return_type.name) {
133
+ betaFunc.is_prerelease = true;
134
+ stableFunc.stable_only = true;
135
+ newBetaFuncs.push(stableFunc);
136
+ }
137
+ continue;
138
+ }
139
+ }
140
+ }
141
+ for (const newBetaFunc of newBetaFuncs) {
142
+ betaFuncs.push(newBetaFunc);
143
+ }
144
+ };
145
+ compareFunctionLists(latestBeta.functions, latestStable.functions);
146
+ for (const betaFunc of latestBeta.classes ?? []) {
147
+ for (const stableFunc of latestStable.classes ?? []) {
148
+ if (betaFunc.class_name === stableFunc.class_name) {
149
+ compareFunctionLists(betaFunc.functions, stableFunc.functions);
150
+ continue;
151
+ }
152
+ }
153
+ }
154
+ }
155
+ }
156
+ const MUSTACHE_CONFIG = {
157
+ display_constructor_as_instantiation: true,
158
+ disable_export_keyword: true,
159
+ };
160
+ class MSDocsMarkdownGenerator {
161
+ generateScriptClassFiles(classJson, mdTemplateFiles, tsTemplateFiles, outputDirectory) {
162
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('script/class.mustache');
163
+ classJson.mustache_config = MUSTACHE_CONFIG;
164
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, classJson, {
165
+ // MSDocs Partials
166
+ type_with_links: mdTemplateFiles.readFileAsString('script/type_with_links.mustache'),
167
+ function: mdTemplateFiles.readFileAsString('script/function.mustache'),
168
+ examples: mdTemplateFiles.readFileAsString('script/examples.mustache'),
169
+ value: mdTemplateFiles.readFileAsString('script/value.mustache'),
170
+ property: mdTemplateFiles.readFileAsString('script/property.mustache'),
171
+ property_declaration: mdTemplateFiles.readFileAsString('script/property_declaration.mustache'),
172
+ default_metadata: mdTemplateFiles.readFileAsString('script/default_metadata.mustache'),
173
+ // TypeScript Partials
174
+ function_declaration: tsTemplateFiles.readFileAsString('function_declaration.mustache'),
175
+ function_argument_declaration: tsTemplateFiles.readFileAsString('function_argument_declaration.mustache'),
176
+ type: tsTemplateFiles.readFileAsString('type.mustache'),
177
+ });
178
+ const msdocsClassFilePath = path_1.default.join(outputDirectory, `${classJson.name}.md`);
179
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsClassFilePath), { recursive: true });
180
+ fs_1.default.writeFileSync(msdocsClassFilePath, msdocsProcessedData);
181
+ }
182
+ generateScriptEnumFiles(enumJson, mdTemplateFiles, tsTemplateFiles, outputDirectory) {
183
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('script/enum.mustache');
184
+ enumJson.mustache_config = MUSTACHE_CONFIG;
185
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, enumJson, {
186
+ // MSDocs Partials
187
+ type_with_links: mdTemplateFiles.readFileAsString('script/type_with_links.mustache'),
188
+ function: mdTemplateFiles.readFileAsString('script/function.mustache'),
189
+ value: mdTemplateFiles.readFileAsString('script/value.mustache'),
190
+ property: mdTemplateFiles.readFileAsString('script/property.mustache'),
191
+ property_declaration: mdTemplateFiles.readFileAsString('script/property_declaration.mustache'),
192
+ default_metadata: mdTemplateFiles.readFileAsString('script/default_metadata.mustache'),
193
+ // TypeScript Partials
194
+ function_declaration: tsTemplateFiles.readFileAsString('function_declaration.mustache'),
195
+ function_argument_declaration: tsTemplateFiles.readFileAsString('function_argument_declaration.mustache'),
196
+ type: tsTemplateFiles.readFileAsString('type.mustache'),
197
+ });
198
+ const msdocsClassFilePath = path_1.default.join(outputDirectory, `${enumJson.name}.md`);
199
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsClassFilePath), { recursive: true });
200
+ fs_1.default.writeFileSync(msdocsClassFilePath, msdocsProcessedData);
201
+ }
202
+ generateScriptTypeAliasFiles(typeAliasJson, mdTemplateFiles, outputDirectory) {
203
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('script/type_alias.mustache');
204
+ typeAliasJson.mustache_config = MUSTACHE_CONFIG;
205
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, typeAliasJson, {
206
+ examples: mdTemplateFiles.readFileAsString('script/examples.mustache'),
207
+ default_metadata: mdTemplateFiles.readFileAsString('script/default_metadata.mustache'),
208
+ });
209
+ const msdocsClassFilePath = path_1.default.join(outputDirectory, `${typeAliasJson.name}.md`);
210
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsClassFilePath), { recursive: true });
211
+ fs_1.default.writeFileSync(msdocsClassFilePath, msdocsProcessedData);
212
+ }
213
+ generateScriptModuleFile(moduleJson, mdTemplateFiles, tsTemplateFiles, outputDirectory) {
214
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('script/module.mustache');
215
+ moduleJson.mustache_config = MUSTACHE_CONFIG;
216
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, moduleJson, {
217
+ // MSDocs Partials
218
+ type_with_links: mdTemplateFiles.readFileAsString('script/type_with_links.mustache'),
219
+ class: mdTemplateFiles.readFileAsString('script/class.mustache'),
220
+ function: mdTemplateFiles.readFileAsString('script/function.mustache'),
221
+ examples: mdTemplateFiles.readFileAsString('script/examples.mustache'),
222
+ value: mdTemplateFiles.readFileAsString('script/value.mustache'),
223
+ property: mdTemplateFiles.readFileAsString('script/property.mustache'),
224
+ property_declaration: mdTemplateFiles.readFileAsString('script/property_declaration.mustache'),
225
+ default_metadata: mdTemplateFiles.readFileAsString('script/default_metadata.mustache'),
226
+ // TypeScript Partials
227
+ function_declaration: tsTemplateFiles.readFileAsString('function_declaration.mustache'),
228
+ function_argument_declaration: tsTemplateFiles.readFileAsString('function_argument_declaration.mustache'),
229
+ type: tsTemplateFiles.readFileAsString('type.mustache'),
230
+ });
231
+ const msdocsModuleFilePath = path_1.default.join(outputDirectory, `${moduleJson.bookmark_name}.md`);
232
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsModuleFilePath), { recursive: true });
233
+ fs_1.default.writeFileSync(msdocsModuleFilePath, msdocsProcessedData);
234
+ }
235
+ generateScriptModuleChangelogFile(moduleJson, mdTemplateFiles, tsTemplateFiles, outputDirectory) {
236
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('script/module_changelog.mustache');
237
+ moduleJson.mustache_config = MUSTACHE_CONFIG;
238
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, moduleJson, {
239
+ // MSDocs Partials
240
+ type_with_links: mdTemplateFiles.readFileAsString('script/type_with_links.mustache'),
241
+ class: mdTemplateFiles.readFileAsString('script/class.mustache'),
242
+ function: mdTemplateFiles.readFileAsString('script/function.mustache'),
243
+ examples: mdTemplateFiles.readFileAsString('script/examples.mustache'),
244
+ value: mdTemplateFiles.readFileAsString('script/value.mustache'),
245
+ property: mdTemplateFiles.readFileAsString('script/property.mustache'),
246
+ property_declaration: mdTemplateFiles.readFileAsString('script/property_declaration.mustache'),
247
+ default_metadata: mdTemplateFiles.readFileAsString('script/default_metadata.mustache'),
248
+ // TypeScript Partials
249
+ function_declaration: tsTemplateFiles.readFileAsString('function_declaration.mustache'),
250
+ function_argument_declaration: tsTemplateFiles.readFileAsString('function_argument_declaration.mustache'),
251
+ type: tsTemplateFiles.readFileAsString('type.mustache'),
252
+ });
253
+ const msdocChangelogFilePath = path_1.default.join(outputDirectory, 'changelog.md');
254
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocChangelogFilePath), { recursive: true });
255
+ fs_1.default.writeFileSync(msdocChangelogFilePath, msdocsProcessedData);
256
+ }
257
+ getSortedModules(release) {
258
+ const latest = release.getLatestScriptModules().sort(api_docs_generator_1.Utils.nameSortComparer);
259
+ const prior = release
260
+ .getLatestScriptModulesByMajorVersion()
261
+ .filter(module => !latest.includes(module))
262
+ .sort((e1, e2) => {
263
+ const nameSort = api_docs_generator_1.Utils.nameSortComparer(e1, e2);
264
+ if (nameSort === 0) {
265
+ return semver.compare(e2.version, e1.version);
266
+ }
267
+ return nameSort;
268
+ });
269
+ return {
270
+ latest,
271
+ prior,
272
+ };
273
+ }
274
+ generateScriptTableOfContents(release, mdTemplateFiles, msdocsDirectory) {
275
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('script/toc.mustache');
276
+ const createTOC = (pathString, modules) => {
277
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, {
278
+ script_modules: modules,
279
+ });
280
+ fs_1.default.mkdirSync(path_1.default.dirname(pathString), { recursive: true });
281
+ fs_1.default.writeFileSync(pathString, msdocsProcessedData);
282
+ };
283
+ const modules = this.getSortedModules(release);
284
+ createTOC(path_1.default.join(msdocsDirectory, 'scriptapi', `TOC.yml`), modules.latest);
285
+ if (modules.prior.length !== 0) {
286
+ createTOC(path_1.default.join(msdocsDirectory, 'priorscriptapi', `TOC.yml`), modules.prior);
287
+ }
288
+ }
289
+ generateCommandFiles(commandJson, mdTemplateFiles, outputDirectory) {
290
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('commands/command.mustache');
291
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, commandJson, {
292
+ overload: mdTemplateFiles.readFileAsString('commands/overload.mustache'),
293
+ parameter: mdTemplateFiles.readFileAsString('commands/parameter.mustache'),
294
+ inline_enum: mdTemplateFiles.readFileAsString('commands/inline_enum.mustache'),
295
+ default_metadata: mdTemplateFiles.readFileAsString('commands/default_metadata.mustache'),
296
+ });
297
+ const msdocsCommandFilePath = path_1.default.join(outputDirectory, 'commands', `${commandJson.name}.md`);
298
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsCommandFilePath), { recursive: true });
299
+ fs_1.default.writeFileSync(msdocsCommandFilePath, msdocsProcessedData);
300
+ }
301
+ generateCommandEnumFiles(enumJson, mdTemplateFiles, outputDirectory) {
302
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('commands/enum.mustache');
303
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, enumJson, {
304
+ default_metadata: mdTemplateFiles.readFileAsString('commands/default_metadata.mustache'),
305
+ });
306
+ const msdocsEnumFilePath = path_1.default.join(outputDirectory, 'enums', `${enumJson.name}.md`);
307
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsEnumFilePath), { recursive: true });
308
+ fs_1.default.writeFileSync(msdocsEnumFilePath, msdocsProcessedData);
309
+ }
310
+ generateCommandsTableOfContents(commandsJson, mdTemplateFiles, outputDirectory) {
311
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('commands/toc.mustache');
312
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, {
313
+ commands: commandsJson,
314
+ });
315
+ const msdocsModuleFilePath = path_1.default.join(outputDirectory, `TOC.yml`);
316
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsModuleFilePath), { recursive: true });
317
+ fs_1.default.writeFileSync(msdocsModuleFilePath, msdocsProcessedData);
318
+ }
319
+ generateCommandsSummaryFile(moduleJson, mdTemplateFiles, outputDirectory) {
320
+ const summaryTemplateFileData = mdTemplateFiles.readFileAsString('commands/summary.mustache');
321
+ const summaryProcessedData = mustache_1.default.render(summaryTemplateFileData, {
322
+ commands: moduleJson.commands,
323
+ command_enums: moduleJson.command_enums,
324
+ command_types: moduleJson.command_types,
325
+ }, {
326
+ default_metadata: mdTemplateFiles.readFileAsString('commands/default_metadata.mustache'),
327
+ });
328
+ const summaryOutputFilePath = path_1.default.join(outputDirectory, `commands.md`);
329
+ fs_1.default.mkdirSync(path_1.default.dirname(summaryOutputFilePath), { recursive: true });
330
+ fs_1.default.writeFileSync(summaryOutputFilePath, summaryProcessedData);
331
+ }
332
+ generateBlockFiles(blockJson, mdTemplateFiles, outputDirectory) {
333
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('blocks/block.mustache');
334
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, blockJson, {
335
+ default_metadata: mdTemplateFiles.readFileAsString('blocks/default_metadata.mustache'),
336
+ });
337
+ const msdocsBlockFilePath = path_1.default.join(outputDirectory, 'blocks', `${blockJson.name}.md`);
338
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsBlockFilePath), { recursive: true });
339
+ fs_1.default.writeFileSync(msdocsBlockFilePath, msdocsProcessedData);
340
+ }
341
+ generateBlockPropertyFiles(blockPropertyJson, mdTemplateFiles, outputDirectory) {
342
+ const msdocsTemplateFileData = mdTemplateFiles.readFileAsString('blocks/block_property.mustache');
343
+ const msdocsProcessedData = mustache_1.default.render(msdocsTemplateFileData, blockPropertyJson, {
344
+ default_metadata: mdTemplateFiles.readFileAsString('blocks/default_metadata.mustache'),
345
+ });
346
+ const msdocsBlockPropertyFilePath = path_1.default.join(outputDirectory, 'block_properties', `${blockPropertyJson.name}.md`);
347
+ fs_1.default.mkdirSync(path_1.default.dirname(msdocsBlockPropertyFilePath), { recursive: true });
348
+ fs_1.default.writeFileSync(msdocsBlockPropertyFilePath, msdocsProcessedData);
349
+ }
350
+ generateFiles(context, releases, outputDirectory) {
351
+ if (releases.length === 0) {
352
+ api_docs_generator_1.Logger.warn(`No releases found, '${this.name}' generation not possible.`);
353
+ return;
354
+ }
355
+ api_docs_generator_1.Logger.info(`Running filter group: ${exports.MSDocsFilters.id}`);
356
+ for (const filter of exports.MSDocsFilters.filters) {
357
+ api_docs_generator_1.Logger.info(`Running filter: ${filter[0]}`);
358
+ try {
359
+ filter[1](releases);
360
+ }
361
+ catch (e) {
362
+ if (e instanceof Error) {
363
+ api_docs_generator_1.Logger.error(`Filter ${filter[0]} threw an exception: ${e.message} @ ${e.stack}`);
364
+ }
365
+ }
366
+ }
367
+ const { msdocs: mdTemplateFiles, tsdef: tsTemplateFiles } = context.getTemplates(...this.templates);
368
+ const commandsMSDocsOutputPath = path_1.default.join(outputDirectory, 'commands');
369
+ const blocksMSDocsOutputPath = path_1.default.join(outputDirectory, 'blocks');
370
+ ///
371
+ // Script
372
+ ///
373
+ const modules = releases[0].getLatestScriptModulesByMajorVersion();
374
+ for (const moduleJson of modules) {
375
+ const scriptModuleOutputFolder = path_1.default.join(outputDirectory, moduleJson.from_module.folder_path, moduleJson.from_module.filepath_name);
376
+ this.generateScriptModuleFile(moduleJson, mdTemplateFiles, tsTemplateFiles, scriptModuleOutputFolder);
377
+ if ((0, api_docs_generator_1.moduleHasChangelog)(moduleJson) &&
378
+ moduleJson.changelog.length > 0 &&
379
+ moduleJson.display_changelog_in_toc) {
380
+ this.generateScriptModuleChangelogFile(moduleJson, mdTemplateFiles, tsTemplateFiles, scriptModuleOutputFolder);
381
+ }
382
+ for (const classJson of moduleJson.classes ?? []) {
383
+ this.generateScriptClassFiles(classJson, mdTemplateFiles, tsTemplateFiles, scriptModuleOutputFolder);
384
+ }
385
+ for (const interfaceJson of moduleJson.interfaces ?? []) {
386
+ this.generateScriptClassFiles(interfaceJson, mdTemplateFiles, tsTemplateFiles, scriptModuleOutputFolder);
387
+ }
388
+ for (const errorJson of moduleJson.errors ?? []) {
389
+ this.generateScriptClassFiles(errorJson, mdTemplateFiles, tsTemplateFiles, scriptModuleOutputFolder);
390
+ }
391
+ for (const enumJson of moduleJson.enums ?? []) {
392
+ this.generateScriptEnumFiles(enumJson, mdTemplateFiles, tsTemplateFiles, scriptModuleOutputFolder);
393
+ }
394
+ for (const typeAliasJson of moduleJson.type_aliases ?? []) {
395
+ this.generateScriptTypeAliasFiles(typeAliasJson, mdTemplateFiles, scriptModuleOutputFolder);
396
+ }
397
+ }
398
+ this.generateScriptTableOfContents(releases[0], mdTemplateFiles, outputDirectory);
399
+ ///
400
+ // Commands
401
+ ///
402
+ if (releases[0].command_modules.length > 0) {
403
+ const moduleJson = releases[0].command_modules[0];
404
+ for (const commandJson of moduleJson.commands ?? []) {
405
+ this.generateCommandFiles(commandJson, mdTemplateFiles, commandsMSDocsOutputPath);
406
+ }
407
+ for (const enumJson of moduleJson.command_enums ?? []) {
408
+ this.generateCommandEnumFiles(enumJson, mdTemplateFiles, commandsMSDocsOutputPath);
409
+ }
410
+ this.generateCommandsSummaryFile(moduleJson, mdTemplateFiles, commandsMSDocsOutputPath);
411
+ this.generateCommandsTableOfContents(moduleJson.commands, mdTemplateFiles, commandsMSDocsOutputPath);
412
+ }
413
+ ///
414
+ // Blocks
415
+ ///
416
+ if (releases[0].block_modules.length > 0) {
417
+ const moduleJson = releases[0].block_modules[0];
418
+ for (const dataItemsJson of moduleJson.data_items ?? []) {
419
+ this.generateBlockFiles(dataItemsJson, mdTemplateFiles, blocksMSDocsOutputPath);
420
+ }
421
+ for (const blockPropertyJson of moduleJson.block_properties ?? []) {
422
+ this.generateBlockPropertyFiles(blockPropertyJson, mdTemplateFiles, blocksMSDocsOutputPath);
423
+ }
424
+ }
425
+ return Promise.resolve();
426
+ }
427
+ id = 'msdocs';
428
+ name = 'MS Docs';
429
+ outputDirectoryName = 'msdocs';
430
+ templates = ['msdocs', 'tsdef'];
431
+ filterGroups = [api_docs_generator_1.CommonFilters, api_docs_generator_1.MarkdownFilters, api_docs_generator_1.TypeScriptFilters];
432
+ }
433
+ exports.MSDocsMarkdownGenerator = MSDocsMarkdownGenerator;
434
+ //# sourceMappingURL=MSDocsMarkdownGenerator.js.map