Skip to content
This repository has been archived by the owner on Jan 24, 2024. It is now read-only.

Commit

Permalink
feat(dev-experience): Ease app module creation and external app impor…
Browse files Browse the repository at this point in the history
…ts (#268)
  • Loading branch information
JForsaken committed Apr 26, 2022
1 parent afc2dd8 commit bf6d8b4
Show file tree
Hide file tree
Showing 21 changed files with 55 additions and 54 deletions.
4 changes: 2 additions & 2 deletions cli/commands/codegen-app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ async function generateModule(appId: string, importStatement: string, providers:
const generatedContent = dedent`
import { Module } from '@nestjs/common';
import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';
import { ${appTitleCase}ContractFactory } from './contracts';
import { ${appTitleCase}AppDefinition } from './${appId}.definition';
Expand All @@ -101,7 +101,7 @@ ${importStatement}
${appTitleCase}ContractFactory,${providers}
],
})
export class ${appTitleCase}AppModule extends AbstractDynamicApp<${appTitleCase}AppModule>() {}
export class ${appTitleCase}AppModule extends AbstractApp() {}
`;

Expand Down
8 changes: 6 additions & 2 deletions src/app/app.dynamic-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ const DYNAMIC_PROVIDERS = [
},
];

export const AbstractDynamicApp = <T>() =>
createConfigurableDynamicRootModule<T, AppModuleOptions>(APP_OPTIONS, {
export const AbstractApp = () =>
createConfigurableDynamicRootModule<Type, AppModuleOptions>(APP_OPTIONS, {
providers: DYNAMIC_PROVIDERS,
});

Expand All @@ -39,3 +39,7 @@ export const DynamicApps = ({
}),
}),
);

export const ExternalAppImport = <T extends IConfigurableDynamicRootModule<Type, AppModuleOptions>>(
...appModules: T[]
) => appModules.map(appModule => appModule.externallyConfigured(appModule, 0));
6 changes: 3 additions & 3 deletions src/apps/abracadabra/abracadabra.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { OlympusAppModule } from '~apps/olympus';

import { AbracadabraAppDefinition } from './abracadabra.definition';
Expand All @@ -25,7 +25,7 @@ import { AbracadabraCauldronBalanceHelper } from './helpers/abracadabra.cauldron
import { AbracadabraCauldronContractPositionHelper } from './helpers/abracadabra.cauldron.contract-position-helper';

@Module({
imports: [OlympusAppModule.externallyConfigured(OlympusAppModule, 0)],
imports: ExternalAppImport(OlympusAppModule),
providers: [
AbracadabraAppDefinition,
AbracadabraContractFactory,
Expand Down Expand Up @@ -54,4 +54,4 @@ import { AbracadabraCauldronContractPositionHelper } from './helpers/abracadabra
AbracadabraCauldronContractPositionHelper,
],
})
export class AbracadabraAppModule extends AbstractDynamicApp<AbracadabraAppModule>() {}
export class AbracadabraAppModule extends AbstractApp() {}
6 changes: 3 additions & 3 deletions src/apps/aelin/aelin.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { SynthetixAppModule } from '~apps/synthetix/synthetix.module';

import { AelinAppDefinition } from './aelin.definition';
Expand All @@ -13,7 +13,7 @@ import { OptimismAelinPoolTokenFetcher } from './optimism/aelin.pool.token-fetch
import { OptimismAelinVAelinTokenFetcher } from './optimism/aelin.v-aelin.token-fetcher';

