@pulsetrackme/sdk 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.
- package/LICENSE +1 -0
- package/README.md +70 -0
- package/dist/core/SessionStorageService.d.ts +48 -0
- package/dist/core/SessionStorageService.d.ts.map +1 -0
- package/dist/core/bot.d.ts +29 -0
- package/dist/core/bot.d.ts.map +1 -0
- package/dist/core/config.d.ts +8 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/errors.d.ts +15 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/interfaces.d.ts +108 -0
- package/dist/core/interfaces.d.ts.map +1 -0
- package/dist/core/rrweb/rrweborchestrator.d.ts +22 -0
- package/dist/core/rrweb/rrweborchestrator.d.ts.map +1 -0
- package/dist/core/rrweb/rrwebsender.d.ts +22 -0
- package/dist/core/rrweb/rrwebsender.d.ts.map +1 -0
- package/dist/core/rrweb/rrwebtracker.d.ts +21 -0
- package/dist/core/rrweb/rrwebtracker.d.ts.map +1 -0
- package/dist/core/rrweb/sessionmanager.d.ts +14 -0
- package/dist/core/rrweb/sessionmanager.d.ts.map +1 -0
- package/dist/core/sessions/sessionbsender.d.ts +22 -0
- package/dist/core/sessions/sessionbsender.d.ts.map +1 -0
- package/dist/core/sessions/sessionmanager.d.ts +14 -0
- package/dist/core/sessions/sessionmanager.d.ts.map +1 -0
- package/dist/core/sessions/sessionorchestrator.d.ts +22 -0
- package/dist/core/sessions/sessionorchestrator.d.ts.map +1 -0
- package/dist/core/sessions/sessiontracker.d.ts +21 -0
- package/dist/core/sessions/sessiontracker.d.ts.map +1 -0
- package/dist/core/tracker.d.ts +26 -0
- package/dist/core/tracker.d.ts.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/modules/system.d.ts +19 -0
- package/dist/modules/system.d.ts.map +1 -0
- package/dist/plugins/feedback.d.ts +40 -0
- package/dist/plugins/feedback.d.ts.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/pulsetrack.cjs.js +35 -0
- package/dist/pulsetrack.esm.js +35 -0
- package/dist/pulsetrack.umd.js +35 -0
- package/dist/pulsetrack.umd.min.js +35 -0
- package/dist/sw/sw-tracking.d.ts +1 -0
- package/dist/sw/sw-tracking.d.ts.map +1 -0
- package/dist/types/events.d.ts +18 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/utils/env.d.ts +1 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/package.json +49 -0
package/LICENSE
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Unauthorized use, copying, modification, or distribution is prohibited.
|
package/README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# PulseTrack
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/pulsetrack)
|
|
4
|
+
[](https://www.typescriptlang.org/)
|
|
5
|
+
|
|
6
|
+
PulseTrack is a lightweight analytics and feedback collection library designed for modern web applications. It provides developers with powerful tools to understand user behavior, collect feedback, and make data-driven decisions.
|
|
7
|
+
|
|
8
|
+
## ✨ Features
|
|
9
|
+
|
|
10
|
+
- 📊 **Comprehensive Analytics**
|
|
11
|
+
- Page view and navigation tracking
|
|
12
|
+
- User interaction monitoring (clicks, form submissions, etc.)
|
|
13
|
+
- Custom event tracking
|
|
14
|
+
- Session management
|
|
15
|
+
|
|
16
|
+
- 💬 **User Feedback**
|
|
17
|
+
- Built-in feedback widgets
|
|
18
|
+
- Customizable feedback forms
|
|
19
|
+
- Screenshot capture for visual feedback
|
|
20
|
+
- User metadata collection
|
|
21
|
+
|
|
22
|
+
- 🚀 **Developer Friendly**
|
|
23
|
+
- TypeScript support
|
|
24
|
+
- Framework agnostic (works with React, Vue, Angular, etc.)
|
|
25
|
+
- Extensible plugin system
|
|
26
|
+
- Detailed documentation
|
|
27
|
+
|
|
28
|
+
## 📦 Installation
|
|
29
|
+
|
|
30
|
+
Install PulseTrack using npm:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install pulsetrack
|
|
34
|
+
```
|
|
35
|
+
or
|
|
36
|
+
```bash
|
|
37
|
+
yarn add pulsetrack
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 🚀 Quick Start
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { PulseTrack } from 'pulsetrack';
|
|
44
|
+
|
|
45
|
+
// Initialize with your configuration
|
|
46
|
+
const tracker = new PulseTrack({
|
|
47
|
+
businessId: 'your-business-id'
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// Track a custom event
|
|
51
|
+
tracker.track('user_action', { action: 'button_click', buttonId: 'cta-button' });
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 📚 Documentation
|
|
55
|
+
|
|
56
|
+
For detailed documentation, please visit our [documentation website](https://docs.rojastudio.xyz/docs).
|
|
57
|
+
|
|
58
|
+
### Available Plugins
|
|
59
|
+
|
|
60
|
+
- **Analytics**: Core tracking functionality
|
|
61
|
+
- **Feedback**: User feedback collection
|
|
62
|
+
- **Performance**: Page load and resource timing
|
|
63
|
+
- **Error Tracking**: JavaScript error monitoring
|
|
64
|
+
|
|
65
|
+
## 🔧 Configuration
|
|
66
|
+
|
|
67
|
+
| Option | Type | Default | Description |
|
|
68
|
+
|--------|------|---------|-------------|
|
|
69
|
+
| `businessId` | string | - | Your business identifier (required) |
|
|
70
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Session, EventData } from './interfaces';
|
|
2
|
+
export interface SessionStorageOptions {
|
|
3
|
+
storageKey?: string;
|
|
4
|
+
inactivityMs?: number;
|
|
5
|
+
businessId?: string;
|
|
6
|
+
credentials?: RequestCredentials;
|
|
7
|
+
useBeacon?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export type FlushReason = 'pagehide' | 'visibility' | 'inactivity' | 'manual' | 'feedback' | 'navigation';
|
|
10
|
+
export declare class SessionStorageService {
|
|
11
|
+
private options;
|
|
12
|
+
private storageKey;
|
|
13
|
+
private metaKey;
|
|
14
|
+
private session;
|
|
15
|
+
private sessionStartMs;
|
|
16
|
+
private inactivityTimer;
|
|
17
|
+
private isSending;
|
|
18
|
+
private disabled;
|
|
19
|
+
private endpoint;
|
|
20
|
+
constructor(options?: SessionStorageOptions);
|
|
21
|
+
private isSPA;
|
|
22
|
+
private getUser;
|
|
23
|
+
createNewSession(): Session;
|
|
24
|
+
loadSession(): Session;
|
|
25
|
+
saveSession(): void;
|
|
26
|
+
restartSession(): Session;
|
|
27
|
+
startAutoFlush(): void;
|
|
28
|
+
stopAutoFlush(): void;
|
|
29
|
+
onPageChange(newPage: string): void;
|
|
30
|
+
addEvent(type: string, data?: EventData): void;
|
|
31
|
+
updateScrollPercentage(percent: number): void;
|
|
32
|
+
flushNow(reason?: FlushReason): Promise<boolean>;
|
|
33
|
+
private sendPayload;
|
|
34
|
+
private ensureCurrentPage;
|
|
35
|
+
private addDuration;
|
|
36
|
+
private getPage;
|
|
37
|
+
private pushPageHistory;
|
|
38
|
+
private resetInactivityTimer;
|
|
39
|
+
private readMeta;
|
|
40
|
+
private writeMeta;
|
|
41
|
+
private requireSession;
|
|
42
|
+
private handlePageHide;
|
|
43
|
+
private handleVisibilityChange;
|
|
44
|
+
private handleStorageEvent;
|
|
45
|
+
setFingerprint(fingerprint: string | null): void;
|
|
46
|
+
}
|
|
47
|
+
export default SessionStorageService;
|
|
48
|
+
//# sourceMappingURL=SessionStorageService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionStorageService.d.ts","sourceRoot":"","sources":["../../src/core/SessionStorageService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAiC,SAAS,EAAiB,MAAM,cAAc,CAAC;AAEhG,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,YAAY,CAAC;AAUjB,qBAAa,qBAAqB;IAChC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,QAAQ,CAAyC;gBAE7C,OAAO,GAAE,qBAA0B;IAiB/C,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,OAAO;IAQf,gBAAgB,IAAI,OAAO;IAiD3B,WAAW,IAAI,OAAO;IA4BtB,WAAW,IAAI,IAAI;IAKnB,cAAc,IAAI,OAAO;IAWzB,cAAc,IAAI,IAAI;IAetB,aAAa,IAAI,IAAI;IAWrB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAgCnC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,SAAc,GAAG,IAAI;IAkClD,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAavC,QAAQ,CAAC,MAAM,GAAE,WAAsB,GAAG,OAAO,CAAC,OAAO,CAAC;YAoClD,WAAW;IAyBzB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc,CAAmC;IACzD,OAAO,CAAC,sBAAsB,CAAqF;IACnH,OAAO,CAAC,kBAAkB,CAGxB;IAEF,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;CAKjD;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare class botTracker {
|
|
2
|
+
private botDetector;
|
|
3
|
+
private botInfo;
|
|
4
|
+
private endpoint;
|
|
5
|
+
events: any;
|
|
6
|
+
options: any;
|
|
7
|
+
constructor(events?: any, options?: any);
|
|
8
|
+
initBotDetection(): Promise<void>;
|
|
9
|
+
isBot(): boolean;
|
|
10
|
+
isBotAsync(): Promise<boolean>;
|
|
11
|
+
private sendBotStatus;
|
|
12
|
+
private showBotBlockMessage;
|
|
13
|
+
private handleBotView;
|
|
14
|
+
}
|
|
15
|
+
export interface BotDetectionResult {
|
|
16
|
+
isBot: boolean;
|
|
17
|
+
score: number;
|
|
18
|
+
reasons: string[];
|
|
19
|
+
incognito: boolean;
|
|
20
|
+
vpn: boolean | null;
|
|
21
|
+
}
|
|
22
|
+
export declare class BotDetector {
|
|
23
|
+
private vpnCheckUrl;
|
|
24
|
+
constructor(vpnCheckUrl?: string);
|
|
25
|
+
detect(): Promise<BotDetectionResult>;
|
|
26
|
+
private detectCanvasAnomaly;
|
|
27
|
+
private detectIncognito;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=bot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/core/bot.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IAEnB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,QAAQ,CAAyC;IACzD,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC;gBAED,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG;IAO1B,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC,KAAK,IAAI,OAAO;IAIV,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;YAO7B,aAAa;IA0B3B,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,aAAa;CAsBxB;AAKD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CACrB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,CAAC,EAAE,MAAM;IAInB,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA+FlD,OAAO,CAAC,mBAAmB;YAuBb,eAAe;CAW9B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface PulseConfig {
|
|
2
|
+
businessId: string;
|
|
3
|
+
endpoint?: string;
|
|
4
|
+
environment?: 'dev' | 'prod';
|
|
5
|
+
}
|
|
6
|
+
export declare function initConfig(userConfig: PulseConfig): void;
|
|
7
|
+
export declare function getConfig(): PulseConfig;
|
|
8
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC9B;AAID,wBAAgB,UAAU,CAAC,UAAU,EAAE,WAAW,QAWjD;AAED,wBAAgB,SAAS,IAAI,WAAW,CAKvC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { TrackedError } from './interfaces';
|
|
2
|
+
type ErrorHandler = (error: TrackedError) => void;
|
|
3
|
+
export declare class ErrorsTracker {
|
|
4
|
+
private onError;
|
|
5
|
+
private pageUrl;
|
|
6
|
+
private seen;
|
|
7
|
+
constructor(onError: ErrorHandler);
|
|
8
|
+
init(): void;
|
|
9
|
+
private handleError;
|
|
10
|
+
private handleRejection;
|
|
11
|
+
private record;
|
|
12
|
+
private generateErrorHash;
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/core/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAElD,qBAAa,aAAa;IAIZ,OAAO,CAAC,OAAO;IAH3B,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,IAAI,CAAmC;gBAE3B,OAAO,EAAE,YAAY;IACjC,IAAI,IAAI,IAAI;IAKpB,OAAO,CAAC,WAAW,CAQjB;IAEF,OAAO,CAAC,eAAe,CAUrB;IAEF,OAAO,CAAC,MAAM;IA0Bd,OAAO,CAAC,iBAAiB;CAS1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
export interface PageNavigation {
|
|
2
|
+
page: string;
|
|
3
|
+
timestamp: number;
|
|
4
|
+
previousPage?: string;
|
|
5
|
+
duration?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface Session {
|
|
8
|
+
id: string;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
errors: TrackedError[];
|
|
11
|
+
userInfo: UserInfo;
|
|
12
|
+
pages: PageSession[];
|
|
13
|
+
pageHistory: PageNavigation[];
|
|
14
|
+
durationMs?: number;
|
|
15
|
+
userId?: string | undefined;
|
|
16
|
+
entryPage?: string;
|
|
17
|
+
exitPage?: string;
|
|
18
|
+
systemEvents: SystemEvent[];
|
|
19
|
+
totalClicks?: number;
|
|
20
|
+
totalInputs?: number;
|
|
21
|
+
totalPagesVisited?: number;
|
|
22
|
+
rrwebEvents: any[];
|
|
23
|
+
}
|
|
24
|
+
export interface PageSession {
|
|
25
|
+
page: string;
|
|
26
|
+
duration: number;
|
|
27
|
+
totalClicks: number;
|
|
28
|
+
totalInputs: number;
|
|
29
|
+
percentageScroll: number;
|
|
30
|
+
events: Event[];
|
|
31
|
+
}
|
|
32
|
+
export interface Event {
|
|
33
|
+
type: string;
|
|
34
|
+
data: EventData;
|
|
35
|
+
timestamp: number;
|
|
36
|
+
relativeTime: number;
|
|
37
|
+
page: string;
|
|
38
|
+
}
|
|
39
|
+
export interface TrackerConfig {
|
|
40
|
+
endpoint?: string;
|
|
41
|
+
environment?: string;
|
|
42
|
+
release?: string;
|
|
43
|
+
userId?: string;
|
|
44
|
+
enableRRWeb?: boolean;
|
|
45
|
+
excludePaths?: (string | RegExp)[];
|
|
46
|
+
}
|
|
47
|
+
export interface EventData {
|
|
48
|
+
[key: string]: any;
|
|
49
|
+
}
|
|
50
|
+
export interface SystemEvent {
|
|
51
|
+
type: string;
|
|
52
|
+
data: EventData;
|
|
53
|
+
page: string;
|
|
54
|
+
timestamp: number;
|
|
55
|
+
relativeTime: number;
|
|
56
|
+
}
|
|
57
|
+
export interface PageEvent {
|
|
58
|
+
type: string;
|
|
59
|
+
data: EventData;
|
|
60
|
+
timestamp: number;
|
|
61
|
+
relativeTime: number;
|
|
62
|
+
page: string;
|
|
63
|
+
}
|
|
64
|
+
export interface Page {
|
|
65
|
+
page: string;
|
|
66
|
+
duration: number;
|
|
67
|
+
totalClicks: number;
|
|
68
|
+
totalInputs: number;
|
|
69
|
+
percentageScroll: number;
|
|
70
|
+
events: PageEvent[];
|
|
71
|
+
}
|
|
72
|
+
export interface UserInfo {
|
|
73
|
+
browser: string;
|
|
74
|
+
platform: string;
|
|
75
|
+
language: string;
|
|
76
|
+
fingerprint: string | null;
|
|
77
|
+
isBot: boolean | null;
|
|
78
|
+
deviceType: 'mobile' | 'desktop';
|
|
79
|
+
screen: {
|
|
80
|
+
width: number;
|
|
81
|
+
height: number;
|
|
82
|
+
};
|
|
83
|
+
timezone: string | undefined;
|
|
84
|
+
}
|
|
85
|
+
export interface RecordedEvent {
|
|
86
|
+
type: string;
|
|
87
|
+
data: EventData;
|
|
88
|
+
timestamp: number;
|
|
89
|
+
relativeTime: number;
|
|
90
|
+
page: string;
|
|
91
|
+
}
|
|
92
|
+
export interface SystemTrackerOptions {
|
|
93
|
+
businessId: string;
|
|
94
|
+
userId?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface TrackedError {
|
|
97
|
+
message: string;
|
|
98
|
+
source?: string;
|
|
99
|
+
lineno?: number;
|
|
100
|
+
colno?: number;
|
|
101
|
+
stack?: string;
|
|
102
|
+
timestamp: number;
|
|
103
|
+
page: string;
|
|
104
|
+
count?: number;
|
|
105
|
+
hash: string;
|
|
106
|
+
lastOccurred: number;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/core/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RRWebTracker, RRWebEvent } from './rrwebtracker';
|
|
2
|
+
export interface RRWebChunk {
|
|
3
|
+
sessionId: string;
|
|
4
|
+
events: RRWebEvent[];
|
|
5
|
+
sentAt: number;
|
|
6
|
+
businessId?: string;
|
|
7
|
+
reason?: 'interval' | 'max-events' | 'visibility' | 'pagehide' | 'unload' | 'expired';
|
|
8
|
+
}
|
|
9
|
+
export declare class RRWebOrchestrator {
|
|
10
|
+
private tracker;
|
|
11
|
+
private sendFn;
|
|
12
|
+
private intervalId;
|
|
13
|
+
private flushing;
|
|
14
|
+
private readonly FLUSH_INTERVAL;
|
|
15
|
+
private readonly MAX_EVENTS;
|
|
16
|
+
constructor(tracker: RRWebTracker, sendFn: (chunk: RRWebChunk) => Promise<boolean>);
|
|
17
|
+
start(): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
onEventTick(): void;
|
|
20
|
+
flush(force?: boolean, reason?: RRWebChunk['reason']): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=rrweborchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rrweborchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/rrweb/rrweborchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;CACvF;AAED,qBAAa,iBAAiB;IAQ1B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IARhB,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;gBAGvB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC;IAGzD,KAAK;IAyBL,IAAI;IAMJ,WAAW;IAML,KAAK,CACT,KAAK,UAAQ,EACb,MAAM,GAAE,UAAU,CAAC,QAAQ,CAAc;CAqD5C"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { RRWebChunk } from './rrweborchestrator';
|
|
2
|
+
export declare function sendToBackend(chunk: RRWebChunk): Promise<boolean>;
|
|
3
|
+
export declare function collectClientInfo(): {
|
|
4
|
+
browser: string;
|
|
5
|
+
language: string;
|
|
6
|
+
languages: readonly string[];
|
|
7
|
+
platform: string;
|
|
8
|
+
timezone: string;
|
|
9
|
+
deviceType: string;
|
|
10
|
+
isBot: boolean;
|
|
11
|
+
fingerprint: null;
|
|
12
|
+
screen: {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
dpr: number;
|
|
16
|
+
};
|
|
17
|
+
hardware: {
|
|
18
|
+
memory: any;
|
|
19
|
+
cores: number;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=rrwebsender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rrwebsender.d.ts","sourceRoot":"","sources":["../../../src/core/rrweb/rrwebsender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,wBAAsB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBvE;AAID,wBAAgB,iBAAiB;;;;;;;;;;;;;;;;;;EAqBhC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { eventWithTime } from '@rrweb/types';
|
|
2
|
+
import { TrackedError } from '../interfaces';
|
|
3
|
+
export type RRWebEvent = eventWithTime;
|
|
4
|
+
export declare class RRWebTracker {
|
|
5
|
+
private buffer;
|
|
6
|
+
private stopFn;
|
|
7
|
+
private recording;
|
|
8
|
+
private hasFullSnapshot;
|
|
9
|
+
start(): void;
|
|
10
|
+
addTag(type: string, data?: Record<string, any>): void;
|
|
11
|
+
addErrorTag(error: TrackedError): void;
|
|
12
|
+
addRageClickTag(count: number): void;
|
|
13
|
+
addConversionTag(step: string): void;
|
|
14
|
+
canFlush(): boolean;
|
|
15
|
+
getBufferSize(): number;
|
|
16
|
+
peek(): RRWebEvent[];
|
|
17
|
+
commit(): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
isRecording(): boolean;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=rrwebtracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rrwebtracker.d.ts","sourceRoot":"","sources":["../../../src/core/rrweb/rrwebtracker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;IAEhC,KAAK;IAgCL,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAWnD,WAAW,CAAC,KAAK,EAAE,YAAY;IAQ/B,eAAe,CAAC,KAAK,EAAE,MAAM;IAI7B,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAI7B,QAAQ;IAIR,aAAa;IAIb,IAAI,IAAI,UAAU,EAAE;IAIpB,MAAM;IAIN,IAAI;IAOJ,WAAW;CAGZ"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default class SessionManager {
|
|
2
|
+
private static KEY;
|
|
3
|
+
private static MAX_DURATION_MS;
|
|
4
|
+
static getSession(): any;
|
|
5
|
+
static getSessionId(): string;
|
|
6
|
+
static isExpired(): boolean;
|
|
7
|
+
static createSession(expired?: boolean): {
|
|
8
|
+
id: `${string}-${string}-${string}-${string}-${string}`;
|
|
9
|
+
startedAt: number;
|
|
10
|
+
expiredFromPrevious: boolean;
|
|
11
|
+
};
|
|
12
|
+
static reset(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=sessionmanager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionmanager.d.ts","sourceRoot":"","sources":["../../../src/core/rrweb/sessionmanager.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAkB;IAEhD,MAAM,CAAC,UAAU;IAmBjB,MAAM,CAAC,YAAY,IAAI,MAAM;IAI7B,MAAM,CAAC,SAAS,IAAI,OAAO;IAQ3B,MAAM,CAAC,aAAa,CAAC,OAAO,UAAQ;;;;;IAWpC,MAAM,CAAC,KAAK;CAGb"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { RRWebChunk } from './sessionorchestrator';
|
|
2
|
+
export declare function sendToBackend(chunk: RRWebChunk): Promise<boolean>;
|
|
3
|
+
export declare function collectClientInfo(): {
|
|
4
|
+
browser: string;
|
|
5
|
+
language: string;
|
|
6
|
+
languages: readonly string[];
|
|
7
|
+
platform: string;
|
|
8
|
+
timezone: string;
|
|
9
|
+
deviceType: string;
|
|
10
|
+
isBot: boolean;
|
|
11
|
+
fingerprint: null;
|
|
12
|
+
screen: {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
dpr: number;
|
|
16
|
+
};
|
|
17
|
+
hardware: {
|
|
18
|
+
memory: any;
|
|
19
|
+
cores: number;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=sessionbsender.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionbsender.d.ts","sourceRoot":"","sources":["../../../src/core/sessions/sessionbsender.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,wBAAsB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBvE;AAID,wBAAgB,iBAAiB;;;;;;;;;;;;;;;;;;EAqBhC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default class SessionManager {
|
|
2
|
+
private static KEY;
|
|
3
|
+
private static MAX_DURATION_MS;
|
|
4
|
+
static getSession(): any;
|
|
5
|
+
static getSessionId(): string;
|
|
6
|
+
static isExpired(): boolean;
|
|
7
|
+
static createSession(expired?: boolean): {
|
|
8
|
+
id: `${string}-${string}-${string}-${string}-${string}`;
|
|
9
|
+
startedAt: number;
|
|
10
|
+
expiredFromPrevious: boolean;
|
|
11
|
+
};
|
|
12
|
+
static reset(): void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=sessionmanager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionmanager.d.ts","sourceRoot":"","sources":["../../../src/core/sessions/sessionmanager.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAmB;IACrC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAkB;IAEhD,MAAM,CAAC,UAAU;IAmBjB,MAAM,CAAC,YAAY,IAAI,MAAM;IAI7B,MAAM,CAAC,SAAS,IAAI,OAAO;IAQ3B,MAAM,CAAC,aAAa,CAAC,OAAO,UAAQ;;;;;IAWpC,MAAM,CAAC,KAAK;CAGb"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RRWebTracker, RRWebEvent } from './sessiontracker';
|
|
2
|
+
export interface RRWebChunk {
|
|
3
|
+
sessionId: string;
|
|
4
|
+
events: RRWebEvent[];
|
|
5
|
+
sentAt: number;
|
|
6
|
+
businessId?: string;
|
|
7
|
+
reason?: 'interval' | 'max-events' | 'visibility' | 'pagehide' | 'unload' | 'expired';
|
|
8
|
+
}
|
|
9
|
+
export declare class RRWebOrchestrator {
|
|
10
|
+
private tracker;
|
|
11
|
+
private sendFn;
|
|
12
|
+
private intervalId;
|
|
13
|
+
private flushing;
|
|
14
|
+
private readonly FLUSH_INTERVAL;
|
|
15
|
+
private readonly MAX_EVENTS;
|
|
16
|
+
constructor(tracker: RRWebTracker, sendFn: (chunk: RRWebChunk) => Promise<boolean>);
|
|
17
|
+
start(): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
onEventTick(): void;
|
|
20
|
+
flush(force?: boolean, reason?: RRWebChunk['reason']): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=sessionorchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionorchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/sessions/sessionorchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG5D,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;CACvF;AAED,qBAAa,iBAAiB;IAQ1B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM;IARhB,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;gBAGvB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC;IAGzD,KAAK;IAsBL,IAAI;IAMJ,WAAW;IAML,KAAK,CACT,KAAK,UAAQ,EACb,MAAM,GAAE,UAAU,CAAC,QAAQ,CAAc;CA4C5C"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { eventWithTime } from '@rrweb/types';
|
|
2
|
+
import { TrackedError } from '../interfaces';
|
|
3
|
+
export type RRWebEvent = eventWithTime;
|
|
4
|
+
export declare class RRWebTracker {
|
|
5
|
+
private buffer;
|
|
6
|
+
private stopFn;
|
|
7
|
+
private recording;
|
|
8
|
+
private hasFullSnapshot;
|
|
9
|
+
start(): void;
|
|
10
|
+
addTag(type: string, data?: Record<string, any>): void;
|
|
11
|
+
addErrorTag(error: TrackedError): void;
|
|
12
|
+
addRageClickTag(count: number): void;
|
|
13
|
+
addConversionTag(step: string): void;
|
|
14
|
+
canFlush(): boolean;
|
|
15
|
+
getBufferSize(): number;
|
|
16
|
+
peek(): RRWebEvent[];
|
|
17
|
+
commit(): void;
|
|
18
|
+
stop(): void;
|
|
19
|
+
isRecording(): boolean;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=sessiontracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessiontracker.d.ts","sourceRoot":"","sources":["../../../src/core/sessions/sessiontracker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;IAEhC,KAAK;IAoBL,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAQnD,WAAW,CAAC,KAAK,EAAE,YAAY;IAQ/B,eAAe,CAAC,KAAK,EAAE,MAAM;IAI7B,gBAAgB,CAAC,IAAI,EAAE,MAAM;IAI7B,QAAQ;IAIR,aAAa;IAIb,IAAI,IAAI,UAAU,EAAE;IAIpB,MAAM;IAIN,IAAI;IAMJ,WAAW;CAGZ"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TrackedError } from './interfaces';
|
|
2
|
+
export interface TrackerOptions {
|
|
3
|
+
businessId?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class SystemTracker {
|
|
6
|
+
private options;
|
|
7
|
+
private rrwebTracker;
|
|
8
|
+
private rrwebOrchestrator;
|
|
9
|
+
private errorsTracker;
|
|
10
|
+
private isPaused;
|
|
11
|
+
private errors;
|
|
12
|
+
constructor(options?: TrackerOptions);
|
|
13
|
+
init(): void;
|
|
14
|
+
start(): void;
|
|
15
|
+
pause(): void;
|
|
16
|
+
resume(): void;
|
|
17
|
+
stop(): void;
|
|
18
|
+
private handleError;
|
|
19
|
+
addTag(type: string, payload?: any): void;
|
|
20
|
+
getData(): {
|
|
21
|
+
errors: TrackedError[];
|
|
22
|
+
rrweb: import("@rrweb/types").eventWithTime[];
|
|
23
|
+
};
|
|
24
|
+
reset(): void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=tracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/core/tracker.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,aAAa;IAOZ,OAAO,CAAC,OAAO;IAN3B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAsB;gBAEhB,OAAO,GAAE,cAAmB;IA2BzC,IAAI;IAIJ,KAAK;IAIL,KAAK;IAML,MAAM;IAMN,IAAI;IAIX,OAAO,CAAC,WAAW,CAEjB;IAEF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG;IAIlC,OAAO;;;;IAOP,KAAK;CAIN"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { SystemTracker } from './core/tracker';
|
|
2
|
+
import { Feedback as FeedbackFactory } from './plugins/feedback';
|
|
3
|
+
export declare const PulseTrack: {
|
|
4
|
+
init(config: {
|
|
5
|
+
businessId: string;
|
|
6
|
+
}): void;
|
|
7
|
+
tracker(): SystemTracker;
|
|
8
|
+
Feedback(options?: Omit<Parameters<typeof FeedbackFactory>[0], "tracker">): {
|
|
9
|
+
tracker: SystemTracker;
|
|
10
|
+
config: Required<Omit<import("./plugins/feedback").FeedbackConfig, "tracker">> & {
|
|
11
|
+
tracker: SystemTracker;
|
|
12
|
+
};
|
|
13
|
+
container: HTMLElement;
|
|
14
|
+
feedbackWindow: HTMLElement;
|
|
15
|
+
isOpen: boolean;
|
|
16
|
+
currentScreenshot: string;
|
|
17
|
+
feedbackType: "" | "error" | "suggested";
|
|
18
|
+
isSubmitting: boolean;
|
|
19
|
+
init(): void;
|
|
20
|
+
getPositionClasses(): string;
|
|
21
|
+
toggleFeedbackWindow(): void;
|
|
22
|
+
setFeedbackType(type: "" | "error" | "suggested", selectedBtn?: HTMLElement): void;
|
|
23
|
+
toggleForm(enable: boolean): void;
|
|
24
|
+
captureScreenshot(): Promise<void>;
|
|
25
|
+
removeScreenshot(): void;
|
|
26
|
+
getFingerprint(): Promise<string | null>;
|
|
27
|
+
getUser(): string;
|
|
28
|
+
submitFeedback(): Promise<void>;
|
|
29
|
+
base64ToBlob(base64: string): Blob;
|
|
30
|
+
resetForm(): void;
|
|
31
|
+
createButton(): void;
|
|
32
|
+
createFeedbackWindow(): void;
|
|
33
|
+
addStyles(): void;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAIjE,eAAO,MAAM,UAAU;iBACR;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;;uBAWhB,IAAI,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CAM1E,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
interface SystemTrackerAPI {
|
|
2
|
+
/** Initialize the tracker */
|
|
3
|
+
init(): void;
|
|
4
|
+
/** Start or resume tracking */
|
|
5
|
+
start(): void;
|
|
6
|
+
/** Pause tracking */
|
|
7
|
+
pause(): void;
|
|
8
|
+
/** Stop tracking and flush events */
|
|
9
|
+
stop(): void;
|
|
10
|
+
/** Reset tracker to initial state */
|
|
11
|
+
reset(): void;
|
|
12
|
+
/** Get current tracking data */
|
|
13
|
+
getData(): void;
|
|
14
|
+
/** Track a custom event */
|
|
15
|
+
addTag(type: string, payload?: any): void;
|
|
16
|
+
}
|
|
17
|
+
export declare const systemTracker: SystemTrackerAPI;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/modules/system.ts"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,6BAA6B;IAC7B,IAAI,IAAI,IAAI,CAAC;IACb,+BAA+B;IAC/B,KAAK,IAAI,IAAI,CAAC;IACd,qBAAqB;IACrB,KAAK,IAAI,IAAI,CAAC;IACd,qCAAqC;IACrC,IAAI,IAAI,IAAI,CAAC;IACb,qCAAqC;IACrC,KAAK,IAAI,IAAI,CAAC;IACd,gCAAgC;IAChC,OAAO,IAAI,IAAI,CAAC;IAChB,2BAA2B;IAC3B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC;CAC3C;AAED,eAAO,MAAM,aAAa,EAAE,gBAQ3B,CAAC"}
|