From 3395c404dc9b35547ebcfb0882e449b3cf50bc53 Mon Sep 17 00:00:00 2001 From: Igggr Date: Wed, 13 Oct 2021 14:43:53 +0300 Subject: [PATCH 1/4] Add rendering reexports end 2 tests for it --- .../src/component-generator.test.ts | 10 ++++++++++ .../src/component-generator.ts | 17 ++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) 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..eab1dbae 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; + renderedReexports?: string; }) => string = createTempate( - '<#= it.renderedImports #>\n' + '<#? it.renderedReexports #>' + + '<#= it.renderedReexports #>' ++ '<#?#>' + ++ '<#= it.renderedImports #>\n' + '<#? it.renderedOptionsInterface #>' + '<#= it.renderedOptionsInterface #>\n\n' @@ -546,6 +552,14 @@ function generate(component: IComponent): string { .map((t) => renderPropTyping(createPropTypingModel(t))) : undefined; + const reexports = component.reexports + ?.filter((name) => name !== 'default') + ?.filter((name) => name); + + const renderedReexports = reexports?.length + ? `export {\n ${reexports.join(',\n ')},\n} from "${component.dxExportPath}";\n` + : undefined; + return renderModule({ renderedImports: renderImports({ @@ -595,6 +609,7 @@ function generate(component: IComponent): string { defaultExport: component.name, renderedExports: renderExports(exportNames), + renderedReexports, }); } From 70e0a6b5204655945a27e765e1bd8e1eddc26587 Mon Sep 17 00:00:00 2001 From: Igggr Date: Wed, 13 Oct 2021 17:48:49 +0300 Subject: [PATCH 2/4] Add reexport to generating files --- packages/devextreme-react-generator/src/generator.ts | 1 + 1 file changed, 1 insertion(+) 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, }, }; } From 6654a97c8a3a94bc7f10eb21c05b8d48612546fe Mon Sep 17 00:00:00 2001 From: Igggr Date: Thu, 21 Oct 2021 15:21:00 +0300 Subject: [PATCH 3/4] Requested changes --- .../src/component-generator.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/devextreme-react-generator/src/component-generator.ts b/packages/devextreme-react-generator/src/component-generator.ts index eab1dbae..ec2e5d64 100644 --- a/packages/devextreme-react-generator/src/component-generator.ts +++ b/packages/devextreme-react-generator/src/component-generator.ts @@ -174,10 +174,10 @@ const renderModule: (model: { renderedNestedComponents?: string[]; defaultExport: string; renderedExports: string; - renderedReexports?: string; + reexports?: string[]; }) => string = createTempate( - '<#? it.renderedReexports #>' - + '<#= it.renderedReexports #>' + '<#? it.reexports?.length #>' + + 'export {\n <#= reexports.join(",\n ") #>,\n} from "<#= component.dxExportPath #>";\n' + '<#?#>' + '<#= it.renderedImports #>\n' @@ -553,12 +553,7 @@ function generate(component: IComponent): string { : undefined; const reexports = component.reexports - ?.filter((name) => name !== 'default') - ?.filter((name) => name); - - const renderedReexports = reexports?.length - ? `export {\n ${reexports.join(',\n ')},\n} from "${component.dxExportPath}";\n` - : undefined; + ?.filter((name) => name && name !== 'default'); return renderModule({ @@ -609,7 +604,7 @@ function generate(component: IComponent): string { defaultExport: component.name, renderedExports: renderExports(exportNames), - renderedReexports, + reexports, }); } From a0cca38438de40d68a1ab0ce53fd1f65906723fe Mon Sep 17 00:00:00 2001 From: Igggr Date: Thu, 21 Oct 2021 15:21:44 +0300 Subject: [PATCH 4/4] Update tools-version --- package.json | 2 +- packages/devextreme-react-generator/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f41be76a..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.2.3", + "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 3eeb3123..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.2.2", + "devextreme-internal-tools": "^7.3.2", "dot": "^1.1.2" }, "devDependencies": {