@@ -7,24 +7,35 @@ import { Logger } from './logger';
77import { PackageManager , Package } from './package-manager' ;
88import ConfigurationManager from './configuration-manager' ;
99import { join } from 'path' ;
10+ import ModuleManager from './module-manager' ;
11+ import { IMiddleware } from './middleware/middleware' ;
12+ import { createMiddleware } from './middleware/midlleware-factory' ;
1013
1114const PACKAGE_FILE_NAME = 'package.json' ;
1215
1316export default class SecureNative {
1417 private apiManager : ApiManager ;
15- private static instance = null ;
18+ public middleware : IMiddleware ;
19+ private static instance : SecureNative ;
1620
17- private constructor ( eventManager : EventManager , options : SecureNativeOptions ) {
18- if ( ! eventManager || ! options ) {
21+ private constructor ( eventManager : EventManager , moduleManager : ModuleManager , private options : SecureNativeOptions ) {
22+ if ( ! eventManager || ! moduleManager || ! options ) {
1923 throw new Error ( 'Unable to create SecureNative instance, invalid config provided' ) ;
2024 }
25+
26+ if ( ! options . disable ) {
27+ // create middleware
28+ this . middleware = createMiddleware ( moduleManager , options ) ;
29+ this . middleware . verifyWebhook = this . middleware . verifyWebhook . bind ( this . middleware ) ;
30+ }
31+
2132 this . apiManager = new ApiManager ( eventManager , options ) ;
2233 }
2334
2435 public static init ( options : SecureNativeOptions ) {
2536 const defaultOptions = ConfigurationManager . getConfig ( ) ;
2637 const config : SecureNativeOptions = { ...options , ...defaultOptions } ;
27-
38+
2839 const eventManager = new EventManager ( fetch , config ) ;
2940 SecureNative . initialize ( eventManager , config ) ;
3041 }
@@ -33,18 +44,23 @@ export default class SecureNative {
3344 if ( SecureNative . instance ) {
3445 throw new Error ( 'This SDK was already initialized' ) ;
3546 }
36-
47+
3748 const appPkg : Package = PackageManager . getPackage ( join ( process . cwd ( ) , PACKAGE_FILE_NAME ) ) ;
3849 // set default app name
3950 if ( ! options . appName ) {
4051 ConfigurationManager . setConfigKey ( 'appName' , appPkg . name ) ;
4152 }
4253
54+ // create moduleManager
55+ const moduleManager = new ModuleManager ( appPkg ) ;
56+
4357 // init logger
4458 Logger . initLogger ( options ) ;
4559 Logger . debug ( 'Loaded Configurations' , JSON . stringify ( options ) ) ;
4660
47- SecureNative . instance = new SecureNative ( eventManager , options ) ;
61+ const secureNative = new SecureNative ( eventManager , moduleManager , options ) ;
62+
63+ SecureNative . instance = secureNative ;
4864 }
4965
5066 public static getInstance ( ) : SecureNative {
0 commit comments