@Module({
imports: [SynthetixAppModule.externallyConfigured(SynthetixAppModule, 0)],
imports: ExternalAppImport(SynthetixAppModule),
providers: [
AelinAppDefinition,
AelinContractFactory,
Expand All @@ -27,4 +27,4 @@ import { OptimismAelinVAelinTokenFetcher } from './optimism/aelin.v-aelin.token-
OptimismAelinFarmContractPositionFetcher,
],
})
export class AelinAppModule extends AbstractDynamicApp<AelinAppModule>() {}
export class AelinAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/airswap/airswap.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { AirswapAppDefinition } from './airswap.definition';
import { AirswapContractFactory } from './contracts';
Expand All @@ -15,4 +15,4 @@ import { EthereumAirswapSAstTokenFetcher } from './ethereum/airswap.s-ast.token-
EthereumAirswapSAstTokenFetcher,
],
})
export class AirswapAppModule extends AbstractDynamicApp<AirswapAppModule>() {}
export class AirswapAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/curve/curve.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { ArbitrumCurveBalanceFetcher } from './arbitrum/curve.balance-fetcher';
import { ArbitrumCurveFarmContractPositionFetcher } from './arbitrum/curve.farm.contract-position-fetcher';
Expand Down Expand Up @@ -148,4 +148,4 @@ import { PolygonCurvePoolTokenFetcher } from './polygon/curve.pool.token-fetcher
CurveVestingEscrowContractPositionBalanceHelper,
],
})
export class CurveAppModule extends AbstractDynamicApp<CurveAppModule>() {}
export class CurveAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/enzyme-finance/enzyme-finance.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { EnzymeFinanceContractFactory } from './contracts';
import { EnzymeFinanceAppDefinition } from './enzyme-finance.definition';
Expand All @@ -15,4 +15,4 @@ import { EthereumEnzymeFinanceVaultTokenFetcher } from './ethereum/enzyme-financ
EthereumEnzymeFinanceVaultTokenFetcher,
],
})
export class EnzymeFinanceAppModule extends AbstractDynamicApp<EnzymeFinanceAppModule>() {}
export class EnzymeFinanceAppModule extends AbstractApp() {}
6 changes: 3 additions & 3 deletions src/apps/jpegd/jpegd.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { OlympusAppModule } from '~apps/olympus';

import { JpegdContractFactory } from './contracts';
Expand All @@ -10,7 +10,7 @@ import { EthereumJpegdPoolContractPositionFetcher } from './ethereum/jpegd.pool.
import { JpegdAppDefinition } from './jpegd.definition';

@Module({
imports: [OlympusAppModule.externallyConfigured(OlympusAppModule, 0)],
imports: ExternalAppImport(OlympusAppModule),
providers: [
JpegdAppDefinition,
JpegdContractFactory,
Expand All @@ -19,4 +19,4 @@ import { JpegdAppDefinition } from './jpegd.definition';
EthereumJpegdBondContractPositionFetcher,
],
})
export class JpegdAppModule extends AbstractDynamicApp<JpegdAppModule>() {}
export class JpegdAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/liquity/liquity.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { LiquityContractFactory } from './contracts';
import { EthereumLiquityBalanceFetcher } from './ethereum/liquity.balance-fetcher';
Expand All @@ -20,4 +20,4 @@ import { LiquityAppDefinition } from './liquity.definition';
],
exports: [LiquityContractFactory, LiquityTroveBalanceHelper, LiquityStabilityPoolBalanceHelper],
})
export class LiquityAppModule extends AbstractDynamicApp<LiquityAppModule>() {}
export class LiquityAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/naos/naos.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { NaosContractFactory } from './contracts';
import { EthereumNaosBalanceFetcher } from './ethereum/naos.balance-fetcher';
Expand All @@ -16,4 +16,4 @@ import { NaosAppDefinition } from './naos.definition';
],
exports: [NaosContractFactory],
})
export class NaosAppModule extends AbstractDynamicApp<NaosAppModule>() {}
export class NaosAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/olympus/olympus.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { ArbitrumOlympusBalanceFetcher } from './arbitrum/olympus.balance-fetcher';
import { ArbitrumOlympusGOhmTokenFetcher } from './arbitrum/olympus.g-ohm.token-fetcher';
Expand Down Expand Up @@ -65,4 +65,4 @@ import { PolygonOlympusGOhmTokenFetcher } from './polygon/olympus.g-ohm.token-fe
OlympusBridgeTokenHelper,
],
})
export class OlympusAppModule extends AbstractDynamicApp<OlympusAppModule>() {}
export class OlympusAppModule extends AbstractApp() {}
10 changes: 3 additions & 7 deletions src/apps/pickle/pickle.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { CurveAppModule } from '~apps/curve';
import { SynthetixAppModule } from '~apps/synthetix';
import { YearnAppModule } from '~apps/yearn/yearn.module';
Expand All @@ -22,11 +22,7 @@ import { PolygonPickleFarmContractPositionFetcher } from './polygon/pickle.farm.
import { PolygonPickleJarTokenFetcher } from './polygon/pickle.jar.token-fetcher';

