devextreme-internal-tools 10.0.0-beta.9 → 12.0.0-beta.10

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 (197) hide show
  1. package/Readme.md +1 -1
  2. package/bin/DevExtreme.Declarations.Discoverer.dll +0 -0
  3. package/bin/DevExtreme.Declarations.Discoverer.exe +0 -0
  4. package/bin/DevExtreme.Declarations.IntegrityValidator.dll +0 -0
  5. package/bin/DevExtreme.Declarations.IntegrityValidator.exe +0 -0
  6. package/bin/DevExtreme.Declarations.dll +0 -0
  7. package/bin/DevExtreme.Descriptions.Injector.dll +0 -0
  8. package/bin/DevExtreme.Descriptions.Injector.exe +0 -0
  9. package/bin/DevExtreme.Infrastructure.dll +0 -0
  10. package/bin/DevExtreme.IntegrationDataGenerator.dll +0 -0
  11. package/bin/DevExtreme.IntegrationDataGenerator.exe +0 -0
  12. package/bin/DevExtreme.NgSmdGenerator.dll +0 -0
  13. package/bin/DevExtreme.NgSmdGenerator.exe +0 -0
  14. package/bin/DevExtreme.SmdCommon.dll +0 -0
  15. package/bin/DevExtreme.StrongMetaDataGenerator.dll +0 -0
  16. package/bin/DevExtreme.StrongMetaDataGenerator.exe +0 -0
  17. package/bin/DevExtreme.Topics.ExtraFilesGenerator.dll +0 -0
  18. package/bin/DevExtreme.Topics.ExtraFilesGenerator.exe +0 -0
  19. package/bin/DevExtreme.Topics.Generator.dll +0 -0
  20. package/bin/DevExtreme.Topics.Generator.exe +0 -0
  21. package/bin/DevExtreme.Topics.ModulesGuideValidator.dll +0 -0
  22. package/bin/DevExtreme.Topics.ModulesGuideValidator.exe +0 -0
  23. package/bin/DevExtreme.Topics.Validation.dll +0 -0
  24. package/bin/DevExtreme.Topics.Validation.exe +0 -0
  25. package/bin/DevExtreme.Topics.dll +0 -0
  26. package/bin/DevExtreme.WebSite.ContentMapCreator.dll +0 -0
  27. package/bin/DevExtreme.WebSite.ContentMapCreator.exe +0 -0
  28. package/bin/DevExtreme.WebSite.LinksConverter.dll +0 -0
  29. package/bin/DevExtreme.WebSite.LinksConverter.exe +0 -0
  30. package/bin/DevExtreme.WebSite.SyntaxDataGenerator.dll +0 -0
  31. package/bin/DevExtreme.WebSite.SyntaxDataGenerator.exe +0 -0
  32. package/bin/Enums_23_2.json +538 -0
  33. package/bin/Microsoft.Extensions.DependencyInjection.Abstractions.dll +0 -0
  34. package/bin/Microsoft.Extensions.DependencyInjection.dll +0 -0
  35. package/bin/NLog.dll +0 -0
  36. package/bin/Newtonsoft.Json.dll +0 -0
  37. package/bin/System.IO.Abstractions.dll +0 -0
  38. package/cli.d.ts +2 -0
  39. package/cli.js +50 -0
  40. package/cli.js.map +1 -0
  41. package/index.d.ts +9 -0
  42. package/index.js +18 -54
  43. package/index.js.map +1 -1
  44. package/integration-data-model.d.ts +76 -0
  45. package/integration-data-model.js +3 -0
  46. package/integration-data-model.js.map +1 -0
  47. package/package.json +29 -30
  48. package/ts/angular-components-generator/common-reexports-generator.d.ts +4 -0
  49. package/ts/angular-components-generator/common-reexports-generator.js +38 -0
  50. package/ts/angular-components-generator/common-reexports-generator.js.map +1 -0
  51. package/ts/angular-components-generator/component-names-generator.d.ts +8 -0
  52. package/ts/angular-components-generator/component-names-generator.js +31 -0
  53. package/ts/angular-components-generator/component-names-generator.js.map +1 -0
  54. package/ts/angular-components-generator/dot-generator.d.ts +8 -0
  55. package/ts/angular-components-generator/dot-generator.js +84 -0
  56. package/ts/angular-components-generator/dot-generator.js.map +1 -0
  57. package/ts/angular-components-generator/facade-generator.d.ts +4 -0
  58. package/ts/angular-components-generator/facade-generator.js +50 -0
  59. package/ts/angular-components-generator/facade-generator.js.map +1 -0
  60. package/ts/angular-components-generator/helpers.d.ts +2 -0
  61. package/ts/angular-components-generator/helpers.js +12 -0
  62. package/ts/angular-components-generator/helpers.js.map +1 -0
  63. package/ts/angular-components-generator/import-helper.d.ts +6 -0
  64. package/ts/angular-components-generator/import-helper.js +73 -0
  65. package/ts/angular-components-generator/import-helper.js.map +1 -0
  66. package/ts/angular-components-generator/logger.d.ts +1 -0
  67. package/ts/angular-components-generator/logger.js +16 -0
  68. package/ts/angular-components-generator/logger.js.map +1 -0
  69. package/ts/angular-components-generator/metadata-generator.d.ts +27 -0
  70. package/ts/angular-components-generator/metadata-generator.js +490 -0
  71. package/ts/angular-components-generator/metadata-generator.js.map +1 -0
  72. package/ts/angular-components-generator/metadata-model.d.ts +48 -0
  73. package/ts/angular-components-generator/metadata-model.js +3 -0
  74. package/ts/angular-components-generator/metadata-model.js.map +1 -0
  75. package/ts/angular-components-generator/module-facade-generator.d.ts +5 -0
  76. package/ts/angular-components-generator/module-facade-generator.js +50 -0
  77. package/ts/angular-components-generator/module-facade-generator.js.map +1 -0
  78. package/ts/angular-components-generator/templates/base-nested-component.tst +20 -0
  79. package/ts/angular-components-generator/templates/component.tst +253 -0
  80. package/ts/angular-components-generator/templates/nested-component.tst +140 -0
  81. package/ts/bundler/bundler.d.ts +6 -0
  82. package/ts/bundler/bundler.js +43 -45
  83. package/ts/bundler/bundler.js.map +1 -1
  84. package/ts/collapser/collapser.d.ts +4 -0
  85. package/ts/collapser/collapser.js +53 -49
  86. package/ts/collapser/collapser.js.map +1 -1
  87. package/ts/common/common-resolving.d.ts +11 -0
  88. package/ts/common/common-resolving.js +7 -7
  89. package/ts/common/common-resolving.js.map +1 -1
  90. package/ts/common/id.d.ts +12 -0
  91. package/ts/common/id.js +28 -21
  92. package/ts/common/id.js.map +1 -1
  93. package/ts/common/tags/comparing.d.ts +3 -0
  94. package/ts/common/tags/generating.d.ts +4 -0
  95. package/ts/common/tags/generating.js +16 -12
  96. package/ts/common/tags/generating.js.map +1 -1
  97. package/ts/common/tags/merging.d.ts +12 -0
  98. package/ts/common/tags/merging.js +14 -14
  99. package/ts/common/tags/merging.js.map +1 -1
  100. package/ts/common/tags/parameter-field-tag.d.ts +7 -0
  101. package/ts/common/tags/parameter-field-tag.js +2 -2
  102. package/ts/common/tags/parameter-field-tag.js.map +1 -1
  103. package/ts/common/tags.d.ts +12 -0
  104. package/ts/common/tags.js +26 -22
  105. package/ts/common/tags.js.map +1 -1
  106. package/ts/common/ts-type-resolving.d.ts +16 -0
  107. package/ts/common/ts-type-resolving.js +90 -90
  108. package/ts/common/ts-type-resolving.js.map +1 -1
  109. package/ts/common/ts-utils.d.ts +35 -0
  110. package/ts/common/ts-utils.js +59 -31
  111. package/ts/common/ts-utils.js.map +1 -1
  112. package/ts/common/type-resolving.d.ts +42 -0
  113. package/ts/common/type-resolving.js +52 -52
  114. package/ts/common/type-resolving.js.map +1 -1
  115. package/ts/common/utils.d.ts +22 -0
  116. package/ts/common/utils.js +16 -8
  117. package/ts/common/utils.js.map +1 -1
  118. package/ts/component-exports-generator/generator.d.ts +3 -0
  119. package/ts/component-exports-generator/generator.js +16 -16
  120. package/ts/component-exports-generator/generator.js.map +1 -1
  121. package/ts/components-generation/common-reexports-generator.d.ts +6 -0
  122. package/ts/components-generation/common-reexports-generator.js +27 -0
  123. package/ts/components-generation/common-reexports-generator.js.map +1 -0
  124. package/ts/components-generation/reexports-generator.d.ts +10 -0
  125. package/ts/components-generation/reexports-generator.js +18 -0
  126. package/ts/components-generation/reexports-generator.js.map +1 -0
  127. package/ts/components-generation/template.d.ts +22 -0
  128. package/ts/components-generation/template.js +57 -0
  129. package/ts/components-generation/template.js.map +1 -0
  130. package/ts/discoverer/data-model.d.ts +105 -0
  131. package/ts/discoverer/discovering-error.d.ts +4 -0
  132. package/ts/discoverer/discovering-error.js +2 -4
  133. package/ts/discoverer/discovering-error.js.map +1 -1
  134. package/ts/discoverer/discovering.d.ts +4 -0
  135. package/ts/discoverer/discovering.js +7 -7
  136. package/ts/discoverer/discovering.js.map +1 -1
  137. package/ts/discoverer/parsing/enum-collecting.d.ts +6 -0
  138. package/ts/discoverer/parsing/enum-collecting.js +20 -18
  139. package/ts/discoverer/parsing/enum-collecting.js.map +1 -1
  140. package/ts/discoverer/parsing/file-reader.d.ts +2 -0
  141. package/ts/discoverer/parsing/file-reader.js +8 -2
  142. package/ts/discoverer/parsing/file-reader.js.map +1 -1
  143. package/ts/discoverer/parsing/widget-parsing.d.ts +11 -0
  144. package/ts/discoverer/parsing/widget-parsing.js +83 -0
  145. package/ts/discoverer/parsing/widget-parsing.js.map +1 -0
  146. package/ts/discoverer/parsing.d.ts +29 -0
  147. package/ts/discoverer/parsing.js +76 -112
  148. package/ts/discoverer/parsing.js.map +1 -1
  149. package/ts/discoverer/types.d.ts +20 -0
  150. package/ts/logging.d.ts +16 -0
  151. package/ts/logging.js +15 -15
  152. package/ts/logging.js.map +1 -1
  153. package/ts/modules-meta-generator/modules-meta-generator.d.ts +3 -0
  154. package/ts/modules-meta-generator/modules-meta-generator.js +9 -10
  155. package/ts/modules-meta-generator/modules-meta-generator.js.map +1 -1
  156. package/ts/react-components-generator/component-generator.d.ts +62 -0
  157. package/ts/react-components-generator/component-generator.js +412 -0
  158. package/ts/react-components-generator/component-generator.js.map +1 -0
  159. package/ts/react-components-generator/converter.d.ts +3 -0
  160. package/ts/react-components-generator/converter.js +59 -0
  161. package/ts/react-components-generator/converter.js.map +1 -0
  162. package/ts/react-components-generator/generator.d.ts +60 -0
  163. package/ts/react-components-generator/generator.js +382 -0
  164. package/ts/react-components-generator/generator.js.map +1 -0
  165. package/ts/react-components-generator/helpers.d.ts +11 -0
  166. package/ts/react-components-generator/helpers.js +53 -0
  167. package/ts/react-components-generator/helpers.js.map +1 -0
  168. package/ts/react-components-generator/import-overrides.json +108 -0
  169. package/ts/react-components-generator/index-generator.d.ts +3 -0
  170. package/ts/react-components-generator/index-generator.js +22 -0
  171. package/ts/react-components-generator/index-generator.js.map +1 -0
  172. package/ts/scripts/args.d.ts +37 -0
  173. package/ts/scripts/args.js +28 -21
  174. package/ts/scripts/args.js.map +1 -1
  175. package/ts/scripts/helpers.d.ts +10 -0
  176. package/ts/scripts/helpers.js +12 -12
  177. package/ts/scripts/helpers.js.map +1 -1
  178. package/ts/scripts/tools.d.ts +17 -0
  179. package/ts/scripts/tools.js +46 -39
  180. package/ts/scripts/tools.js.map +1 -1
  181. package/ts/vue-components-generator/component-generator.d.ts +40 -0
  182. package/ts/vue-components-generator/component-generator.js +197 -0
  183. package/ts/vue-components-generator/component-generator.js.map +1 -0
  184. package/ts/vue-components-generator/converter.d.ts +3 -0
  185. package/ts/vue-components-generator/converter.js +45 -0
  186. package/ts/vue-components-generator/converter.js.map +1 -0
  187. package/ts/vue-components-generator/generator.d.ts +11 -0
  188. package/ts/vue-components-generator/generator.js +120 -0
  189. package/ts/vue-components-generator/generator.js.map +1 -0
  190. package/ts/vue-components-generator/helpers.d.ts +6 -0
  191. package/ts/vue-components-generator/helpers.js +30 -0
  192. package/ts/vue-components-generator/helpers.js.map +1 -0
  193. package/bin/integration-data-model.ts +0 -86
  194. package/bin/internal-tools-log.txt +0 -19
  195. package/integration-data-model.ts +0 -86
  196. package/ts/discoverer/parsing/file-reader.tests.js +0 -24
  197. package/ts/discoverer/parsing/file-reader.tests.js.map +0 -1
