@nebutra/audit 0.1.2 → 2.0.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.
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -12
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +4 -18
- package/package.json +6 -14
package/dist/index.d.ts
CHANGED
|
@@ -67,6 +67,15 @@ export interface LegacyAuditQueryFilter {
|
|
|
67
67
|
export declare function __resetLegacyMemoryStorage(): void;
|
|
68
68
|
export declare const inMemoryStorage: AuditStorage;
|
|
69
69
|
export declare function createPrismaStorage(prisma: PrismaAuditLogClient): AuditStorage;
|
|
70
|
+
/**
|
|
71
|
+
* Wire host-owned Prisma (e.g. `getSystemDb` from the app data layer).
|
|
72
|
+
* This package never imports private `@nebutra/db` — hosts inject the client.
|
|
73
|
+
*
|
|
74
|
+
* AUDIT(no-tenant): audit logs are written for every tenant through a single
|
|
75
|
+
* shared storage adapter. Each AuditEvent carries its own organizationId/
|
|
76
|
+
* tenantId, so cross-tenant writes here are intentional.
|
|
77
|
+
*/
|
|
78
|
+
export declare function configureAuditSystemDb(getSystemDb: () => unknown): void;
|
|
70
79
|
export declare function setAuditStorage(newStorage: AuditStorage): void;
|
|
71
80
|
export declare function audit(event: Omit<LegacyAuditEvent, "id" | "timestamp">): Promise<void>;
|
|
72
81
|
export declare function queryAuditLogs(filter: LegacyAuditQueryFilter): Promise<LegacyAuditEvent[]>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
* - `@nebutra/audit/middleware`: `auditLogger(req, ...)`, `withAudit(...)`
|
|
15
15
|
* - `@nebutra/audit/providers`: `getAuditProvider()`, provider classes
|
|
16
16
|
*/
|
|
17
|
-
import { getSystemDb } from "@nebutra/db";
|
|
18
17
|
import { logger } from "@nebutra/logger";
|
|
19
18
|
export { auditLogger, extractRequestContext, withAudit, } from "./middleware";
|
|
20
19
|
export { ClickHouseAuditProvider, createAuditProvider, getAuditProvider, MemoryAuditProvider, PostgresAuditProvider, } from "./providers";
|
|
@@ -171,17 +170,23 @@ export function createPrismaStorage(prisma) {
|
|
|
171
170
|
// Audit Logger
|
|
172
171
|
// ============================================
|
|
173
172
|
let storage = inMemoryStorage;
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
173
|
+
/**
|
|
174
|
+
* Wire host-owned Prisma (e.g. `getSystemDb` from the app data layer).
|
|
175
|
+
* This package never imports private `@nebutra/db` — hosts inject the client.
|
|
176
|
+
*
|
|
177
|
+
* AUDIT(no-tenant): audit logs are written for every tenant through a single
|
|
178
|
+
* shared storage adapter. Each AuditEvent carries its own organizationId/
|
|
179
|
+
* tenantId, so cross-tenant writes here are intentional.
|
|
180
|
+
*/
|
|
181
|
+
export function configureAuditSystemDb(getSystemDb) {
|
|
182
|
+
try {
|
|
183
|
+
setAuditStorage(createPrismaStorage(getSystemDb()));
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
logger.warn("Prisma storage adapter failed to initialize, relying on in-memory audit logs", {
|
|
187
|
+
error: e,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
185
190
|
}
|
|
186
191
|
export function setAuditStorage(newStorage) {
|
|
187
192
|
storage = newStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,qEAAqE;IACrE,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAgBD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC,CAI9F;AAED,wBAAsB,mBAAmB,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAYA,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,qEAAqE;IACrE,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AAgBD;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC,CAI9F;AAED,wBAAsB,mBAAmB,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC,CAqCjG;AAED,qEAAqE;AACrE,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
|
package/dist/providers/index.js
CHANGED
|
@@ -45,25 +45,11 @@ export async function createAuditProvider(config = {}) {
|
|
|
45
45
|
}
|
|
46
46
|
return new MemoryAuditProvider();
|
|
47
47
|
case "postgres": {
|
|
48
|
-
|
|
48
|
+
// Host must pass `config.prisma` (e.g. getSystemDb()). Never import
|
|
49
|
+
// private `@nebutra/db` from this package.
|
|
50
|
+
const delegate = config.prisma;
|
|
49
51
|
if (!delegate) {
|
|
50
|
-
|
|
51
|
-
// Lazy import — keeps the package usable in test environments
|
|
52
|
-
// that mock @nebutra/db.
|
|
53
|
-
const dbModule = (await import("@nebutra/db"));
|
|
54
|
-
if (typeof dbModule.getSystemDb === "function") {
|
|
55
|
-
delegate = dbModule.getSystemDb();
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
logger.warn("[audit] Could not load @nebutra/db — falling back to memory provider", {
|
|
60
|
-
error: error instanceof Error ? error.message : String(error),
|
|
61
|
-
});
|
|
62
|
-
return new MemoryAuditProvider();
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
if (!delegate) {
|
|
66
|
-
logger.warn("[audit] Postgres provider requested but no Prisma client available");
|
|
52
|
+
logger.warn("[audit] Postgres provider requested but no Prisma client provided — pass config.prisma or use memory");
|
|
67
53
|
return new MemoryAuditProvider();
|
|
68
54
|
}
|
|
69
55
|
return new PostgresAuditProvider(delegate);
|
package/package.json
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nebutra/audit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Audit logging for sensitive operations",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"nebutra": {
|
|
9
|
+
"graph": "core",
|
|
9
10
|
"status": "wip",
|
|
10
11
|
"productionReady": false,
|
|
11
12
|
"requires": [
|
|
12
|
-
"@nebutra/
|
|
13
|
-
"
|
|
13
|
+
"@nebutra/logger",
|
|
14
|
+
"Host-injected getSystemDb via configureAuditSystemDb for durable Prisma storage (optional)"
|
|
14
15
|
],
|
|
15
16
|
"gaps": [
|
|
16
17
|
"No production app integrations",
|
|
@@ -47,21 +48,12 @@
|
|
|
47
48
|
],
|
|
48
49
|
"dependencies": {
|
|
49
50
|
"zod": "^4.3.6",
|
|
50
|
-
"@nebutra/logger": "0.
|
|
51
|
-
},
|
|
52
|
-
"peerDependencies": {
|
|
53
|
-
"@nebutra/db": "0.1.2"
|
|
54
|
-
},
|
|
55
|
-
"peerDependenciesMeta": {
|
|
56
|
-
"@nebutra/db": {
|
|
57
|
-
"optional": true
|
|
58
|
-
}
|
|
51
|
+
"@nebutra/logger": "2.0.0"
|
|
59
52
|
},
|
|
60
53
|
"devDependencies": {
|
|
61
54
|
"@types/node": "^22.19.15",
|
|
62
55
|
"typescript": "^5.9.3",
|
|
63
|
-
"vitest": "^4.0.18"
|
|
64
|
-
"@nebutra/db": "0.1.2"
|
|
56
|
+
"vitest": "^4.0.18"
|
|
65
57
|
},
|
|
66
58
|
"homepage": "https://github.com/Nebutra/Nebutra-Sailor/tree/main/packages/iam/audit#readme",
|
|
67
59
|
"repository": {
|