@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 +31 -17
- package/dist/src/audit.module.js +1 -1
- package/dist/src/audit.module.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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({
|
|
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
|
```
|
package/dist/src/audit.module.js
CHANGED
|
@@ -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,
|
|
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,
|
|
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"}
|