Skip to content

Commit

Permalink
refactor(ui-devkit): Remove dedicated wrapper function
Browse files Browse the repository at this point in the history
Not needed - it over-complicates things.
  • Loading branch information
michaelbromley committed Sep 1, 2023
1 parent 1075dd7 commit 15d1ff2
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 94 deletions.
2 changes: 2 additions & 0 deletions packages/ui-devkit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@
"@rollup/plugin-node-resolve": "^15.2.1",
"@types/fs-extra": "^11.0.1",
"@vendure/core": "2.1.0-next.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"rimraf": "^3.0.2",
"rollup": "^3.28.1",
"rollup-plugin-terser": "^7.0.2",
Expand Down
1 change: 0 additions & 1 deletion packages/ui-devkit/src/compiler/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
export * from './compile';
export * from './helpers';
export * from './types';
export * from './wrappers';
57 changes: 23 additions & 34 deletions packages/ui-devkit/src/compiler/scaffold.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import {
Extension,
GlobalStylesExtension,
SassVariableOverridesExtension,
SharedUiProvidersExtension,
StaticAssetExtension,
} from './types';
import {
Expand All @@ -28,7 +27,6 @@ import {
isAdminUiExtension,
isGlobalStylesExtension,
isSassVariableOverridesExtension,
isSharedUiProvidersExtension,
isStaticAssetExtension,
isTranslationExtension,
logger,
Expand All @@ -39,10 +37,7 @@ import {
export async function setupScaffold(outputPath: string, extensions: Extension[]) {
deleteExistingExtensionModules(outputPath);

const adminUiExtensions = extensions.filter(
(e): e is AdminUiExtension | SharedUiProvidersExtension =>
isAdminUiExtension(e) || isSharedUiProvidersExtension(e),
);
const adminUiExtensions = extensions.filter((e): e is AdminUiExtension => isAdminUiExtension(e));
const normalizedExtensions = normalizeExtensions(adminUiExtensions);

const modulePathMapping = generateModulePathMapping(normalizedExtensions);
Expand Down Expand Up @@ -96,7 +91,6 @@ function generateModulePathMapping(extensions: AdminUiExtensionWithId[]) {
*/
async function copyExtensionModules(outputPath: string, extensions: AdminUiExtensionWithId[]) {
const adminUiExtensions = extensions.filter(isAdminUiExtension);
const sharedUiProvidersExtensions = extensions.filter(isSharedUiProvidersExtension);
const extensionRoutesSource = generateLazyExtensionRoutes(adminUiExtensions);
fs.writeFileSync(path.join(outputPath, EXTENSION_ROUTES_FILE), extensionRoutesSource, 'utf8');
const sharedExtensionModulesSource = generateSharedExtensionModule(extensions);
Expand All @@ -119,16 +113,6 @@ async function copyExtensionModules(outputPath: string, extensions: AdminUiExten
filter: name => name === extension.extensionPath || exclude.every(e => e !== name),
});
}
for (const extension of sharedUiProvidersExtensions) {
if (extension.sharedProviders) {
let i = 0;
for (const filePath of extension.sharedProviders) {
const dest = path.join(outputPath, MODULES_OUTPUT_DIR, `${extension.id}_${i}.ts`);
fs.copySync(filePath, dest);
i++;
}
}
}
}

async function copyStaticAssets(outputPath: string, extensions: Array<Partial<StaticAssetExtension>>) {
Expand Down Expand Up @@ -190,7 +174,7 @@ export async function copyGlobalStyleFile(outputPath: string, stylePath: string)
function generateLazyExtensionRoutes(extensions: AdminUiExtensionWithId[]): string {
const routes: string[] = [];
for (const extension of extensions) {
for (const module of extension.ngModules) {
for (const module of extension.ngModules ?? []) {
if (module.type === 'lazy') {
routes.push(` {
path: 'extensions/${module.route}',
Expand All @@ -200,33 +184,38 @@ function generateLazyExtensionRoutes(extensions: AdminUiExtensionWithId[]): stri
}`);
}
}
for (const route of extension.routes ?? []) {
routes.push(` {
path: 'extensions/${route.route}',
loadChildren: () => import('./extensions/${extension.id}/${path.basename(route.filePath, '.ts')}'),
}`);
}
}
return `export const extensionRoutes = [${routes.join(',\n')}];\n`;
}

function generateSharedExtensionModule(
extensions: Array<AdminUiExtensionWithId | SharedUiProvidersExtension>,
) {
const sharedProviderExtensions = extensions.filter((e): e is SharedUiProvidersExtension =>
e.hasOwnProperty('sharedProviders'),
);
const adminUiExtensions = extensions.filter((e): e is AdminUiExtensionWithId =>
e.hasOwnProperty('extensionPath'),
);
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')
?.filter(m => m.type === 'shared')
.map(m => `import { ${m.ngModuleName} } from '${getModuleFilePath(e.id, m)}';\n`)
.join(''),
)
.join('')}
${sharedProviderExtensions
${adminUiExtensions
.map((m, i) =>
m.sharedProviders
.map((f, j) => `import SharedProviders_${i}_${j} from './extensions/${m.id}_${i}';\n`)
(m.sharedProviders ?? [])
.map(
(f, j) =>
`import SharedProviders_${i}_${j} from './extensions/${m.id}/${path.basename(
f,
'.ts',
)}';\n`,
)
.join(''),
)
.join('')}
Expand All @@ -235,13 +224,13 @@ ${sharedProviderExtensions
imports: [CommonModule, ${adminUiExtensions
.map(e =>
e.ngModules
.filter(m => m.type === 'shared')
?.filter(m => m.type === 'shared')
.map(m => m.ngModuleName)
.join(', '),
)
.join(', ')}],
providers: [${sharedProviderExtensions
.map((m, i) => m.sharedProviders.map((f, j) => `...SharedProviders_${i}_${j}`))
providers: [${adminUiExtensions
.map((m, i) => (m.sharedProviders ?? []).map((f, j) => `...SharedProviders_${i}_${j}`))
.join(', ')}],
})
export class SharedExtensionsModule {}
Expand Down
35 changes: 17 additions & 18 deletions packages/ui-devkit/src/compiler/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ export type Extension =
| TranslationExtension
| StaticAssetExtension
| GlobalStylesExtension
| SassVariableOverridesExtension
| SharedUiProvidersExtension;
| SassVariableOverridesExtension;

/**
* @description
Expand Down Expand Up @@ -83,19 +82,6 @@ export interface SassVariableOverridesExtension {
sassVariableOverrides: string;
}

/**
* @description
* Defines an extension which contains only shared providers such as nav menu items, custom form inputs,
* custom detail components, action bar items, custom history entry components.
*
* @docsCategory UiDevkit
* @docsPage AdminUiExtension
*/
export interface SharedUiProvidersExtension {
id: string;
sharedProviders: string[];
}

/**
* @description
* Defines extensions to the Admin UI application by specifying additional
Expand All @@ -112,8 +98,7 @@ export interface SharedUiProvidersExtension {
export interface AdminUiExtension
extends Partial<TranslationExtension>,
Partial<StaticAssetExtension>,
Partial<GlobalStylesExtension>,
Partial<SharedUiProvidersExtension> {
Partial<GlobalStylesExtension> {
/**
* @description
* An optional ID for the extension module. Only used internally for generating
Expand All @@ -132,8 +117,22 @@ export interface AdminUiExtension
/**
* @description
* One or more Angular modules which extend the default Admin UI.
*
* @deprecated use `routes` instead of lazy modules, and `sharedProviders` instead of shared modules.
*/
ngModules: Array<AdminUiExtensionSharedModule | AdminUiExtensionLazyModule>;
ngModules?: Array<AdminUiExtensionSharedModule | AdminUiExtensionLazyModule>;

/**
* @description
* Defines an extension which contains only shared providers such as nav menu items, custom form inputs,
* custom detail components, action bar items, custom history entry components.
*/
sharedProviders?: string[];

routes?: Array<{
route: string;
filePath: string;
}>;

/**
* @description
Expand Down
11 changes: 1 addition & 10 deletions packages/ui-devkit/src/compiler/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import {
Extension,
GlobalStylesExtension,
SassVariableOverridesExtension,
SharedUiProvidersExtension,
StaticAssetDefinition,
StaticAssetExtension,
TranslationExtension,
Expand Down Expand Up @@ -80,9 +79,7 @@ export async function copyStaticAsset(outputPath: string, staticAssetDef: Static
* If not defined by the user, a deterministic ID is generated
* from a hash of the extension config.
*/
export function normalizeExtensions(
extensions?: Array<AdminUiExtension | SharedUiProvidersExtension>,
): AdminUiExtensionWithId[] {
export function normalizeExtensions(extensions?: AdminUiExtension[]): AdminUiExtensionWithId[] {
return (extensions || []).map(e => {
let id = e.id;
if (!id) {
Expand All @@ -95,8 +92,6 @@ export function normalizeExtensions(
staticAssets: [],
translations: {},
globalStyles: [],
extensionPath: '',
ngModules: [],
...e,
id,
};
Expand All @@ -107,10 +102,6 @@ export function isAdminUiExtension(input: Extension): input is AdminUiExtension
return input.hasOwnProperty('extensionPath');
}

export function isSharedUiProvidersExtension(input: Extension): input is SharedUiProvidersExtension {
return input.hasOwnProperty('sharedProviders');
}

export function isTranslationExtension(input: Extension): input is TranslationExtension {
return input.hasOwnProperty('translations');
}
Expand Down
31 changes: 0 additions & 31 deletions packages/ui-devkit/src/compiler/wrappers.ts

This file was deleted.

0 comments on commit 15d1ff2

Please sign in to comment.