@revealui/core 0.3.0 → 0.5.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/client/admin/components/AdminDashboard.d.ts.map +1 -1
- package/dist/client/admin/components/AdminDashboard.js +20 -3
- package/dist/client/richtext/index.d.ts.map +1 -1
- package/dist/client/richtext/plugins/FloatingToolbarPlugin.js +1 -3
- package/dist/collections/operations/create.d.ts +2 -1
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +28 -1
- package/dist/database/type-adapter.d.ts.map +1 -1
- package/dist/features.d.ts +7 -3
- package/dist/features.d.ts.map +1 -1
- package/dist/features.js +2 -0
- package/dist/globals/GlobalOperations.d.ts.map +1 -1
- package/dist/globals/GlobalOperations.js +12 -2
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/license.d.ts +6 -0
- package/dist/license.d.ts.map +1 -1
- package/dist/license.js +14 -1
- package/dist/monitoring/alerts.d.ts +4 -4
- package/dist/monitoring/alerts.d.ts.map +1 -1
- package/dist/plugins/nested-docs.d.ts.map +1 -1
- package/dist/plugins/nested-docs.js +0 -1
- package/dist/queries/queryBuilder.d.ts.map +1 -1
- package/dist/queries/queryBuilder.js +4 -3
- package/dist/richtext/index.d.ts.map +1 -1
- package/dist/storage/vercel-blob.d.ts.map +1 -1
- package/dist/storage/vercel-blob.js +3 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/core.d.ts +1 -1
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/extensions.d.ts.map +1 -1
- package/dist/types/frontend.d.ts.map +1 -1
- package/dist/types/legacy.d.ts.map +1 -1
- package/dist/types/query.d.ts.map +1 -1
- package/dist/types/runtime.d.ts +1 -0
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/utils/error-responses.d.ts.map +1 -1
- package/dist/utils/error-responses.js +2 -3
- package/package.json +23 -23
- package/dist/caching/app-cache.d.ts +0 -242
- package/dist/caching/app-cache.d.ts.map +0 -1
- package/dist/caching/app-cache.js +0 -438
- package/dist/caching/cdn-config.d.ts +0 -155
- package/dist/caching/cdn-config.d.ts.map +0 -1
- package/dist/caching/cdn-config.js +0 -415
- package/dist/caching/edge-cache.d.ts +0 -177
- package/dist/caching/edge-cache.d.ts.map +0 -1
- package/dist/caching/edge-cache.js +0 -414
- package/dist/caching/service-worker.d.ts +0 -157
- package/dist/caching/service-worker.d.ts.map +0 -1
- package/dist/caching/service-worker.js +0 -438
- package/dist/client/admin/utils/auth.d.ts +0 -23
- package/dist/client/admin/utils/auth.d.ts.map +0 -1
- package/dist/client/admin/utils/auth.js +0 -52
- package/dist/client/http/client.d.ts +0 -15
- package/dist/client/http/client.d.ts.map +0 -1
- package/dist/client/http/client.js +0 -49
- package/dist/client/http/fetchBanner.d.ts +0 -18
- package/dist/client/http/fetchBanner.d.ts.map +0 -1
- package/dist/client/http/fetchBanner.js +0 -44
- package/dist/client/http/fetchCard.d.ts +0 -18
- package/dist/client/http/fetchCard.d.ts.map +0 -1
- package/dist/client/http/fetchCard.js +0 -46
- package/dist/client/http/fetchEvents.d.ts +0 -18
- package/dist/client/http/fetchEvents.d.ts.map +0 -1
- package/dist/client/http/fetchEvents.js +0 -44
- package/dist/client/http/fetchHero.d.ts +0 -17
- package/dist/client/http/fetchHero.d.ts.map +0 -1
- package/dist/client/http/fetchHero.js +0 -55
- package/dist/client/http/fetchMainInfos.d.ts +0 -17
- package/dist/client/http/fetchMainInfos.d.ts.map +0 -1
- package/dist/client/http/fetchMainInfos.js +0 -44
- package/dist/client/http/fetchVideos.d.ts +0 -13
- package/dist/client/http/fetchVideos.d.ts.map +0 -1
- package/dist/client/http/fetchVideos.js +0 -36
- package/dist/client/http/index.d.ts +0 -19
- package/dist/client/http/index.d.ts.map +0 -1
- package/dist/client/http/index.js +0 -11
- package/dist/error-handling/circuit-breaker.d.ts +0 -262
- package/dist/error-handling/circuit-breaker.d.ts.map +0 -1
- package/dist/error-handling/circuit-breaker.js +0 -550
- package/dist/error-handling/retry.d.ts +0 -194
- package/dist/error-handling/retry.d.ts.map +0 -1
- package/dist/error-handling/retry.js +0 -455
- package/dist/errors/index.d.ts +0 -23
- package/dist/errors/index.d.ts.map +0 -1
- package/dist/errors/index.js +0 -40
- package/dist/generated/agents/index.d.ts +0 -8
- package/dist/generated/agents/index.d.ts.map +0 -1
- package/dist/generated/agents/index.js +0 -7
- package/dist/generated/components/index.d.ts +0 -8
- package/dist/generated/components/index.d.ts.map +0 -1
- package/dist/generated/components/index.js +0 -7
- package/dist/generated/functions/index.d.ts +0 -8
- package/dist/generated/functions/index.d.ts.map +0 -1
- package/dist/generated/functions/index.js +0 -7
- package/dist/generated/hooks/index.d.ts +0 -8
- package/dist/generated/hooks/index.d.ts.map +0 -1
- package/dist/generated/hooks/index.js +0 -7
- package/dist/generated/plans/index.d.ts +0 -8
- package/dist/generated/plans/index.d.ts.map +0 -1
- package/dist/generated/plans/index.js +0 -7
- package/dist/generated/prompts/index.d.ts +0 -8
- package/dist/generated/prompts/index.d.ts.map +0 -1
- package/dist/generated/prompts/index.js +0 -7
- package/dist/generated/tools/index.d.ts +0 -8
- package/dist/generated/tools/index.d.ts.map +0 -1
- package/dist/generated/tools/index.js +0 -7
- package/dist/generated/types/supabase.d.ts +0 -193
- package/dist/generated/types/supabase.d.ts.map +0 -1
- package/dist/generated/types/supabase.js +0 -5
- package/dist/optimization/asset-optimizer.d.ts +0 -206
- package/dist/optimization/asset-optimizer.d.ts.map +0 -1
- package/dist/optimization/asset-optimizer.js +0 -336
- package/dist/optimization/build-optimizer.d.ts +0 -202
- package/dist/optimization/build-optimizer.d.ts.map +0 -1
- package/dist/optimization/build-optimizer.js +0 -271
- package/dist/optimization/bundle-analyzer.d.ts +0 -98
- package/dist/optimization/bundle-analyzer.d.ts.map +0 -1
- package/dist/optimization/bundle-analyzer.js +0 -346
- package/dist/optimization/code-splitting.d.ts +0 -121
- package/dist/optimization/code-splitting.d.ts.map +0 -1
- package/dist/optimization/code-splitting.js +0 -261
- package/dist/plugin/index.d.ts +0 -12
- package/dist/plugin/index.d.ts.map +0 -1
- package/dist/plugin/index.js +0 -4
- package/dist/security/audit.d.ts +0 -188
- package/dist/security/audit.d.ts.map +0 -1
- package/dist/security/audit.js +0 -433
- package/dist/security/auth.d.ts +0 -110
- package/dist/security/auth.d.ts.map +0 -1
- package/dist/security/auth.js +0 -257
- package/dist/security/authorization.d.ts +0 -211
- package/dist/security/authorization.d.ts.map +0 -1
- package/dist/security/authorization.js +0 -492
- package/dist/security/encryption.d.ts +0 -226
- package/dist/security/encryption.d.ts.map +0 -1
- package/dist/security/encryption.js +0 -534
- package/dist/security/gdpr-storage.d.ts +0 -102
- package/dist/security/gdpr-storage.d.ts.map +0 -1
- package/dist/security/gdpr-storage.js +0 -65
- package/dist/security/gdpr.d.ts +0 -320
- package/dist/security/gdpr.d.ts.map +0 -1
- package/dist/security/gdpr.js +0 -531
- package/dist/security/headers.d.ts +0 -184
- package/dist/security/headers.d.ts.map +0 -1
- package/dist/security/headers.js +0 -420
- package/dist/utils/jwt-validation.d.ts +0 -14
- package/dist/utils/jwt-validation.d.ts.map +0 -1
- package/dist/utils/jwt-validation.js +0 -36
- package/dist/utils/request-headers.d.ts +0 -15
- package/dist/utils/request-headers.d.ts.map +0 -1
- package/dist/utils/request-headers.js +0 -31
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Code Splitting Utilities
|
|
3
|
-
*
|
|
4
|
-
* Helpers for dynamic imports, lazy loading, and code splitting
|
|
5
|
-
*/
|
|
6
|
-
import { lazy } from 'react';
|
|
7
|
-
import { logger } from '../observability/logger.js';
|
|
8
|
-
export function lazyWithRetry(importFn, options = {}) {
|
|
9
|
-
const { maxRetries = 3, retryDelay = 1000 } = options;
|
|
10
|
-
return lazy(() => {
|
|
11
|
-
return new Promise((resolve, reject) => {
|
|
12
|
-
let retries = 0;
|
|
13
|
-
const attemptImport = () => {
|
|
14
|
-
importFn()
|
|
15
|
-
.then(resolve)
|
|
16
|
-
.catch((error) => {
|
|
17
|
-
if (retries < maxRetries) {
|
|
18
|
-
retries++;
|
|
19
|
-
logger.warn('Import failed, retrying', { attempt: retries, maxRetries });
|
|
20
|
-
setTimeout(attemptImport, retryDelay);
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
logger.error('Import failed after max retries', error instanceof Error ? error : new Error(String(error)), { maxRetries });
|
|
24
|
-
reject(error);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
attemptImport();
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Preload component
|
|
34
|
-
*/
|
|
35
|
-
export function preloadComponent(importFn) {
|
|
36
|
-
return importFn();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Lazy load with prefetch on hover
|
|
40
|
-
*/
|
|
41
|
-
export function lazyWithPrefetch(importFn) {
|
|
42
|
-
let importPromise = null;
|
|
43
|
-
const prefetch = () => {
|
|
44
|
-
if (!importPromise) {
|
|
45
|
-
importPromise = importFn();
|
|
46
|
-
}
|
|
47
|
-
return importPromise;
|
|
48
|
-
};
|
|
49
|
-
const Component = lazy(() => {
|
|
50
|
-
if (!importPromise) {
|
|
51
|
-
importPromise = importFn();
|
|
52
|
-
}
|
|
53
|
-
return importPromise;
|
|
54
|
-
});
|
|
55
|
-
return { Component, prefetch };
|
|
56
|
-
}
|
|
57
|
-
export function createRoutes(configs) {
|
|
58
|
-
return configs.map((config) => ({
|
|
59
|
-
path: config.path,
|
|
60
|
-
Component: lazy(config.component),
|
|
61
|
-
preload: config.preload ? () => config.component() : undefined,
|
|
62
|
-
}));
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Chunk naming helper
|
|
66
|
-
*/
|
|
67
|
-
export function createChunkName(name) {
|
|
68
|
-
return name.replace(/[^a-zA-Z0-9]/g, '-').toLowerCase();
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Prefetch multiple components
|
|
72
|
-
*/
|
|
73
|
-
export function prefetchComponents(importFns) {
|
|
74
|
-
return Promise.all(importFns.map((fn) => fn()));
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Idle callback prefetch
|
|
78
|
-
*/
|
|
79
|
-
export function prefetchOnIdle(importFn) {
|
|
80
|
-
if ('requestIdleCallback' in window) {
|
|
81
|
-
window.requestIdleCallback(() => importFn());
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
// Fallback for browsers without requestIdleCallback
|
|
85
|
-
setTimeout(() => importFn(), 1);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Intersection observer prefetch
|
|
90
|
-
*/
|
|
91
|
-
export function prefetchOnVisible(element, importFn, options) {
|
|
92
|
-
if (!element || typeof IntersectionObserver === 'undefined') {
|
|
93
|
-
return () => { };
|
|
94
|
-
}
|
|
95
|
-
const observer = new IntersectionObserver((entries) => {
|
|
96
|
-
for (const entry of entries) {
|
|
97
|
-
if (entry.isIntersecting) {
|
|
98
|
-
importFn();
|
|
99
|
-
observer.disconnect();
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}, options);
|
|
103
|
-
observer.observe(element);
|
|
104
|
-
return () => observer.disconnect();
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Media query based loading
|
|
108
|
-
*/
|
|
109
|
-
export function loadOnMediaQuery(query, importFn) {
|
|
110
|
-
if (typeof window === 'undefined') {
|
|
111
|
-
return () => { };
|
|
112
|
-
}
|
|
113
|
-
const mediaQuery = window.matchMedia(query);
|
|
114
|
-
const handleChange = (e) => {
|
|
115
|
-
if (e.matches) {
|
|
116
|
-
importFn();
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
// Check initial state
|
|
120
|
-
if (mediaQuery.matches) {
|
|
121
|
-
importFn();
|
|
122
|
-
}
|
|
123
|
-
// Listen for changes
|
|
124
|
-
mediaQuery.addEventListener('change', handleChange);
|
|
125
|
-
return () => mediaQuery.removeEventListener('change', handleChange);
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Load on interaction (click, hover, focus)
|
|
129
|
-
*/
|
|
130
|
-
export function loadOnInteraction(element, importFn, events = ['mouseenter', 'focus']) {
|
|
131
|
-
if (!element) {
|
|
132
|
-
return () => { };
|
|
133
|
-
}
|
|
134
|
-
let loaded = false;
|
|
135
|
-
const handleInteraction = () => {
|
|
136
|
-
if (!loaded) {
|
|
137
|
-
loaded = true;
|
|
138
|
-
importFn();
|
|
139
|
-
cleanup();
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
const cleanup = () => {
|
|
143
|
-
for (const event of events) {
|
|
144
|
-
element.removeEventListener(event, handleInteraction);
|
|
145
|
-
}
|
|
146
|
-
};
|
|
147
|
-
for (const event of events) {
|
|
148
|
-
element.addEventListener(event, handleInteraction, { once: true });
|
|
149
|
-
}
|
|
150
|
-
return cleanup;
|
|
151
|
-
}
|
|
152
|
-
export const VENDOR_CHUNK_CONFIGS = [
|
|
153
|
-
{
|
|
154
|
-
name: 'react-vendors',
|
|
155
|
-
test: /[\\/]node_modules[\\/](react|react-dom|react-router|react-router-dom)[\\/]/,
|
|
156
|
-
priority: 10,
|
|
157
|
-
},
|
|
158
|
-
{
|
|
159
|
-
name: 'ui-vendors',
|
|
160
|
-
test: /[\\/]node_modules[\\/](class-variance-authority|clsx)[\\/]/,
|
|
161
|
-
priority: 9,
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
name: 'utils-vendors',
|
|
165
|
-
test: /[\\/]node_modules[\\/](lodash|date-fns|classnames|clsx)[\\/]/,
|
|
166
|
-
priority: 8,
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
name: 'vendors',
|
|
170
|
-
test: /[\\/]node_modules[\\/]/,
|
|
171
|
-
priority: 5,
|
|
172
|
-
},
|
|
173
|
-
];
|
|
174
|
-
/**
|
|
175
|
-
* Generate webpack splitChunks config
|
|
176
|
-
*/
|
|
177
|
-
export function generateSplitChunksConfig(customChunks = []) {
|
|
178
|
-
const chunks = [...VENDOR_CHUNK_CONFIGS, ...customChunks];
|
|
179
|
-
const cacheGroups = {};
|
|
180
|
-
for (const chunk of chunks) {
|
|
181
|
-
cacheGroups[chunk.name] = {
|
|
182
|
-
test: chunk.test,
|
|
183
|
-
priority: chunk.priority || 5,
|
|
184
|
-
reuseExistingChunk: true,
|
|
185
|
-
enforce: true,
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
return {
|
|
189
|
-
chunks: 'all',
|
|
190
|
-
maxInitialRequests: 25,
|
|
191
|
-
maxAsyncRequests: 25,
|
|
192
|
-
minSize: 20000,
|
|
193
|
-
cacheGroups,
|
|
194
|
-
};
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Module concatenation helper
|
|
198
|
-
*/
|
|
199
|
-
export function shouldConcatenateModule(modulePath) {
|
|
200
|
-
// Don't concatenate node_modules by default
|
|
201
|
-
if (modulePath.includes('node_modules')) {
|
|
202
|
-
return false;
|
|
203
|
-
}
|
|
204
|
-
// Concatenate ES modules
|
|
205
|
-
return modulePath.endsWith('.js') || modulePath.endsWith('.ts');
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Inline critical scripts
|
|
209
|
-
*/
|
|
210
|
-
export function shouldInlineScript(scriptPath, size) {
|
|
211
|
-
// Inline if:
|
|
212
|
-
// 1. Critical script (runtime, polyfills)
|
|
213
|
-
// 2. Small size (<5KB)
|
|
214
|
-
const isCritical = scriptPath.includes('runtime') || scriptPath.includes('polyfill');
|
|
215
|
-
const isSmall = size < 5 * 1024;
|
|
216
|
-
return isCritical || isSmall;
|
|
217
|
-
}
|
|
218
|
-
export const DEFAULT_BUDGETS = {
|
|
219
|
-
maxSize: 500 * 1024, // 500KB total
|
|
220
|
-
maxInitialSize: 200 * 1024, // 200KB initial
|
|
221
|
-
maxAsyncSize: 100 * 1024, // 100KB per async chunk
|
|
222
|
-
maxCSSSize: 50 * 1024, // 50KB CSS
|
|
223
|
-
};
|
|
224
|
-
export function checkBundleBudgets(stats, budgets = DEFAULT_BUDGETS) {
|
|
225
|
-
const violations = [];
|
|
226
|
-
if (stats.totalSize > budgets.maxSize) {
|
|
227
|
-
violations.push({
|
|
228
|
-
type: 'total',
|
|
229
|
-
actual: stats.totalSize,
|
|
230
|
-
budget: budgets.maxSize,
|
|
231
|
-
exceeded: stats.totalSize - budgets.maxSize,
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
if (stats.initialSize > budgets.maxInitialSize) {
|
|
235
|
-
violations.push({
|
|
236
|
-
type: 'initial',
|
|
237
|
-
actual: stats.initialSize,
|
|
238
|
-
budget: budgets.maxInitialSize,
|
|
239
|
-
exceeded: stats.initialSize - budgets.maxInitialSize,
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
for (const asyncSize of stats.asyncSizes) {
|
|
243
|
-
if (asyncSize > budgets.maxAsyncSize) {
|
|
244
|
-
violations.push({
|
|
245
|
-
type: 'async',
|
|
246
|
-
actual: asyncSize,
|
|
247
|
-
budget: budgets.maxAsyncSize,
|
|
248
|
-
exceeded: asyncSize - budgets.maxAsyncSize,
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
if (stats.cssSize > budgets.maxCSSSize) {
|
|
253
|
-
violations.push({
|
|
254
|
-
type: 'css',
|
|
255
|
-
actual: stats.cssSize,
|
|
256
|
-
budget: budgets.maxCSSSize,
|
|
257
|
-
exceeded: stats.cssSize - budgets.maxCSSSize,
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
return violations;
|
|
261
|
-
}
|
package/dist/plugin/index.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Plugin } from 'vite';
|
|
2
|
-
interface RevealUIOptions {
|
|
3
|
-
prerender?: boolean | {
|
|
4
|
-
partial?: boolean;
|
|
5
|
-
noExtraDir?: boolean;
|
|
6
|
-
parallel?: number;
|
|
7
|
-
disableAutoRun?: boolean;
|
|
8
|
-
};
|
|
9
|
-
}
|
|
10
|
-
export default function revealui(options?: RevealUIOptions): Plugin;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAElC,UAAU,eAAe;IACvB,SAAS,CAAC,EACN,OAAO,GACP;QACE,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,cAAc,CAAC,EAAE,OAAO,CAAA;KACzB,CAAA;CACN;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,MAAM,CAGtE"}
|
package/dist/plugin/index.js
DELETED
package/dist/security/audit.d.ts
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Audit Logging System
|
|
3
|
-
*
|
|
4
|
-
* Track security-relevant events and user actions for compliance
|
|
5
|
-
*/
|
|
6
|
-
export type AuditEventType = 'auth.login' | 'auth.logout' | 'auth.failed_login' | 'auth.password_change' | 'auth.password_reset' | 'auth.mfa_enabled' | 'auth.mfa_disabled' | 'user.create' | 'user.update' | 'user.delete' | 'user.view' | 'data.create' | 'data.read' | 'data.update' | 'data.delete' | 'data.export' | 'permission.grant' | 'permission.revoke' | 'role.assign' | 'role.remove' | 'config.change' | 'security.violation' | 'security.alert' | 'gdpr.consent' | 'gdpr.data_request' | 'gdpr.data_deletion' | `data.${string}` | `permission.${string}` | `security.${string}` | `gdpr.${string}`;
|
|
7
|
-
export type AuditSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
8
|
-
export interface AuditEvent {
|
|
9
|
-
id: string;
|
|
10
|
-
timestamp: string;
|
|
11
|
-
type: AuditEventType;
|
|
12
|
-
severity: AuditSeverity;
|
|
13
|
-
actor: {
|
|
14
|
-
id: string;
|
|
15
|
-
type: 'user' | 'system' | 'api';
|
|
16
|
-
ip?: string;
|
|
17
|
-
userAgent?: string;
|
|
18
|
-
};
|
|
19
|
-
resource?: {
|
|
20
|
-
type: string;
|
|
21
|
-
id: string;
|
|
22
|
-
name?: string;
|
|
23
|
-
};
|
|
24
|
-
action: string;
|
|
25
|
-
result: 'success' | 'failure' | 'partial';
|
|
26
|
-
changes?: {
|
|
27
|
-
before?: Record<string, unknown>;
|
|
28
|
-
after?: Record<string, unknown>;
|
|
29
|
-
};
|
|
30
|
-
metadata?: Record<string, unknown>;
|
|
31
|
-
message?: string;
|
|
32
|
-
}
|
|
33
|
-
export interface AuditQuery {
|
|
34
|
-
types?: AuditEventType[];
|
|
35
|
-
actorId?: string;
|
|
36
|
-
resourceType?: string;
|
|
37
|
-
resourceId?: string;
|
|
38
|
-
startDate?: Date;
|
|
39
|
-
endDate?: Date;
|
|
40
|
-
severity?: AuditSeverity[];
|
|
41
|
-
result?: ('success' | 'failure' | 'partial')[];
|
|
42
|
-
limit?: number;
|
|
43
|
-
offset?: number;
|
|
44
|
-
}
|
|
45
|
-
export interface AuditStorage {
|
|
46
|
-
write(event: AuditEvent): Promise<void>;
|
|
47
|
-
query(query: AuditQuery): Promise<AuditEvent[]>;
|
|
48
|
-
count(query: AuditQuery): Promise<number>;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Audit logging system
|
|
52
|
-
*/
|
|
53
|
-
export declare class AuditSystem {
|
|
54
|
-
private storage;
|
|
55
|
-
private filters;
|
|
56
|
-
constructor(storage: AuditStorage);
|
|
57
|
-
/**
|
|
58
|
-
* Log audit event
|
|
59
|
-
*/
|
|
60
|
-
log(event: Omit<AuditEvent, 'id' | 'timestamp'>): Promise<void>;
|
|
61
|
-
/**
|
|
62
|
-
* Log authentication event
|
|
63
|
-
*/
|
|
64
|
-
logAuth(type: Extract<AuditEventType, 'auth.login' | 'auth.logout' | 'auth.failed_login' | 'auth.password_change'>, actorId: string, result: 'success' | 'failure', metadata?: Record<string, unknown>): Promise<void>;
|
|
65
|
-
/**
|
|
66
|
-
* Log data access event
|
|
67
|
-
*/
|
|
68
|
-
logDataAccess(action: 'create' | 'read' | 'update' | 'delete', actorId: string, resourceType: string, resourceId: string, result: 'success' | 'failure', changes?: {
|
|
69
|
-
before?: Record<string, unknown>;
|
|
70
|
-
after?: Record<string, unknown>;
|
|
71
|
-
}): Promise<void>;
|
|
72
|
-
/**
|
|
73
|
-
* Log permission change
|
|
74
|
-
*/
|
|
75
|
-
logPermissionChange(action: 'grant' | 'revoke', actorId: string, targetUserId: string, permission: string, result: 'success' | 'failure'): Promise<void>;
|
|
76
|
-
/**
|
|
77
|
-
* Log security event
|
|
78
|
-
*/
|
|
79
|
-
logSecurityEvent(type: 'violation' | 'alert', severity: AuditSeverity, actorId: string, message: string, metadata?: Record<string, unknown>): Promise<void>;
|
|
80
|
-
/**
|
|
81
|
-
* Log GDPR event
|
|
82
|
-
*/
|
|
83
|
-
logGDPREvent(type: 'consent' | 'data_request' | 'data_deletion', actorId: string, result: 'success' | 'failure', metadata?: Record<string, unknown>): Promise<void>;
|
|
84
|
-
/**
|
|
85
|
-
* Query audit logs
|
|
86
|
-
*/
|
|
87
|
-
query(query: AuditQuery): Promise<AuditEvent[]>;
|
|
88
|
-
/**
|
|
89
|
-
* Count audit logs
|
|
90
|
-
*/
|
|
91
|
-
count(query: AuditQuery): Promise<number>;
|
|
92
|
-
/**
|
|
93
|
-
* Add filter
|
|
94
|
-
*/
|
|
95
|
-
addFilter(filter: (event: AuditEvent) => boolean): void;
|
|
96
|
-
/**
|
|
97
|
-
* Remove filter
|
|
98
|
-
*/
|
|
99
|
-
removeFilter(filter: (event: AuditEvent) => boolean): void;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* In-memory audit storage (for development)
|
|
103
|
-
*/
|
|
104
|
-
export declare class InMemoryAuditStorage implements AuditStorage {
|
|
105
|
-
private events;
|
|
106
|
-
private maxEvents;
|
|
107
|
-
constructor(maxEvents?: number);
|
|
108
|
-
write(event: AuditEvent): Promise<void>;
|
|
109
|
-
query(query: AuditQuery): Promise<AuditEvent[]>;
|
|
110
|
-
count(query: AuditQuery): Promise<number>;
|
|
111
|
-
/**
|
|
112
|
-
* Clear all events
|
|
113
|
-
*/
|
|
114
|
-
clear(): void;
|
|
115
|
-
/**
|
|
116
|
-
* Get all events
|
|
117
|
-
*/
|
|
118
|
-
getAll(): AuditEvent[];
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Audit trail decorator
|
|
122
|
-
*/
|
|
123
|
-
export declare function AuditTrail(type: AuditEventType, action: string, options?: {
|
|
124
|
-
severity?: AuditSeverity;
|
|
125
|
-
captureChanges?: boolean;
|
|
126
|
-
resourceType?: string;
|
|
127
|
-
}): (_target: object, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
|
|
128
|
-
/**
|
|
129
|
-
* Audit middleware
|
|
130
|
-
*/
|
|
131
|
-
export declare function createAuditMiddleware<TRequest = unknown, TResponse = unknown>(audit: AuditSystem, getUser: (request: TRequest) => {
|
|
132
|
-
id: string;
|
|
133
|
-
ip?: string;
|
|
134
|
-
userAgent?: string;
|
|
135
|
-
}): (request: TRequest & {
|
|
136
|
-
method: string;
|
|
137
|
-
url: string;
|
|
138
|
-
}, next: () => Promise<TResponse & {
|
|
139
|
-
status?: number;
|
|
140
|
-
}>) => Promise<TResponse & {
|
|
141
|
-
status?: number;
|
|
142
|
-
}>;
|
|
143
|
-
/**
|
|
144
|
-
* Audit report generator
|
|
145
|
-
*/
|
|
146
|
-
export declare class AuditReportGenerator {
|
|
147
|
-
private audit;
|
|
148
|
-
constructor(audit: AuditSystem);
|
|
149
|
-
/**
|
|
150
|
-
* Generate security report
|
|
151
|
-
*/
|
|
152
|
-
generateSecurityReport(startDate: Date, endDate: Date): Promise<{
|
|
153
|
-
totalEvents: number;
|
|
154
|
-
securityViolations: number;
|
|
155
|
-
failedLogins: number;
|
|
156
|
-
permissionChanges: number;
|
|
157
|
-
dataExports: number;
|
|
158
|
-
criticalEvents: AuditEvent[];
|
|
159
|
-
}>;
|
|
160
|
-
/**
|
|
161
|
-
* Generate user activity report
|
|
162
|
-
*/
|
|
163
|
-
generateUserActivityReport(userId: string, startDate: Date, endDate: Date): Promise<{
|
|
164
|
-
totalActions: number;
|
|
165
|
-
actionsByType: Record<string, number>;
|
|
166
|
-
failedActions: number;
|
|
167
|
-
recentActions: AuditEvent[];
|
|
168
|
-
}>;
|
|
169
|
-
/**
|
|
170
|
-
* Generate compliance report
|
|
171
|
-
*/
|
|
172
|
-
generateComplianceReport(startDate: Date, endDate: Date): Promise<{
|
|
173
|
-
dataAccesses: number;
|
|
174
|
-
dataModifications: number;
|
|
175
|
-
dataDeletions: number;
|
|
176
|
-
gdprRequests: number;
|
|
177
|
-
auditTrailComplete: boolean;
|
|
178
|
-
}>;
|
|
179
|
-
/**
|
|
180
|
-
* Check audit trail continuity
|
|
181
|
-
*/
|
|
182
|
-
private checkAuditTrailContinuity;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Global audit system
|
|
186
|
-
*/
|
|
187
|
-
export declare const audit: AuditSystem;
|
|
188
|
-
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/security/audit.ts"],"names":[],"mappings":"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"}
|