@@ -0,0 +1,6 @@
1
+ import { Option } from './metadata-model';
2
+ export interface FileImport {
3
+ path: string;
4
+ importString: string;
5
+ }
6
+ export declare function buildImports(options: Option[], widgetPackageName: string): FileImport[];
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildImports = void 0;
4
+ var helpers_1 = require("./helpers");
5
+ function buildImports(options, widgetPackageName) {
6
+ var importsByPath = extractImportsMeta(options).reduce(function (paths, _a) {
7
+ var Path = _a.Path, Name = _a.Name, Alias = _a.Alias;
8
+ if (!paths[Path]) {
9
+ paths[Path] = {};
10
+ }
11
+ paths[Path]["".concat(Name, "+").concat(Alias)] = { Name: Name, Alias: Alias };
12
+ return paths;
13
+ }, {});
14
+ return Object.keys(importsByPath)
15
+ .map(function (path) {
16
+ var _a = extractDefaultImport((0, helpers_1.getValues)(importsByPath[path])), defaultImport = _a.defaultImport, namedImports = _a.namedImports;
17
+ var parts = [];
18
+ if (defaultImport) {
19
+ parts.push(defaultImport);
20
+ }
21
+ if (namedImports.length) {
22
+ var namedImportsString = namedImports
23
+ .sort((0, helpers_1.byKeyComparer)(function (i) { return i.Name; }))
24
+ .map(function (_a) {
25
+ var Name = _a.Name, Alias = _a.Alias;
26
+ return (Alias ? "".concat(Name, " as ").concat(Alias) : Name);
27
+ })
28
+ .join(', ');
29
+ parts.push("{ ".concat(namedImportsString, " }"));
30
+ }
31
+ return {
32
+ path: "".concat(widgetPackageName, "/").concat(path),
33
+ importString: parts.join(', '),
34
+ };
35
+ })
36
+ .sort((0, helpers_1.byKeyComparer)(function (i) { return i.path; }));
37
+ }
38
+ exports.buildImports = buildImports;
39
+ function extractImportsMeta(options) {
40
+ if (!options || !options.length) {
41
+ return [];
42
+ }
43
+ return options.reduce(function (r, option) {
44
+ if (option) {
45
+ r.push.apply(r, option.TypeImports);
46
+ r.push.apply(r, extractImportsMeta((0, helpers_1.getValues)(option.Options)));
47
+ }
48
+ return r;
49
+ }, []);
50
+ }
51
+ function extractDefaultImport(imports) {
52
+ var result = {
53
+ defaultImport: undefined,
54
+ namedImports: [],
55
+ };
56
+ for (var _i = 0, imports_1 = imports; _i < imports_1.length; _i++) {
57
+ var entry = imports_1[_i];
58
+ if (isDefaultImport(entry)) {
59
+ if (!entry.Alias) {
60
+ throw new Error("default export must have an alias: ".concat(JSON.stringify(entry)));
61
+ }
62
+ result.defaultImport = entry.Alias;
63
+ }
64
+ else {
65
+ result.namedImports.push(entry);
66
+ }
67
+ }
68
+ return result;
69
+ }
70
+ function isDefaultImport(importName) {
71
+ return importName.Name.toLowerCase() === 'default';
72
+ }
73
+ //# sourceMappingURL=import-helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import-helper.js","sourceRoot":"","sources":["../../../ts/angular-components-generator/import-helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export default function (...args: any[]): void;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var yargs = require("yargs");
4
+ var argv = yargs
5
+ .default('verbose', false).parseSync();
6
+ function default_1() {
7
+ var args = [];
8
+ for (var _i = 0; _i < arguments.length; _i++) {
9
+ args[_i] = arguments[_i];
10
+ }
11
+ if (argv.verbose) {
12
+ console.log.apply(console, args);
13
+ }
14
+ }
15
+ exports.default = default_1;
16
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../ts/angular-components-generator/logger.ts"],"names":[],"mappings":";;AAAA,6BAA+B;AAE/B,IAAM,IAAI,GAAG,KAAK;KACf,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;AAEzC;IAAyB,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,yBAAO;;IAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,OAAO,CAAC,GAAG,OAAX,OAAO,EAAQ,IAAI,EAAE;KACtB;AACH,CAAC;AAJD,4BAIC"}
@@ -0,0 +1,27 @@
1
+ import { Metadata } from './metadata-model';
2
+ export interface IObjectStore {
3
+ read(name: string): Metadata;
4
+ write(name: string, data: Record<string, any>): void;
5
+ }
6
+ export declare class FSObjectStore implements IObjectStore {
7
+ private encoding;
8
+ read(filePath: any): any;
9
+ write(filePath: any, data: any): void;
10
+ }
11
+ export declare class ComponentMetadataGenerator {
12
+ private store?;
13
+ constructor(store?: IObjectStore);
14
+ generate(config: any): void;
15
+ private createEvent;
16
+ private getTypesDescription;
17
+ private getTypeParts;
18
+ private getObjectType;
19
+ private getEventType;
20
+ private getType;
21
+ private mergeArrayTypes;
22
+ private getExternalObjectInfo;
23
+ private generateComplexOptionByType;
24
+ private generateComplexOption;
25
+ private getBaseComponentPath;
26
+ private generateNestedOptions;
27
+ }
@@ -0,0 +1,490 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.ComponentMetadataGenerator = exports.FSObjectStore = void 0;
26
+ var fs = require("fs");
27
+ var path = require("path");
28
+ var mkdirp = require("mkdirp");
29
+ var merge = require("deepmerge");
30
+ var inflector = require("inflector-js");
31
+ var logger_1 = require("./logger");
32
+ var import_helper_1 = require("./import-helper");
33
+ var helpers_1 = require("./helpers");
34
+ var OPTION_COMPONENT_PREFIX = 'Dxo';
35
+ var ITEM_COMPONENT_PREFIX = 'Dxi';
36
+ var TYPES_SEPORATOR = ' | ';
37
+ function trimDx(value) {
38
+ return trimPrefix('dx-', value);
39
+ }
40
+ function trimPrefix(prefix, value) {
41
+ if (value.indexOf(prefix) === 0) {
42
+ return value.substr(prefix.length);
43
+ }
44
+ return value;
45
+ }
46
+ var FSObjectStore = (function () {
47
+ function FSObjectStore() {
48
+ this.encoding = 'utf8';
49
+ }
50
+ FSObjectStore.prototype.read = function (filePath) {
51
+ (0, logger_1.default)("Read from file: ".concat(filePath));
52
+ var dataString = fs.readFileSync(filePath, { encoding: this.encoding });
53
+ (0, logger_1.default)('Parse data');
54
+ return JSON.parse(dataString);
55
+ };
56
+ FSObjectStore.prototype.write = function (filePath, data) {
57
+ (0, logger_1.default)("Write data to file ".concat(filePath));
58
+ var dataString = JSON.stringify(data, null, 4);
59
+ fs.writeFileSync(filePath, dataString, { encoding: this.encoding });
60
+ };
61
+ return FSObjectStore;
62
+ }());
63
+ exports.FSObjectStore = FSObjectStore;
64
+ var ComponentMetadataGenerator = (function () {
65
+ function ComponentMetadataGenerator(store) {
66
+ this.store = store;
67
+ if (!this.store) {
68
+ this.store = new FSObjectStore();
69
+ }
70
+ }
71
+ ComponentMetadataGenerator.prototype.generate = function (config) {
72
+ var _a, _b;
73
+ var sourceMetadata = this.store.read(config.sourceMetadataFilePath);
74
+ var deprecatedMetadata = this.store.read(config.deprecatedMetadataFilePath);
75
+ var metadata = merge(sourceMetadata, deprecatedMetadata);
76
+ var widgetsMetadata = metadata.Widgets;
77
+ var allNestedComponents = [];
78
+ mkdirp.sync(config.outputFolderPath);
79
+ mkdirp.sync(path.join(config.outputFolderPath, config.nestedPathPart));
80
+ mkdirp.sync(path.join(config.outputFolderPath, config.nestedPathPart, config.basePathPart));
81
+ var _loop_1 = function (widgetName) {
82
+ var widget = widgetsMetadata[widgetName];
83
+ var nestedComponents = [];
84
+ if (!widget.Module) {
85
+ (0, logger_1.default)("Skipping metadata for ".concat(widgetName));
86
+ return "continue";
87
+ }
88
+ (0, logger_1.default)("Generate metadata for ".concat(widgetName));
89
+ var isTranscludedContent = widget.IsTranscludedContent;
90
+ var isViz = widget.Module.indexOf('viz') === 0;
91
+ var isExtension = widget.IsExtensionComponent || false;
92
+ var className = inflector.camelize(widgetName);
93
+ var dasherizedWidgetName = inflector.dasherize(inflector.underscore(widgetName));
94
+ var outputFilePath = path.join(config.outputFolderPath, "".concat(trimDx(dasherizedWidgetName), ".json"));
95
+ var events = [];
96
+ var changeEvents = [];
97
+ var properties = [];
98
+ var isEditor = Object.keys(widget.Options).indexOf('onValueChanged') !== -1;
99
+ for (var optionName in widget.Options) {
100
+ var option = widget.Options[optionName];
101
+ if (option.IsEvent) {
102
+ var eventName = inflector.camelize(optionName.substr('on'.length), true);
103
+ var eventType = ((_a = option.TypeImports) === null || _a === void 0 ? void 0 : _a.length) ? option.TypeImports[0].Name : 'any';
104
+ events.push({
105
+ docID: option.DocID,
106
+ isDeprecated: option.IsDeprecated,
107
+ emit: optionName,
108
+ subscribe: eventName,
109
+ type: "EventEmitter<".concat(eventType, ">"),
110
+ });
111
+ }
112
+ else {
113
+ var typesDescription = this_1.getTypesDescription(option);
114
+ var finalizedType = this_1.getType(typesDescription);
115
+ var property = {
116
+ docID: option.DocID,
117
+ isDeprecated: option.IsDeprecated,
118
+ name: optionName,
119
+ type: finalizedType,
120
+ typesDescription: typesDescription,
121
+ option: option,
122
+ };
123
+ if (!!option.IsCollection || !!option.IsDataSource) {
124
+ property.isCollection = true;
125
+ }
126
+ properties.push(property);
127
+ changeEvents.push(this_1.createEvent(optionName, finalizedType, option));
128
+ var components = this_1.generateComplexOptionByType(metadata, option, optionName, [], config);
129
+ nestedComponents = nestedComponents.concat.apply(nestedComponents, components);
130
+ }
131
+ }
132
+ var allEvents = events.concat(changeEvents);
133
+ if (isEditor) {
134
+ allEvents.push({ emit: 'onBlur', type: 'EventEmitter<any>' });
135
+ }
136
+ var widgetNestedComponents = nestedComponents
137
+ .reduce(function (result, component) {
138
+ if (result.filter(function (c) { return c.className === component.className; }).length === 0) {
139
+ result.push({
140
+ path: component.path,
141
+ propertyName: component.propertyName,
142
+ className: component.className,
143
+ events: component.events,
144
+ isCollection: component.isCollection,
145
+ hasTemplate: component.hasTemplate,
146
+ root: properties.filter(function (p) { return p.name === component.propertyName; }).length === 1 ? true : undefined,
147
+ });
148
+ }
149
+ return result;
150
+ }, []);
151
+ var containsReexports = !!((_b = widget.Reexports) === null || _b === void 0 ? void 0 : _b.filter(function (r) { return r !== 'default'; }).length);
152
+ var widgetMetadata = {
153
+ docID: widget.DocID,
154
+ isDeprecated: widget.IsDeprecated,
155
+ className: className,
156
+ widgetName: widgetName,
157
+ isTranscludedContent: isTranscludedContent,
158
+ isViz: isViz,
159
+ isExtension: isExtension,
160
+ selector: dasherizedWidgetName,
161
+ events: allEvents,
162
+ properties: properties,
163
+ isEditor: isEditor,
164
+ module: "".concat(config.widgetPackageName, "/").concat(widget.Module),
165
+ packageName: config.wrapperPackageName,
166
+ imports: (0, import_helper_1.buildImports)((0, helpers_1.getValues)(widget.Options), config.widgetPackageName),
167
+ nestedComponents: widgetNestedComponents,
168
+ optionsTypeParams: widget.OptionsTypeParams,
169
+ renderReexports: config.generateReexports && containsReexports,
170
+ };
171
+ (0, logger_1.default)("Write metadata to file ".concat(outputFilePath));
172
+ this_1.store.write(outputFilePath, normalizeMeta(widgetMetadata));
173
+ allNestedComponents = allNestedComponents.concat.apply(allNestedComponents, nestedComponents);
174
+ };
175
+ var this_1 = this;
176
+ for (var widgetName in widgetsMetadata) {
177
+ _loop_1(widgetName);
178
+ }
179
+ this.generateNestedOptions(config, allNestedComponents);
180
+ };
181
+ ComponentMetadataGenerator.prototype.createEvent = function (name, type, option) {
182
+ return {
183
+ isInternal: true,
184
+ emit: "".concat(name, "Change"),
185
+ type: "EventEmitter<".concat(type, ">"),
186
+ option: option,
187
+ };
188
+ };
189
+ ComponentMetadataGenerator.prototype.getTypesDescription = function (optionMetadata) {
190
+ var typeParts = this.getTypeParts(optionMetadata);
191
+ return {
192
+ primitiveTypes: typeParts.primitiveTypes,
193
+ arrayTypes: typeParts.arrayTypes,
194
+ };
195
+ };
196
+ ComponentMetadataGenerator.prototype.getTypeParts = function (optionMetadata) {
197
+ var primitiveTypes = optionMetadata.PrimitiveTypes ? optionMetadata.PrimitiveTypes.slice(0) : [];
198
+ var arrayTypes = [];
199
+ if (optionMetadata.ItemPrimitiveTypes) {
200
+ if (optionMetadata.IsPromise) {
201
+ var promiseType = optionMetadata.ItemPrimitiveTypes.join(TYPES_SEPORATOR);
202
+ primitiveTypes.push("Promise<".concat(promiseType, "> & JQueryPromise<").concat(promiseType, ">"));
203
+ }
204
+ else {
205
+ arrayTypes = arrayTypes.concat(optionMetadata.ItemPrimitiveTypes);
206
+ }
207
+ }
208
+ if (optionMetadata.Options) {
209
+ var optionType = this.getObjectType(optionMetadata.Options);
210
+ if (optionType.length) {
211
+ (optionMetadata.IsCollection ? arrayTypes : primitiveTypes).push(optionType);
212
+ }
213
+ }
214
+ return ({ primitiveTypes: primitiveTypes, arrayTypes: arrayTypes });
215
+ };
216
+ ComponentMetadataGenerator.prototype.getObjectType = function (optionMetadata) {
217
+ var objectType = [];
218
+ for (var option in optionMetadata) {
219
+ var typeParts = this.getTypeParts(optionMetadata[option]);
220
+ var type = this.getType(typeParts);
221
+ objectType.push("".concat(option, "?: ").concat(type));
222
+ }
223
+ if (objectType.length) {
224
+ return "{ ".concat(objectType.join(', '), " }");
225
+ }
226
+ return '';
227
+ };
228
+ ComponentMetadataGenerator.prototype.getEventType = function (typesDescription, option) {
229
+ var _a;
230
+ if (!((option === null || option === void 0 ? void 0 : option.IsEvent) && ((_a = option.TypeImports) === null || _a === void 0 ? void 0 : _a.length))) {
231
+ return this.getType(typesDescription);
232
+ }
233
+ return "((e: ".concat(option.TypeImports[0].Name, ") => void)");
234
+ };
235
+ ComponentMetadataGenerator.prototype.getType = function (typesDescription) {
236
+ var primitiveTypes = typesDescription.primitiveTypes.slice(0);
237
+ var result = 'any';
238
+ if (typesDescription.arrayTypes.length) {
239
+ primitiveTypes.push("Array<".concat(typesDescription.arrayTypes.join(TYPES_SEPORATOR), ">"));
240
+ }
241
+ if (primitiveTypes.length) {
242
+ result = primitiveTypes.join(TYPES_SEPORATOR);
243
+ }
244
+ return result;
245
+ };
246
+ ComponentMetadataGenerator.prototype.mergeArrayTypes = function (array1, array2) {
247
+ var newTypes = array2.filter(function (type) { return array1.indexOf(type) === -1; });
248
+ return [].concat(array1, newTypes);
249
+ };
250
+ ComponentMetadataGenerator.prototype.getExternalObjectInfo = function (metadata, typeName) {
251
+ var externalObject = metadata.ExtraObjects[typeName];
252
+ if (!externalObject) {
253
+ var postfix = 'Options';
254
+ if (typeName.endsWith(postfix)) {
255
+ var widgetName = typeName.substr(0, typeName.length - postfix.length);
256
+ externalObject = metadata.Widgets[widgetName];
257
+ typeName = trimPrefix('dx', typeName);
258
+ }
259
+ }
260
+ if (!externalObject) {
261
+ console.warn("WARN: missed complex type: ".concat(typeName));
262
+ }
263
+ else {
264
+ return {
265
+ Options: externalObject.Options,
266
+ typeName: typeName,
267
+ };
268
+ }
269
+ return undefined;
270
+ };
271
+ ComponentMetadataGenerator.prototype.generateComplexOptionByType = function (metadata, option, optionName, complexTypes, config) {
272
+ var _this = this;
273
+ var optionComplexTypes = option[option.IsCollection ? 'ItemComplexTypes' : 'ComplexTypes'];
274
+ if (option.Options) {
275
+ return this.generateComplexOption(metadata, option.Options, optionName, complexTypes, option, config);
276
+ }
277
+ if (optionComplexTypes && optionComplexTypes.length > 0) {
278
+ if (complexTypes.indexOf(complexTypes[complexTypes.length - 1]) !== complexTypes.length - 1) {
279
+ return undefined;
280
+ }
281
+ var result_1 = [];
282
+ optionComplexTypes.forEach(function (complexType) {
283
+ var externalObjectInfo = _this.getExternalObjectInfo(metadata, complexType);
284
+ if (externalObjectInfo) {
285
+ var nestedOptions = externalObjectInfo.Options;
286
+ var nestedComplexTypes = complexTypes.concat(externalObjectInfo.typeName);
287
+ result_1.push.apply(result_1, _this.generateComplexOption(metadata, nestedOptions, optionName, nestedComplexTypes, option, config));
288
+ }
289
+ });
290
+ if (optionComplexTypes.length === 1) {
291
+ var externalObjectInfo = this.getExternalObjectInfo(metadata, optionComplexTypes[0]);
292
+ if (externalObjectInfo) {
293
+ result_1[0].baseClass = (option.IsCollection ? ITEM_COMPONENT_PREFIX : OPTION_COMPONENT_PREFIX) + externalObjectInfo.typeName;
294
+ result_1[0].basePath = inflector.dasherize(inflector.underscore(externalObjectInfo.typeName));
295
+ }
296
+ }
297
+ return result_1;
298
+ }
299
+ return undefined;
300
+ };
301
+ ComponentMetadataGenerator.prototype.generateComplexOption = function (metadata, nestedOptions, optionName, complexTypes, option, config) {
302
+ var _a;
303
+ var _b;
304
+ if (!nestedOptions || !Object.keys(nestedOptions).length) {
305
+ return undefined;
306
+ }
307
+ var pluralName = optionName;
308
+ if (option.IsCollection) {
309
+ pluralName = "".concat(option.SingularName, "Dxi");
310
+ }
311
+ var singularName = option.SingularName || pluralName;
312
+ var underscoreSingular = inflector.underscore(singularName).split('.').join('_');
313
+ var underscorePlural = inflector.underscore(pluralName).split('.').join('_');
314
+ var prefix = "".concat((option.IsCollection ? ITEM_COMPONENT_PREFIX : OPTION_COMPONENT_PREFIX).toLocaleLowerCase(), "_");
315
+ var underscoreSelector = prefix + (option.IsCollection ? underscoreSingular : underscorePlural);
316
+ var selector = inflector.dasherize(underscoreSelector);
317
+ var complexOptionMetadata = {
318
+ docID: option.DocID,
319
+ isDeprecated: option.IsDeprecated,
320
+ className: inflector.camelize(underscoreSelector),
321
+ selector: selector,
322
+ optionName: optionName,
323
+ properties: [],
324
+ events: [],
325
+ path: inflector.dasherize(underscorePlural),
326
+ propertyName: optionName,
327
+ isCollection: option.IsCollection,
328
+ hasTemplate: option.Options && option.Options.template && option.Options.template.IsTemplate,
329
+ collectionNestedComponents: [],
330
+ imports: [],
331
+ };
332
+ var nestedComponents = [complexOptionMetadata];
333
+ for (var optName in nestedOptions) {
334
+ var nestedOption = nestedOptions[optName];
335
+ var typesDescription = this.getTypesDescription(nestedOption);
336
+ var propertyType = this.getType(typesDescription);
337
+ if (nestedOption.IsEvent && nestedOption.IsEvent && ((_b = nestedOption.TypeImports) === null || _b === void 0 ? void 0 : _b.length)) {
338
+ propertyType = "((e: ".concat(nestedOption.TypeImports[0].Name, ") => void)");
339
+ }
340
+ var property = {
341
+ docID: nestedOption.DocID,
342
+ isDeprecated: nestedOption.IsDeprecated,
343
+ name: optName,
344
+ type: propertyType,
345
+ typesDescription: typesDescription,
346
+ option: nestedOption,
347
+ };
348
+ if (nestedOption.IsCollection) {
349
+ property.isCollection = true;
350
+ }
351
+ complexOptionMetadata.properties.push(property);
352
+ if (nestedOption.IsChangeable || nestedOption.IsReadonly) {
353
+ complexOptionMetadata.events.push(this.createEvent(optName, propertyType, nestedOption));
354
+ }
355
+ var components = this.generateComplexOptionByType(metadata, nestedOptions[optName], optName, complexTypes, config) || [];
356
+ nestedComponents = nestedComponents.concat.apply(nestedComponents, components);
357
+ var ownCollectionNestedComponents = components
358
+ .filter(function (c) { return complexOptionMetadata
359
+ .properties
360
+ .filter(function (p) { return p.name === c.propertyName && p.isCollection; }).length === 1; })
361
+ .map(function (c) { return ({
362
+ className: c.className,
363
+ path: c.path,
364
+ propertyName: c.propertyName,
365
+ }); });
366
+ (_a = complexOptionMetadata.collectionNestedComponents).push.apply(_a, ownCollectionNestedComponents);
367
+ }
368
+ complexOptionMetadata.imports = (0, import_helper_1.buildImports)((0, helpers_1.getValues)(nestedOptions), config.widgetPackageName);
369
+ return nestedComponents;
370
+ };
371
+ ComponentMetadataGenerator.prototype.getBaseComponentPath = function (component) {
372
+ return component.basePath + (component.isCollection ? '-dxi' : '');
373
+ };
374
+ ComponentMetadataGenerator.prototype.generateNestedOptions = function (config, metadata) {
375
+ var _this = this;
376
+ var normalizedMetadata = metadata
377
+ .reduce(function (result, component) {
378
+ var _a, _b, _c, _d;
379
+ var existingComponent = result.filter(function (c) { return c.className === component.className; })[0];
380
+ if (!existingComponent) {
381
+ component.options = component.properties.map(function (p) { return p.option; });
382
+ result.push(component);
383
+ }
384
+ else {
385
+ existingComponent.properties = (_a = existingComponent.properties)
386
+ .concat.apply(_a, component.properties).reduce(function (properties, property) {
387
+ var _a;
388
+ if (properties.filter(function (p) { return p.name === property.name; }).length === 0) {
389
+ properties.push(property);
390
+ }
391
+ else {
392
+ var existingProperty = properties.filter(function (p) { return p.name === property.name; })[0];
393
+ var typesDescription = existingProperty.typesDescription;
394
+ typesDescription.primitiveTypes = _this.mergeArrayTypes(typesDescription.primitiveTypes, property.typesDescription.primitiveTypes);
395
+ typesDescription.arrayTypes = _this.mergeArrayTypes(typesDescription.arrayTypes, property.typesDescription.arrayTypes);
396
+ existingProperty.type = ((_a = existingProperty.option) === null || _a === void 0 ? void 0 : _a.IsEvent)
397
+ ? _this.getEventType(typesDescription, existingProperty.option)
398
+ : _this.getType(typesDescription);
399
+ }
400
+ return properties;
401
+ }, []);
402
+ existingComponent.events = (_b = existingComponent.events)
403
+ .concat.apply(_b, component.events).reduce(function (events, event) {
404
+ if (events.filter(function (e) { return e.emit === event.emit; }).length === 0) {
405
+ events.push(event);
406
+ }
407
+ return events;
408
+ }, []);
409
+ existingComponent.baseClass = existingComponent.baseClass || component.baseClass;
410
+ existingComponent.basePath = existingComponent.basePath || component.basePath;
411
+ (_c = existingComponent.collectionNestedComponents).push.apply(_c, component.collectionNestedComponents);
412
+ (_d = existingComponent.options).push.apply(_d, component.properties.map(function (p) { return p.option; }));
413
+ }
414
+ return result;
415
+ }, []);
416
+ normalizedMetadata.forEach(function (component) {
417
+ component.collectionNestedComponents = component.collectionNestedComponents
418
+ .reduce(function (result, nestedComponent) {
419
+ if (result.filter(function (c) { return nestedComponent.className === c.className; }).length === 0) {
420
+ result.push(nestedComponent);
421
+ }
422
+ return result;
423
+ }, []);
424
+ });
425
+ normalizedMetadata
426
+ .reduce(function (result, component) {
427
+ var existingComponent = result.filter(function (c) { return c.className === component.baseClass; })[0];
428
+ if (!existingComponent && component.baseClass) {
429
+ var nestedComponent = {
430
+ properties: component.properties,
431
+ events: component.events,
432
+ className: component.baseClass,
433
+ path: _this.getBaseComponentPath(component),
434
+ baseClass: component.isCollection ? 'CollectionNestedOption' : 'NestedOption',
435
+ basePath: 'devextreme-angular/core',
436
+ imports: (0, import_helper_1.buildImports)(component.options, config.widgetPackageName),
437
+ };
438
+ result.push(nestedComponent);
439
+ }
440
+ return result;
441
+ }, [])
442
+ .forEach(function (component) {
443
+ var outputFilePath = path.join(config.outputFolderPath, config.nestedPathPart, config.basePathPart, "".concat(component.path, ".json"));
444
+ _this.store.write(outputFilePath, normalizeMeta(component));
445
+ });
446
+ normalizedMetadata
447
+ .map(function (component) {
448
+ if (component.events && !component.events.length) {
449
+ delete component.events;
450
+ }
451
+ if (component.baseClass) {
452
+ component.inputs = component.properties;
453
+ delete component.properties;
454
+ component.basePath = "./base/".concat(_this.getBaseComponentPath(component));
455
+ component.imports = component.events
456
+ ? component.imports = (0, import_helper_1.buildImports)(component.events.map(function (e) { return e.option; }), config.widgetPackageName)
457
+ : undefined;
458
+ }
459
+ else {
460
+ component.baseClass = component.isCollection ? 'CollectionNestedOption' : 'NestedOption';
461
+ component.basePath = 'devextreme-angular/core';
462
+ component.hasSimpleBaseClass = true;
463
+ component.imports = (0, import_helper_1.buildImports)(component.options, config.widgetPackageName);
464
+ }
465
+ return component;
466
+ })
467
+ .forEach(function (component) {
468
+ var outputFilePath = path.join(config.outputFolderPath, config.nestedPathPart, "".concat(component.path, ".json"));
469
+ _this.store.write(outputFilePath, normalizeMeta(component));
470
+ });
471
+ };
472
+ return ComponentMetadataGenerator;
473
+ }());
474
+ exports.ComponentMetadataGenerator = ComponentMetadataGenerator;
475
+ function normalizeMeta(meta) {
476
+ var result = __assign(__assign({}, meta), { properties: meta.properties && meta.properties.map(function (_a) {
477
+ var option = _a.option, rest = __rest(_a, ["option"]);
478
+ return (__assign({}, rest));
479
+ }), events: meta.events && meta.events.map(function (_a) {
480
+ var option = _a.option, rest = __rest(_a, ["option"]);
481
+ return (__assign({}, rest));
482
+ }) });
483
+ if (!result.imports || !result.imports.length) {
484
+ result.imports = undefined;
485
+ delete result.imports;
486
+ }
487
+ (0, logger_1.default)(result);
488
+ return result;
489
+ }
490
+ //# sourceMappingURL=metadata-generator.js.map