@nauth-toolkit/nestjs 0.1.39 → 0.1.41
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/decorators/hook.decorator.d.ts +35 -1
- package/dist/decorators/hook.decorator.d.ts.map +1 -1
- package/dist/decorators/hook.decorator.js +41 -0
- package/dist/decorators/hook.decorator.js.map +1 -1
- package/dist/hooks/hooks.module.d.ts +5 -2
- package/dist/hooks/hooks.module.d.ts.map +1 -1
- package/dist/hooks/hooks.module.js +8 -2
- package/dist/hooks/hooks.module.js.map +1 -1
- package/package.json +2 -2
|
@@ -27,7 +27,7 @@ export declare const HOOK_METADATA_KEY = "nauth:hook";
|
|
|
27
27
|
/**
|
|
28
28
|
* Hook types supported by NAuth
|
|
29
29
|
*/
|
|
30
|
-
export type HookType = 'preSignup' | 'postSignup';
|
|
30
|
+
export type HookType = 'preSignup' | 'postSignup' | 'userProfileUpdated';
|
|
31
31
|
/**
|
|
32
32
|
* Metadata stored on hook provider classes
|
|
33
33
|
*/
|
|
@@ -92,4 +92,38 @@ export declare function PreSignupHook(options?: HookDecoratorOptions): ClassDeco
|
|
|
92
92
|
* @param options - Hook configuration options
|
|
93
93
|
*/
|
|
94
94
|
export declare function PostSignupHook(options?: HookDecoratorOptions): ClassDecorator;
|
|
95
|
+
/**
|
|
96
|
+
* Marks a provider as a user profile updated hook
|
|
97
|
+
*
|
|
98
|
+
* User profile updated hooks are executed after user profile attributes change, allowing you to:
|
|
99
|
+
* - Sync profile changes to CRM systems
|
|
100
|
+
* - Send notifications about profile updates
|
|
101
|
+
* - Trigger analytics events for profile changes
|
|
102
|
+
* - Update cached user data in external services
|
|
103
|
+
*
|
|
104
|
+
* These hooks cannot block profile updates (changes are already saved) but errors are logged and can be
|
|
105
|
+
* handled by your application.
|
|
106
|
+
*
|
|
107
|
+
* @param options - Hook configuration options
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* @Injectable()
|
|
112
|
+
* @UserProfileUpdatedHook({ priority: 1 })
|
|
113
|
+
* export class CrmSyncHook implements IUserProfileUpdatedHook {
|
|
114
|
+
* constructor(private readonly crmService: CrmService) {}
|
|
115
|
+
*
|
|
116
|
+
* async execute(metadata: UserProfileUpdatedMetadata) {
|
|
117
|
+
* // Sync email changes to CRM
|
|
118
|
+
* const emailChange = metadata.changedFields.find(f => f.fieldName === 'email');
|
|
119
|
+
* if (emailChange) {
|
|
120
|
+
* await this.crmService.updateContact(metadata.user.sub, {
|
|
121
|
+
* email: emailChange.newValue
|
|
122
|
+
* });
|
|
123
|
+
* }
|
|
124
|
+
* }
|
|
125
|
+
* }
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
export declare function UserProfileUpdatedHook(options?: HookDecoratorOptions): ClassDecorator;
|
|
95
129
|
//# sourceMappingURL=hook.decorator.d.ts.map
|
|
@@ -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,GAAG,WAAW,GAAG,YAAY,CAAC;
|
|
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,GAAG,WAAW,GAAG,YAAY,GAAG,oBAAoB,CAAC;AAEzE;;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"}
|
|
@@ -28,6 +28,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
28
28
|
exports.HOOK_METADATA_KEY = void 0;
|
|
29
29
|
exports.PreSignupHook = PreSignupHook;
|
|
30
30
|
exports.PostSignupHook = PostSignupHook;
|
|
31
|
+
exports.UserProfileUpdatedHook = UserProfileUpdatedHook;
|
|
31
32
|
const common_1 = require("@nestjs/common");
|
|
32
33
|
exports.HOOK_METADATA_KEY = 'nauth:hook';
|
|
33
34
|
/**
|
|
@@ -89,4 +90,44 @@ function PostSignupHook(options = {}) {
|
|
|
89
90
|
};
|
|
90
91
|
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
91
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Marks a provider as a user profile updated hook
|
|
95
|
+
*
|
|
96
|
+
* User profile updated hooks are executed after user profile attributes change, allowing you to:
|
|
97
|
+
* - Sync profile changes to CRM systems
|
|
98
|
+
* - Send notifications about profile updates
|
|
99
|
+
* - Trigger analytics events for profile changes
|
|
100
|
+
* - Update cached user data in external services
|
|
101
|
+
*
|
|
102
|
+
* These hooks cannot block profile updates (changes are already saved) but errors are logged and can be
|
|
103
|
+
* handled by your application.
|
|
104
|
+
*
|
|
105
|
+
* @param options - Hook configuration options
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* @Injectable()
|
|
110
|
+
* @UserProfileUpdatedHook({ priority: 1 })
|
|
111
|
+
* export class CrmSyncHook implements IUserProfileUpdatedHook {
|
|
112
|
+
* constructor(private readonly crmService: CrmService) {}
|
|
113
|
+
*
|
|
114
|
+
* async execute(metadata: UserProfileUpdatedMetadata) {
|
|
115
|
+
* // Sync email changes to CRM
|
|
116
|
+
* const emailChange = metadata.changedFields.find(f => f.fieldName === 'email');
|
|
117
|
+
* if (emailChange) {
|
|
118
|
+
* await this.crmService.updateContact(metadata.user.sub, {
|
|
119
|
+
* email: emailChange.newValue
|
|
120
|
+
* });
|
|
121
|
+
* }
|
|
122
|
+
* }
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
function UserProfileUpdatedHook(options = {}) {
|
|
127
|
+
const metadata = {
|
|
128
|
+
type: 'userProfileUpdated',
|
|
129
|
+
priority: options.priority ?? 100,
|
|
130
|
+
};
|
|
131
|
+
return (0, common_1.SetMetadata)(exports.HOOK_METADATA_KEY, metadata);
|
|
132
|
+
}
|
|
92
133
|
//# 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;;;AA6DH,sCAMC;AAgBD,wCAMC;
|
|
1
|
+
{"version":3,"file":"hook.decorator.js","sourceRoot":"","sources":["../../src/decorators/hook.decorator.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AA6DH,sCAMC;AAgBD,wCAMC;AAmCD,wDAMC;AAhID,2CAA6C;AAEhC,QAAA,iBAAiB,GAAG,YAAY,CAAC;AA0B9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,aAAa,CAAC,UAAgC,EAAE;IAC9D,MAAM,QAAQ,GAAiB;QAC7B,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;KAClC,CAAC;IACF,OAAO,IAAA,oBAAW,EAAC,yBAAiB,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,cAAc,CAAC,UAAgC,EAAE;IAC/D,MAAM,QAAQ,GAAiB;QAC7B,IAAI,EAAE,YAAY;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;KAClC,CAAC;IACF,OAAO,IAAA,oBAAW,EAAC,yBAAiB,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,SAAgB,sBAAsB,CAAC,UAAgC,EAAE;IACvE,MAAM,QAAQ,GAAiB;QAC7B,IAAI,EAAE,oBAAoB;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;KAClC,CAAC;IACF,OAAO,IAAA,oBAAW,EAAC,yBAAiB,EAAE,QAAQ,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* NAuth Hook Registration Module
|
|
3
3
|
*
|
|
4
|
-
* This module automatically discovers and registers hooks decorated with @PreSignupHook or @
|
|
4
|
+
* This module automatically discovers and registers hooks decorated with @PreSignupHook, @PostSignupHook, or @UserProfileUpdatedHook
|
|
5
5
|
* with the HookRegistryService. It should be imported after NAuthModule in your application.
|
|
6
6
|
*
|
|
7
7
|
* @example
|
|
@@ -11,6 +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 { CrmSyncHook } from './hooks/crm-sync.hook';
|
|
14
15
|
*
|
|
15
16
|
* @Module({
|
|
16
17
|
* imports: [
|
|
@@ -18,6 +19,7 @@
|
|
|
18
19
|
* NAuthHooksModule.forFeature([
|
|
19
20
|
* DomainValidationHook,
|
|
20
21
|
* WelcomeEmailHook,
|
|
22
|
+
* CrmSyncHook,
|
|
21
23
|
* ]),
|
|
22
24
|
* ],
|
|
23
25
|
* })
|
|
@@ -44,7 +46,7 @@ export declare class NAuthHooksModule implements OnModuleInit {
|
|
|
44
46
|
/**
|
|
45
47
|
* Register hooks for a feature module
|
|
46
48
|
*
|
|
47
|
-
* @param hooks - Array of hook provider classes decorated with @PreSignupHook or @
|
|
49
|
+
* @param hooks - Array of hook provider classes decorated with @PreSignupHook, @PostSignupHook, or @UserProfileUpdatedHook
|
|
48
50
|
* @returns Dynamic module configuration
|
|
49
51
|
*
|
|
50
52
|
* @example
|
|
@@ -54,6 +56,7 @@ export declare class NAuthHooksModule implements OnModuleInit {
|
|
|
54
56
|
* NAuthHooksModule.forFeature([
|
|
55
57
|
* DomainValidationHook,
|
|
56
58
|
* WelcomeEmailHook,
|
|
59
|
+
* CrmSyncHook,
|
|
57
60
|
* ]),
|
|
58
61
|
* ],
|
|
59
62
|
* })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.module.d.ts","sourceRoot":"","sources":["../../src/hooks/hooks.module.ts"],"names":[],"mappings":"AAAA
|
|
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;AASpD;;;;;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,IAAI,CAAC,GAAG,CAAC,EAAE,EAC/C,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS;IAGvC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCnC;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,aAAa;CAcrD"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* NAuth Hook Registration Module
|
|
4
4
|
*
|
|
5
|
-
* This module automatically discovers and registers hooks decorated with @PreSignupHook or @
|
|
5
|
+
* This module automatically discovers and registers hooks decorated with @PreSignupHook, @PostSignupHook, or @UserProfileUpdatedHook
|
|
6
6
|
* with the HookRegistryService. It should be imported after NAuthModule in your application.
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
@@ -12,6 +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 { CrmSyncHook } from './hooks/crm-sync.hook';
|
|
15
16
|
*
|
|
16
17
|
* @Module({
|
|
17
18
|
* imports: [
|
|
@@ -19,6 +20,7 @@
|
|
|
19
20
|
* NAuthHooksModule.forFeature([
|
|
20
21
|
* DomainValidationHook,
|
|
21
22
|
* WelcomeEmailHook,
|
|
23
|
+
* CrmSyncHook,
|
|
22
24
|
* ]),
|
|
23
25
|
* ],
|
|
24
26
|
* })
|
|
@@ -83,12 +85,15 @@ let NAuthHooksModule = NAuthHooksModule_1 = class NAuthHooksModule {
|
|
|
83
85
|
else if (metadata.type === 'postSignup') {
|
|
84
86
|
hookRegistry.registerPostSignup(hookInstance);
|
|
85
87
|
}
|
|
88
|
+
else if (metadata.type === 'userProfileUpdated') {
|
|
89
|
+
hookRegistry.registerUserProfileUpdated(hookInstance);
|
|
90
|
+
}
|
|
86
91
|
}
|
|
87
92
|
}
|
|
88
93
|
/**
|
|
89
94
|
* Register hooks for a feature module
|
|
90
95
|
*
|
|
91
|
-
* @param hooks - Array of hook provider classes decorated with @PreSignupHook or @
|
|
96
|
+
* @param hooks - Array of hook provider classes decorated with @PreSignupHook, @PostSignupHook, or @UserProfileUpdatedHook
|
|
92
97
|
* @returns Dynamic module configuration
|
|
93
98
|
*
|
|
94
99
|
* @example
|
|
@@ -98,6 +103,7 @@ let NAuthHooksModule = NAuthHooksModule_1 = class NAuthHooksModule {
|
|
|
98
103
|
* NAuthHooksModule.forFeature([
|
|
99
104
|
* DomainValidationHook,
|
|
100
105
|
* WelcomeEmailHook,
|
|
106
|
+
* CrmSyncHook,
|
|
101
107
|
* ]),
|
|
102
108
|
* ],
|
|
103
109
|
* })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.module.js","sourceRoot":"","sources":["../../src/hooks/hooks.module.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"hooks.module.js","sourceRoot":"","sources":["../../src/hooks/hooks.module.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;;;;;;;;;;AAEH,2CAAmF;AACnF,uCAAoD;AACpD,8CAK6B;AAC7B,iEAA+E;AAE/E;;;;;GAKG;AAEI,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IAEe;IACvB;IACA;IAHnB,YAC0C,WAAwB,EAC/C,SAAoB,EACpB,SAAoB;QAFG,gBAAW,GAAX,WAAW,CAAa;QAC/C,cAAS,GAAT,SAAS,CAAW;QACpB,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,uEAAuE;QACvE,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,0BAAmB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAEhF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,gHAAgH,CACjH,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAe,kCAAiB,EAAE,SAAS,CAAC,CAAC;YAEhF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,2CAA2C;gBAC3C,SAAS;YACX,CAAC;YAED,4CAA4C;YAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAEtE,8BAA8B;YAC9B,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAClC,YAAY,CAAC,iBAAiB,CAAC,YAAsC,CAAC,CAAC;YACzE,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1C,YAAY,CAAC,kBAAkB,CAAC,YAAuC,CAAC,CAAC;YAC3E,CAAC;iBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBAClD,YAAY,CAAC,0BAA0B,CAAC,YAAuC,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,MAAM,CAAC,UAAU,CAAC,KAAkB;QAClC,OAAO;YACL,MAAM,EAAE,kBAAgB;YACxB,OAAO,EAAE,EAAE,EAAE,0EAA0E;YACvF,SAAS,EAAE;gBACT,GAAG,KAAK;gBACR;oBACE,OAAO,EAAE,aAAa;oBACtB,QAAQ,EAAE,KAAK;iBAChB;aACF;YACD,OAAO,EAAE,KAAK;SACf,CAAC;IACJ,CAAC;CACF,CAAA;AA5EY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,eAAM,EAAC,EAAE,CAAC;IAGN,WAAA,IAAA,eAAM,EAAC,aAAa,CAAC,CAAA;4CACM,gBAAS;QACT,gBAAS;GAJ5B,gBAAgB,CA4E5B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nauth-toolkit/nestjs",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.41",
|
|
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.41"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@nestjs/common": "^11.1.8",
|