better-auth-audit-logs 0.1.0

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.
Files changed (46) hide show
  1. package/README.md +366 -0
  2. package/dist/adapters/index.d.ts +2 -0
  3. package/dist/adapters/index.d.ts.map +1 -0
  4. package/dist/adapters/memory.d.ts +9 -0
  5. package/dist/adapters/memory.d.ts.map +1 -0
  6. package/dist/client.cjs +53 -0
  7. package/dist/client.d.ts +11 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +13 -0
  10. package/dist/endpoints/get-log.d.ts +28 -0
  11. package/dist/endpoints/get-log.d.ts.map +1 -0
  12. package/dist/endpoints/index.d.ts +4 -0
  13. package/dist/endpoints/index.d.ts.map +1 -0
  14. package/dist/endpoints/insert-log.d.ts +45 -0
  15. package/dist/endpoints/insert-log.d.ts.map +1 -0
  16. package/dist/endpoints/list-logs.d.ts +41 -0
  17. package/dist/endpoints/list-logs.d.ts.map +1 -0
  18. package/dist/hooks/after.d.ts +7 -0
  19. package/dist/hooks/after.d.ts.map +1 -0
  20. package/dist/hooks/before.d.ts +8 -0
  21. package/dist/hooks/before.d.ts.map +1 -0
  22. package/dist/hooks/index.d.ts +3 -0
  23. package/dist/hooks/index.d.ts.map +1 -0
  24. package/dist/index.cjs +564 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +522 -0
  28. package/dist/internal.d.ts +16 -0
  29. package/dist/internal.d.ts.map +1 -0
  30. package/dist/plugin.d.ts +181 -0
  31. package/dist/plugin.d.ts.map +1 -0
  32. package/dist/schema.d.ts +109 -0
  33. package/dist/schema.d.ts.map +1 -0
  34. package/dist/types.d.ts +88 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/utils/index.d.ts +5 -0
  37. package/dist/utils/index.d.ts.map +1 -0
  38. package/dist/utils/normalize-path.d.ts +2 -0
  39. package/dist/utils/normalize-path.d.ts.map +1 -0
  40. package/dist/utils/request-meta.d.ts +6 -0
  41. package/dist/utils/request-meta.d.ts.map +1 -0
  42. package/dist/utils/sanitize.d.ts +4 -0
  43. package/dist/utils/sanitize.d.ts.map +1 -0
  44. package/dist/utils/severity.d.ts +3 -0
  45. package/dist/utils/severity.d.ts.map +1 -0
  46. package/package.json +43 -0
