Преглед изворни кода

fix(ui-devkit): Fix scaffold logic for custom providers

Michael Bromley пре 2 година
родитељ
комит
2f2ddb52a7
1 измењених фајлова са 37 додато и 30 уклоњено
  1. 37 30
      packages/ui-devkit/src/compiler/scaffold.ts

+ 37 - 30
packages/ui-devkit/src/compiler/scaffold.ts

@@ -194,32 +194,30 @@ function generateLazyExtensionRoutes(extensions: AdminUiExtensionWithId[]): stri
 
 function generateSharedExtensionModule(extensions: AdminUiExtensionWithId[]) {
     const adminUiExtensions = extensions.filter(isAdminUiExtension);
-    return `import { NgModule } from '@angular/core';
-import { CommonModule } from '@angular/common';
-${adminUiExtensions
-    .map(e =>
-        e.ngModules
-            ?.filter(m => m.type === 'shared')
-            .map(m => `import { ${m.ngModuleName} } from '${getModuleFilePath(e.id, m)}';\n`)
-            .join(''),
-    )
-    .join('')}
-${adminUiExtensions
-    .map((m, i) =>
-        (m.providers ?? [])
-            .map(
-                (f, j) =>
-                    `import SharedProviders_${i}_${j} from './extensions/${m.id}/${path.basename(
-                        f,
-                        '.ts',
-                    )}';\n`,
-            )
-            .join(''),
-    )
-    .join('')}
-
-@NgModule({
-    imports: [CommonModule, ${adminUiExtensions
+    const moduleImports = adminUiExtensions
+        .map(e =>
+            e.ngModules
+                ?.filter(m => m.type === 'shared')
+                .map(m => `import { ${m.ngModuleName} } from '${getModuleFilePath(e.id, m)}';\n`)
+                .join(''),
+        )
+        .filter(val => !!val)
+        .join('');
+    const providerImports = adminUiExtensions
+        .map((m, i) =>
+            (m.providers ?? [])
+                .map(
+                    (f, j) =>
+                        `import SharedProviders_${i}_${j} from './extensions/${m.id}/${path.basename(
+                            f,
+                            '.ts',
+                        )}';\n`,
+                )
+                .join(''),
+        )
+        .filter(val => !!val)
+        .join('');
+    const modules = adminUiExtensions
         .map(e =>
             e.ngModules
                 ?.filter(m => m.type === 'shared')
@@ -227,11 +225,20 @@ ${adminUiExtensions
                 .join(', '),
         )
         .filter(val => !!val)
-        .join(', ')}],
-    providers: [${adminUiExtensions
+        .join(', ');
+    const providers = adminUiExtensions
         .filter(notNullOrUndefined)
-        .map((m, i) => (m.providers ?? []).map((f, j) => `...SharedProviders_${i}_${j}`))
-        .join(', ')}],
+        .map((m, i) => (m.providers ?? []).map((f, j) => `...SharedProviders_${i}_${j}`).join(', '))
+        .filter(val => !!val)
+        .join(', ');
+    return `import { NgModule } from '@angular/core';
+import { CommonModule } from '@angular/common';
+${moduleImports}
+${providerImports}
+
+@NgModule({
+    imports: [CommonModule, ${modules}],
+    providers: [${providers}],
 })
 export class SharedExtensionsModule {}
 `;