diff --git a/package.json b/package.json index 4dba48b4..84ad0025 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "@typescript-eslint/parser": "^4.4.1", "cpy-cli": "^3.1.1", "del-cli": "^3.0.1", - "devextreme-internal-tools": "^7.3.0", + "devextreme-internal-tools": "^7.3.2", "eslint": "^7.11.0", "eslint-config-airbnb-base": "^14.2.0", "eslint-config-airbnb-typescript": "^12.3.1", diff --git a/packages/devextreme-react-generator/package.json b/packages/devextreme-react-generator/package.json index d1363fe5..8584f785 100644 --- a/packages/devextreme-react-generator/package.json +++ b/packages/devextreme-react-generator/package.json @@ -27,7 +27,7 @@ "license": "MIT", "dependencies": { "dasherize": "^2.0.0", - "devextreme-internal-tools": "^7.3.0", + "devextreme-internal-tools": "^7.3.2", "dot": "^1.1.2" }, "devDependencies": { diff --git a/packages/devextreme-react-generator/src/component-generator.test.ts b/packages/devextreme-react-generator/src/component-generator.test.ts index 21a0d031..4edb9e32 100644 --- a/packages/devextreme-react-generator/src/component-generator.test.ts +++ b/packages/devextreme-react-generator/src/component-generator.test.ts @@ -3,6 +3,10 @@ import generate from './component-generator'; it('generates', () => { // #region EXPECTED const EXPECTED = ` +export { + ReexportedMember, + OtherReexportedMember, +} from "DX/WIDGET/PATH"; import dxCLASS_NAME, { Properties } from "DX/WIDGET/PATH"; @@ -34,6 +38,7 @@ export { baseComponentPath: 'BASE_COMPONENT_PATH', extensionComponentPath: 'EXTENSION_COMPONENT_PATH', dxExportPath: 'DX/WIDGET/PATH', + reexports: ['ReexportedMember', 'OtherReexportedMember'], }), ).toBe(EXPECTED); }); @@ -41,6 +46,10 @@ export { it('generates extension component', () => { // #region EXPECTED const EXPECTED = ` +export { + ReexportedMember, + OtherReexportedMember, +} from "DX/WIDGET/PATH"; import dxCLASS_NAME, { Properties as ICLASS_NAMEOptions } from "DX/WIDGET/PATH"; @@ -70,6 +79,7 @@ export { extensionComponentPath: 'EXTENSION_COMPONENT_PATH', dxExportPath: 'DX/WIDGET/PATH', isExtension: true, + reexports: ['ReexportedMember', 'OtherReexportedMember', 'default'], }), ).toBe(EXPECTED); }); diff --git a/packages/devextreme-react-generator/src/component-generator.ts b/packages/devextreme-react-generator/src/component-generator.ts index a80b749d..ec2e5d64 100644 --- a/packages/devextreme-react-generator/src/component-generator.ts +++ b/packages/devextreme-react-generator/src/component-generator.ts @@ -19,6 +19,7 @@ type IComponent = { templates?: string[]; propTypings?: IPropTyping[]; optionsTypeParams?: string[]; + reexports?: string[]; } & { nestedComponents?: INestedComponent[]; configComponentPath?: string; @@ -173,8 +174,13 @@ const renderModule: (model: { renderedNestedComponents?: string[]; defaultExport: string; renderedExports: string; + reexports?: string[]; }) => string = createTempate( - '<#= it.renderedImports #>\n' + '<#? it.reexports?.length #>' + + 'export {\n <#= reexports.join(",\n ") #>,\n} from "<#= component.dxExportPath #>";\n' ++ '<#?#>' + ++ '<#= it.renderedImports #>\n' + '<#? it.renderedOptionsInterface #>' + '<#= it.renderedOptionsInterface #>\n\n' @@ -546,6 +552,9 @@ function generate(component: IComponent): string { .map((t) => renderPropTyping(createPropTypingModel(t))) : undefined; + const reexports = component.reexports + ?.filter((name) => name && name !== 'default'); + return renderModule({ renderedImports: renderImports({ @@ -595,6 +604,7 @@ function generate(component: IComponent): string { defaultExport: component.name, renderedExports: renderExports(exportNames), + reexports, }); } diff --git a/packages/devextreme-react-generator/src/generator.ts b/packages/devextreme-react-generator/src/generator.ts index 0bb7355b..bdfad689 100644 --- a/packages/devextreme-react-generator/src/generator.ts +++ b/packages/devextreme-react-generator/src/generator.ts @@ -229,6 +229,7 @@ export function mapWidget( expectedChildren: raw.nesteds, propTypings: propTypings.length > 0 ? propTypings : undefined, optionsTypeParams: raw.optionsTypeParams, + reexports: raw.reexports, }, }; }