@Module({
imports: [
SynthetixAppModule.externallyConfigured(SynthetixAppModule, 0),
CurveAppModule.externallyConfigured(CurveAppModule, 0),
YearnAppModule.externallyConfigured(YearnAppModule, 0),
],
imports: ExternalAppImport(SynthetixAppModule, CurveAppModule, YearnAppModule),
providers: [
PickleAppDefinition,
PickleApiJarRegistry,
Expand All @@ -48,4 +44,4 @@ import { PolygonPickleJarTokenFetcher } from './polygon/pickle.jar.token-fetcher
PolygonPickleBalanceFetcher,
],
})
export class PickleAppModule extends AbstractDynamicApp<PickleAppModule>() {}
export class PickleAppModule extends AbstractApp() {}
6 changes: 3 additions & 3 deletions src/apps/pie-dao/pie-dao.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { SynthetixAppModule } from '~apps/synthetix';

import { PieDaoContractFactory } from './contracts';
Expand All @@ -11,7 +11,7 @@ import { EthereumPieDaoFarmSingleStakingContractPositionFetcher } from './ethere
import { PieDaoAppDefinition } from './pie-dao.definition';

@Module({
imports: [SynthetixAppModule.externallyConfigured(SynthetixAppModule, 0)],
imports: ExternalAppImport(SynthetixAppModule),
providers: [
PieDaoAppDefinition,
PieDaoContractFactory,
Expand All @@ -22,4 +22,4 @@ import { PieDaoAppDefinition } from './pie-dao.definition';
EthereumPieDaoFarmMasterChefContractPositionFetcher,
],
})
export class PieDaoAppModule extends AbstractDynamicApp<PieDaoAppModule>() {}
export class PieDaoAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/synthetix/synthetix.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { SynthetixContractFactory } from './contracts';
import { EthereumSynthetixBalanceFetcher } from './ethereum/synthetix.balance-fetcher';
Expand Down Expand Up @@ -52,4 +52,4 @@ import { SynthetixAppDefinition } from './synthetix.definition';
SynthetixSingleStakingFarmContractPositionBalanceHelper,
],
})
export class SynthetixAppModule extends AbstractDynamicApp<SynthetixAppModule>() {}
export class SynthetixAppModule extends AbstractApp() {}
6 changes: 3 additions & 3 deletions src/apps/teddy-cash/teddy-cash.module.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { LiquityAppModule } from '~apps/liquity/liquity.module';

import { AvalancheTeddyCashBalanceFetcher } from './avalanche/teddy-cash.balance-fetcher';
import { AvalancheTeddyCashFarmContractPositionFetcher } from './avalanche/teddy-cash.farm.contract-position-fetcher';
import { TeddyCashAppDefinition } from './teddy-cash.definition';

@Module({
imports: [LiquityAppModule.externallyConfigured(LiquityAppModule, 0)],
imports: ExternalAppImport(LiquityAppModule),
providers: [TeddyCashAppDefinition, AvalancheTeddyCashBalanceFetcher, AvalancheTeddyCashFarmContractPositionFetcher],
})
export class TeddyCashAppModule extends AbstractDynamicApp<TeddyCashAppModule>() {}
export class TeddyCashAppModule extends AbstractApp() {}
6 changes: 3 additions & 3 deletions src/apps/tokemak/tokemak.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { SynthetixAppModule } from '~apps/synthetix';

import { TokemakContractFactory } from './contracts';
Expand All @@ -11,7 +11,7 @@ import { EthereumTokemakTvlFetcher } from './ethereum/tokemak.tvl-fetcher';
import { TokemakAppDefinition } from './tokemak.definition';