@@ -0,0 +1,181 @@
1
+ import type { AuditLogOptions } from "./types";
2
+ export declare function auditLog(options?: AuditLogOptions): {
3
+ id: "audit-log";
4
+ schema: {
5
+ auditLog: {
6
+ modelName: string;
7
+ fields: {
8
+ userId: {
9
+ type: "string";
10
+ required: boolean;
11
+ references: {
12
+ model: string;
13
+ field: string;
14
+ onDelete: "set null";
15
+ };
16
+ index: boolean;
17
+ };
18
+ action: {
19
+ type: "string";
20
+ required: boolean;
21
+ sortable: boolean;
22
+ index: boolean;
23
+ };
24
+ status: {
25
+ type: "string";
26
+ required: boolean;
27
+ sortable: boolean;
28
+ };
29
+ severity: {
30
+ type: "string";
31
+ required: boolean;
32
+ sortable: boolean;
33
+ };
34
+ ipAddress: {
35
+ type: "string";
36
+ required: boolean;
37
+ };
38
+ userAgent: {
39
+ type: "string";
40
+ required: boolean;
41
+ returned: boolean;
42
+ };
43
+ metadata: {
44
+ type: "string";
45
+ required: boolean;
46
+ };
47
+ createdAt: {
48
+ type: "date";
49
+ required: boolean;
50
+ sortable: boolean;
51
+ index: boolean;
52
+ defaultValue: () => Date;
53
+ };
54
+ };
55
+ };
56
+ };
57
+ hooks: {
58
+ before: {
59
+ matcher: (context: import("better-auth").HookEndpointContext) => boolean;
60
+ handler: (inputContext: import("better-call").MiddlewareInputContext<import("better-call").MiddlewareOptions>) => Promise<void>;
61
+ }[];
62
+ after: {
63
+ matcher: (context: import("better-auth").HookEndpointContext) => boolean;
64
+ handler: (inputContext: import("better-call").MiddlewareInputContext<import("better-call").MiddlewareOptions>) => Promise<void>;
65
+ }[];
66
+ };
67
+ endpoints: {
68
+ listAuditLogs: import("better-call").StrictEndpoint<"/audit-log/list", {
69
+ method: "GET";
70
+ use: ((inputContext: import("better-call").MiddlewareInputContext<import("better-call").MiddlewareOptions>) => Promise<{
71
+ session: {
72
+ session: Record<string, any> & {
73
+ id: string;
74
+ createdAt: Date;
75
+ updatedAt: Date;
76
+ userId: string;
77
+ expiresAt: Date;
78
+ token: string;
79
+ ipAddress?: string | null | undefined;
80
+ userAgent?: string | null | undefined;
81
+ };
82
+ user: Record<string, any> & {
83
+ id: string;
84
+ createdAt: Date;
85
+ updatedAt: Date;
86
+ email: string;
87
+ emailVerified: boolean;
88
+ name: string;
89
+ image?: string | null | undefined;
90
+ };
91
+ };
92
+ }>)[];
93
+ query: import("zod").ZodObject<{
94
+ userId: import("zod").ZodOptional<import("zod").ZodString>;
95
+ action: import("zod").ZodOptional<import("zod").ZodString>;
96
+ status: import("zod").ZodOptional<import("zod").ZodEnum<{
97
+ success: "success";
98
+ failed: "failed";
99
+ }>>;
100
+ from: import("zod").ZodOptional<import("zod").ZodString>;
101
+ to: import("zod").ZodOptional<import("zod").ZodString>;
102
+ limit: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodCoercedNumber<unknown>>>;
103
+ offset: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodCoercedNumber<unknown>>>;
104
+ }, import("better-auth").$strip>;
105
+ }, import("./types").StorageReadResult>;
106
+ getAuditLog: import("better-call").StrictEndpoint<"/audit-log/:id", {
107
+ method: "GET";
108
+ use: ((inputContext: import("better-call").MiddlewareInputContext<import("better-call").MiddlewareOptions>) => Promise<{
109
+ session: {
110
+ session: Record<string, any> & {
111
+ id: string;
112
+ createdAt: Date;
113
+ updatedAt: Date;
114
+ userId: string;
115
+ expiresAt: Date;
116
+ token: string;
117
+ ipAddress?: string | null | undefined;
118
+ userAgent?: string | null | undefined;
119
+ };
120
+ user: Record<string, any> & {
121
+ id: string;
122
+ createdAt: Date;
123
+ updatedAt: Date;
124
+ email: string;
125
+ emailVerified: boolean;
126
+ name: string;
127
+ image?: string | null | undefined;
128
+ };
129
+ };
130
+ }>)[];
131
+ }, import("./types").AuditLogEntry>;
132
+ insertAuditLog: import("better-call").StrictEndpoint<"/audit-log/insert", {
133
+ method: "POST";
134
+ use: ((inputContext: import("better-call").MiddlewareInputContext<import("better-call").MiddlewareOptions>) => Promise<{
135
+ session: {
136
+ session: Record<string, any> & {
137
+ id: string;
138
+ createdAt: Date;
139
+ updatedAt: Date;
140
+ userId: string;
141
+ expiresAt: Date;
142
+ token: string;
143
+ ipAddress?: string | null | undefined;
144
+ userAgent?: string | null | undefined;
145
+ };
146
+ user: Record<string, any> & {
147
+ id: string;
148
+ createdAt: Date;
149
+ updatedAt: Date;
150
+ email: string;
151
+ emailVerified: boolean;
152
+ name: string;
153
+ image?: string | null | undefined;
154
+ };
155
+ };
156
+ }>)[];
157
+ body: import("zod").ZodObject<{
158
+ action: import("zod").ZodString;
159
+ status: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodEnum<{
160
+ success: "success";
161
+ failed: "failed";
162
+ }>>>;
163
+ severity: import("zod").ZodOptional<import("zod").ZodEnum<{
164
+ low: "low";
165
+ medium: "medium";
166
+ high: "high";
167
+ critical: "critical";
168
+ }>>;
169
+ metadata: import("zod").ZodDefault<import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodUnknown>>>;
170
+ }, import("better-auth").$strip>;
171
+ }, {
172
+ success: boolean;
173
+ }>;
174
+ };
175
+ rateLimit: {
176
+ pathMatcher: (path: string) => boolean;
177
+ window: number;
178
+ max: number;
179
+ }[];
180
+ };
181
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,SAAS,CAAC;AAoCjB,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAoBvC,CAAC;iCAEmB,CAAC;;;;;;;;;6BAO0D,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;iCAThF,CAAC;iCAEmB,CAAC;;;;;;;;;6BAO0D,CAAC;;;;;;;;;;;;;;;;iCAThF,CAAC;iCAEmB,CAAC;;;;;;;;;6BAO0D,CAAC;;;;;;;;;;;;;;;;;;;;;;;4BAP/D,MAAM;;;;EAMjC"}
@@ -0,0 +1,109 @@
1
+ import type { AuditLogOptions } from "./types";
2
+ export declare const baseSchema: {
3
+ auditLog: {
4
+ modelName: string;
5
+ fields: {
6
+ userId: {
7
+ type: "string";
8
+ required: boolean;
9
+ references: {
10
+ model: string;
11
+ field: string;
12
+ onDelete: "set null";
13
+ };
14
+ index: boolean;
15
+ };
16
+ action: {
17
+ type: "string";
18
+ required: boolean;
19
+ sortable: boolean;
20
+ index: boolean;
21
+ };
22
+ status: {
23
+ type: "string";
24
+ required: boolean;
25
+ sortable: boolean;
26
+ };
27
+ severity: {
28
+ type: "string";
29
+ required: boolean;
30
+ sortable: boolean;
31
+ };
32
+ ipAddress: {
33
+ type: "string";
34
+ required: boolean;
35
+ };
36
+ userAgent: {
37
+ type: "string";
38
+ required: boolean;
39
+ returned: boolean;
40
+ };
41
+ metadata: {
42
+ type: "string";
43
+ required: boolean;
44
+ };
45
+ createdAt: {
46
+ type: "date";
47
+ required: boolean;
48
+ sortable: boolean;
49
+ index: boolean;
50
+ defaultValue: () => Date;
51
+ };
52
+ };
53
+ };
54
+ };
55
+ export declare function buildSchema(options?: AuditLogOptions): {
56
+ auditLog: {
57
+ modelName: string;
58
+ fields: {
59
+ userId: {
60
+ type: "string";
61
+ required: boolean;
62
+ references: {
63
+ model: string;
64
+ field: string;
65
+ onDelete: "set null";
66
+ };
67
+ index: boolean;
68
+ };
69
+ action: {
70
+ type: "string";
71
+ required: boolean;
72
+ sortable: boolean;
73
+ index: boolean;
74
+ };
75
+ status: {
76
+ type: "string";
77
+ required: boolean;
78
+ sortable: boolean;
79
+ };
80
+ severity: {
81
+ type: "string";
82
+ required: boolean;
83
+ sortable: boolean;
84
+ };
85
+ ipAddress: {
86
+ type: "string";
87
+ required: boolean;
88
+ };
89
+ userAgent: {
90
+ type: "string";
91
+ required: boolean;
92
+ returned: boolean;
93
+ };
94
+ metadata: {
95
+ type: "string";
96
+ required: boolean;
97
+ };
98
+ createdAt: {
99
+ type: "date";
100
+ required: boolean;
101
+ sortable: boolean;
102
+ index: boolean;
103
+ defaultValue: () => Date;
104
+ };
105
+ };
106
+ };
107
+ };
108
+ export declare function getModelName(options?: AuditLogOptions): string;
109
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDtB,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEpD;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAE9D"}
@@ -0,0 +1,88 @@
1
+ export type AuditLogStatus = "success" | "failed";
2
+ export type AuditLogSeverity = "low" | "medium" | "high" | "critical";
3
+ export type PIIStrategy = "mask" | "hash" | "remove";
4
+ export interface AuditLogEntry {
5
+ id: string;
6
+ userId: string | null;
7
+ action: string;
8
+ status: AuditLogStatus;
9
+ severity: AuditLogSeverity;
10
+ ipAddress: string | null;
11
+ userAgent: string | null;
12
+ metadata: Record<string, unknown>;
13
+ createdAt: Date;
14
+ }
15
+ export interface StorageReadOptions {
16
+ userId?: string;
17
+ action?: string;
18
+ status?: AuditLogStatus;
19
+ from?: Date;
20
+ to?: Date;
21
+ limit: number;
22
+ offset: number;
23
+ }
24
+ export interface StorageReadResult {
25
+ entries: AuditLogEntry[];
26
+ total: number;
27
+ }
28
+ export interface AuditLogStorage {
29
+ write(entry: AuditLogEntry): Promise<void>;
30
+ read?(options: StorageReadOptions): Promise<StorageReadResult>;
31
+ readById?(id: string): Promise<AuditLogEntry | null>;
32
+ deleteOlderThan?(date: Date): Promise<number>;
33
+ }
34
+ export interface PIIRedactionOptions {
35
+ enabled: boolean;
36
+ fields?: string[];
37
+ strategy?: PIIStrategy;
38
+ }
39
+ export interface CaptureOptions {
40
+ ipAddress?: boolean;
41
+ userAgent?: boolean;
42
+ requestBody?: boolean;
43
+ }
44
+ export interface PathConfig {
45
+ severity?: AuditLogSeverity;
46
+ capture?: CaptureOptions;
47
+ }
48
+ export interface RetentionConfig {
49
+ enabled: boolean;
50
+ days: number;
51
+ }
52
+ export interface AuditLogOptions {
53
+ enabled?: boolean;
54
+ nonBlocking?: boolean;
55
+ storage?: AuditLogStorage;
56
+ paths?: (string | {
57
+ path: string;
58
+ config?: PathConfig;
59
+ })[];
60
+ piiRedaction?: PIIRedactionOptions;
61
+ capture?: CaptureOptions;
62
+ retention?: RetentionConfig;
63
+ schema?: {
64
+ auditLog?: {
65
+ modelName?: string;
66
+ fields?: Record<string, string>;
67
+ };
68
+ };
69
+ beforeLog?: (entry: Omit<AuditLogEntry, "id">) => Promise<Omit<AuditLogEntry, "id"> | null>;
70
+ afterLog?: (entry: AuditLogEntry) => Promise<void>;
71
+ }
72
+ export interface ResolvedOptions {
73
+ enabled: boolean;
74
+ nonBlocking: boolean;
75
+ storage: AuditLogStorage | undefined;
76
+ capture: Required<CaptureOptions>;
77
+ piiRedaction: {
78
+ enabled: boolean;
79
+ fields?: string[];
80
+ strategy: PIIStrategy;
81
+ };
82
+ retention: RetentionConfig | undefined;
83
+ beforeLog: AuditLogOptions["beforeLog"];
84
+ afterLog: AuditLogOptions["afterLog"];
85
+ shouldCapture: (path: string) => boolean;
86
+ getPathConfig: (path: string) => PathConfig | undefined;
87
+ }
88
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { normalizePath } from "./normalize-path";
2
+ export { inferSeverity } from "./severity";
3
+ export { extractRequestMeta } from "./request-meta";
4
+ export { redactPII, DEFAULT_PII_FIELDS } from "./sanitize";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function normalizePath(path: string): string;
2
+ //# sourceMappingURL=normalize-path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-path.d.ts","sourceRoot":"","sources":["../../src/utils/normalize-path.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD"}
@@ -0,0 +1,6 @@
1
+ import type { BetterAuthOptions } from "better-auth";
2
+ export declare function extractRequestMeta(request: Request | undefined, headers: Headers | undefined, options: BetterAuthOptions): {
3
+ ipAddress: string | null;
4
+ userAgent: string | null;
5
+ };
6
+ //# sourceMappingURL=request-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-meta.d.ts","sourceRoot":"","sources":["../../src/utils/request-meta.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,OAAO,EAAE,iBAAiB,GACzB;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAKxD"}
@@ -0,0 +1,4 @@
1
+ import type { PIIRedactionOptions } from "../types";
2
+ export declare const DEFAULT_PII_FIELDS: string[];
3
+ export declare function redactPII(data: Record<string, unknown>, config: PIIRedactionOptions): Promise<Record<string, unknown>>;
4
+ //# sourceMappingURL=sanitize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEpD,eAAO,MAAM,kBAAkB,UAY9B,CAAC;AAUF,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAoBlC"}
@@ -0,0 +1,3 @@
1
+ import type { AuditLogSeverity, AuditLogStatus } from "../types";
2
+ export declare function inferSeverity(action: string, status: AuditLogStatus): AuditLogSeverity;
3
+ //# sourceMappingURL=severity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"severity.d.ts","sourceRoot":"","sources":["../../src/utils/severity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAkBjE,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,GACrB,gBAAgB,CAMlB"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "better-auth-audit-logs",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "main": "./dist/index.cjs",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "require": "./dist/index.cjs",
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./client": {
14
+ "require": "./dist/client.cjs",
15
+ "import": "./dist/client.js",
16
+ "types": "./dist/client.d.ts"
17
+ }
18
+ },
19
+ "typesVersions": {
20
+ "*": {
21
+ "client": ["./dist/client.d.ts"]
22
+ }
23
+ },
24
+ "files": [
25
+ "dist"
26
+ ],
27
+ "scripts": {
28
+ "build": "bun build src/index.ts src/client.ts --outdir dist --target node --external better-auth --external zod && bun build src/index.ts src/client.ts --outdir dist --target node --format cjs --entry-naming '[dir]/[name].cjs' --external better-auth --external zod && tsc -p tsconfig.build.json",
29
+ "test": "bun test",
30
+ "typecheck": "tsc --noEmit",
31
+ "check": "tsc --noEmit && bun test"
32
+ },
33
+ "peerDependencies": {
34
+ "better-auth": ">=1.0.0",
35
+ "zod": ">=3.0.0",
36
+ "typescript": "^5"
37
+ },
38
+ "devDependencies": {
39
+ "@types/bun": "latest",
40
+ "better-auth": "^1.4.19",
41
+ "zod": "^4.3.6"
42
+ }
43
+ }