@nauth-toolkit/nestjs 0.1.60 → 0.1.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.module.d.ts.map +1 -1
- package/dist/auth.module.js +51 -54
- package/dist/auth.module.js.map +1 -1
- package/dist/decorators/hook.decorator.d.ts +247 -1
- package/dist/decorators/hook.decorator.d.ts.map +1 -1
- package/dist/decorators/hook.decorator.js +302 -0
- package/dist/decorators/hook.decorator.js.map +1 -1
- package/dist/hooks/hooks.module.d.ts +7 -7
- package/dist/hooks/hooks.module.d.ts.map +1 -1
- package/dist/hooks/hooks.module.js +29 -5
- package/dist/hooks/hooks.module.js.map +1 -1
- package/dist/pipes/nauth-validation.pipe.d.ts.map +1 -1
- package/dist/pipes/nauth-validation.pipe.js +61 -0
- package/dist/pipes/nauth-validation.pipe.js.map +1 -1
- package/dist/services/migrations-bootstrap.service.d.ts.map +1 -1
- package/dist/services/migrations-bootstrap.service.js +0 -6
- package/dist/services/migrations-bootstrap.service.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/hook.decorator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"hook.decorator.d.ts","sourceRoot":"","sources":["../../src/decorators/hook.decorator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,WAAW,GACX,YAAY,GACZ,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,GAClB,yBAAyB,GACzB,sBAAsB,GACtB,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMhF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMjF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMzF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAM9F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAM3F;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMnF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMpF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,CAMtF"}
|
|
@@ -29,6 +29,14 @@ exports.HOOK_METADATA_KEY = void 0;
|
|
|
29
29
|
exports.PreSignupHook = PreSignupHook;
|
|
30
30
|
exports.PostSignupHook = PostSignupHook;
|
|
31
31
|
exports.UserProfileUpdatedHook = UserProfileUpdatedHook;
|
|
32
|
+
exports.PasswordChangedHook = PasswordChangedHook;
|
|
33
|
+
exports.MFADeviceRemovedHook = MFADeviceRemovedHook;
|
|
34
|
+
exports.AdaptiveMFARiskDetectedHook = AdaptiveMFARiskDetectedHook;
|
|
35
|
+
exports.AccountStatusChangedHook = AccountStatusChangedHook;
|
|
36
|
+
exports.EmailChangedHook = EmailChangedHook;
|
|
37
|
+
exports.AccountLockedHook = AccountLockedHook;
|
|
38
|
+
exports.SessionsRevokedHook = SessionsRevokedHook;
|
|
39
|
+
exports.MFAFirstEnabledHook = MFAFirstEnabledHook;
|
|
32
40
|
const common_1 = require("@nestjs/common");
|
|
33
41
|
exports.HOOK_METADATA_KEY = 'nauth:hook';
|
|
34
42
|
/**
|
|
@@ -130,4 +138,298 @@ function UserProfileUpdatedHook(options = {}) {
|
|
|
130
138
|
};
|
|
131
139
|
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
132
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Marks a provider as a password changed hook
|
|
143
|
+
*
|
|
144
|
+
* Password changed hooks are executed after a password is successfully changed, allowing you to:
|
|
145
|
+
* - Send security notification emails
|
|
146
|
+
* - Log password change events
|
|
147
|
+
* - Revoke active sessions
|
|
148
|
+
* - Trigger security audits
|
|
149
|
+
*
|
|
150
|
+
* These hooks cannot block password changes (password is already updated) but errors are logged.
|
|
151
|
+
*
|
|
152
|
+
* @param options - Hook configuration options
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* @Injectable()
|
|
157
|
+
* @PasswordChangedHook({ priority: 1 })
|
|
158
|
+
* export class PasswordChangedNotificationHook implements IPasswordChangedHook {
|
|
159
|
+
* constructor(private readonly emailService: EmailService) {}
|
|
160
|
+
*
|
|
161
|
+
* async execute(metadata: PasswordChangedMetadata) {
|
|
162
|
+
* await this.emailService.sendPasswordChangedAlert({
|
|
163
|
+
* to: metadata.user.email,
|
|
164
|
+
* changedBy: metadata.changedBy,
|
|
165
|
+
* });
|
|
166
|
+
* }
|
|
167
|
+
* }
|
|
168
|
+
* ```
|
|
169
|
+
*/
|
|
170
|
+
function PasswordChangedHook(options = {}) {
|
|
171
|
+
const metadata = {
|
|
172
|
+
type: 'passwordChanged',
|
|
173
|
+
priority: options.priority ?? 100,
|
|
174
|
+
};
|
|
175
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Marks a provider as an MFA device removed hook
|
|
179
|
+
*
|
|
180
|
+
* MFA device removed hooks are executed after an MFA device is removed, allowing you to:
|
|
181
|
+
* - Send security notification emails
|
|
182
|
+
* - Log device removal events
|
|
183
|
+
* - Alert if user has no remaining MFA devices
|
|
184
|
+
* - Trigger security audits
|
|
185
|
+
*
|
|
186
|
+
* These hooks cannot block device removal (device is already removed) but errors are logged.
|
|
187
|
+
*
|
|
188
|
+
* @param options - Hook configuration options
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* @Injectable()
|
|
193
|
+
* @MFADeviceRemovedHook({ priority: 1 })
|
|
194
|
+
* export class MFADeviceRemovedNotificationHook implements IMFADeviceRemovedHook {
|
|
195
|
+
* constructor(private readonly emailService: EmailService) {}
|
|
196
|
+
*
|
|
197
|
+
* async execute(metadata: MFADeviceRemovedMetadata) {
|
|
198
|
+
* await this.emailService.sendMFADeviceRemovedAlert({
|
|
199
|
+
* to: metadata.user.email,
|
|
200
|
+
* deviceType: metadata.deviceType,
|
|
201
|
+
* remainingDevices: metadata.remainingDeviceCount,
|
|
202
|
+
* });
|
|
203
|
+
* }
|
|
204
|
+
* }
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
function MFADeviceRemovedHook(options = {}) {
|
|
208
|
+
const metadata = {
|
|
209
|
+
type: 'mfaDeviceRemoved',
|
|
210
|
+
priority: options.priority ?? 100,
|
|
211
|
+
};
|
|
212
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Marks a provider as an adaptive MFA risk detected hook
|
|
216
|
+
*
|
|
217
|
+
* Adaptive MFA risk detected hooks are executed when high-risk signin activity is detected, allowing you to:
|
|
218
|
+
* - Send risk alert emails to users
|
|
219
|
+
* - Notify security teams
|
|
220
|
+
* - Log suspicious activity
|
|
221
|
+
* - Trigger additional security checks
|
|
222
|
+
*
|
|
223
|
+
* These hooks cannot block authentication (risk decision is already made) but errors are logged.
|
|
224
|
+
*
|
|
225
|
+
* @param options - Hook configuration options
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```typescript
|
|
229
|
+
* @Injectable()
|
|
230
|
+
* @AdaptiveMFARiskDetectedHook({ priority: 1 })
|
|
231
|
+
* export class RiskAlertHook implements IAdaptiveMFARiskDetectedHook {
|
|
232
|
+
* constructor(private readonly emailService: EmailService) {}
|
|
233
|
+
*
|
|
234
|
+
* async execute(metadata: AdaptiveMFARiskDetectedMetadata) {
|
|
235
|
+
* await this.emailService.sendRiskAlert({
|
|
236
|
+
* to: metadata.user.email,
|
|
237
|
+
* riskLevel: metadata.riskLevel,
|
|
238
|
+
* riskFactors: metadata.riskFactors,
|
|
239
|
+
* });
|
|
240
|
+
* }
|
|
241
|
+
* }
|
|
242
|
+
* ```
|
|
243
|
+
*/
|
|
244
|
+
function AdaptiveMFARiskDetectedHook(options = {}) {
|
|
245
|
+
const metadata = {
|
|
246
|
+
type: 'adaptiveMfaRiskDetected',
|
|
247
|
+
priority: options.priority ?? 100,
|
|
248
|
+
};
|
|
249
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Marks a provider as an account status changed hook
|
|
253
|
+
*
|
|
254
|
+
* Account status changed hooks are executed after an account is enabled or disabled, allowing you to:
|
|
255
|
+
* - Send account status notification emails
|
|
256
|
+
* - Log account status changes
|
|
257
|
+
* - Sync status to external systems
|
|
258
|
+
* - Trigger compliance workflows
|
|
259
|
+
*
|
|
260
|
+
* These hooks cannot block status changes (status is already updated) but errors are logged.
|
|
261
|
+
*
|
|
262
|
+
* @param options - Hook configuration options
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```typescript
|
|
266
|
+
* @Injectable()
|
|
267
|
+
* @AccountStatusChangedHook({ priority: 1 })
|
|
268
|
+
* export class AccountStatusNotificationHook implements IAccountStatusChangedHook {
|
|
269
|
+
* constructor(private readonly emailService: EmailService) {}
|
|
270
|
+
*
|
|
271
|
+
* async execute(metadata: AccountStatusChangedMetadata) {
|
|
272
|
+
* if (metadata.status === 'disabled') {
|
|
273
|
+
* await this.emailService.sendAccountDisabledAlert({
|
|
274
|
+
* to: metadata.user.email,
|
|
275
|
+
* reason: metadata.reason,
|
|
276
|
+
* });
|
|
277
|
+
* }
|
|
278
|
+
* }
|
|
279
|
+
* }
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
function AccountStatusChangedHook(options = {}) {
|
|
283
|
+
const metadata = {
|
|
284
|
+
type: 'accountStatusChanged',
|
|
285
|
+
priority: options.priority ?? 100,
|
|
286
|
+
};
|
|
287
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Marks a provider as an email changed hook
|
|
291
|
+
*
|
|
292
|
+
* Email changed hooks are executed after a user's email address is changed, allowing you to:
|
|
293
|
+
* - Send notification to both old and new email addresses
|
|
294
|
+
* - Log email change events
|
|
295
|
+
* - Sync to external systems
|
|
296
|
+
* - Trigger security audits
|
|
297
|
+
*
|
|
298
|
+
* These hooks cannot block email changes (email is already updated) but errors are logged.
|
|
299
|
+
*
|
|
300
|
+
* @param options - Hook configuration options
|
|
301
|
+
*
|
|
302
|
+
* @example
|
|
303
|
+
* ```typescript
|
|
304
|
+
* @Injectable()
|
|
305
|
+
* @EmailChangedHook({ priority: 1 })
|
|
306
|
+
* export class EmailChangedNotificationHook implements IEmailChangedHook {
|
|
307
|
+
* constructor(private readonly emailService: EmailService) {}
|
|
308
|
+
*
|
|
309
|
+
* async execute(metadata: EmailChangedMetadata) {
|
|
310
|
+
* await this.emailService.sendEmailChangedAlert({
|
|
311
|
+
* oldEmail: metadata.oldEmail,
|
|
312
|
+
* newEmail: metadata.newEmail,
|
|
313
|
+
* });
|
|
314
|
+
* }
|
|
315
|
+
* }
|
|
316
|
+
* ```
|
|
317
|
+
*/
|
|
318
|
+
function EmailChangedHook(options = {}) {
|
|
319
|
+
const metadata = {
|
|
320
|
+
type: 'emailChanged',
|
|
321
|
+
priority: options.priority ?? 100,
|
|
322
|
+
};
|
|
323
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
324
|
+
}
|
|
325
|
+
/**
|
|
326
|
+
* Marks a provider as an account locked hook
|
|
327
|
+
*
|
|
328
|
+
* Account locked hooks are executed after an account is locked due to failed login attempts, allowing you to:
|
|
329
|
+
* - Send lockout notification emails
|
|
330
|
+
* - Log lockout events
|
|
331
|
+
* - Trigger security alerts
|
|
332
|
+
* - Provide unlock instructions
|
|
333
|
+
*
|
|
334
|
+
* These hooks cannot block lockouts (account is already locked) but errors are logged.
|
|
335
|
+
*
|
|
336
|
+
* @param options - Hook configuration options
|
|
337
|
+
*
|
|
338
|
+
* @example
|
|
339
|
+
* ```typescript
|
|
340
|
+
* @Injectable()
|
|
341
|
+
* @AccountLockedHook({ priority: 1 })
|
|
342
|
+
* export class AccountLockedNotificationHook implements IAccountLockedHook {
|
|
343
|
+
* constructor(private readonly emailService: EmailService) {}
|
|
344
|
+
*
|
|
345
|
+
* async execute(metadata: AccountLockedMetadata) {
|
|
346
|
+
* await this.emailService.sendAccountLockedAlert({
|
|
347
|
+
* to: metadata.user.email,
|
|
348
|
+
* reason: metadata.lockoutReason,
|
|
349
|
+
* unlockTime: metadata.unlockTime,
|
|
350
|
+
* });
|
|
351
|
+
* }
|
|
352
|
+
* }
|
|
353
|
+
* ```
|
|
354
|
+
*/
|
|
355
|
+
function AccountLockedHook(options = {}) {
|
|
356
|
+
const metadata = {
|
|
357
|
+
type: 'accountLocked',
|
|
358
|
+
priority: options.priority ?? 100,
|
|
359
|
+
};
|
|
360
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Marks a provider as a sessions revoked hook
|
|
364
|
+
*
|
|
365
|
+
* Sessions revoked hooks are executed after user sessions are bulk revoked, allowing you to:
|
|
366
|
+
* - Send security notification emails
|
|
367
|
+
* - Log session revocation events
|
|
368
|
+
* - Trigger security audits
|
|
369
|
+
* - Alert users of forced logouts
|
|
370
|
+
*
|
|
371
|
+
* These hooks cannot block session revocation (sessions are already revoked) but errors are logged.
|
|
372
|
+
*
|
|
373
|
+
* @param options - Hook configuration options
|
|
374
|
+
*
|
|
375
|
+
* @example
|
|
376
|
+
* ```typescript
|
|
377
|
+
* @Injectable()
|
|
378
|
+
* @SessionsRevokedHook({ priority: 1 })
|
|
379
|
+
* export class SessionsRevokedNotificationHook implements ISessionsRevokedHook {
|
|
380
|
+
* constructor(private readonly emailService: EmailService) {}
|
|
381
|
+
*
|
|
382
|
+
* async execute(metadata: SessionsRevokedMetadata) {
|
|
383
|
+
* await this.emailService.sendSessionsRevokedAlert({
|
|
384
|
+
* to: metadata.user.email,
|
|
385
|
+
* revokedCount: metadata.revokedCount,
|
|
386
|
+
* reason: metadata.reason,
|
|
387
|
+
* });
|
|
388
|
+
* }
|
|
389
|
+
* }
|
|
390
|
+
* ```
|
|
391
|
+
*/
|
|
392
|
+
function SessionsRevokedHook(options = {}) {
|
|
393
|
+
const metadata = {
|
|
394
|
+
type: 'sessionsRevoked',
|
|
395
|
+
priority: options.priority ?? 100,
|
|
396
|
+
};
|
|
397
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Marks a provider as an MFA first enabled hook
|
|
401
|
+
*
|
|
402
|
+
* MFA first enabled hooks are executed after a user enables MFA for the first time, allowing you to:
|
|
403
|
+
* - Send congratulations emails
|
|
404
|
+
* - Log MFA enablement events
|
|
405
|
+
* - Track security adoption
|
|
406
|
+
* - Reward users for enabling MFA
|
|
407
|
+
*
|
|
408
|
+
* These hooks cannot block MFA enablement (MFA is already enabled) but errors are logged.
|
|
409
|
+
*
|
|
410
|
+
* @param options - Hook configuration options
|
|
411
|
+
*
|
|
412
|
+
* @example
|
|
413
|
+
* ```typescript
|
|
414
|
+
* @Injectable()
|
|
415
|
+
* @MFAFirstEnabledHook({ priority: 1 })
|
|
416
|
+
* export class MFAFirstEnabledNotificationHook implements IMFAFirstEnabledHook {
|
|
417
|
+
* constructor(private readonly emailService: EmailService) {}
|
|
418
|
+
*
|
|
419
|
+
* async execute(metadata: MFAFirstEnabledMetadata) {
|
|
420
|
+
* await this.emailService.sendMFAEnabledCongrats({
|
|
421
|
+
* to: metadata.user.email,
|
|
422
|
+
* method: metadata.firstMethod,
|
|
423
|
+
* });
|
|
424
|
+
* }
|
|
425
|
+
* }
|
|
426
|
+
* ```
|
|
427
|
+
*/
|
|
428
|
+
function MFAFirstEnabledHook(options = {}) {
|
|
429
|
+
const metadata = {
|
|
430
|
+
type: 'mfaFirstEnabled',
|
|
431
|
+
priority: options.priority ?? 100,
|
|
432
|
+
};
|
|
433
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
434
|
+
}
|
|
133
435
|
//# sourceMappingURL=hook.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.decorator.js","sourceRoot":"","sources":["../../src/decorators/hook.decorator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;
|
|
1
|
+
{"version":3,"file":"hook.decorator.js","sourceRoot":"","sources":["../../src/decorators/hook.decorator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* NAuth Hook Registration Module
|
|
3
3
|
*
|
|
4
|
-
* This module automatically discovers and registers hooks decorated with
|
|
4
|
+
* This module automatically discovers and registers hooks decorated with hook decorators
|
|
5
5
|
* with the HookRegistryService. It should be imported after NAuthModule in your application.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* import { NAuthHooksModule } from '@nauth-toolkit/nestjs';
|
|
12
12
|
* import { DomainValidationHook } from './hooks/domain-validation.hook';
|
|
13
13
|
* import { WelcomeEmailHook } from './hooks/welcome-email.hook';
|
|
14
|
-
* import {
|
|
14
|
+
* import { PasswordChangedNotificationHook } from './hooks/password-changed.hook';
|
|
15
15
|
*
|
|
16
16
|
* @Module({
|
|
17
17
|
* imports: [
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* NAuthHooksModule.forFeature([
|
|
20
20
|
* DomainValidationHook,
|
|
21
21
|
* WelcomeEmailHook,
|
|
22
|
-
*
|
|
22
|
+
* PasswordChangedNotificationHook,
|
|
23
23
|
* ]),
|
|
24
24
|
* ],
|
|
25
25
|
* })
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
*/
|
|
29
29
|
import { DynamicModule, OnModuleInit, Type } from '@nestjs/common';
|
|
30
30
|
import { ModuleRef, Reflector } from '@nestjs/core';
|
|
31
|
-
import { IPreSignupHookProvider, IPostSignupHookProvider, IUserProfileUpdatedHook } from '@nauth-toolkit/core';
|
|
31
|
+
import { IPreSignupHookProvider, IPostSignupHookProvider, IUserProfileUpdatedHook, IPasswordChangedHook, IMFADeviceRemovedHook, IAdaptiveMFARiskDetectedHook, IAccountStatusChangedHook, IEmailChangedHook, IAccountLockedHook, ISessionsRevokedHook, IMFAFirstEnabledHook } from '@nauth-toolkit/core';
|
|
32
32
|
/**
|
|
33
33
|
* Union type for all hook provider classes
|
|
34
34
|
*/
|
|
35
|
-
type HookProviderClass = Type<IPreSignupHookProvider> | Type<IPostSignupHookProvider> | Type<IUserProfileUpdatedHook>;
|
|
35
|
+
type HookProviderClass = Type<IPreSignupHookProvider> | Type<IPostSignupHookProvider> | Type<IUserProfileUpdatedHook> | Type<IPasswordChangedHook> | Type<IMFADeviceRemovedHook> | Type<IAdaptiveMFARiskDetectedHook> | Type<IAccountStatusChangedHook> | Type<IEmailChangedHook> | Type<IAccountLockedHook> | Type<ISessionsRevokedHook> | Type<IMFAFirstEnabledHook>;
|
|
36
36
|
/**
|
|
37
37
|
* Module for automatic hook registration
|
|
38
38
|
*
|
|
@@ -51,7 +51,7 @@ export declare class NAuthHooksModule implements OnModuleInit {
|
|
|
51
51
|
/**
|
|
52
52
|
* Register hooks for a feature module
|
|
53
53
|
*
|
|
54
|
-
* @param hooks - Array of hook provider classes decorated with
|
|
54
|
+
* @param hooks - Array of hook provider classes decorated with hook decorators
|
|
55
55
|
* @returns Dynamic module configuration
|
|
56
56
|
*
|
|
57
57
|
* @example
|
|
@@ -61,7 +61,7 @@ export declare class NAuthHooksModule implements OnModuleInit {
|
|
|
61
61
|
* NAuthHooksModule.forFeature([
|
|
62
62
|
* DomainValidationHook,
|
|
63
63
|
* WelcomeEmailHook,
|
|
64
|
-
*
|
|
64
|
+
* PasswordChangedNotificationHook,
|
|
65
65
|
* ]),
|
|
66
66
|
* ],
|
|
67
67
|
* })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.module.d.ts","sourceRoot":"","sources":["../../src/hooks/hooks.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAU,aAAa,EAAE,YAAY,EAAE,IAAI,EAAU,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAEL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"hooks.module.d.ts","sourceRoot":"","sources":["../../src/hooks/hooks.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAU,aAAa,EAAE,YAAY,EAAE,IAAI,EAAU,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAEL,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,4BAA4B,EAC5B,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAG7B;;GAEG;AACH,KAAK,iBAAiB,GAClB,IAAI,CAAC,sBAAsB,CAAC,GAC5B,IAAI,CAAC,uBAAuB,CAAC,GAC7B,IAAI,CAAC,uBAAuB,CAAC,GAC7B,IAAI,CAAC,oBAAoB,CAAC,GAC1B,IAAI,CAAC,qBAAqB,CAAC,GAC3B,IAAI,CAAC,4BAA4B,CAAC,GAClC,IAAI,CAAC,yBAAyB,CAAC,GAC/B,IAAI,CAAC,iBAAiB,CAAC,GACvB,IAAI,CAAC,kBAAkB,CAAC,GACxB,IAAI,CAAC,oBAAoB,CAAC,GAC1B,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAE/B;;;;;GAKG;AACH,qBACa,gBAAiB,YAAW,YAAY;IAE1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAFc,WAAW,EAAE,iBAAiB,EAAE,EACvD,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS;IAGvC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAgDnC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,aAAa;CAc7D"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* NAuth Hook Registration Module
|
|
4
4
|
*
|
|
5
|
-
* This module automatically discovers and registers hooks decorated with
|
|
5
|
+
* This module automatically discovers and registers hooks decorated with hook decorators
|
|
6
6
|
* with the HookRegistryService. It should be imported after NAuthModule in your application.
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* import { NAuthHooksModule } from '@nauth-toolkit/nestjs';
|
|
13
13
|
* import { DomainValidationHook } from './hooks/domain-validation.hook';
|
|
14
14
|
* import { WelcomeEmailHook } from './hooks/welcome-email.hook';
|
|
15
|
-
* import {
|
|
15
|
+
* import { PasswordChangedNotificationHook } from './hooks/password-changed.hook';
|
|
16
16
|
*
|
|
17
17
|
* @Module({
|
|
18
18
|
* imports: [
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
* NAuthHooksModule.forFeature([
|
|
21
21
|
* DomainValidationHook,
|
|
22
22
|
* WelcomeEmailHook,
|
|
23
|
-
*
|
|
23
|
+
* PasswordChangedNotificationHook,
|
|
24
24
|
* ]),
|
|
25
25
|
* ],
|
|
26
26
|
* })
|
|
@@ -88,12 +88,36 @@ let NAuthHooksModule = NAuthHooksModule_1 = class NAuthHooksModule {
|
|
|
88
88
|
else if (metadata.type === 'userProfileUpdated') {
|
|
89
89
|
hookRegistry.registerUserProfileUpdated(hookInstance);
|
|
90
90
|
}
|
|
91
|
+
else if (metadata.type === 'passwordChanged') {
|
|
92
|
+
hookRegistry.registerPasswordChanged(hookInstance);
|
|
93
|
+
}
|
|
94
|
+
else if (metadata.type === 'mfaDeviceRemoved') {
|
|
95
|
+
hookRegistry.registerMFADeviceRemoved(hookInstance);
|
|
96
|
+
}
|
|
97
|
+
else if (metadata.type === 'adaptiveMfaRiskDetected') {
|
|
98
|
+
hookRegistry.registerAdaptiveMFARiskDetected(hookInstance);
|
|
99
|
+
}
|
|
100
|
+
else if (metadata.type === 'accountStatusChanged') {
|
|
101
|
+
hookRegistry.registerAccountStatusChanged(hookInstance);
|
|
102
|
+
}
|
|
103
|
+
else if (metadata.type === 'emailChanged') {
|
|
104
|
+
hookRegistry.registerEmailChanged(hookInstance);
|
|
105
|
+
}
|
|
106
|
+
else if (metadata.type === 'accountLocked') {
|
|
107
|
+
hookRegistry.registerAccountLocked(hookInstance);
|
|
108
|
+
}
|
|
109
|
+
else if (metadata.type === 'sessionsRevoked') {
|
|
110
|
+
hookRegistry.registerSessionsRevoked(hookInstance);
|
|
111
|
+
}
|
|
112
|
+
else if (metadata.type === 'mfaFirstEnabled') {
|
|
113
|
+
hookRegistry.registerMFAFirstEnabled(hookInstance);
|
|
114
|
+
}
|
|
91
115
|
}
|
|
92
116
|
}
|
|
93
117
|
/**
|
|
94
118
|
* Register hooks for a feature module
|
|
95
119
|
*
|
|
96
|
-
* @param hooks - Array of hook provider classes decorated with
|
|
120
|
+
* @param hooks - Array of hook provider classes decorated with hook decorators
|
|
97
121
|
* @returns Dynamic module configuration
|
|
98
122
|
*
|
|
99
123
|
* @example
|
|
@@ -103,7 +127,7 @@ let NAuthHooksModule = NAuthHooksModule_1 = class NAuthHooksModule {
|
|
|
103
127
|
* NAuthHooksModule.forFeature([
|
|
104
128
|
* DomainValidationHook,
|
|
105
129
|
* WelcomeEmailHook,
|
|
106
|
-
*
|
|
130
|
+
* PasswordChangedNotificationHook,
|
|
107
131
|
* ]),
|
|
108
132
|
* ],
|
|
109
133
|
* })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.module.js","sourceRoot":"","sources":["../../src/hooks/hooks.module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;;;;;;;;;;AAEH,2CAAmF;AACnF,uCAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"hooks.module.js","sourceRoot":"","sources":["../../src/hooks/hooks.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nauth-validation.pipe.d.ts","sourceRoot":"","sources":["../../src/pipes/nauth-validation.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBACa,mBAAoB,YAAW,aAAa;IACvD;;;;;;;OAOG;IACG,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"nauth-validation.pipe.d.ts","sourceRoot":"","sources":["../../src/pipes/nauth-validation.pipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGvF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBACa,mBAAoB,YAAW,aAAa;IACvD;;;;;;;OAOG;IACG,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4C7E;;;;;OAKG;IACH,OAAO,CAAC,eAAe;CAKxB"}
|
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
21
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
23
|
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
8
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
42
|
exports.NAuthValidationPipe = void 0;
|
|
10
43
|
const common_1 = require("@nestjs/common");
|
|
@@ -52,6 +85,34 @@ let NAuthValidationPipe = class NAuthValidationPipe {
|
|
|
52
85
|
*/
|
|
53
86
|
async transform(value, metadata) {
|
|
54
87
|
const metatype = metadata.metatype;
|
|
88
|
+
// #region agent log
|
|
89
|
+
const http = await Promise.resolve().then(() => __importStar(require('http')));
|
|
90
|
+
const logData = JSON.stringify({
|
|
91
|
+
location: 'nauth-validation.pipe.ts:transform',
|
|
92
|
+
message: 'Validation pipe input',
|
|
93
|
+
data: {
|
|
94
|
+
value: value,
|
|
95
|
+
valueType: typeof value,
|
|
96
|
+
metatypeName: metatype?.name,
|
|
97
|
+
isNull: value === null,
|
|
98
|
+
isUndefined: value === undefined,
|
|
99
|
+
keys: value && typeof value === 'object' ? Object.keys(value) : [],
|
|
100
|
+
},
|
|
101
|
+
timestamp: Date.now(),
|
|
102
|
+
sessionId: 'debug-session',
|
|
103
|
+
hypothesisId: 'E',
|
|
104
|
+
});
|
|
105
|
+
const req = http.request({
|
|
106
|
+
hostname: '127.0.0.1',
|
|
107
|
+
port: 7242,
|
|
108
|
+
path: '/ingest/97f9fe53-6a8b-43e2-ae9b-4b2d0f725816',
|
|
109
|
+
method: 'POST',
|
|
110
|
+
headers: { 'Content-Type': 'application/json' },
|
|
111
|
+
}, () => { });
|
|
112
|
+
req.on('error', () => { });
|
|
113
|
+
req.write(logData);
|
|
114
|
+
req.end();
|
|
115
|
+
// #endregion
|
|
55
116
|
// Skip validation for primitives or missing metatype (same behavior as Nest ValidationPipe)
|
|
56
117
|
if (!metatype || this.isPrimitiveType(metatype)) {
|
|
57
118
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nauth-validation.pipe.js","sourceRoot":"","sources":["../../src/pipes/nauth-validation.pipe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nauth-validation.pipe.js","sourceRoot":"","sources":["../../src/pipes/nauth-validation.pipe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAuF;AACvF,8CAAyD;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B;;;;;;;OAOG;IACH,KAAK,CAAC,SAAS,CAAC,KAAc,EAAE,QAA0B;QACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,oBAAoB;QACpB,MAAM,IAAI,GAAG,wDAAa,MAAM,GAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,QAAQ,EAAE,oCAAoC;YAC9C,OAAO,EAAE,uBAAuB;YAChC,IAAI,EAAE;gBACJ,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,OAAO,KAAK;gBACvB,YAAY,EAAE,QAAQ,EAAE,IAAI;gBAC5B,MAAM,EAAE,KAAK,KAAK,IAAI;gBACtB,WAAW,EAAE,KAAK,KAAK,SAAS;gBAChC,IAAI,EAAE,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aACnE;YACD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,SAAS,EAAE,eAAe;YAC1B,YAAY,EAAE,GAAG;SAClB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CACtB;YACE,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,8CAA8C;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,EACD,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;QACV,aAAa;QAEb,4FAA4F;QAC5F,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,qEAAqE;QACrE,OAAO,IAAA,yBAAkB,EAAC,QAAuC,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;OAKG;IACK,eAAe,CAAC,QAAiB;QACvC,OAAO,CACL,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,MAAM,CAChH,CAAC;IACJ,CAAC;CACF,CAAA;AAhEY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;GACA,mBAAmB,CAgE/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations-bootstrap.service.d.ts","sourceRoot":"","sources":["../../src/services/migrations-bootstrap.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAevE;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,EAAE,
|
|
1
|
+
{"version":3,"file":"migrations-bootstrap.service.d.ts","sourceRoot":"","sources":["../../src/services/migrations-bootstrap.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AAevE;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,EAAE,QAkC9C,CAAC"}
|
|
@@ -53,22 +53,18 @@ function getAdapterPackageName(dataSource) {
|
|
|
53
53
|
exports.nauthMigrationsBootstrapProvider = {
|
|
54
54
|
provide: exports.NAUTH_MIGRATIONS_BOOTSTRAP,
|
|
55
55
|
useFactory: async (config, logger, dataSource) => {
|
|
56
|
-
logger?.debug?.('[PERF] Migrations bootstrap factory started');
|
|
57
56
|
if (!dataSource?.isInitialized) {
|
|
58
57
|
logger?.warn?.('[nauth-toolkit] DataSource not initialized; skipping migrations');
|
|
59
58
|
return false;
|
|
60
59
|
}
|
|
61
|
-
logger?.debug?.('[PERF] Determining adapter package name...');
|
|
62
60
|
const adapterPackageName = getAdapterPackageName(dataSource);
|
|
63
61
|
if (!adapterPackageName) {
|
|
64
62
|
logger?.debug?.(`[nauth-toolkit] Skipping migrations: unsupported TypeORM DataSource type: ${String(dataSource.options?.type)}`);
|
|
65
63
|
return false;
|
|
66
64
|
}
|
|
67
|
-
logger?.debug?.(`[PERF] Importing migration adapter: ${adapterPackageName}...`);
|
|
68
65
|
let imported;
|
|
69
66
|
try {
|
|
70
67
|
imported = (await Promise.resolve(`${adapterPackageName}`).then(s => __importStar(require(s))));
|
|
71
|
-
logger?.debug?.('[PERF] Migration adapter imported');
|
|
72
68
|
}
|
|
73
69
|
catch (err) {
|
|
74
70
|
const message = err instanceof Error ? err.message : String(err);
|
|
@@ -77,9 +73,7 @@ exports.nauthMigrationsBootstrapProvider = {
|
|
|
77
73
|
if (typeof imported.runNAuthMigrations !== 'function') {
|
|
78
74
|
throw new Error(`[nauth-toolkit] Migration adapter ${adapterPackageName} does not export runNAuthMigrations()`);
|
|
79
75
|
}
|
|
80
|
-
logger?.debug?.('[PERF] Running migrations...');
|
|
81
76
|
await imported.runNAuthMigrations(dataSource, logger, config);
|
|
82
|
-
logger?.debug?.('[PERF] Migrations completed');
|
|
83
77
|
return true;
|
|
84
78
|
},
|
|
85
79
|
inject: ['NAUTH_CONFIG', 'NAUTH_LOGGER', typeorm_1.DataSource],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrations-bootstrap.service.js","sourceRoot":"","sources":["../../src/services/migrations-bootstrap.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qCAAqC;AAExB,QAAA,0BAA0B,GAAG,4BAA4B,CAAC;AAMvE,SAAS,qBAAqB,CAC5B,UAAsB;IAEtB,MAAM,IAAI,GAAI,UAAU,CAAC,OAA0C,EAAE,IAAI,CAAC;IAC1E,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,0CAA0C,CAAC;IAC3E,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,uCAAuC,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACU,QAAA,gCAAgC,GAAa;IACxD,OAAO,EAAE,kCAA0B;IACnC,UAAU,EAAE,KAAK,EAAE,MAAmB,EAAE,MAAmB,EAAE,UAAsB,EAAE,EAAE;QACrF,
|
|
1
|
+
{"version":3,"file":"migrations-bootstrap.service.js","sourceRoot":"","sources":["../../src/services/migrations-bootstrap.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,qCAAqC;AAExB,QAAA,0BAA0B,GAAG,4BAA4B,CAAC;AAMvE,SAAS,qBAAqB,CAC5B,UAAsB;IAEtB,MAAM,IAAI,GAAI,UAAU,CAAC,OAA0C,EAAE,IAAI,CAAC;IAC1E,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,0CAA0C,CAAC;IAC3E,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,uCAAuC,CAAC;IAC3F,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACU,QAAA,gCAAgC,GAAa;IACxD,OAAO,EAAE,kCAA0B;IACnC,UAAU,EAAE,KAAK,EAAE,MAAmB,EAAE,MAAmB,EAAE,UAAsB,EAAE,EAAE;QACrF,IAAI,CAAC,UAAU,EAAE,aAAa,EAAE,CAAC;YAC/B,MAAM,EAAE,IAAI,EAAE,CAAC,iEAAiE,CAAC,CAAC;YAClF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,EAAE,KAAK,EAAE,CACb,6EAA6E,MAAM,CAChF,UAAU,CAAC,OAA0C,EAAE,IAAI,CAC7D,EAAE,CACJ,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAA+B,CAAC;QACpC,IAAI,CAAC;YACH,QAAQ,GAAG,CAAC,yBAAa,kBAAkB,uCAAC,CAAqC,CAAC;QACpF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,oDAAoD,kBAAkB,KAAK,OAAO,EAAE,CAAC,CAAC;QACxG,CAAC;QAED,IAAI,OAAO,QAAQ,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,qCAAqC,kBAAkB,uCAAuC,CAAC,CAAC;QAClH,CAAC;QAED,MAAM,QAAQ,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,oBAAU,CAAC;CACrD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nauth-toolkit/nestjs",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.62",
|
|
4
4
|
"description": "NestJS adapter for nauth-toolkit - Platform-specific integrations",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"typeorm": "^0.3.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@nauth-toolkit/core": "0.1.
|
|
42
|
+
"@nauth-toolkit/core": "0.1.62"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@nestjs/common": "^11.1.8",
|