Skip to content

Commit 2d7c4ba

Browse files
authored
Generate reexports in components (#1352)
1 parent d6d570d commit 2d7c4ba

File tree

8 files changed

+30
-16
lines changed

8 files changed

+30
-16
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
"author": "Developer Express Inc.",
2424
"license": "MIT",
2525
"devDependencies": {
26-
"devextreme-internal-tools": "^9.4.2",
26+
"devextreme-internal-tools": "^10.0.0-beta.2",
2727
"gulp": "^4.0.2",
2828
"gulp-tslint": "^7.1.0",
2929
"lerna": "^3.22.1",

packages/devextreme-angular-generator/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"author": "Developer Express Inc.",
33
"name": "devextreme-angular-generator",
4-
"version": "1.2.1",
4+
"version": "2.0.0",
55
"description": "Angular UI and visualization components based on DevExtreme widgets",
66
"repository": {
77
"type": "git",

packages/devextreme-angular-generator/src/common-reexports-generator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { createTemplateFromString } from './dot-generator';
55
const render: (model: { module: string, reexports: string[] }) => string = createTemplateFromString(`
66
export {<#~ it.reexports :reExport #>
77
<#= reExport #>,<#~#>
8-
} from "devextreme/<#= it.module #>";
8+
} from 'devextreme/<#= it.module #>';
99
`.trimLeft());
1010

1111
export default class CommonReexportsGenerator {

packages/devextreme-angular-generator/src/metadata-generator.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,10 @@ export class FSObjectStore implements IObjectStore {
125125
}
126126
}
127127

128+
interface Reexports {
129+
renderReexports?: boolean;
130+
}
131+
128132
export default class DXComponentMetadataGenerator {
129133
constructor(private _store?: IObjectStore) {
130134
if (!this._store) {
@@ -226,7 +230,9 @@ export default class DXComponentMetadataGenerator {
226230
return result;
227231
}, []);
228232

229-
const widgetMetadata: WidgetComponent & File = {
233+
const containsReexports = !!widget.Reexports?.filter((r) => r !== 'default').length;
234+
235+
const widgetMetadata: WidgetComponent & File & Reexports = {
230236
docID: widget.DocID,
231237
isDeprecated: widget.IsDeprecated,
232238
className: className,
@@ -243,6 +249,7 @@ export default class DXComponentMetadataGenerator {
243249
imports: buildImports(getValues(widget.Options), config.widgetPackageName),
244250
nestedComponents: widgetNestedComponents,
245251
optionsTypeParams: widget.OptionsTypeParams,
252+
renderReexports: config.generateReexports && containsReexports,
246253
};
247254

248255
logger('Write metadata to file ' + outputFilePath);
@@ -563,10 +570,10 @@ export default class DXComponentMetadataGenerator {
563570

564571
return result;
565572
}, [])
566-
.forEach(componet => {
573+
.forEach(component => {
567574
let outputFilePath = path.join(config.outputFolderPath,
568-
config.nestedPathPart, config.basePathPart, componet.path + '.json');
569-
this._store.write(outputFilePath, normalizeMeta(componet));
575+
config.nestedPathPart, config.basePathPart, component.path + '.json');
576+
this._store.write(outputFilePath, normalizeMeta(component));
570577
});
571578

572579
interface NestedComponentFile {
@@ -596,15 +603,15 @@ export default class DXComponentMetadataGenerator {
596603

597604
return component;
598605
})
599-
.forEach(componet => {
600-
let outputFilePath = path.join(config.outputFolderPath, config.nestedPathPart, componet.path + '.json');
601-
this._store.write(outputFilePath, normalizeMeta(componet));
606+
.forEach(component => {
607+
let outputFilePath = path.join(config.outputFolderPath, config.nestedPathPart, component.path + '.json');
608+
this._store.write(outputFilePath, normalizeMeta(component));
602609
});
603610
}
604611
}
605612

606-
function normalizeMeta(meta: Container & File): Container & File {
607-
const result: Container & File = {
613+
function normalizeMeta(meta: Container & File & Reexports): Container & File & Reexports {
614+
const result: Container & File & Reexports = {
608615
...meta,
609616
properties: meta.properties && meta.properties.map(({option, ...rest}) => ({ ...rest })),
610617
events: meta.events && meta.events.map(({option, ...rest}) => ({ ...rest }))
@@ -614,6 +621,6 @@ function normalizeMeta(meta: Container & File): Container & File {
614621
result.imports = undefined;
615622
delete result.imports;
616623
}
617-
624+
logger(result);
618625
return result;
619626
}

packages/devextreme-angular-generator/src/metadata-model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export interface Metadata {
4545
[optionName: string]: Option;
4646
};
4747
OptionsTypeParams: string[];
48+
Reexports: string[];
4849
}
4950
};
5051
ExtraObjects: any[];

packages/devextreme-angular-generator/src/templates/component.tst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,8 @@ export class <#= it.className #>Component extends <#= baseClass #> <#? implement
246246
]
247247
})
248248
export class <#= it.className #>Module { }
249+
<#? it.renderReexports #>
250+
import type * as <#= it.className #>Types from "<#= it.module #>_types";
251+
export { <#= it.className #>Types };
252+
<#?#>
253+

packages/devextreme-angular/build.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ module.exports = {
88
nestedPathPart: 'nested',
99
basePathPart: 'base',
1010
widgetPackageName: "devextreme",
11-
wrapperPackageName: 'devextreme-angular'
11+
wrapperPackageName: 'devextreme-angular',
12+
generateReexports: true,
1213
},
1314
componentGenerator: {
1415
importFrom: 'devextreme-angular-generator/dist/dot-generator',

packages/devextreme-angular/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@
3838
"core-js": "^2.6.12",
3939
"del": "^2.2.2",
4040
"devextreme": "23.1-next",
41-
"devextreme-angular-generator": "^1.0.0",
42-
"devextreme-internal-tools": "^9.4.2",
41+
"devextreme-angular-generator": "^2.0.0",
42+
"devextreme-internal-tools": "^10.0.0-beta.2",
4343
"gulp": "^4.0.2",
4444
"gulp-header": "^1.8.12",
4545
"gulp-replace": "^0.6.1",

0 commit comments

Comments
 (0)