@studiosonrai/nestjs-audit-log 1.1.0 → 1.1.2

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/README.md CHANGED
@@ -9,11 +9,6 @@ hatch. The acting user is captured from the request via CLS, so you never thread
9
9
  via raw SQL through your existing DataSource, so **no migration is required and you do
10
10
  not need to add `AuditLog` to your `entities` array** (Microsoft SQL Server).
11
11
 
12
- ## Documentation
13
-
14
- - [Setup & Usage](docs/setup.md) — prerequisites, install, configuration, and day-to-day use.
15
- - [How It Works](docs/internals.md) — architecture, core logic, and design decisions.
16
- - [Migration Guide](docs/migration.md) — move an existing hand-rolled audit module onto this package.
17
12
 
18
13
  ## Installation
19
14
 
@@ -31,18 +26,33 @@ import { AuditLog } from '@studiosonrai/nestjs-audit-log';
31
26
 
32
27
  @Module({
33
28
  imports: [
34
- AuditModule.forRootAsync({
35
- inject: [getRepositoryToken(User)],
36
- useFactory: (userRepo: Repository<User>) => ({
37
- // read-time enrichment of `changedBy` -> name/email (optional)
38
- resolveUser: async (id) => {
39
- const u = await userRepo.findOneBy({ id });
40
- return u && { name: `${u.firstName} ${u.lastName ?? ''}`.trim(), email: u.email };
41
- },
42
- // how to read the acting user id from the request (default: req.user?.id)
43
- getUserId: (req) => (req as { user?: { id?: number } }).user?.id,
29
+ AuditModule.forRootAsync({
30
+ imports: [TypeOrmModule.forFeature([User])], // for `resolveUser` if you want it
31
+ inject: [LoggerFactory, getRepositoryToken(User)],
32
+ useFactory: (
33
+ loggerFactory: LoggerFactory,
34
+ userRepo: Repository<User>,
35
+ ) => ({
36
+ // Required if you want any package logs — otherwise the package is silent.
37
+ // Routes audit-log internal logs through your app's logger (winston,
38
+ // App Insights, whatever) with one context per internal class.
39
+ logger: (ctx) => loggerFactory.create(ctx),
40
+
41
+ // Optional: turn `changedBy` (a user id) into a name/email on read.
42
+ resolveUser: async (id) => {
43
+ const user = await userRepo.findOneBy({ id });
44
+ return user
45
+ ? {
46
+ name: `${user.firstName} ${user.lastName ?? ''}`.trim(),
47
+ email: user.email,
48
+ }
49
+ : null;
50
+ },
51
+ // Optional: how to read the acting user id from the request.
52
+ // Defaults to `request.user?.id`.
53
+ getUserId: (req) => (req as RequestWithUser).user?.sub,
54
+ }),
44
55
  }),
45
- }),
46
56
  ],
47
57
  })
48
58
  export class AppModule {}
@@ -60,7 +70,11 @@ Register the `AuditLog` entity with your DataSource (e.g. `autoLoadEntities: tru
60
70
  ```typescript
61
71
  import { Auditable } from '@studiosonrai/nestjs-audit-log';
62
72
 
63
- @Auditable({ nameField: 'fullName' }) // entityType defaults to the class name
73
+ @Auditable({
74
+ entityType: 'Contact', // default: the class name (You can change to your preferred name)
75
+ nameField: 'fullName', // property used as the human label
76
+ exclude: ['createdBy', 'updatedBy'], // omit from the diff (id/createdAt/updatedAt already excluded)
77
+ })
64
78
  @Entity()
65
79
  export class Contact { /* ... */ }
66
80
  ```
@@ -46,7 +46,7 @@ let AuditModule = AuditModule_1 = class AuditModule {
46
46
  };
47
47
  }
48
48
  static baseImports() {
49
- return [nestjs_cls_1.ClsModule.forRoot({ global: true, guard: { mount: true } })];
49
+ return [nestjs_cls_1.ClsModule.forRoot({ global: true, middleware: { mount: true } })];
50
50
  }
51
51
  static createAsyncProviders(options) {
52
52
  if (options.useExisting || options.useFactory) {
@@ -1 +1 @@
1
- {"version":3,"file":"audit.module.js","sourceRoot":"","sources":["../../src/audit.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,uCAA+C;AAC/C,2CAAuC;AACvC,mDAA+C;AAC/C,yDAAqD;AACrD,2EAAsE;AACtE,uEAAkE;AAClE,uDAAyD;AAOzD,MAAM,eAAe,GAAe;IAClC,+CAAqB;IACrB,4BAAY;IACZ,kCAAe;IACf,EAAE,OAAO,EAAE,sBAAe,EAAE,QAAQ,EAAE,mDAAuB,EAAE;CAChE,CAAC;AAIK,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,OAAO,CAAC,UAA8B,EAAE;QAC7C,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,GAAG,aAAW,CAAC,WAAW,EAAE,CAAC;YACvC,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,sCAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACpD,GAAG,eAAe;aACnB;YACD,OAAO,EAAE,CAAC,4BAAY,EAAE,sCAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAgC;QAClD,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,GAAG,aAAW,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACnE,SAAS,EAAE;gBACT,GAAG,aAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBAC5C,GAAG,eAAe;aACnB;YACD,OAAO,EAAE,CAAC,4BAAY,EAAE,sCAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,WAAW;QACxB,OAAO,CAAC,sBAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAAgC;QAEhC,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9C,OAAO,CAAC,aAAW,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO;gBACL,aAAW,CAAC,0BAA0B,CAAC,OAAO,CAAC;gBAC/C,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC1D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,OAAgC;QAEhC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,sCAAoB;gBAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC7B,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,sCAAoB;YAC7B,UAAU,EAAE,CAAC,OAAkC,EAAE,EAAE,CACjD,OAAO,CAAC,kBAAkB,EAAE;YAC9B,MAAM,EAAE,CAAC,MAAM,CAAC;SACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAzEY,kCAAW;sBAAX,WAAW;IAFvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,WAAW,CAyEvB"}
1
+ {"version":3,"file":"audit.module.js","sourceRoot":"","sources":["../../src/audit.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,uCAA+C;AAC/C,2CAAuC;AACvC,mDAA+C;AAC/C,yDAAqD;AACrD,2EAAsE;AACtE,uEAAkE;AAClE,uDAAyD;AAOzD,MAAM,eAAe,GAAe;IAClC,+CAAqB;IACrB,4BAAY;IACZ,kCAAe;IACf,EAAE,OAAO,EAAE,sBAAe,EAAE,QAAQ,EAAE,mDAAuB,EAAE;CAChE,CAAC;AAIK,IAAM,WAAW,mBAAjB,MAAM,WAAW;IACtB,MAAM,CAAC,OAAO,CAAC,UAA8B,EAAE;QAC7C,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,GAAG,aAAW,CAAC,WAAW,EAAE,CAAC;YACvC,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,sCAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE;gBACpD,GAAG,eAAe;aACnB;YACD,OAAO,EAAE,CAAC,4BAAY,EAAE,sCAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,OAAgC;QAClD,OAAO;YACL,MAAM,EAAE,aAAW;YACnB,OAAO,EAAE,CAAC,GAAG,aAAW,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;YACnE,SAAS,EAAE;gBACT,GAAG,aAAW,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBAC5C,GAAG,eAAe;aACnB;YACD,OAAO,EAAE,CAAC,4BAAY,EAAE,sCAAoB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,WAAW;QACxB,OAAO,CAAC,sBAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAAgC;QAEhC,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC9C,OAAO,CAAC,aAAW,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO;gBACL,aAAW,CAAC,0BAA0B,CAAC,OAAO,CAAC;gBAC/C,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;aAC1D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,0BAA0B,CACvC,OAAgC;QAEhC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,sCAAoB;gBAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC7B,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,QAAQ,CAAC;QACvD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,sCAAoB;YAC7B,UAAU,EAAE,CAAC,OAAkC,EAAE,EAAE,CACjD,OAAO,CAAC,kBAAkB,EAAE;YAC9B,MAAM,EAAE,CAAC,MAAM,CAAC;SACjB,CAAC;IACJ,CAAC;CACF,CAAA;AAzEY,kCAAW;sBAAX,WAAW;IAFvB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,WAAW,CAyEvB"}