Skip to content

Commit 428edb0

Browse files
committed
feat: improves initAsync pattern
1 parent 21708bc commit 428edb0

File tree

2 files changed

+30
-12
lines changed

2 files changed

+30
-12
lines changed

src/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import { Result as ResetPasswordResult } from './auth/operations/resetPassword';
4444
import { Result as LoginResult } from './auth/operations/login';
4545
import { Options as FindGlobalOptions } from './globals/operations/local/findOne';
4646
import { Options as UpdateGlobalOptions } from './globals/operations/local/update';
47-
import { init } from './init';
47+
import { initSync, initAsync } from './init';
4848

4949
require('isomorphic-fetch');
5050

@@ -122,11 +122,11 @@ export class Payload {
122122
* @param options
123123
*/
124124
init(options: InitOptions): void {
125-
init(this, options);
125+
initSync(this, options);
126126
}
127127

128128
async initAsync(options: InitOptions): Promise<void> {
129-
await init(this, options);
129+
await initAsync(this, options);
130130
}
131131

132132
getAdminURL = (): string => `${this.config.serverURL}${this.config.routes.admin}`;

src/init.ts

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ import { Payload } from '.';
3030
import loadConfig from './config/load';
3131
import Logger from './utilities/logger';
3232

33-
export const init = async (payload: Payload, options: InitOptions): Promise<void> => {
34-
payload.logger = Logger('payload', options.loggerOptions);
33+
export const init = (payload: Payload, options: InitOptions): void => {
3534
payload.logger.info('Starting Payload...');
3635
if (!options.secret) {
3736
throw new Error(
@@ -50,16 +49,10 @@ export const init = async (payload: Payload, options: InitOptions): Promise<void
5049
.digest('hex')
5150
.slice(0, 32);
5251

53-
payload.mongoURL = options.mongoURL;
5452
payload.local = options.local;
5553

5654
payload.config = loadConfig(payload.logger);
5755

58-
// Connect to database
59-
if (payload.mongoURL) {
60-
payload.mongoMemoryServer = await connectMongoose(payload.mongoURL, options.mongoOptions, payload.logger);
61-
}
62-
6356
// If not initializing locally, scaffold router
6457
if (!payload.local) {
6558
payload.router = express.Router();
@@ -117,8 +110,33 @@ export const init = async (payload: Payload, options: InitOptions): Promise<void
117110
payload.authenticate = authenticate(payload.config);
118111
}
119112

113+
serverInitTelemetry(payload);
114+
};
115+
116+
export const initAsync = async (payload: Payload, options: InitOptions): Promise<void> => {
117+
payload.logger = Logger('payload', options.loggerOptions);
118+
payload.mongoURL = options.mongoURL;
119+
120+
if (payload.mongoURL) {
121+
payload.mongoMemoryServer = await connectMongoose(payload.mongoURL, options.mongoOptions, payload.logger);
122+
}
123+
124+
init(payload, options);
125+
120126
if (typeof options.onInit === 'function') await options.onInit(payload);
121127
if (typeof payload.config.onInit === 'function') await payload.config.onInit(payload);
128+
};
122129

123-
serverInitTelemetry(payload);
130+
export const initSync = (payload: Payload, options: InitOptions): void => {
131+
payload.logger = Logger('payload', options.loggerOptions);
132+
payload.mongoURL = options.mongoURL;
133+
134+
if (payload.mongoURL) {
135+
connectMongoose(payload.mongoURL, options.mongoOptions, payload.logger);
136+
}
137+
138+
init(payload, options);
139+
140+
if (typeof options.onInit === 'function') options.onInit(payload);
141+
if (typeof payload.config.onInit === 'function') payload.config.onInit(payload);
124142
};

0 commit comments

Comments
 (0)