flowgrid-sdk 1.2.1 → 1.3.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/README.md +224 -250
- package/dist/237.flowgrid.min.js +2 -0
- package/dist/237.flowgrid.min.js.map +1 -0
- package/dist/546.flowgrid.min.js +3 -0
- package/dist/546.flowgrid.min.js.LICENSE.txt +14 -0
- package/dist/546.flowgrid.min.js.map +1 -0
- package/dist/EXAMPLE.d.ts +1 -0
- package/dist/EXAMPLE.js +55 -0
- package/dist/EXAMPLE.js.map +1 -0
- package/dist/browser.d.ts +46 -103
- package/dist/browser.js +102 -0
- package/dist/browser.js.map +1 -0
- package/dist/flowgrid.min.js +1 -1
- package/dist/flowgrid.min.js.map +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.js +64 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/client/transport.d.ts +14 -4
- package/dist/lib/client/transport.js +432 -0
- package/dist/lib/client/transport.js.map +1 -0
- package/dist/lib/consent/index.d.ts +0 -5
- package/dist/lib/consent/index.js +32 -0
- package/dist/lib/consent/index.js.map +1 -0
- package/dist/lib/consent/manager.js +336 -0
- package/dist/lib/consent/manager.js.map +1 -0
- package/dist/lib/consent/types.d.ts +3 -20
- package/dist/lib/consent/types.js +10 -0
- package/dist/lib/consent/types.js.map +1 -0
- package/dist/lib/features/analytics/attribution.d.ts +6 -47
- package/dist/lib/features/analytics/attribution.js +181 -0
- package/dist/lib/features/analytics/attribution.js.map +1 -0
- package/dist/lib/features/analytics/events.d.ts +1 -28
- package/dist/lib/features/analytics/events.js +256 -0
- package/dist/lib/features/analytics/events.js.map +1 -0
- package/dist/lib/features/analytics/funnels.js +260 -0
- package/dist/lib/features/analytics/funnels.js.map +1 -0
- package/dist/lib/features/analytics/heatmaps.d.ts +12 -19
- package/dist/lib/features/analytics/heatmaps.js +258 -0
- package/dist/lib/features/analytics/heatmaps.js.map +1 -0
- package/dist/lib/features/analytics/identify.d.ts +1 -21
- package/dist/lib/features/analytics/identify.js +213 -0
- package/dist/lib/features/analytics/identify.js.map +1 -0
- package/dist/lib/features/analytics/index.d.ts +2 -0
- package/dist/lib/features/analytics/index.js +15 -0
- package/dist/lib/features/analytics/index.js.map +1 -0
- package/dist/lib/features/analytics/page-views.d.ts +13 -30
- package/dist/lib/features/analytics/page-views.js +268 -0
- package/dist/lib/features/analytics/page-views.js.map +1 -0
- package/dist/lib/features/analytics/performance.d.ts +18 -24
- package/dist/lib/features/analytics/performance.js +232 -0
- package/dist/lib/features/analytics/performance.js.map +1 -0
- package/dist/lib/features/analytics/replay.d.ts +170 -0
- package/dist/lib/features/analytics/replay.js +381 -0
- package/dist/lib/features/analytics/replay.js.map +1 -0
- package/dist/lib/features/analytics/retention.d.ts +1 -76
- package/dist/lib/features/analytics/retention.js +135 -0
- package/dist/lib/features/analytics/retention.js.map +1 -0
- package/dist/lib/features/analytics/sessions.d.ts +12 -37
- package/dist/lib/features/analytics/sessions.js +213 -0
- package/dist/lib/features/analytics/sessions.js.map +1 -0
- package/dist/lib/features/core/activation.d.ts +1 -24
- package/dist/lib/features/core/activation.js +175 -0
- package/dist/lib/features/core/activation.js.map +1 -0
- package/dist/lib/features/core/experiment.d.ts +53 -21
- package/dist/lib/features/core/experiment.js +554 -0
- package/dist/lib/features/core/experiment.js.map +1 -0
- package/dist/lib/features/core/index.js +9 -0
- package/dist/lib/features/core/index.js.map +1 -0
- package/dist/lib/features/core/track-feature.d.ts +1 -8
- package/dist/lib/features/core/track-feature.js +119 -0
- package/dist/lib/features/core/track-feature.js.map +1 -0
- package/dist/lib/features/core/track-prompt.d.ts +5 -8
- package/dist/lib/features/core/track-prompt.js +181 -0
- package/dist/lib/features/core/track-prompt.js.map +1 -0
- package/dist/lib/features/ecommerce/cart.d.ts +1 -24
- package/dist/lib/features/ecommerce/cart.js +244 -0
- package/dist/lib/features/ecommerce/cart.js.map +1 -0
- package/dist/lib/features/ecommerce/checkout.d.ts +1 -28
- package/dist/lib/features/ecommerce/checkout.js +254 -0
- package/dist/lib/features/ecommerce/checkout.js.map +1 -0
- package/dist/lib/features/ecommerce/index.d.ts +0 -2
- package/dist/lib/features/ecommerce/index.js +15 -0
- package/dist/lib/features/ecommerce/index.js.map +1 -0
- package/dist/lib/features/ecommerce/ltv.d.ts +1 -69
- package/dist/lib/features/ecommerce/ltv.js +114 -0
- package/dist/lib/features/ecommerce/ltv.js.map +1 -0
- package/dist/lib/features/ecommerce/products.d.ts +1 -33
- package/dist/lib/features/ecommerce/products.js +223 -0
- package/dist/lib/features/ecommerce/products.js.map +1 -0
- package/dist/lib/features/ecommerce/promotions.d.ts +1 -30
- package/dist/lib/features/ecommerce/promotions.js +197 -0
- package/dist/lib/features/ecommerce/promotions.js.map +1 -0
- package/dist/lib/features/ecommerce/purchases.d.ts +1 -48
- package/dist/lib/features/ecommerce/purchases.js +193 -0
- package/dist/lib/features/ecommerce/purchases.js.map +1 -0
- package/dist/lib/features/ecommerce/refunds.d.ts +1 -27
- package/dist/lib/features/ecommerce/refunds.js +195 -0
- package/dist/lib/features/ecommerce/refunds.js.map +1 -0
- package/dist/lib/features/ecommerce/search.d.ts +1 -24
- package/dist/lib/features/ecommerce/search.js +156 -0
- package/dist/lib/features/ecommerce/search.js.map +1 -0
- package/dist/lib/features/ecommerce/subscriptions.d.ts +1 -28
- package/dist/lib/features/ecommerce/subscriptions.js +207 -0
- package/dist/lib/features/ecommerce/subscriptions.js.map +1 -0
- package/dist/lib/features/ecommerce/wishlist.d.ts +1 -28
- package/dist/lib/features/ecommerce/wishlist.js +186 -0
- package/dist/lib/features/ecommerce/wishlist.js.map +1 -0
- package/dist/lib/features/enterprise/acquisition.d.ts +2 -57
- package/dist/lib/features/enterprise/acquisition.js +166 -0
- package/dist/lib/features/enterprise/acquisition.js.map +1 -0
- package/dist/lib/features/enterprise/alerts.d.ts +1 -37
- package/dist/lib/features/enterprise/alerts.js +246 -0
- package/dist/lib/features/enterprise/alerts.js.map +1 -0
- package/dist/lib/features/enterprise/churn.d.ts +1 -42
- package/dist/lib/features/enterprise/churn.js +175 -0
- package/dist/lib/features/enterprise/churn.js.map +1 -0
- package/dist/lib/features/enterprise/cohorts.d.ts +1 -37
- package/dist/lib/features/enterprise/cohorts.js +201 -0
- package/dist/lib/features/enterprise/cohorts.js.map +1 -0
- package/dist/lib/features/enterprise/engagement.d.ts +40 -46
- package/dist/lib/features/enterprise/engagement.js +335 -0
- package/dist/lib/features/enterprise/engagement.js.map +1 -0
- package/dist/lib/features/enterprise/forecasting.d.ts +0 -50
- package/dist/lib/features/enterprise/forecasting.js +232 -0
- package/dist/lib/features/enterprise/forecasting.js.map +1 -0
- package/dist/lib/features/enterprise/index.d.ts +1 -1
- package/dist/lib/features/enterprise/index.js +76 -0
- package/dist/lib/features/enterprise/index.js.map +1 -0
- package/dist/lib/features/enterprise/monetization.d.ts +1 -60
- package/dist/lib/features/enterprise/monetization.js +146 -0
- package/dist/lib/features/enterprise/monetization.js.map +1 -0
- package/dist/lib/features/enterprise/multi-path-funnels.d.ts +1 -17
- package/dist/lib/features/enterprise/multi-path-funnels.js +205 -0
- package/dist/lib/features/enterprise/multi-path-funnels.js.map +1 -0
- package/dist/lib/features/enterprise/paths.d.ts +1 -56
- package/dist/lib/features/enterprise/paths.js +149 -0
- package/dist/lib/features/enterprise/paths.js.map +1 -0
- package/dist/lib/features/enterprise/security.d.ts +8 -57
- package/dist/lib/features/enterprise/security.js +202 -0
- package/dist/lib/features/enterprise/security.js.map +1 -0
- package/dist/lib/features/enterprise/support.d.ts +3 -42
- package/dist/lib/features/enterprise/support.js +162 -0
- package/dist/lib/features/enterprise/support.js.map +1 -0
- package/dist/lib/flowgrid.d.ts +278 -0
- package/dist/lib/flowgrid.js +323 -0
- package/dist/lib/flowgrid.js.map +1 -0
- package/dist/lib/frameworks/index.d.ts +13 -6
- package/dist/lib/frameworks/index.js +18 -0
- package/dist/lib/frameworks/index.js.map +1 -0
- package/dist/lib/frameworks/nextjs/client.js +355 -0
- package/dist/lib/frameworks/nextjs/client.js.map +1 -0
- package/dist/lib/frameworks/nextjs/index.js +31 -0
- package/dist/lib/frameworks/nextjs/index.js.map +1 -0
- package/dist/lib/frameworks/nextjs/server.js +259 -0
- package/dist/lib/frameworks/nextjs/server.js.map +1 -0
- package/dist/lib/frameworks/node/index.js +391 -0
- package/dist/lib/frameworks/node/index.js.map +1 -0
- package/dist/lib/frameworks/nuxt/index.js +288 -0
- package/dist/lib/frameworks/nuxt/index.js.map +1 -0
- package/dist/lib/frameworks/react/CookieBanner.js +166 -0
- package/dist/lib/frameworks/react/CookieBanner.js.map +1 -0
- package/dist/lib/frameworks/react/index.js +271 -0
- package/dist/lib/frameworks/react/index.js.map +1 -0
- package/dist/lib/frameworks/vue/CookieBanner.js +165 -0
- package/dist/lib/frameworks/vue/CookieBanner.js.map +1 -0
- package/dist/lib/frameworks/vue/index.js +390 -0
- package/dist/lib/frameworks/vue/index.js.map +1 -0
- package/dist/lib/tracking/analytics/attribution.d.ts +14 -0
- package/dist/lib/tracking/analytics/attribution.js +18 -0
- package/dist/lib/tracking/analytics/attribution.js.map +1 -0
- package/dist/lib/tracking/analytics/events.d.ts +26 -0
- package/dist/lib/tracking/analytics/events.js +30 -0
- package/dist/lib/tracking/analytics/events.js.map +1 -0
- package/dist/lib/tracking/analytics/funnels.d.ts +16 -0
- package/dist/lib/tracking/analytics/funnels.js +22 -0
- package/dist/lib/tracking/analytics/funnels.js.map +1 -0
- package/dist/lib/tracking/analytics/heatmaps.d.ts +27 -0
- package/dist/lib/tracking/analytics/heatmaps.js +22 -0
- package/dist/lib/tracking/analytics/heatmaps.js.map +1 -0
- package/dist/lib/tracking/analytics/identify.d.ts +16 -0
- package/dist/lib/tracking/analytics/identify.js +22 -0
- package/dist/lib/tracking/analytics/identify.js.map +1 -0
- package/dist/lib/tracking/analytics/index.d.ts +10 -0
- package/dist/lib/tracking/analytics/index.js +11 -0
- package/dist/lib/tracking/analytics/index.js.map +1 -0
- package/dist/lib/tracking/analytics/page-views.d.ts +29 -0
- package/dist/lib/tracking/analytics/page-views.js +50 -0
- package/dist/lib/tracking/analytics/page-views.js.map +1 -0
- package/dist/lib/tracking/analytics/performance.d.ts +22 -0
- package/dist/lib/tracking/analytics/performance.js +22 -0
- package/dist/lib/tracking/analytics/performance.js.map +1 -0
- package/dist/lib/tracking/analytics/replay.d.ts +34 -0
- package/dist/lib/tracking/analytics/replay.js +46 -0
- package/dist/lib/tracking/analytics/replay.js.map +1 -0
- package/dist/lib/tracking/analytics/retention.d.ts +10 -0
- package/dist/lib/tracking/analytics/retention.js +10 -0
- package/dist/lib/tracking/analytics/retention.js.map +1 -0
- package/dist/lib/tracking/analytics/sessions.d.ts +20 -0
- package/dist/lib/tracking/analytics/sessions.js +26 -0
- package/dist/lib/tracking/analytics/sessions.js.map +1 -0
- package/dist/lib/tracking/core/activation.d.ts +23 -0
- package/dist/lib/tracking/core/activation.js +33 -0
- package/dist/lib/tracking/core/activation.js.map +1 -0
- package/dist/lib/tracking/core/experiment.d.ts +122 -0
- package/dist/lib/tracking/core/experiment.js +150 -0
- package/dist/lib/tracking/core/experiment.js.map +1 -0
- package/dist/lib/tracking/core/feature.d.ts +13 -0
- package/dist/lib/tracking/core/feature.js +14 -0
- package/dist/lib/tracking/core/feature.js.map +1 -0
- package/dist/lib/tracking/core/index.d.ts +4 -0
- package/dist/lib/tracking/core/index.js +5 -0
- package/dist/lib/tracking/core/index.js.map +1 -0
- package/dist/lib/tracking/core/prompt.d.ts +18 -0
- package/dist/lib/tracking/core/prompt.js +26 -0
- package/dist/lib/tracking/core/prompt.js.map +1 -0
- package/dist/lib/tracking/ecommerce/cart.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/cart.js +22 -0
- package/dist/lib/tracking/ecommerce/cart.js.map +1 -0
- package/dist/lib/tracking/ecommerce/checkout.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/checkout.js +22 -0
- package/dist/lib/tracking/ecommerce/checkout.js.map +1 -0
- package/dist/lib/tracking/ecommerce/index.d.ts +10 -0
- package/dist/lib/tracking/ecommerce/index.js +11 -0
- package/dist/lib/tracking/ecommerce/index.js.map +1 -0
- package/dist/lib/tracking/ecommerce/ltv.d.ts +15 -0
- package/dist/lib/tracking/ecommerce/ltv.js +14 -0
- package/dist/lib/tracking/ecommerce/ltv.js.map +1 -0
- package/dist/lib/tracking/ecommerce/products.d.ts +15 -0
- package/dist/lib/tracking/ecommerce/products.js +18 -0
- package/dist/lib/tracking/ecommerce/products.js.map +1 -0
- package/dist/lib/tracking/ecommerce/promotions.d.ts +14 -0
- package/dist/lib/tracking/ecommerce/promotions.js +25 -0
- package/dist/lib/tracking/ecommerce/promotions.js.map +1 -0
- package/dist/lib/tracking/ecommerce/purchases.d.ts +11 -0
- package/dist/lib/tracking/ecommerce/purchases.js +10 -0
- package/dist/lib/tracking/ecommerce/purchases.js.map +1 -0
- package/dist/lib/tracking/ecommerce/refunds.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/refunds.js +22 -0
- package/dist/lib/tracking/ecommerce/refunds.js.map +1 -0
- package/dist/lib/tracking/ecommerce/search.d.ts +24 -0
- package/dist/lib/tracking/ecommerce/search.js +22 -0
- package/dist/lib/tracking/ecommerce/search.js.map +1 -0
- package/dist/lib/tracking/ecommerce/subscriptions.d.ts +21 -0
- package/dist/lib/tracking/ecommerce/subscriptions.js +38 -0
- package/dist/lib/tracking/ecommerce/subscriptions.js.map +1 -0
- package/dist/lib/tracking/ecommerce/wishlist.d.ts +19 -0
- package/dist/lib/tracking/ecommerce/wishlist.js +26 -0
- package/dist/lib/tracking/ecommerce/wishlist.js.map +1 -0
- package/dist/lib/tracking/enterprise/acquisition.d.ts +25 -0
- package/dist/lib/tracking/enterprise/acquisition.js +22 -0
- package/dist/lib/tracking/enterprise/acquisition.js.map +1 -0
- package/dist/lib/tracking/enterprise/alerts.d.ts +32 -0
- package/dist/lib/tracking/enterprise/alerts.js +30 -0
- package/dist/lib/tracking/enterprise/alerts.js.map +1 -0
- package/dist/lib/tracking/enterprise/churn.d.ts +23 -0
- package/dist/lib/tracking/enterprise/churn.js +22 -0
- package/dist/lib/tracking/enterprise/churn.js.map +1 -0
- package/dist/lib/tracking/enterprise/cohorts.d.ts +18 -0
- package/dist/lib/tracking/enterprise/cohorts.js +18 -0
- package/dist/lib/tracking/enterprise/cohorts.js.map +1 -0
- package/dist/lib/tracking/enterprise/engagement.d.ts +31 -0
- package/dist/lib/tracking/enterprise/engagement.js +44 -0
- package/dist/lib/tracking/enterprise/engagement.js.map +1 -0
- package/dist/lib/tracking/enterprise/forecasting.d.ts +18 -0
- package/dist/lib/tracking/enterprise/forecasting.js +22 -0
- package/dist/lib/tracking/enterprise/forecasting.js.map +1 -0
- package/dist/lib/tracking/enterprise/index.d.ts +11 -0
- package/dist/lib/tracking/enterprise/index.js +12 -0
- package/dist/lib/tracking/enterprise/index.js.map +1 -0
- package/dist/lib/tracking/enterprise/monetization.d.ts +14 -0
- package/dist/lib/tracking/enterprise/monetization.js +10 -0
- package/dist/lib/tracking/enterprise/monetization.js.map +1 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.d.ts +20 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.js +18 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.js.map +1 -0
- package/dist/lib/tracking/enterprise/paths.d.ts +20 -0
- package/dist/lib/tracking/enterprise/paths.js +18 -0
- package/dist/lib/tracking/enterprise/paths.js.map +1 -0
- package/dist/lib/tracking/enterprise/security.d.ts +28 -0
- package/dist/lib/tracking/enterprise/security.js +26 -0
- package/dist/lib/tracking/enterprise/security.js.map +1 -0
- package/dist/lib/tracking/enterprise/support.d.ts +25 -0
- package/dist/lib/tracking/enterprise/support.js +22 -0
- package/dist/lib/tracking/enterprise/support.js.map +1 -0
- package/dist/lib/tracking/index.d.ts +4 -0
- package/dist/lib/tracking/index.js +5 -0
- package/dist/lib/tracking/index.js.map +1 -0
- package/dist/lib/types/analytics.d.ts +10 -2
- package/dist/lib/types/analytics.js +6 -0
- package/dist/lib/types/analytics.js.map +1 -0
- package/dist/lib/types/common.js +6 -0
- package/dist/lib/types/common.js.map +1 -0
- package/dist/lib/types/ecommerce.js +6 -0
- package/dist/lib/types/ecommerce.js.map +1 -0
- package/dist/lib/types/index.js +8 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/utils/browser.d.ts +16 -0
- package/dist/lib/utils/browser.js +32 -0
- package/dist/lib/utils/browser.js.map +1 -0
- package/dist/lib/utils/identity.js +346 -0
- package/dist/lib/utils/identity.js.map +1 -0
- package/dist/lib/utils/storage.js +105 -0
- package/dist/lib/utils/storage.js.map +1 -0
- package/dist/umd/237.index.js +2 -0
- package/dist/umd/237.index.js.map +1 -0
- package/dist/umd/546.index.js +3 -0
- package/dist/umd/546.index.js.LICENSE.txt +14 -0
- package/dist/umd/546.index.js.map +1 -0
- package/dist/umd/index.js +2 -0
- package/dist/umd/index.js.map +1 -0
- package/package.json +27 -80
- package/dist/lib/features/ecommerce/inventory.d.ts +0 -219
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Enterprise - Security & Compliance Analytics
|
|
3
|
+
* @module features/enterprise/security
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* Track activity for security, privacy, and regulatory compliance.
|
|
7
|
+
* Monitor login attempts, role changes, and compliance events.
|
|
8
|
+
*
|
|
9
|
+
* @useCases
|
|
10
|
+
* - Track failed login attempts
|
|
11
|
+
* - Monitor role/permission changes
|
|
12
|
+
* - GDPR/CCPA compliance events
|
|
13
|
+
* - Audit logging
|
|
14
|
+
* - Security anomaly detection
|
|
15
|
+
*
|
|
16
|
+
* @metrics
|
|
17
|
+
* - Failed login rate
|
|
18
|
+
* - Suspicious activity count
|
|
19
|
+
* - Role change frequency
|
|
20
|
+
* - Data access patterns
|
|
21
|
+
* - Compliance event count
|
|
22
|
+
*
|
|
23
|
+
* @chartData
|
|
24
|
+
* - Line chart: Security events over time
|
|
25
|
+
* - Bar chart: Events by type
|
|
26
|
+
* - Table: Audit log
|
|
27
|
+
* - Heatmap: Access patterns
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const security = new SecurityAnalytics(webId, endpoint, apiKey);
|
|
32
|
+
*
|
|
33
|
+
* // Track login attempt
|
|
34
|
+
* await security.trackLoginAttempt({
|
|
35
|
+
* userId: 'user_123',
|
|
36
|
+
* success: false,
|
|
37
|
+
* reason: 'invalid_password'
|
|
38
|
+
* });
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
import { FlowGridTransport } from "../../client/transport";
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// HELPER FUNCTIONS
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Classify risk level from score.
|
|
47
|
+
*/
|
|
48
|
+
export function classifyRiskLevel(score) {
|
|
49
|
+
if (score < 25)
|
|
50
|
+
return 'low';
|
|
51
|
+
if (score < 50)
|
|
52
|
+
return 'medium';
|
|
53
|
+
if (score < 75)
|
|
54
|
+
return 'high';
|
|
55
|
+
return 'critical';
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Calculate failed login rate.
|
|
59
|
+
*/
|
|
60
|
+
export function calculateFailedLoginRate(failed, total) {
|
|
61
|
+
if (total === 0)
|
|
62
|
+
return 0;
|
|
63
|
+
return Math.round((failed / total) * 10000) / 100;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if login pattern is suspicious.
|
|
67
|
+
*/
|
|
68
|
+
export function isSuspiciousLoginPattern(failedAttempts, timeWindowMinutes, threshold = 5) {
|
|
69
|
+
return failedAttempts >= threshold && timeWindowMinutes <= 15;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Determine event severity.
|
|
73
|
+
*/
|
|
74
|
+
export function determineEventSeverity(eventType, success) {
|
|
75
|
+
const criticalEvents = ['suspicious_activity'];
|
|
76
|
+
const highEvents = ['role_change', 'permission_change', 'data_deletion', 'api_key_revoked'];
|
|
77
|
+
const mediumEvents = ['login_failure', 'password_reset', 'data_export'];
|
|
78
|
+
if (criticalEvents.includes(eventType))
|
|
79
|
+
return 'critical';
|
|
80
|
+
if (highEvents.includes(eventType))
|
|
81
|
+
return 'high';
|
|
82
|
+
if (mediumEvents.includes(eventType))
|
|
83
|
+
return !success ? 'high' : 'medium';
|
|
84
|
+
return 'low';
|
|
85
|
+
}
|
|
86
|
+
// ============================================================================
|
|
87
|
+
// MAIN CLASS
|
|
88
|
+
// ============================================================================
|
|
89
|
+
/**
|
|
90
|
+
* Security and compliance analytics class.
|
|
91
|
+
*/
|
|
92
|
+
export class SecurityAnalytics extends FlowGridTransport {
|
|
93
|
+
/**
|
|
94
|
+
* Track login attempt.
|
|
95
|
+
*/
|
|
96
|
+
async trackLoginAttempt(config) {
|
|
97
|
+
const eventType = config.success ? 'login_success' : 'login_failure';
|
|
98
|
+
const severity = determineEventSeverity(eventType, config.success);
|
|
99
|
+
return await this.initFeature("security.login_attempt", {
|
|
100
|
+
type: "security",
|
|
101
|
+
...config,
|
|
102
|
+
eventType,
|
|
103
|
+
severity,
|
|
104
|
+
timestamp: new Date().toISOString()
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Track logout.
|
|
109
|
+
*/
|
|
110
|
+
async trackLogout(userId, sessionId) {
|
|
111
|
+
return await this.initFeature("security.logout", {
|
|
112
|
+
type: "security",
|
|
113
|
+
userId,
|
|
114
|
+
sessionId,
|
|
115
|
+
eventType: 'logout',
|
|
116
|
+
timestamp: new Date().toISOString()
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Track password change.
|
|
121
|
+
*/
|
|
122
|
+
async trackPasswordChange(userId, forced = false) {
|
|
123
|
+
return await this.initFeature("security.password_change", {
|
|
124
|
+
type: "security",
|
|
125
|
+
userId,
|
|
126
|
+
forced,
|
|
127
|
+
eventType: 'password_change',
|
|
128
|
+
timestamp: new Date().toISOString()
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Track role change.
|
|
133
|
+
*/
|
|
134
|
+
async trackRoleChange(config) {
|
|
135
|
+
return await this.initFeature("security.role_change", {
|
|
136
|
+
type: "security",
|
|
137
|
+
...config,
|
|
138
|
+
eventType: 'role_change',
|
|
139
|
+
timestamp: new Date().toISOString()
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Track permission change.
|
|
144
|
+
*/
|
|
145
|
+
async trackPermissionChange(config) {
|
|
146
|
+
return await this.initFeature("security.permission_change", {
|
|
147
|
+
type: "security",
|
|
148
|
+
...config,
|
|
149
|
+
eventType: 'permission_change',
|
|
150
|
+
timestamp: new Date().toISOString()
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Track data access.
|
|
155
|
+
*/
|
|
156
|
+
async trackDataAccess(config) {
|
|
157
|
+
return await this.initFeature("security.data_access", {
|
|
158
|
+
type: "security",
|
|
159
|
+
...config,
|
|
160
|
+
eventType: 'data_access',
|
|
161
|
+
timestamp: new Date().toISOString()
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Track data export.
|
|
166
|
+
*/
|
|
167
|
+
async trackDataExport(userId, resourceType, recordCount) {
|
|
168
|
+
return await this.initFeature("security.data_export", {
|
|
169
|
+
type: "security",
|
|
170
|
+
userId,
|
|
171
|
+
resourceType,
|
|
172
|
+
recordCount,
|
|
173
|
+
eventType: 'data_export',
|
|
174
|
+
timestamp: new Date().toISOString()
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Track suspicious activity.
|
|
179
|
+
*/
|
|
180
|
+
async trackSuspiciousActivity(userId, activityType, details) {
|
|
181
|
+
return await this.initFeature("security.suspicious_activity", {
|
|
182
|
+
type: "security",
|
|
183
|
+
userId,
|
|
184
|
+
activityType,
|
|
185
|
+
details,
|
|
186
|
+
eventType: 'suspicious_activity',
|
|
187
|
+
severity: 'critical',
|
|
188
|
+
timestamp: new Date().toISOString()
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Track compliance event.
|
|
193
|
+
*/
|
|
194
|
+
async trackComplianceEvent(config) {
|
|
195
|
+
return await this.initFeature("security.compliance_event", {
|
|
196
|
+
type: "security",
|
|
197
|
+
...config,
|
|
198
|
+
timestamp: new Date().toISOString()
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../../../src/lib/features/enterprise/security.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
* ```
|
|
41
41
|
*/
|
|
42
42
|
import { FlowGridTransport } from "../../client/transport";
|
|
43
|
-
import { DateRangeFilter
|
|
43
|
+
import { DateRangeFilter } from "../../types";
|
|
44
44
|
/**
|
|
45
45
|
* Ticket priority levels.
|
|
46
46
|
*/
|
|
@@ -94,6 +94,8 @@ export interface TicketUpdateConfig {
|
|
|
94
94
|
resolutionTimeMs?: number;
|
|
95
95
|
/** Number of interactions */
|
|
96
96
|
interactionCount?: number;
|
|
97
|
+
/** Custom properties */
|
|
98
|
+
properties?: Record<string, unknown>;
|
|
97
99
|
}
|
|
98
100
|
/**
|
|
99
101
|
* CSAT tracking configuration.
|
|
@@ -285,45 +287,4 @@ export declare class SupportAnalytics extends FlowGridTransport {
|
|
|
285
287
|
trackFeatureComplaint(config: FeatureComplaintConfig): Promise<{
|
|
286
288
|
tracked: boolean;
|
|
287
289
|
}>;
|
|
288
|
-
/**
|
|
289
|
-
* Get ticket analytics.
|
|
290
|
-
*/
|
|
291
|
-
getAnalytics(filter?: SupportAnalyticsFilter): Promise<TicketAnalytics>;
|
|
292
|
-
/**
|
|
293
|
-
* Get support impact analysis.
|
|
294
|
-
*/
|
|
295
|
-
getSupportImpact(filter?: DateRangeFilter): Promise<SupportImpactAnalysis>;
|
|
296
|
-
/**
|
|
297
|
-
* Get feature complaint summary.
|
|
298
|
-
*/
|
|
299
|
-
getFeatureComplaints(featureId?: string, filter?: DateRangeFilter): Promise<FeatureComplaintSummary[]>;
|
|
300
|
-
/**
|
|
301
|
-
* Get agent performance.
|
|
302
|
-
*/
|
|
303
|
-
getAgentPerformance(agentId?: string, filter?: DateRangeFilter): Promise<AgentPerformance[]>;
|
|
304
|
-
/**
|
|
305
|
-
* Get ticket trend.
|
|
306
|
-
*/
|
|
307
|
-
getTicketTrend(filter?: SupportAnalyticsFilter, granularity?: TimeGranularity): Promise<TimeSeriesData>;
|
|
308
|
-
/**
|
|
309
|
-
* Get CSAT trend.
|
|
310
|
-
*/
|
|
311
|
-
getCSATTrend(filter?: DateRangeFilter, granularity?: TimeGranularity): Promise<TimeSeriesData>;
|
|
312
|
-
/**
|
|
313
|
-
* Get response time distribution.
|
|
314
|
-
*/
|
|
315
|
-
getResponseTimeDistribution(filter?: DateRangeFilter): Promise<Array<{
|
|
316
|
-
bucket: string;
|
|
317
|
-
count: number;
|
|
318
|
-
percentage: number;
|
|
319
|
-
}>>;
|
|
320
|
-
/**
|
|
321
|
-
* Get user support history.
|
|
322
|
-
*/
|
|
323
|
-
getUserSupportHistory(userId: string): Promise<{
|
|
324
|
-
totalTickets: number;
|
|
325
|
-
avgCSAT: number;
|
|
326
|
-
categories: string[];
|
|
327
|
-
lastTicketDate: string;
|
|
328
|
-
}>;
|
|
329
290
|
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Enterprise - Customer Support & Experience Analytics
|
|
3
|
+
* @module features/enterprise/support
|
|
4
|
+
*
|
|
5
|
+
* @description
|
|
6
|
+
* Link support interactions to retention and conversion metrics.
|
|
7
|
+
* Track ticket volume, response times, and satisfaction scores.
|
|
8
|
+
*
|
|
9
|
+
* @useCases
|
|
10
|
+
* - Track support ticket volume
|
|
11
|
+
* - Monitor response and resolution times
|
|
12
|
+
* - Correlate CSAT/NPS with retention
|
|
13
|
+
* - Track feature complaints
|
|
14
|
+
* - Measure support impact on conversion
|
|
15
|
+
*
|
|
16
|
+
* @metrics
|
|
17
|
+
* - Ticket volume
|
|
18
|
+
* - Average response time
|
|
19
|
+
* - Average resolution time
|
|
20
|
+
* - CSAT score
|
|
21
|
+
* - First contact resolution rate
|
|
22
|
+
*
|
|
23
|
+
* @chartData
|
|
24
|
+
* - Line chart: Ticket volume over time
|
|
25
|
+
* - Bar chart: Tickets by category
|
|
26
|
+
* - Distribution: Resolution time
|
|
27
|
+
* - Correlation: Support vs retention
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const support = new SupportAnalytics(webId, endpoint, apiKey);
|
|
32
|
+
*
|
|
33
|
+
* // Track support ticket
|
|
34
|
+
* await support.trackTicket({
|
|
35
|
+
* ticketId: 'ticket_123',
|
|
36
|
+
* userId: 'user_456',
|
|
37
|
+
* category: 'billing',
|
|
38
|
+
* priority: 'high'
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
import { FlowGridTransport } from "../../client/transport";
|
|
43
|
+
// ============================================================================
|
|
44
|
+
// HELPER FUNCTIONS
|
|
45
|
+
// ============================================================================
|
|
46
|
+
/**
|
|
47
|
+
* Calculate first contact resolution rate.
|
|
48
|
+
*/
|
|
49
|
+
export function calculateFCRRate(resolvedFirstContact, totalResolved) {
|
|
50
|
+
if (totalResolved === 0)
|
|
51
|
+
return 0;
|
|
52
|
+
return Math.round((resolvedFirstContact / totalResolved) * 10000) / 100;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Calculate average response time.
|
|
56
|
+
*/
|
|
57
|
+
export function calculateAvgResponseTime(responseTimes) {
|
|
58
|
+
if (responseTimes.length === 0)
|
|
59
|
+
return 0;
|
|
60
|
+
const sum = responseTimes.reduce((a, b) => a + b, 0);
|
|
61
|
+
return Math.round(sum / responseTimes.length);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Classify CSAT score.
|
|
65
|
+
*/
|
|
66
|
+
export function classifyCSAT(score) {
|
|
67
|
+
if (score < 2)
|
|
68
|
+
return 'poor';
|
|
69
|
+
if (score < 3)
|
|
70
|
+
return 'fair';
|
|
71
|
+
if (score < 4)
|
|
72
|
+
return 'good';
|
|
73
|
+
return 'excellent';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Format duration in human-readable format.
|
|
77
|
+
*/
|
|
78
|
+
export function formatDuration(ms) {
|
|
79
|
+
if (ms < 60000)
|
|
80
|
+
return `${Math.round(ms / 1000)}s`;
|
|
81
|
+
if (ms < 3600000)
|
|
82
|
+
return `${Math.round(ms / 60000)}m`;
|
|
83
|
+
if (ms < 86400000)
|
|
84
|
+
return `${Math.round(ms / 3600000)}h`;
|
|
85
|
+
return `${Math.round(ms / 86400000)}d`;
|
|
86
|
+
}
|
|
87
|
+
// ============================================================================
|
|
88
|
+
// MAIN CLASS
|
|
89
|
+
// ============================================================================
|
|
90
|
+
/**
|
|
91
|
+
* Customer support and experience analytics class.
|
|
92
|
+
*/
|
|
93
|
+
export class SupportAnalytics extends FlowGridTransport {
|
|
94
|
+
/**
|
|
95
|
+
* Track new support ticket.
|
|
96
|
+
*/
|
|
97
|
+
async trackTicket(config) {
|
|
98
|
+
return await this.initFeature("support.ticket_created", {
|
|
99
|
+
type: "support",
|
|
100
|
+
...config,
|
|
101
|
+
status: 'open',
|
|
102
|
+
createdAt: new Date().toISOString(),
|
|
103
|
+
timestamp: new Date().toISOString()
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Update ticket status.
|
|
108
|
+
*/
|
|
109
|
+
async updateTicket(config) {
|
|
110
|
+
return await this.initFeature("support.ticket_updated", {
|
|
111
|
+
type: "support",
|
|
112
|
+
...config,
|
|
113
|
+
timestamp: new Date().toISOString()
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Track ticket response.
|
|
118
|
+
*/
|
|
119
|
+
async trackResponse(ticketId, agentId, responseTimeMs) {
|
|
120
|
+
return await this.initFeature("support.ticket_response", {
|
|
121
|
+
type: "support",
|
|
122
|
+
ticketId,
|
|
123
|
+
agentId,
|
|
124
|
+
responseTimeMs,
|
|
125
|
+
timestamp: new Date().toISOString()
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Track ticket resolution.
|
|
130
|
+
*/
|
|
131
|
+
async trackResolution(ticketId, resolutionTimeMs, interactionCount) {
|
|
132
|
+
return await this.initFeature("support.ticket_resolved", {
|
|
133
|
+
type: "support",
|
|
134
|
+
ticketId,
|
|
135
|
+
resolutionTimeMs,
|
|
136
|
+
interactionCount,
|
|
137
|
+
firstContactResolution: interactionCount === 1,
|
|
138
|
+
timestamp: new Date().toISOString()
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Track CSAT score.
|
|
143
|
+
*/
|
|
144
|
+
async trackCSAT(config) {
|
|
145
|
+
return await this.initFeature("support.csat", {
|
|
146
|
+
type: "support",
|
|
147
|
+
...config,
|
|
148
|
+
timestamp: new Date().toISOString()
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Track feature complaint.
|
|
153
|
+
*/
|
|
154
|
+
async trackFeatureComplaint(config) {
|
|
155
|
+
return await this.initFeature("support.feature_complaint", {
|
|
156
|
+
type: "support",
|
|
157
|
+
...config,
|
|
158
|
+
timestamp: new Date().toISOString()
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../../../src/lib/features/enterprise/support.ts"],"names":[],"mappings":"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"}
|