@objectstack/plugin-audit 4.0.4 → 4.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.
- package/dist/index.d.mts +11 -2287
- package/dist/index.d.ts +11 -2287
- package/dist/index.js +298 -110
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +297 -109
- package/dist/index.mjs.map +1 -1
- package/package.json +32 -6
- package/.turbo/turbo-build.log +0 -22
- package/CHANGELOG.md +0 -73
- package/src/audit-plugin.ts +0 -47
- package/src/index.ts +0 -13
- package/src/objects/index.ts +0 -9
- package/src/objects/sys-audit-log.object.ts +0 -116
- package/tsconfig.json +0 -18
package/CHANGELOG.md
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# @objectstack/plugin-audit
|
|
2
|
-
|
|
3
|
-
## 4.0.4
|
|
4
|
-
|
|
5
|
-
### Patch Changes
|
|
6
|
-
|
|
7
|
-
- Updated dependencies [326b66b]
|
|
8
|
-
- @objectstack/spec@4.0.4
|
|
9
|
-
- @objectstack/core@4.0.4
|
|
10
|
-
|
|
11
|
-
## 4.0.3
|
|
12
|
-
|
|
13
|
-
### Patch Changes
|
|
14
|
-
|
|
15
|
-
- @objectstack/spec@4.0.3
|
|
16
|
-
- @objectstack/core@4.0.3
|
|
17
|
-
|
|
18
|
-
## 4.0.2
|
|
19
|
-
|
|
20
|
-
### Patch Changes
|
|
21
|
-
|
|
22
|
-
- Updated dependencies [5f659e9]
|
|
23
|
-
- @objectstack/spec@4.0.2
|
|
24
|
-
- @objectstack/core@4.0.2
|
|
25
|
-
|
|
26
|
-
## 4.0.0
|
|
27
|
-
|
|
28
|
-
### Patch Changes
|
|
29
|
-
|
|
30
|
-
- Updated dependencies [f08ffc3]
|
|
31
|
-
- Updated dependencies [e0b0a78]
|
|
32
|
-
- @objectstack/spec@4.0.0
|
|
33
|
-
- @objectstack/core@4.0.0
|
|
34
|
-
|
|
35
|
-
## 3.3.1
|
|
36
|
-
|
|
37
|
-
### Patch Changes
|
|
38
|
-
|
|
39
|
-
- @objectstack/spec@3.3.1
|
|
40
|
-
- @objectstack/core@3.3.1
|
|
41
|
-
|
|
42
|
-
## 3.2.10
|
|
43
|
-
|
|
44
|
-
### Patch Changes
|
|
45
|
-
|
|
46
|
-
- @objectstack/spec@3.3.0
|
|
47
|
-
- @objectstack/core@3.3.0
|
|
48
|
-
|
|
49
|
-
## 3.2.9
|
|
50
|
-
|
|
51
|
-
### Patch Changes
|
|
52
|
-
|
|
53
|
-
- @objectstack/spec@3.2.9
|
|
54
|
-
- @objectstack/core@3.2.9
|
|
55
|
-
|
|
56
|
-
## 3.2.8
|
|
57
|
-
|
|
58
|
-
### Patch Changes
|
|
59
|
-
|
|
60
|
-
- @objectstack/spec@3.2.8
|
|
61
|
-
- @objectstack/core@3.2.8
|
|
62
|
-
|
|
63
|
-
## 3.2.7
|
|
64
|
-
|
|
65
|
-
### Patch Changes
|
|
66
|
-
|
|
67
|
-
- @objectstack/spec@3.2.7
|
|
68
|
-
|
|
69
|
-
## 3.2.6
|
|
70
|
-
|
|
71
|
-
### Patch Changes
|
|
72
|
-
|
|
73
|
-
- @objectstack/spec@3.2.6
|
package/src/audit-plugin.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
-
|
|
3
|
-
import type { Plugin, PluginContext } from '@objectstack/core';
|
|
4
|
-
import { SysAuditLog } from './objects/index.js';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* AuditPlugin
|
|
8
|
-
*
|
|
9
|
-
* Registers the sys_audit_log system object with ObjectQL so it is
|
|
10
|
-
* discoverable by the studio and available for CRUD operations.
|
|
11
|
-
*/
|
|
12
|
-
export class AuditPlugin implements Plugin {
|
|
13
|
-
name = 'com.objectstack.audit';
|
|
14
|
-
type = 'standard';
|
|
15
|
-
version = '1.0.0';
|
|
16
|
-
dependencies = ['com.objectstack.engine.objectql'];
|
|
17
|
-
|
|
18
|
-
async init(ctx: PluginContext): Promise<void> {
|
|
19
|
-
// Register audit system objects via the manifest service.
|
|
20
|
-
ctx.getService<{ register(m: any): void }>('manifest').register({
|
|
21
|
-
id: 'com.objectstack.audit',
|
|
22
|
-
name: 'Audit',
|
|
23
|
-
version: '1.0.0',
|
|
24
|
-
type: 'plugin',
|
|
25
|
-
namespace: 'sys',
|
|
26
|
-
objects: [SysAuditLog],
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
// Contribute navigation items to the Setup App (if SetupPlugin is loaded).
|
|
30
|
-
try {
|
|
31
|
-
const setupNav = ctx.getService<{ contribute(c: any): void }>('setupNav');
|
|
32
|
-
if (setupNav) {
|
|
33
|
-
setupNav.contribute({
|
|
34
|
-
areaId: 'area_system',
|
|
35
|
-
items: [
|
|
36
|
-
{ id: 'nav_audit_logs', type: 'object', label: 'Audit Logs', objectName: 'audit_log', icon: 'scroll-text', order: 10 },
|
|
37
|
-
],
|
|
38
|
-
});
|
|
39
|
-
ctx.logger.info('Audit navigation items contributed to Setup App');
|
|
40
|
-
}
|
|
41
|
-
} catch {
|
|
42
|
-
// SetupPlugin not loaded — skip silently
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
ctx.logger.info('Audit Plugin initialized');
|
|
46
|
-
}
|
|
47
|
-
}
|
package/src/index.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @objectstack/plugin-audit
|
|
5
|
-
*
|
|
6
|
-
* Audit Plugin for ObjectStack
|
|
7
|
-
* Provides the sys_audit_log system object definition for immutable audit trails.
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
export { AuditPlugin } from './audit-plugin.js';
|
|
11
|
-
|
|
12
|
-
// System Object Definitions (sys namespace)
|
|
13
|
-
export { SysAuditLog } from './objects/index.js';
|
package/src/objects/index.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Audit Plugin — System Object Definitions (sys namespace)
|
|
5
|
-
*
|
|
6
|
-
* Canonical ObjectSchema definitions for audit-related system objects.
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export { SysAuditLog } from './sys-audit-log.object.js';
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
// Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
|
|
2
|
-
|
|
3
|
-
import { ObjectSchema, Field } from '@objectstack/spec/data';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* sys_audit_log — System Audit Log Object
|
|
7
|
-
*
|
|
8
|
-
* Immutable audit trail for all significant platform events.
|
|
9
|
-
* Records who did what, when, and the before/after state.
|
|
10
|
-
*
|
|
11
|
-
* @namespace sys
|
|
12
|
-
*/
|
|
13
|
-
export const SysAuditLog = ObjectSchema.create({
|
|
14
|
-
namespace: 'sys',
|
|
15
|
-
name: 'audit_log',
|
|
16
|
-
label: 'Audit Log',
|
|
17
|
-
pluralLabel: 'Audit Logs',
|
|
18
|
-
icon: 'scroll-text',
|
|
19
|
-
isSystem: true,
|
|
20
|
-
description: 'Immutable audit trail for platform events',
|
|
21
|
-
titleFormat: '{action} on {object_name} by {user_id}',
|
|
22
|
-
compactLayout: ['action', 'object_name', 'user_id', 'created_at'],
|
|
23
|
-
|
|
24
|
-
fields: {
|
|
25
|
-
id: Field.text({
|
|
26
|
-
label: 'Audit Log ID',
|
|
27
|
-
required: true,
|
|
28
|
-
readonly: true,
|
|
29
|
-
}),
|
|
30
|
-
|
|
31
|
-
created_at: Field.datetime({
|
|
32
|
-
label: 'Timestamp',
|
|
33
|
-
required: true,
|
|
34
|
-
defaultValue: 'NOW()',
|
|
35
|
-
readonly: true,
|
|
36
|
-
}),
|
|
37
|
-
|
|
38
|
-
user_id: Field.text({
|
|
39
|
-
label: 'User ID',
|
|
40
|
-
required: false,
|
|
41
|
-
description: 'User who performed the action (null for system actions)',
|
|
42
|
-
}),
|
|
43
|
-
|
|
44
|
-
action: Field.select(['create', 'update', 'delete', 'restore', 'login', 'logout', 'permission_change', 'config_change', 'export', 'import'], {
|
|
45
|
-
label: 'Action',
|
|
46
|
-
required: true,
|
|
47
|
-
description: 'Action type (snake_case). Values: create, update, delete, restore, login, logout, permission_change, config_change, export, import',
|
|
48
|
-
}),
|
|
49
|
-
|
|
50
|
-
object_name: Field.text({
|
|
51
|
-
label: 'Object Name',
|
|
52
|
-
required: false,
|
|
53
|
-
maxLength: 255,
|
|
54
|
-
description: 'Target object (e.g. sys_user, project_task)',
|
|
55
|
-
}),
|
|
56
|
-
|
|
57
|
-
record_id: Field.text({
|
|
58
|
-
label: 'Record ID',
|
|
59
|
-
required: false,
|
|
60
|
-
description: 'ID of the affected record',
|
|
61
|
-
}),
|
|
62
|
-
|
|
63
|
-
old_value: Field.textarea({
|
|
64
|
-
label: 'Old Value',
|
|
65
|
-
required: false,
|
|
66
|
-
description: 'JSON-serialized previous state',
|
|
67
|
-
}),
|
|
68
|
-
|
|
69
|
-
new_value: Field.textarea({
|
|
70
|
-
label: 'New Value',
|
|
71
|
-
required: false,
|
|
72
|
-
description: 'JSON-serialized new state',
|
|
73
|
-
}),
|
|
74
|
-
|
|
75
|
-
ip_address: Field.text({
|
|
76
|
-
label: 'IP Address',
|
|
77
|
-
required: false,
|
|
78
|
-
maxLength: 45,
|
|
79
|
-
}),
|
|
80
|
-
|
|
81
|
-
user_agent: Field.textarea({
|
|
82
|
-
label: 'User Agent',
|
|
83
|
-
required: false,
|
|
84
|
-
}),
|
|
85
|
-
|
|
86
|
-
tenant_id: Field.text({
|
|
87
|
-
label: 'Tenant ID',
|
|
88
|
-
required: false,
|
|
89
|
-
description: 'Tenant context for multi-tenant isolation',
|
|
90
|
-
}),
|
|
91
|
-
|
|
92
|
-
metadata: Field.textarea({
|
|
93
|
-
label: 'Metadata',
|
|
94
|
-
required: false,
|
|
95
|
-
description: 'JSON-serialized additional context',
|
|
96
|
-
}),
|
|
97
|
-
},
|
|
98
|
-
|
|
99
|
-
indexes: [
|
|
100
|
-
{ fields: ['created_at'] },
|
|
101
|
-
{ fields: ['user_id'] },
|
|
102
|
-
{ fields: ['object_name', 'record_id'] },
|
|
103
|
-
{ fields: ['action'] },
|
|
104
|
-
{ fields: ['tenant_id'] },
|
|
105
|
-
],
|
|
106
|
-
|
|
107
|
-
enable: {
|
|
108
|
-
trackHistory: false, // Audit logs are themselves the audit trail
|
|
109
|
-
searchable: true,
|
|
110
|
-
apiEnabled: true,
|
|
111
|
-
apiMethods: ['get', 'list'], // Read-only — audit logs are immutable; creation happens via internal system hooks only
|
|
112
|
-
trash: false, // Never soft-delete audit logs
|
|
113
|
-
mru: false,
|
|
114
|
-
clone: false,
|
|
115
|
-
},
|
|
116
|
-
});
|
package/tsconfig.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../../tsconfig.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"outDir": "./dist",
|
|
5
|
-
"rootDir": "./src",
|
|
6
|
-
"types": [
|
|
7
|
-
"node"
|
|
8
|
-
]
|
|
9
|
-
},
|
|
10
|
-
"include": [
|
|
11
|
-
"src/**/*"
|
|
12
|
-
],
|
|
13
|
-
"exclude": [
|
|
14
|
-
"dist",
|
|
15
|
-
"node_modules",
|
|
16
|
-
"**/*.test.ts"
|
|
17
|
-
]
|
|
18
|
-
}
|