@Module({
imports: [SynthetixAppModule.externallyConfigured(SynthetixAppModule, 0)],
imports: ExternalAppImport(SynthetixAppModule),
providers: [
TokemakAppDefinition,
TokemakContractFactory,
Expand All @@ -21,4 +21,4 @@ import { TokemakAppDefinition } from './tokemak.definition';
EthereumTokemakTvlFetcher,
],
})
export class TokemakAppModule extends AbstractDynamicApp<TokemakAppModule>() {}
export class TokemakAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/unagii/unagii.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { UnagiiContractFactory } from './contracts';
import { EthereumUnagiiBalanceFetcher } from './ethereum/unagii.balance-fetcher';
Expand All @@ -10,4 +10,4 @@ import { UnagiiAppDefinition } from './unagii.definition';
@Module({
providers: [UnagiiAppDefinition, UnagiiContractFactory, EthereumUnagiiPoolTokenFetcher, EthereumUnagiiBalanceFetcher],
})
export class UnagiiAppModule extends AbstractDynamicApp<UnagiiAppModule>() {}
export class UnagiiAppModule extends AbstractApp() {}
4 changes: 2 additions & 2 deletions src/apps/uniswap-v2/uniswap-v2.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp } from '~app/app.dynamic-module';

import { UniswapV2ContractFactory } from './contracts';
import { EthereumUniswapV2BalanceFetcher } from './ethereum/uniswap-v2.balance-fetcher';
Expand Down Expand Up @@ -34,4 +34,4 @@ import { UniswapV2AppDefinition } from './uniswap-v2.definition';
UniswapV2TheGraphPoolTokenBalanceHelper,
],
})
export class UniswapV2AppModule extends AbstractDynamicApp<UniswapV2AppModule>() {}
export class UniswapV2AppModule extends AbstractApp() {}
6 changes: 3 additions & 3 deletions src/apps/wban/wban.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { UniswapV2AppModule } from '~apps/uniswap-v2/uniswap-v2.module';

import { BinanceSmartChainWbanBalanceFetcher } from './binance-smart-chain/wban.balance-fetcher';
Expand All @@ -15,7 +15,7 @@ import { PolygonWbanFarmContractPositionFetcher } from './polygon/wban.farm.cont
import { WbanAppDefinition } from './wban.definition';

@Module({
imports: [UniswapV2AppModule.externallyConfigured(UniswapV2AppModule, 0)],
imports: ExternalAppImport(UniswapV2AppModule),
providers: [
WbanAppDefinition,
WbanContractFactory,
Expand All @@ -32,4 +32,4 @@ import { WbanAppDefinition } from './wban.definition';
FantomWbanFarmContractPositionFetcher,
],
})
export class WbanAppModule extends AbstractDynamicApp<WbanAppModule>() {}
export class WbanAppModule extends AbstractApp() {}
6 changes: 3 additions & 3 deletions src/apps/yearn/yearn.module.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Module } from '@nestjs/common';

import { AbstractDynamicApp } from '~app/app.dynamic-module';
import { AbstractApp, ExternalAppImport } from '~app/app.dynamic-module';
import { SynthetixAppModule } from '~apps/synthetix';

import { ArbitrumYearnBalanceFetcher } from './arbitrum/yearn.balance-fetcher';
Expand All @@ -18,7 +18,7 @@ import { YearnVaultTokenHelper } from './helpers/yearn.vault.token-helper';
import { YearnAppDefinition } from './yearn.definition';

@Module({
imports: [SynthetixAppModule.externallyConfigured(SynthetixAppModule, 0)],
imports: ExternalAppImport(SynthetixAppModule),
providers: [
YearnAppDefinition,
YearnContractFactory,
Expand All @@ -36,4 +36,4 @@ import { YearnAppDefinition } from './yearn.definition';
],
exports: [YearnLikeVaultTokenHelper, YearnContractFactory],
})
export class YearnAppModule extends AbstractDynamicApp<YearnAppModule>() {}
export class YearnAppModule extends AbstractApp() {}
3 changes: 2 additions & 1 deletion src/lib/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
export { AppToolkitHelperRegistry, AppToolkitHelpers } from '~app-toolkit/app-toolkit.helpers';
export { AppsModule } from '~apps/apps.module';
export { ExternalAppImport } from '~app/app.dynamic-module';
export { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface';
export { AppToolkitHelperRegistry, AppToolkitHelpers } from '~app-toolkit/app-toolkit.helpers';

0 comments on commit bf6d8b4

Please sign in to comment.