@kubesense/kubesense-browser-logs 0.0.0-stage → 2.0.0-beta.1
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 +201 -0
- package/README.md +90 -2
- package/bundle/kubesense-logs.js +1 -0
- package/cjs/boot/logsPublicApi.d.ts +231 -0
- package/cjs/boot/logsPublicApi.js +75 -0
- package/cjs/boot/logsPublicApi.js.map +1 -0
- package/cjs/boot/preStartLogs.d.ts +8 -0
- package/cjs/boot/preStartLogs.js +105 -0
- package/cjs/boot/preStartLogs.js.map +1 -0
- package/cjs/boot/startLogs.d.ts +35 -0
- package/cjs/boot/startLogs.js +54 -0
- package/cjs/boot/startLogs.js.map +1 -0
- package/cjs/domain/assembly.d.ts +5 -0
- package/cjs/domain/assembly.js +35 -0
- package/cjs/domain/assembly.js.map +1 -0
- package/cjs/domain/configuration.d.ts +306 -0
- package/cjs/domain/configuration.js +86 -0
- package/cjs/domain/configuration.js.map +1 -0
- package/cjs/domain/console/consoleCollection.d.ts +20 -0
- package/cjs/domain/console/consoleCollection.js +37 -0
- package/cjs/domain/console/consoleCollection.js.map +1 -0
- package/cjs/domain/contexts/commonContext.d.ts +2 -0
- package/cjs/domain/contexts/commonContext.js +13 -0
- package/cjs/domain/contexts/commonContext.js.map +1 -0
- package/cjs/domain/contexts/internalContext.d.ts +7 -0
- package/cjs/domain/contexts/internalContext.js +11 -0
- package/cjs/domain/contexts/internalContext.js.map +1 -0
- package/cjs/domain/contexts/rumInternalContext.d.ts +2 -0
- package/cjs/domain/contexts/rumInternalContext.js +32 -0
- package/cjs/domain/contexts/rumInternalContext.js.map +1 -0
- package/cjs/domain/contexts/sessionContext.d.ts +4 -0
- package/cjs/domain/contexts/sessionContext.js +20 -0
- package/cjs/domain/contexts/sessionContext.js.map +1 -0
- package/cjs/domain/contexts/trackingConsentContext.d.ts +3 -0
- package/cjs/domain/contexts/trackingConsentContext.js +14 -0
- package/cjs/domain/contexts/trackingConsentContext.js.map +1 -0
- package/cjs/domain/createErrorFieldFromRawError.d.ts +10 -0
- package/cjs/domain/createErrorFieldFromRawError.js +15 -0
- package/cjs/domain/createErrorFieldFromRawError.js.map +1 -0
- package/cjs/domain/hooks.d.ts +28 -0
- package/cjs/domain/hooks.js +13 -0
- package/cjs/domain/hooks.js.map +1 -0
- package/cjs/domain/lifeCycle.d.ts +24 -0
- package/cjs/domain/lifeCycle.js +6 -0
- package/cjs/domain/lifeCycle.js.map +1 -0
- package/cjs/domain/logger/isAuthorized.d.ts +17 -0
- package/cjs/domain/logger/isAuthorized.js +34 -0
- package/cjs/domain/logger/isAuthorized.js.map +1 -0
- package/cjs/domain/logger/loggerCollection.d.ts +7 -0
- package/cjs/domain/logger/loggerCollection.js +47 -0
- package/cjs/domain/logger/loggerCollection.js.map +1 -0
- package/cjs/domain/logger.d.ts +48 -0
- package/cjs/domain/logger.js +112 -0
- package/cjs/domain/logger.js.map +1 -0
- package/cjs/domain/networkError/networkErrorCollection.d.ts +9 -0
- package/cjs/domain/networkError/networkErrorCollection.js +57 -0
- package/cjs/domain/networkError/networkErrorCollection.js.map +1 -0
- package/cjs/domain/plugins.d.ts +49 -0
- package/cjs/domain/plugins.js +12 -0
- package/cjs/domain/plugins.js.map +1 -0
- package/cjs/domain/remoteSdkConfiguration.d.ts +26 -0
- package/cjs/domain/remoteSdkConfiguration.js +67 -0
- package/cjs/domain/remoteSdkConfiguration.js.map +1 -0
- package/cjs/domain/report/reportCollection.d.ts +13 -0
- package/cjs/domain/report/reportCollection.js +30 -0
- package/cjs/domain/report/reportCollection.js.map +1 -0
- package/cjs/domain/reportError.d.ts +2 -0
- package/cjs/domain/reportError.js +20 -0
- package/cjs/domain/reportError.js.map +1 -0
- package/cjs/domain/runtimeError/runtimeErrorCollection.d.ts +14 -0
- package/cjs/domain/runtimeError/runtimeErrorCollection.js +29 -0
- package/cjs/domain/runtimeError/runtimeErrorCollection.js.map +1 -0
- package/cjs/domainContext.types.d.ts +11 -0
- package/cjs/entries/main.d.ts +33 -0
- package/cjs/entries/main.js +31 -0
- package/cjs/entries/main.js.map +1 -0
- package/cjs/logsEvent.types.d.ts +192 -0
- package/cjs/rawLogsEvent.types.d.ts +59 -0
- package/cjs/transport/startLogsBatch.d.ts +4 -0
- package/cjs/transport/startLogsBatch.js +22 -0
- package/cjs/transport/startLogsBatch.js.map +1 -0
- package/cjs/transport/startLogsBridge.d.ts +2 -0
- package/cjs/transport/startLogsBridge.js +13 -0
- package/cjs/transport/startLogsBridge.js.map +1 -0
- package/esm/boot/logsPublicApi.mjs +75 -0
- package/esm/boot/logsPublicApi.mjs.map +1 -0
- package/esm/boot/preStartLogs.mjs +105 -0
- package/esm/boot/preStartLogs.mjs.map +1 -0
- package/esm/boot/startLogs.mjs +54 -0
- package/esm/boot/startLogs.mjs.map +1 -0
- package/esm/domain/assembly.mjs +35 -0
- package/esm/domain/assembly.mjs.map +1 -0
- package/esm/domain/configuration.mjs +84 -0
- package/esm/domain/configuration.mjs.map +1 -0
- package/esm/domain/console/consoleCollection.mjs +36 -0
- package/esm/domain/console/consoleCollection.mjs.map +1 -0
- package/esm/domain/contexts/commonContext.mjs +13 -0
- package/esm/domain/contexts/commonContext.mjs.map +1 -0
- package/esm/domain/contexts/internalContext.mjs +11 -0
- package/esm/domain/contexts/internalContext.mjs.map +1 -0
- package/esm/domain/contexts/rumInternalContext.mjs +32 -0
- package/esm/domain/contexts/rumInternalContext.mjs.map +1 -0
- package/esm/domain/contexts/sessionContext.mjs +20 -0
- package/esm/domain/contexts/sessionContext.mjs.map +1 -0
- package/esm/domain/contexts/trackingConsentContext.mjs +14 -0
- package/esm/domain/contexts/trackingConsentContext.mjs.map +1 -0
- package/esm/domain/createErrorFieldFromRawError.mjs +15 -0
- package/esm/domain/createErrorFieldFromRawError.mjs.map +1 -0
- package/esm/domain/hooks.mjs +13 -0
- package/esm/domain/hooks.mjs.map +1 -0
- package/esm/domain/lifeCycle.mjs +7 -0
- package/esm/domain/lifeCycle.mjs.map +1 -0
- package/esm/domain/logger/isAuthorized.mjs +32 -0
- package/esm/domain/logger/isAuthorized.mjs.map +1 -0
- package/esm/domain/logger/loggerCollection.mjs +47 -0
- package/esm/domain/logger/loggerCollection.mjs.map +1 -0
- package/esm/domain/logger.mjs +110 -0
- package/esm/domain/logger.mjs.map +1 -0
- package/esm/domain/networkError/networkErrorCollection.mjs +56 -0
- package/esm/domain/networkError/networkErrorCollection.mjs.map +1 -0
- package/esm/domain/plugins.mjs +12 -0
- package/esm/domain/plugins.mjs.map +1 -0
- package/esm/domain/remoteSdkConfiguration.mjs +65 -0
- package/esm/domain/remoteSdkConfiguration.mjs.map +1 -0
- package/esm/domain/report/reportCollection.mjs +30 -0
- package/esm/domain/report/reportCollection.mjs.map +1 -0
- package/esm/domain/reportError.mjs +20 -0
- package/esm/domain/reportError.mjs.map +1 -0
- package/esm/domain/runtimeError/runtimeErrorCollection.mjs +29 -0
- package/esm/domain/runtimeError/runtimeErrorCollection.mjs.map +1 -0
- package/esm/entries/main.mjs +27 -0
- package/esm/entries/main.mjs.map +1 -0
- package/esm/transport/startLogsBatch.mjs +22 -0
- package/esm/transport/startLogsBatch.mjs.map +1 -0
- package/esm/transport/startLogsBridge.mjs +13 -0
- package/esm/transport/startLogsBridge.mjs.map +1 -0
- package/package.json +53 -3
- package/src/boot/logsPublicApi.ts +427 -0
- package/src/boot/preStartLogs.ts +192 -0
- package/src/boot/startLogs.ts +83 -0
- package/src/domain/assembly.ts +73 -0
- package/src/domain/configuration.ts +176 -0
- package/src/domain/console/consoleCollection.ts +58 -0
- package/src/domain/contexts/commonContext.ts +15 -0
- package/src/domain/contexts/internalContext.ts +19 -0
- package/src/domain/contexts/rumInternalContext.ts +60 -0
- package/src/domain/contexts/sessionContext.ts +34 -0
- package/src/domain/contexts/trackingConsentContext.ts +18 -0
- package/src/domain/createErrorFieldFromRawError.ts +22 -0
- package/src/domain/hooks.ts +40 -0
- package/src/domain/lifeCycle.ts +25 -0
- package/src/domain/logger/isAuthorized.ts +33 -0
- package/src/domain/logger/loggerCollection.ts +69 -0
- package/src/domain/logger.ts +202 -0
- package/src/domain/networkError/networkErrorCollection.ts +104 -0
- package/src/domain/plugins.ts +72 -0
- package/src/domain/remoteSdkConfiguration.ts +105 -0
- package/src/domain/report/reportCollection.ts +47 -0
- package/src/domain/reportError.ts +20 -0
- package/src/domain/runtimeError/runtimeErrorCollection.ts +51 -0
- package/src/domainContext.types.ts +21 -0
- package/src/entries/main.ts +65 -0
- package/src/logsEvent.types.ts +198 -0
- package/src/rawLogsEvent.types.ts +74 -0
- package/src/transport/startLogsBatch.ts +29 -0
- package/src/transport/startLogsBridge.ts +13 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import type { TrackingConsent, PublicApi, ContextManager, Account, Context, User } from '@kubesense/kubesense-browser-core';
|
|
2
|
+
import type { LogsInitConfiguration } from '../domain/configuration';
|
|
3
|
+
import type { HandlerType } from '../domain/logger';
|
|
4
|
+
import type { StatusType } from '../domain/logger/isAuthorized';
|
|
5
|
+
import { Logger } from '../domain/logger';
|
|
6
|
+
import type { InternalContext } from '../domain/contexts/internalContext';
|
|
7
|
+
import type { StartLogsResult } from './startLogs';
|
|
8
|
+
export interface LoggerConfiguration {
|
|
9
|
+
level?: StatusType;
|
|
10
|
+
handler?: HandlerType | HandlerType[];
|
|
11
|
+
context?: object;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Public API for the Logs browser SDK.
|
|
15
|
+
*
|
|
16
|
+
* See [Browser Log Collection](https://docs.kubesense.ai/logs/log_collection/javascript) for further information.
|
|
17
|
+
*
|
|
18
|
+
* @category Main
|
|
19
|
+
*/
|
|
20
|
+
export interface LogsPublicApi extends PublicApi {
|
|
21
|
+
/**
|
|
22
|
+
* The default logger
|
|
23
|
+
*
|
|
24
|
+
* @category Logger
|
|
25
|
+
*/
|
|
26
|
+
logger: Logger;
|
|
27
|
+
/**
|
|
28
|
+
* Init the Logs browser SDK.
|
|
29
|
+
*
|
|
30
|
+
* See [Browser Log Collection](https://docs.kubesense.ai/logs/log_collection/javascript) for further information.
|
|
31
|
+
*
|
|
32
|
+
* @category Init
|
|
33
|
+
* @param initConfiguration - Configuration options of the SDK
|
|
34
|
+
*/
|
|
35
|
+
init: (initConfiguration: LogsInitConfiguration) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Set the tracking consent of the current user.
|
|
38
|
+
*
|
|
39
|
+
* Logs will be sent only if it is set to "granted". This value won't be stored by the library
|
|
40
|
+
* across page loads: you will need to call this method or set the appropriate `trackingConsent`
|
|
41
|
+
* field in the init() method at each page load.
|
|
42
|
+
*
|
|
43
|
+
* If this method is called before the init() method, the provided value will take precedence
|
|
44
|
+
* over the one provided as initialization parameter.
|
|
45
|
+
*
|
|
46
|
+
* See [User tracking consent](https://docs.kubesense.ai/logs/log_collection/javascript/#user-tracking-consent) for further information.
|
|
47
|
+
*
|
|
48
|
+
* @category Privacy
|
|
49
|
+
* @param trackingConsent - The user tracking consent
|
|
50
|
+
*/
|
|
51
|
+
setTrackingConsent: (trackingConsent: TrackingConsent) => void;
|
|
52
|
+
/**
|
|
53
|
+
* Set the global context information to all events, stored in `@context`
|
|
54
|
+
* See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.
|
|
55
|
+
*
|
|
56
|
+
* @category Context - Global Context
|
|
57
|
+
* @param context - Global context
|
|
58
|
+
*/
|
|
59
|
+
setGlobalContext: (context: any) => void;
|
|
60
|
+
/**
|
|
61
|
+
* Get the global Context
|
|
62
|
+
*
|
|
63
|
+
* See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.
|
|
64
|
+
*
|
|
65
|
+
* @category Context - Global Context
|
|
66
|
+
*/
|
|
67
|
+
getGlobalContext: () => Context;
|
|
68
|
+
/**
|
|
69
|
+
* Set or update a global context property, stored in `@context.<key>`
|
|
70
|
+
*
|
|
71
|
+
* See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.
|
|
72
|
+
*
|
|
73
|
+
* @category Context - Global Context
|
|
74
|
+
* @param key - Key of the property
|
|
75
|
+
* @param value - Value of the property
|
|
76
|
+
*/
|
|
77
|
+
setGlobalContextProperty: (key: any, value: any) => void;
|
|
78
|
+
/**
|
|
79
|
+
* Remove a global context property
|
|
80
|
+
*
|
|
81
|
+
* See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.
|
|
82
|
+
*
|
|
83
|
+
* @category Context - Global Context
|
|
84
|
+
*/
|
|
85
|
+
removeGlobalContextProperty: (key: any) => void;
|
|
86
|
+
/**
|
|
87
|
+
* Clear the global context
|
|
88
|
+
*
|
|
89
|
+
* See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.
|
|
90
|
+
*
|
|
91
|
+
* @category Context - Global Context
|
|
92
|
+
*/
|
|
93
|
+
clearGlobalContext: () => void;
|
|
94
|
+
/**
|
|
95
|
+
* Set user information to all events, stored in `@usr`
|
|
96
|
+
*
|
|
97
|
+
* See [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.
|
|
98
|
+
*
|
|
99
|
+
* @category Context - User
|
|
100
|
+
* @param newUser - User information
|
|
101
|
+
*/
|
|
102
|
+
setUser(newUser: User & {
|
|
103
|
+
id: string;
|
|
104
|
+
}): void;
|
|
105
|
+
/**
|
|
106
|
+
* Set user information to all events, stored in `@usr`
|
|
107
|
+
*
|
|
108
|
+
* @category Context - User
|
|
109
|
+
* @deprecated You must specify a user id, favor using {@link setUser} instead
|
|
110
|
+
* @param newUser - User information with optional id
|
|
111
|
+
*/
|
|
112
|
+
setUser(newUser: User): void;
|
|
113
|
+
/**
|
|
114
|
+
* Get user information
|
|
115
|
+
*
|
|
116
|
+
* See [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.
|
|
117
|
+
*
|
|
118
|
+
* @category Context - User
|
|
119
|
+
* @returns User information
|
|
120
|
+
*/
|
|
121
|
+
getUser: () => Context;
|
|
122
|
+
/**
|
|
123
|
+
* Set or update the user property, stored in `@usr.<key>`
|
|
124
|
+
*
|
|
125
|
+
* See [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.
|
|
126
|
+
*
|
|
127
|
+
* @category Context - User
|
|
128
|
+
* @param key - Key of the property
|
|
129
|
+
* @param property - Value of the property
|
|
130
|
+
*/
|
|
131
|
+
setUserProperty: (key: any, property: any) => void;
|
|
132
|
+
/**
|
|
133
|
+
* Remove a user property
|
|
134
|
+
*
|
|
135
|
+
* @category Context - User
|
|
136
|
+
* @param key - Key of the property to remove
|
|
137
|
+
* @see [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.
|
|
138
|
+
*/
|
|
139
|
+
removeUserProperty: (key: any) => void;
|
|
140
|
+
/**
|
|
141
|
+
* Clear all user information
|
|
142
|
+
*
|
|
143
|
+
* See [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.
|
|
144
|
+
*
|
|
145
|
+
* @category Context - User
|
|
146
|
+
*/
|
|
147
|
+
clearUser: () => void;
|
|
148
|
+
/**
|
|
149
|
+
* Set account information to all events, stored in `@account`
|
|
150
|
+
*
|
|
151
|
+
* @category Context - Account
|
|
152
|
+
* @param newAccount - Account information
|
|
153
|
+
*/
|
|
154
|
+
setAccount: (newAccount: Account) => void;
|
|
155
|
+
/**
|
|
156
|
+
* Get account information
|
|
157
|
+
*
|
|
158
|
+
* @category Context - Account
|
|
159
|
+
* @returns Account information
|
|
160
|
+
*/
|
|
161
|
+
getAccount: () => Context;
|
|
162
|
+
/**
|
|
163
|
+
* Set or update the account property, stored in `@account.<key>`
|
|
164
|
+
*
|
|
165
|
+
* @category Context - Account
|
|
166
|
+
* @param key - Key of the property
|
|
167
|
+
* @param property - Value of the property
|
|
168
|
+
*/
|
|
169
|
+
setAccountProperty: (key: string, property: any) => void;
|
|
170
|
+
/**
|
|
171
|
+
* Remove an account property
|
|
172
|
+
*
|
|
173
|
+
* @category Context - Account
|
|
174
|
+
* @param key - Key of the property to remove
|
|
175
|
+
*/
|
|
176
|
+
removeAccountProperty: (key: string) => void;
|
|
177
|
+
/**
|
|
178
|
+
* Clear all account information
|
|
179
|
+
*
|
|
180
|
+
* @category Context - Account
|
|
181
|
+
* @returns Clear all account information
|
|
182
|
+
*/
|
|
183
|
+
clearAccount: () => void;
|
|
184
|
+
/**
|
|
185
|
+
* The KubeSense browser logs SDK contains a default logger `KUBESENSE_LOGS.logger`, but this API allows to create different ones.
|
|
186
|
+
*
|
|
187
|
+
* See [Define multiple loggers](https://docs.kubesense.ai/logs/log_collection/javascript/#define-multiple-loggers) for further information.
|
|
188
|
+
*
|
|
189
|
+
* @category Logger
|
|
190
|
+
* @param name - Name of the logger
|
|
191
|
+
* @param conf - Configuration of the logger (level, handler, context)
|
|
192
|
+
*/
|
|
193
|
+
createLogger: (name: string, conf?: LoggerConfiguration) => Logger;
|
|
194
|
+
/**
|
|
195
|
+
* Get a logger
|
|
196
|
+
*
|
|
197
|
+
* See [Define multiple loggers](https://docs.kubesense.ai/logs/log_collection/javascript/#define-multiple-loggers) for further information.
|
|
198
|
+
*
|
|
199
|
+
* @category Logger
|
|
200
|
+
* @param name - Name of the logger
|
|
201
|
+
*/
|
|
202
|
+
getLogger: (name: string) => Logger | undefined;
|
|
203
|
+
/**
|
|
204
|
+
* Get the init configuration
|
|
205
|
+
*
|
|
206
|
+
* @category Init
|
|
207
|
+
* @returns The init configuration
|
|
208
|
+
*/
|
|
209
|
+
getInitConfiguration: () => LogsInitConfiguration | undefined;
|
|
210
|
+
/**
|
|
211
|
+
* [Internal API] Get the internal SDK context
|
|
212
|
+
*
|
|
213
|
+
* See [Access internal context](https://docs.kubesense.ai/logs/log_collection/javascript/#access-internal-context) for further information.
|
|
214
|
+
*
|
|
215
|
+
* @internal
|
|
216
|
+
*/
|
|
217
|
+
getInternalContext: (startTime?: number) => InternalContext | undefined;
|
|
218
|
+
}
|
|
219
|
+
export interface Strategy {
|
|
220
|
+
init: (initConfiguration: LogsInitConfiguration, publicApi: LogsPublicApi, errorStack?: string) => void;
|
|
221
|
+
initConfiguration: LogsInitConfiguration | undefined;
|
|
222
|
+
globalContext: ContextManager;
|
|
223
|
+
accountContext: ContextManager;
|
|
224
|
+
userContext: ContextManager;
|
|
225
|
+
getInternalContext: StartLogsResult['getInternalContext'];
|
|
226
|
+
handleLog: StartLogsResult['handleLog'];
|
|
227
|
+
}
|
|
228
|
+
export interface LogsPublicApiOptions {
|
|
229
|
+
sdkName?: string;
|
|
230
|
+
}
|
|
231
|
+
export declare function makeLogsPublicApi(options?: LogsPublicApiOptions): LogsPublicApi;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
const require_logger = require("../domain/logger.js");
|
|
2
|
+
const require_commonContext = require("../domain/contexts/commonContext.js");
|
|
3
|
+
const require_plugins = require("../domain/plugins.js");
|
|
4
|
+
const require_startLogs = require("./startLogs.js");
|
|
5
|
+
const require_preStartLogs = require("./preStartLogs.js");
|
|
6
|
+
let _kubesense_kubesense_js_core_util = require("@kubesense/kubesense-js-core/util");
|
|
7
|
+
let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
|
|
8
|
+
let _kubesense_kubesense_js_core_monitor = require("@kubesense/kubesense-js-core/monitor");
|
|
9
|
+
//#region src/boot/logsPublicApi.ts
|
|
10
|
+
function makeLogsPublicApi(options = {}) {
|
|
11
|
+
const trackingConsentState = (0, _kubesense_kubesense_browser_core.createTrackingConsentState)();
|
|
12
|
+
const bufferedDataObservable = (0, _kubesense_kubesense_browser_core.startBufferingData)().observable;
|
|
13
|
+
let strategy = require_preStartLogs.createPreStartStrategy(require_commonContext.buildCommonContext, trackingConsentState, (configuration, logsSessionManager, hooks) => {
|
|
14
|
+
const startLogsResult = (0, _kubesense_kubesense_browser_core.mockable)(require_startLogs.startLogs)(configuration, logsSessionManager, require_commonContext.buildCommonContext, bufferedDataObservable, hooks);
|
|
15
|
+
strategy = createPostStartStrategy(strategy, startLogsResult);
|
|
16
|
+
require_plugins.callPluginsMethod(configuration.plugins, "onLogsStart", { handleLog: startLogsResult.handleLog });
|
|
17
|
+
return startLogsResult;
|
|
18
|
+
}, options.sdkName);
|
|
19
|
+
const getStrategy = () => strategy;
|
|
20
|
+
const customLoggers = {};
|
|
21
|
+
const mainLogger = new require_logger.Logger((...params) => strategy.handleLog(...params));
|
|
22
|
+
const logsPublicApi = (0, _kubesense_kubesense_browser_core.makePublicApi)({
|
|
23
|
+
logger: mainLogger,
|
|
24
|
+
init: (initConfiguration) => {
|
|
25
|
+
const errorStack = (/* @__PURE__ */ new Error()).stack;
|
|
26
|
+
(0, _kubesense_kubesense_js_core_monitor.callMonitored)(() => strategy.init(initConfiguration, logsPublicApi, errorStack));
|
|
27
|
+
},
|
|
28
|
+
setTrackingConsent: (0, _kubesense_kubesense_js_core_monitor.monitor)((trackingConsent) => {
|
|
29
|
+
trackingConsentState.update(trackingConsent);
|
|
30
|
+
(0, _kubesense_kubesense_browser_core.addTelemetryUsage)({
|
|
31
|
+
feature: "set-tracking-consent",
|
|
32
|
+
tracking_consent: trackingConsent
|
|
33
|
+
});
|
|
34
|
+
}),
|
|
35
|
+
getGlobalContext: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.globalContext, _kubesense_kubesense_browser_core.ContextManagerMethod.getContext),
|
|
36
|
+
setGlobalContext: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.globalContext, _kubesense_kubesense_browser_core.ContextManagerMethod.setContext),
|
|
37
|
+
setGlobalContextProperty: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.globalContext, _kubesense_kubesense_browser_core.ContextManagerMethod.setContextProperty),
|
|
38
|
+
removeGlobalContextProperty: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.globalContext, _kubesense_kubesense_browser_core.ContextManagerMethod.removeContextProperty),
|
|
39
|
+
clearGlobalContext: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.globalContext, _kubesense_kubesense_browser_core.ContextManagerMethod.clearContext),
|
|
40
|
+
createLogger: (0, _kubesense_kubesense_js_core_monitor.monitor)((name, conf = {}) => {
|
|
41
|
+
customLoggers[name] = new require_logger.Logger((...params) => strategy.handleLog(...params), (0, _kubesense_kubesense_browser_core.sanitize)(name), conf.handler, conf.level, (0, _kubesense_kubesense_browser_core.sanitize)(conf.context));
|
|
42
|
+
return customLoggers[name];
|
|
43
|
+
}),
|
|
44
|
+
getLogger: (0, _kubesense_kubesense_js_core_monitor.monitor)((name) => customLoggers[name]),
|
|
45
|
+
getInitConfiguration: (0, _kubesense_kubesense_js_core_monitor.monitor)(() => (0, _kubesense_kubesense_js_core_util.deepClone)(strategy.initConfiguration)),
|
|
46
|
+
getInternalContext: (0, _kubesense_kubesense_js_core_monitor.monitor)((startTime) => strategy.getInternalContext(startTime)),
|
|
47
|
+
setUser: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.userContext, _kubesense_kubesense_browser_core.ContextManagerMethod.setContext),
|
|
48
|
+
getUser: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.userContext, _kubesense_kubesense_browser_core.ContextManagerMethod.getContext),
|
|
49
|
+
setUserProperty: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.userContext, _kubesense_kubesense_browser_core.ContextManagerMethod.setContextProperty),
|
|
50
|
+
removeUserProperty: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.userContext, _kubesense_kubesense_browser_core.ContextManagerMethod.removeContextProperty),
|
|
51
|
+
clearUser: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.userContext, _kubesense_kubesense_browser_core.ContextManagerMethod.clearContext),
|
|
52
|
+
setAccount: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.accountContext, _kubesense_kubesense_browser_core.ContextManagerMethod.setContext),
|
|
53
|
+
getAccount: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.accountContext, _kubesense_kubesense_browser_core.ContextManagerMethod.getContext),
|
|
54
|
+
setAccountProperty: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.accountContext, _kubesense_kubesense_browser_core.ContextManagerMethod.setContextProperty),
|
|
55
|
+
removeAccountProperty: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.accountContext, _kubesense_kubesense_browser_core.ContextManagerMethod.removeContextProperty),
|
|
56
|
+
clearAccount: (0, _kubesense_kubesense_browser_core.defineContextMethod)(getStrategy, _kubesense_kubesense_browser_core.CustomerContextKey.accountContext, _kubesense_kubesense_browser_core.ContextManagerMethod.clearContext)
|
|
57
|
+
});
|
|
58
|
+
return logsPublicApi;
|
|
59
|
+
}
|
|
60
|
+
function createPostStartStrategy(preStartStrategy, startLogsResult) {
|
|
61
|
+
return {
|
|
62
|
+
...preStartStrategy,
|
|
63
|
+
init: (initConfiguration) => {
|
|
64
|
+
(0, _kubesense_kubesense_browser_core.displayAlreadyInitializedError)("KUBESENSE_LOGS", initConfiguration);
|
|
65
|
+
},
|
|
66
|
+
getInternalContext: startLogsResult.getInternalContext,
|
|
67
|
+
globalContext: startLogsResult.globalContext,
|
|
68
|
+
userContext: startLogsResult.userContext,
|
|
69
|
+
accountContext: startLogsResult.accountContext
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//#endregion
|
|
73
|
+
exports.makeLogsPublicApi = makeLogsPublicApi;
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=logsPublicApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logsPublicApi.js","names":["createTrackingConsentState","startBufferingData","createPreStartStrategy","buildCommonContext","mockable","startLogs","Logger","makePublicApi","monitor","defineContextMethod","CustomerContextKey","ContextManagerMethod","sanitize","deepClone"],"sources":["../../src/boot/logsPublicApi.ts"],"sourcesContent":["import type {\n TrackingConsent,\n PublicApi,\n ContextManager,\n Account,\n Context,\n User,\n} from '@kubesense/kubesense-browser-core'\nimport {\n ContextManagerMethod,\n CustomerContextKey,\n addTelemetryUsage,\n makePublicApi,\n sanitize,\n displayAlreadyInitializedError,\n createTrackingConsentState,\n defineContextMethod,\n startBufferingData,\n mockable,\n} from '@kubesense/kubesense-browser-core'\nimport { monitor, callMonitored } from '@kubesense/kubesense-js-core/monitor'\nimport { deepClone } from '@kubesense/kubesense-js-core/util'\nimport type { LogsInitConfiguration } from '../domain/configuration'\nimport type { HandlerType } from '../domain/logger'\nimport type { StatusType } from '../domain/logger/isAuthorized'\nimport { Logger } from '../domain/logger'\nimport { buildCommonContext } from '../domain/contexts/commonContext'\nimport { callPluginsMethod } from '../domain/plugins'\nimport type { InternalContext } from '../domain/contexts/internalContext'\nimport type { StartLogsResult } from './startLogs'\nimport { startLogs } from './startLogs'\nimport { createPreStartStrategy } from './preStartLogs'\n\nexport interface LoggerConfiguration {\n level?: StatusType\n handler?: HandlerType | HandlerType[]\n context?: object\n}\n\n/**\n * Public API for the Logs browser SDK.\n *\n * See [Browser Log Collection](https://docs.kubesense.ai/logs/log_collection/javascript) for further information.\n *\n * @category Main\n */\nexport interface LogsPublicApi extends PublicApi {\n /**\n * The default logger\n *\n * @category Logger\n */\n logger: Logger\n\n /**\n * Init the Logs browser SDK.\n *\n * See [Browser Log Collection](https://docs.kubesense.ai/logs/log_collection/javascript) for further information.\n *\n * @category Init\n * @param initConfiguration - Configuration options of the SDK\n */\n init: (initConfiguration: LogsInitConfiguration) => void\n\n /**\n * Set the tracking consent of the current user.\n *\n * Logs will be sent only if it is set to \"granted\". This value won't be stored by the library\n * across page loads: you will need to call this method or set the appropriate `trackingConsent`\n * field in the init() method at each page load.\n *\n * If this method is called before the init() method, the provided value will take precedence\n * over the one provided as initialization parameter.\n *\n * See [User tracking consent](https://docs.kubesense.ai/logs/log_collection/javascript/#user-tracking-consent) for further information.\n *\n * @category Privacy\n * @param trackingConsent - The user tracking consent\n */\n setTrackingConsent: (trackingConsent: TrackingConsent) => void\n\n /**\n * Set the global context information to all events, stored in `@context`\n * See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.\n *\n * @category Context - Global Context\n * @param context - Global context\n */\n setGlobalContext: (context: any) => void\n\n /**\n * Get the global Context\n *\n * See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.\n *\n * @category Context - Global Context\n */\n getGlobalContext: () => Context\n\n /**\n * Set or update a global context property, stored in `@context.<key>`\n *\n * See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.\n *\n * @category Context - Global Context\n * @param key - Key of the property\n * @param value - Value of the property\n */\n setGlobalContextProperty: (key: any, value: any) => void\n\n /**\n * Remove a global context property\n *\n * See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.\n *\n * @category Context - Global Context\n */\n removeGlobalContextProperty: (key: any) => void\n\n /**\n * Clear the global context\n *\n * See [Global context](https://docs.kubesense.ai/logs/log_collection/javascript/#overwrite-context) for further information.\n *\n * @category Context - Global Context\n */\n clearGlobalContext: () => void\n\n /**\n * Set user information to all events, stored in `@usr`\n *\n * See [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.\n *\n * @category Context - User\n * @param newUser - User information\n */\n setUser(newUser: User & { id: string }): void\n\n /**\n * Set user information to all events, stored in `@usr`\n *\n * @category Context - User\n * @deprecated You must specify a user id, favor using {@link setUser} instead\n * @param newUser - User information with optional id\n */\n setUser(newUser: User): void\n\n /**\n * Get user information\n *\n * See [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.\n *\n * @category Context - User\n * @returns User information\n */\n getUser: () => Context\n\n /**\n * Set or update the user property, stored in `@usr.<key>`\n *\n * See [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.\n *\n * @category Context - User\n * @param key - Key of the property\n * @param property - Value of the property\n */\n setUserProperty: (key: any, property: any) => void\n\n /**\n * Remove a user property\n *\n * @category Context - User\n * @param key - Key of the property to remove\n * @see [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.\n */\n removeUserProperty: (key: any) => void\n\n /**\n * Clear all user information\n *\n * See [User session](https://docs.kubesense.ai/logs/log_collection/javascript/#user-context) for further information.\n *\n * @category Context - User\n */\n clearUser: () => void\n\n /**\n * Set account information to all events, stored in `@account`\n *\n * @category Context - Account\n * @param newAccount - Account information\n */\n setAccount: (newAccount: Account) => void\n\n /**\n * Get account information\n *\n * @category Context - Account\n * @returns Account information\n */\n getAccount: () => Context\n\n /**\n * Set or update the account property, stored in `@account.<key>`\n *\n * @category Context - Account\n * @param key - Key of the property\n * @param property - Value of the property\n */\n setAccountProperty: (key: string, property: any) => void\n\n /**\n * Remove an account property\n *\n * @category Context - Account\n * @param key - Key of the property to remove\n */\n removeAccountProperty: (key: string) => void\n\n /**\n * Clear all account information\n *\n * @category Context - Account\n * @returns Clear all account information\n */\n clearAccount: () => void\n\n /**\n * The KubeSense browser logs SDK contains a default logger `KUBESENSE_LOGS.logger`, but this API allows to create different ones.\n *\n * See [Define multiple loggers](https://docs.kubesense.ai/logs/log_collection/javascript/#define-multiple-loggers) for further information.\n *\n * @category Logger\n * @param name - Name of the logger\n * @param conf - Configuration of the logger (level, handler, context)\n */\n createLogger: (name: string, conf?: LoggerConfiguration) => Logger\n\n /**\n * Get a logger\n *\n * See [Define multiple loggers](https://docs.kubesense.ai/logs/log_collection/javascript/#define-multiple-loggers) for further information.\n *\n * @category Logger\n * @param name - Name of the logger\n */\n getLogger: (name: string) => Logger | undefined\n\n /**\n * Get the init configuration\n *\n * @category Init\n * @returns The init configuration\n */\n getInitConfiguration: () => LogsInitConfiguration | undefined\n\n /**\n * [Internal API] Get the internal SDK context\n *\n * See [Access internal context](https://docs.kubesense.ai/logs/log_collection/javascript/#access-internal-context) for further information.\n *\n * @internal\n */\n getInternalContext: (startTime?: number) => InternalContext | undefined\n}\n\nexport interface Strategy {\n init: (initConfiguration: LogsInitConfiguration, publicApi: LogsPublicApi, errorStack?: string) => void\n initConfiguration: LogsInitConfiguration | undefined\n globalContext: ContextManager\n accountContext: ContextManager\n userContext: ContextManager\n getInternalContext: StartLogsResult['getInternalContext']\n handleLog: StartLogsResult['handleLog']\n}\n\nexport interface LogsPublicApiOptions {\n sdkName?: string\n}\n\nexport function makeLogsPublicApi(options: LogsPublicApiOptions = {}): LogsPublicApi {\n const trackingConsentState = createTrackingConsentState()\n const bufferedDataObservable = startBufferingData().observable\n\n let strategy = createPreStartStrategy(\n buildCommonContext,\n trackingConsentState,\n (configuration, logsSessionManager, hooks) => {\n const startLogsResult = mockable(startLogs)(\n configuration,\n logsSessionManager,\n buildCommonContext,\n bufferedDataObservable,\n hooks\n )\n\n strategy = createPostStartStrategy(strategy, startLogsResult)\n callPluginsMethod(configuration.plugins, 'onLogsStart', {\n handleLog: startLogsResult.handleLog,\n })\n return startLogsResult\n },\n options.sdkName\n )\n\n const getStrategy = () => strategy\n\n const customLoggers: { [name: string]: Logger | undefined } = {}\n\n const mainLogger = new Logger((...params) => strategy.handleLog(...params))\n\n const logsPublicApi: LogsPublicApi = makePublicApi<LogsPublicApi>({\n logger: mainLogger,\n\n init: (initConfiguration) => {\n const errorStack = new Error().stack\n callMonitored(() => strategy.init(initConfiguration, logsPublicApi, errorStack))\n },\n\n setTrackingConsent: monitor((trackingConsent) => {\n trackingConsentState.update(trackingConsent)\n addTelemetryUsage({ feature: 'set-tracking-consent', tracking_consent: trackingConsent })\n }),\n\n getGlobalContext: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.getContext\n ),\n setGlobalContext: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.setContext\n ),\n\n setGlobalContextProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.setContextProperty\n ),\n\n removeGlobalContextProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.removeContextProperty\n ),\n\n clearGlobalContext: defineContextMethod(\n getStrategy,\n CustomerContextKey.globalContext,\n ContextManagerMethod.clearContext\n ),\n\n createLogger: monitor((name, conf = {}) => {\n customLoggers[name] = new Logger(\n (...params) => strategy.handleLog(...params),\n sanitize(name),\n conf.handler,\n conf.level,\n sanitize(conf.context) as object\n )\n\n return customLoggers[name]\n }),\n\n getLogger: monitor((name) => customLoggers[name]),\n\n getInitConfiguration: monitor(() => deepClone(strategy.initConfiguration)),\n\n getInternalContext: monitor((startTime) => strategy.getInternalContext(startTime)),\n\n setUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.setContext),\n\n getUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.getContext),\n\n setUserProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.userContext,\n ContextManagerMethod.setContextProperty\n ),\n\n removeUserProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.userContext,\n ContextManagerMethod.removeContextProperty\n ),\n\n clearUser: defineContextMethod(getStrategy, CustomerContextKey.userContext, ContextManagerMethod.clearContext),\n\n setAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.setContext),\n\n getAccount: defineContextMethod(getStrategy, CustomerContextKey.accountContext, ContextManagerMethod.getContext),\n\n setAccountProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.accountContext,\n ContextManagerMethod.setContextProperty\n ),\n\n removeAccountProperty: defineContextMethod(\n getStrategy,\n CustomerContextKey.accountContext,\n ContextManagerMethod.removeContextProperty\n ),\n\n clearAccount: defineContextMethod(\n getStrategy,\n CustomerContextKey.accountContext,\n ContextManagerMethod.clearContext\n ),\n })\n\n return logsPublicApi\n}\n\nfunction createPostStartStrategy(preStartStrategy: Strategy, startLogsResult: StartLogsResult): Strategy {\n return {\n ...preStartStrategy,\n init: (initConfiguration: LogsInitConfiguration) => {\n displayAlreadyInitializedError('KUBESENSE_LOGS', initConfiguration)\n },\n getInternalContext: startLogsResult.getInternalContext,\n globalContext: startLogsResult.globalContext,\n userContext: startLogsResult.userContext,\n accountContext: startLogsResult.accountContext,\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TrackingConsentState, SessionManager } from '@kubesense/kubesense-browser-core';
|
|
2
|
+
import type { Hooks } from '../domain/hooks';
|
|
3
|
+
import type { LogsConfiguration } from '../domain/configuration';
|
|
4
|
+
import type { CommonContext } from '../rawLogsEvent.types';
|
|
5
|
+
import type { Strategy } from './logsPublicApi';
|
|
6
|
+
import type { StartLogsResult } from './startLogs';
|
|
7
|
+
export type DoStartLogs = (configuration: LogsConfiguration, sessionManager: SessionManager, hooks: Hooks) => StartLogsResult;
|
|
8
|
+
export declare function createPreStartStrategy(getCommonContext: () => CommonContext, trackingConsentState: TrackingConsentState, doStartLogs: DoStartLogs, sdkName?: string): Strategy;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
const require_plugins = require("../domain/plugins.js");
|
|
2
|
+
const require_hooks = require("../domain/hooks.js");
|
|
3
|
+
const require_configuration = require("../domain/configuration.js");
|
|
4
|
+
const require_remoteSdkConfiguration = require("../domain/remoteSdkConfiguration.js");
|
|
5
|
+
const require_trackingConsentContext = require("../domain/contexts/trackingConsentContext.js");
|
|
6
|
+
let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
|
|
7
|
+
let _kubesense_kubesense_js_core_monitor = require("@kubesense/kubesense-js-core/monitor");
|
|
8
|
+
let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
|
|
9
|
+
//#region src/boot/preStartLogs.ts
|
|
10
|
+
function createPreStartStrategy(getCommonContext, trackingConsentState, doStartLogs, sdkName) {
|
|
11
|
+
const bufferApiCalls = new _kubesense_kubesense_browser_core.BufferedObservable(500, (count) => {
|
|
12
|
+
(0, _kubesense_kubesense_browser_core.addTelemetryDebug)("preStartLogs buffer data lost", { count });
|
|
13
|
+
});
|
|
14
|
+
const globalContext = (0, _kubesense_kubesense_browser_core.buildGlobalContextManager)();
|
|
15
|
+
(0, _kubesense_kubesense_browser_core.bufferContextCalls)(globalContext, _kubesense_kubesense_browser_core.CustomerContextKey.globalContext, bufferApiCalls);
|
|
16
|
+
const accountContext = (0, _kubesense_kubesense_browser_core.buildAccountContextManager)();
|
|
17
|
+
(0, _kubesense_kubesense_browser_core.bufferContextCalls)(accountContext, _kubesense_kubesense_browser_core.CustomerContextKey.accountContext, bufferApiCalls);
|
|
18
|
+
const userContext = (0, _kubesense_kubesense_browser_core.buildUserContextManager)();
|
|
19
|
+
(0, _kubesense_kubesense_browser_core.bufferContextCalls)(userContext, _kubesense_kubesense_browser_core.CustomerContextKey.userContext, bufferApiCalls);
|
|
20
|
+
let cachedInitConfiguration;
|
|
21
|
+
let cachedConfiguration;
|
|
22
|
+
let sessionManager;
|
|
23
|
+
const hooks = require_hooks.createHooks();
|
|
24
|
+
const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartLogs);
|
|
25
|
+
function tryStartLogs() {
|
|
26
|
+
if (!cachedConfiguration || !cachedInitConfiguration || !sessionManager) return;
|
|
27
|
+
trackingConsentStateSubscription.unsubscribe();
|
|
28
|
+
const startLogsResult = doStartLogs(cachedConfiguration, sessionManager, hooks);
|
|
29
|
+
bufferApiCalls.subscribe((callback) => callback(startLogsResult));
|
|
30
|
+
bufferApiCalls.unbuffer();
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
init(initConfiguration, publicApi, errorStack) {
|
|
34
|
+
if (!initConfiguration) {
|
|
35
|
+
_kubesense_kubesense_browser_core.display.error("Missing configuration");
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
(0, _kubesense_kubesense_browser_core.initFeatureFlags)(initConfiguration.enableExperimentalFeatures);
|
|
39
|
+
(0, _kubesense_kubesense_browser_core.setAllowUntrustedEvents)(initConfiguration.allowUntrustedEvents);
|
|
40
|
+
if ((0, _kubesense_kubesense_browser_core.canUseEventBridge)()) initConfiguration = overrideInitConfigurationForBridge(initConfiguration);
|
|
41
|
+
const remoteSdkConfigurationEnabled = !!initConfiguration.enableRemoteSdkConfiguration;
|
|
42
|
+
const refreshRemoteSdkConfiguration = () => {
|
|
43
|
+
if (remoteSdkConfigurationEnabled) require_remoteSdkConfiguration.scheduleLogsSdkConfigurationRefresh(initConfiguration).catch(_kubesense_kubesense_browser_core.noop);
|
|
44
|
+
};
|
|
45
|
+
if (remoteSdkConfigurationEnabled) {
|
|
46
|
+
const cachedSdkConfiguration = require_remoteSdkConfiguration.applyCachedLogsSdkConfiguration(initConfiguration);
|
|
47
|
+
initConfiguration = cachedSdkConfiguration.initConfiguration;
|
|
48
|
+
if (!cachedSdkConfiguration.logsEnabled) {
|
|
49
|
+
cachedInitConfiguration = initConfiguration;
|
|
50
|
+
refreshRemoteSdkConfiguration();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
cachedInitConfiguration = initConfiguration;
|
|
55
|
+
if (cachedConfiguration) {
|
|
56
|
+
(0, _kubesense_kubesense_browser_core.displayAlreadyInitializedError)("KUBESENSE_LOGS", initConfiguration);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
require_plugins.callPluginsMethod(initConfiguration.plugins, "onInit", {
|
|
60
|
+
initConfiguration,
|
|
61
|
+
publicApi,
|
|
62
|
+
registerAssembleEventHook: hooks.assembleEvent.register
|
|
63
|
+
});
|
|
64
|
+
const configuration = require_configuration.validateAndBuildLogsConfiguration(initConfiguration);
|
|
65
|
+
if (!configuration || !(0, _kubesense_kubesense_browser_core.isAllowedTrackingOrigins)(configuration, errorStack ?? "")) {
|
|
66
|
+
refreshRemoteSdkConfiguration();
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
cachedConfiguration = configuration;
|
|
70
|
+
trackingConsentState.tryToInit(configuration.trackingConsent);
|
|
71
|
+
trackingConsentState.onGrantedOnce(() => {
|
|
72
|
+
require_trackingConsentContext.startTrackingConsentContext(hooks, trackingConsentState);
|
|
73
|
+
(0, _kubesense_kubesense_browser_core.mockable)(_kubesense_kubesense_browser_core.startTelemetry)(_kubesense_kubesense_browser_core.TelemetryService.LOGS, configuration, hooks.assembleTelemetry, sdkName);
|
|
74
|
+
((0, _kubesense_kubesense_browser_core.canUseEventBridge)() ? (0, _kubesense_kubesense_browser_core.startSessionManagerStub)() : (0, _kubesense_kubesense_browser_core.mockable)(_kubesense_kubesense_browser_core.startSessionManager)(configuration, trackingConsentState)).then((newSessionManager) => {
|
|
75
|
+
if (!newSessionManager) return;
|
|
76
|
+
sessionManager = newSessionManager;
|
|
77
|
+
(0, _kubesense_kubesense_browser_core.startTelemetrySessionContext)(hooks.assembleTelemetry, sessionManager);
|
|
78
|
+
(0, _kubesense_kubesense_browser_core.addTelemetryConfiguration)(require_configuration.serializeLogsConfiguration(initConfiguration));
|
|
79
|
+
tryStartLogs();
|
|
80
|
+
refreshRemoteSdkConfiguration();
|
|
81
|
+
}).catch(_kubesense_kubesense_js_core_monitor.monitorError);
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
get initConfiguration() {
|
|
85
|
+
return cachedInitConfiguration;
|
|
86
|
+
},
|
|
87
|
+
globalContext,
|
|
88
|
+
accountContext,
|
|
89
|
+
userContext,
|
|
90
|
+
getInternalContext: _kubesense_kubesense_browser_core.noop,
|
|
91
|
+
handleLog(message, statusType, handlingStack, context = getCommonContext(), date = (0, _kubesense_kubesense_js_core_time.timeStampNow)()) {
|
|
92
|
+
bufferApiCalls.notify((startLogsResult) => startLogsResult.handleLog(message, statusType, handlingStack, context, date));
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function overrideInitConfigurationForBridge(initConfiguration) {
|
|
97
|
+
return {
|
|
98
|
+
...initConfiguration,
|
|
99
|
+
clientToken: "empty"
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
//#endregion
|
|
103
|
+
exports.createPreStartStrategy = createPreStartStrategy;
|
|
104
|
+
|
|
105
|
+
//# sourceMappingURL=preStartLogs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preStartLogs.js","names":["BufferedObservable","buildGlobalContextManager","CustomerContextKey","buildAccountContextManager","buildUserContextManager","createHooks","canUseEventBridge","noop","applyCachedLogsSdkConfiguration","validateAndBuildLogsConfiguration","isAllowedTrackingOrigins","startTelemetry","TelemetryService","startSessionManagerStub","mockable","startSessionManager","serializeLogsConfiguration","monitorError","timeStampNow"],"sources":["../../src/boot/preStartLogs.ts"],"sourcesContent":["import { timeStampNow } from '@kubesense/kubesense-js-core/time'\nimport { monitorError } from '@kubesense/kubesense-js-core/monitor'\nimport type { TrackingConsentState, SessionManager } from '@kubesense/kubesense-browser-core'\nimport {\n BufferedObservable,\n canUseEventBridge,\n display,\n displayAlreadyInitializedError,\n initFeatureFlags,\n noop,\n buildAccountContextManager,\n CustomerContextKey,\n bufferContextCalls,\n addTelemetryConfiguration,\n addTelemetryDebug,\n buildGlobalContextManager,\n buildUserContextManager,\n startSessionManager,\n startSessionManagerStub,\n startTelemetry,\n TelemetryService,\n mockable,\n startTelemetrySessionContext,\n setAllowUntrustedEvents,\n isAllowedTrackingOrigins,\n} from '@kubesense/kubesense-browser-core'\nimport type { Hooks } from '../domain/hooks'\nimport { createHooks } from '../domain/hooks'\nimport type { LogsConfiguration, LogsInitConfiguration } from '../domain/configuration'\nimport { serializeLogsConfiguration, validateAndBuildLogsConfiguration } from '../domain/configuration'\nimport { applyCachedLogsSdkConfiguration, scheduleLogsSdkConfigurationRefresh } from '../domain/remoteSdkConfiguration'\nimport type { CommonContext } from '../rawLogsEvent.types'\nimport { startTrackingConsentContext } from '../domain/contexts/trackingConsentContext'\nimport { callPluginsMethod } from '../domain/plugins'\nimport type { Strategy } from './logsPublicApi'\nimport type { StartLogsResult } from './startLogs'\n\nexport type DoStartLogs = (\n configuration: LogsConfiguration,\n sessionManager: SessionManager,\n hooks: Hooks\n) => StartLogsResult\n\nexport function createPreStartStrategy(\n getCommonContext: () => CommonContext,\n trackingConsentState: TrackingConsentState,\n doStartLogs: DoStartLogs,\n sdkName?: string\n): Strategy {\n const BUFFER_LIMIT = 500\n const bufferApiCalls = new BufferedObservable<(startLogsResult: StartLogsResult) => void>(BUFFER_LIMIT, (count) => {\n // monitor-until: 2026-10-14\n addTelemetryDebug('preStartLogs buffer data lost', { count })\n })\n\n // TODO next major: remove the globalContext, accountContextManager, userContext from preStartStrategy and use an empty context instead\n const globalContext = buildGlobalContextManager()\n bufferContextCalls(globalContext, CustomerContextKey.globalContext, bufferApiCalls)\n\n const accountContext = buildAccountContextManager()\n bufferContextCalls(accountContext, CustomerContextKey.accountContext, bufferApiCalls)\n\n const userContext = buildUserContextManager()\n bufferContextCalls(userContext, CustomerContextKey.userContext, bufferApiCalls)\n\n let cachedInitConfiguration: LogsInitConfiguration | undefined\n let cachedConfiguration: LogsConfiguration | undefined\n let sessionManager: SessionManager | undefined\n const hooks = createHooks()\n const trackingConsentStateSubscription = trackingConsentState.observable.subscribe(tryStartLogs)\n\n function tryStartLogs() {\n if (!cachedConfiguration || !cachedInitConfiguration || !sessionManager) {\n return\n }\n\n trackingConsentStateSubscription.unsubscribe()\n const startLogsResult = doStartLogs(cachedConfiguration, sessionManager, hooks)\n\n bufferApiCalls.subscribe((callback) => callback(startLogsResult))\n bufferApiCalls.unbuffer()\n }\n\n return {\n init(initConfiguration, publicApi, errorStack) {\n if (!initConfiguration) {\n display.error('Missing configuration')\n return\n }\n // Set the experimental feature flags as early as possible, so we can use them in most places\n initFeatureFlags(initConfiguration.enableExperimentalFeatures)\n setAllowUntrustedEvents(initConfiguration.allowUntrustedEvents)\n\n if (canUseEventBridge()) {\n initConfiguration = overrideInitConfigurationForBridge(initConfiguration)\n }\n\n const remoteSdkConfigurationEnabled = !!initConfiguration.enableRemoteSdkConfiguration\n\n // A cached document that stops Logs from starting must never be a one-way door: without a\n // refresh on those paths the browser replays the same bad document on every load and can\n // never learn about a corrected one.\n const refreshRemoteSdkConfiguration = () => {\n if (remoteSdkConfigurationEnabled) {\n scheduleLogsSdkConfigurationRefresh(initConfiguration).catch(noop)\n }\n }\n\n if (remoteSdkConfigurationEnabled) {\n // Reading the cached document is synchronous and network-free, so it does not delay\n // initialization. The document fetched below only applies from the next page load.\n const cachedSdkConfiguration = applyCachedLogsSdkConfiguration(initConfiguration)\n initConfiguration = cachedSdkConfiguration.initConfiguration\n\n if (!cachedSdkConfiguration.logsEnabled) {\n // Logs is switched off from the dashboard. Still refresh the document, otherwise the\n // switch would be one-way: the SDK could never learn it has been turned back on.\n cachedInitConfiguration = initConfiguration\n refreshRemoteSdkConfiguration()\n return\n }\n }\n\n // Expose the initial configuration regardless of initialization success.\n cachedInitConfiguration = initConfiguration\n\n if (cachedConfiguration) {\n displayAlreadyInitializedError('KUBESENSE_LOGS', initConfiguration)\n return\n }\n\n callPluginsMethod(initConfiguration.plugins, 'onInit', {\n initConfiguration,\n publicApi,\n registerAssembleEventHook: hooks.assembleEvent.register,\n })\n\n const configuration = validateAndBuildLogsConfiguration(initConfiguration)\n if (!configuration || !isAllowedTrackingOrigins(configuration, errorStack ?? '')) {\n refreshRemoteSdkConfiguration()\n return\n }\n\n cachedConfiguration = configuration\n\n trackingConsentState.tryToInit(configuration.trackingConsent)\n\n trackingConsentState.onGrantedOnce(() => {\n startTrackingConsentContext(hooks, trackingConsentState)\n mockable(startTelemetry)(TelemetryService.LOGS, configuration, hooks.assembleTelemetry, sdkName)\n const sessionManagerPromise = canUseEventBridge()\n ? startSessionManagerStub()\n : mockable(startSessionManager)(configuration, trackingConsentState)\n\n void sessionManagerPromise\n .then((newSessionManager) => {\n if (!newSessionManager) {\n return\n }\n sessionManager = newSessionManager\n startTelemetrySessionContext(hooks.assembleTelemetry, sessionManager)\n addTelemetryConfiguration(serializeLogsConfiguration(initConfiguration))\n tryStartLogs()\n\n // Fire-and-forget, after the SDK is running: refreshes the cache for the next page load.\n refreshRemoteSdkConfiguration()\n })\n .catch(monitorError)\n })\n },\n\n get initConfiguration() {\n return cachedInitConfiguration\n },\n\n globalContext,\n accountContext,\n userContext,\n\n getInternalContext: noop as () => undefined,\n\n handleLog(message, statusType, handlingStack, context = getCommonContext(), date = timeStampNow()) {\n bufferApiCalls.notify((startLogsResult) =>\n startLogsResult.handleLog(message, statusType, handlingStack, context, date)\n )\n },\n }\n}\n\nfunction overrideInitConfigurationForBridge(initConfiguration: LogsInitConfiguration): LogsInitConfiguration {\n return { ...initConfiguration, clientToken: 'empty' }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { BufferedObservable, BufferedData, SessionManager } from '@kubesense/kubesense-browser-core';
|
|
2
|
+
import type { LogsConfiguration } from '../domain/configuration';
|
|
3
|
+
import type { CommonContext } from '../rawLogsEvent.types';
|
|
4
|
+
import type { Hooks } from '../domain/hooks';
|
|
5
|
+
export type StartLogs = typeof startLogs;
|
|
6
|
+
export type StartLogsResult = ReturnType<StartLogs>;
|
|
7
|
+
export declare function startLogs(configuration: LogsConfiguration, sessionManager: SessionManager, getCommonContext: () => CommonContext, bufferedDataObservable: BufferedObservable<BufferedData>, hooks: Hooks): {
|
|
8
|
+
handleLog: (logsMessage: import("../domain/logger").LogsMessage, logger: import("../domain/logger").Logger, handlingStack?: string, savedCommonContext?: CommonContext, savedDate?: import("@kubesense/kubesense-js-core/time").TimeStamp) => void;
|
|
9
|
+
getInternalContext: (startTime?: number) => import("../entries/main").InternalContext | undefined;
|
|
10
|
+
accountContext: {
|
|
11
|
+
getContext: () => import("@kubesense/kubesense-browser-core").Context;
|
|
12
|
+
setContext: (newContext: unknown) => void;
|
|
13
|
+
setContextProperty: (key: string, property: any) => void;
|
|
14
|
+
removeContextProperty: (key: string) => void;
|
|
15
|
+
clearContext: () => void;
|
|
16
|
+
changeObservable: import("@kubesense/kubesense-browser-core").Observable<void>;
|
|
17
|
+
};
|
|
18
|
+
globalContext: {
|
|
19
|
+
getContext: () => import("@kubesense/kubesense-browser-core").Context;
|
|
20
|
+
setContext: (newContext: unknown) => void;
|
|
21
|
+
setContextProperty: (key: string, property: any) => void;
|
|
22
|
+
removeContextProperty: (key: string) => void;
|
|
23
|
+
clearContext: () => void;
|
|
24
|
+
changeObservable: import("@kubesense/kubesense-browser-core").Observable<void>;
|
|
25
|
+
};
|
|
26
|
+
userContext: {
|
|
27
|
+
getContext: () => import("@kubesense/kubesense-browser-core").Context;
|
|
28
|
+
setContext: (newContext: unknown) => void;
|
|
29
|
+
setContextProperty: (key: string, property: any) => void;
|
|
30
|
+
removeContextProperty: (key: string) => void;
|
|
31
|
+
clearContext: () => void;
|
|
32
|
+
changeObservable: import("@kubesense/kubesense-browser-core").Observable<void>;
|
|
33
|
+
};
|
|
34
|
+
stop: () => void;
|
|
35
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const require_lifeCycle = require("../domain/lifeCycle.js");
|
|
2
|
+
const require_assembly = require("../domain/assembly.js");
|
|
3
|
+
const require_consoleCollection = require("../domain/console/consoleCollection.js");
|
|
4
|
+
const require_reportCollection = require("../domain/report/reportCollection.js");
|
|
5
|
+
const require_networkErrorCollection = require("../domain/networkError/networkErrorCollection.js");
|
|
6
|
+
const require_runtimeErrorCollection = require("../domain/runtimeError/runtimeErrorCollection.js");
|
|
7
|
+
const require_loggerCollection = require("../domain/logger/loggerCollection.js");
|
|
8
|
+
const require_startLogsBatch = require("../transport/startLogsBatch.js");
|
|
9
|
+
const require_startLogsBridge = require("../transport/startLogsBridge.js");
|
|
10
|
+
const require_internalContext = require("../domain/contexts/internalContext.js");
|
|
11
|
+
const require_reportError = require("../domain/reportError.js");
|
|
12
|
+
const require_rumInternalContext = require("../domain/contexts/rumInternalContext.js");
|
|
13
|
+
const require_sessionContext = require("../domain/contexts/sessionContext.js");
|
|
14
|
+
let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
|
|
15
|
+
//#region src/boot/startLogs.ts
|
|
16
|
+
const LOGS_STORAGE_KEY = "logs";
|
|
17
|
+
function startLogs(configuration, sessionManager, getCommonContext, bufferedDataObservable, hooks) {
|
|
18
|
+
const lifeCycle = new require_lifeCycle.LifeCycle();
|
|
19
|
+
const cleanupTasks = [];
|
|
20
|
+
lifeCycle.subscribe(1, (log) => (0, _kubesense_kubesense_browser_core.sendToExtension)("logs", log));
|
|
21
|
+
const reportError = require_reportError.startReportError(lifeCycle);
|
|
22
|
+
const { assembleEventDefaults: assembleHook } = hooks;
|
|
23
|
+
require_sessionContext.startSessionContext(assembleHook, configuration, sessionManager);
|
|
24
|
+
const accountContext = (0, _kubesense_kubesense_browser_core.startAccountContext)(assembleHook, configuration, LOGS_STORAGE_KEY);
|
|
25
|
+
const userContext = (0, _kubesense_kubesense_browser_core.startUserContext)(assembleHook, configuration, sessionManager, LOGS_STORAGE_KEY);
|
|
26
|
+
const globalContext = (0, _kubesense_kubesense_browser_core.startGlobalContext)(assembleHook, configuration, LOGS_STORAGE_KEY, false);
|
|
27
|
+
require_rumInternalContext.startRUMInternalContext(hooks);
|
|
28
|
+
(0, _kubesense_kubesense_browser_core.startTabContext)(assembleHook);
|
|
29
|
+
require_networkErrorCollection.startNetworkErrorCollection(configuration, lifeCycle, bufferedDataObservable);
|
|
30
|
+
require_runtimeErrorCollection.startRuntimeErrorCollection(configuration, lifeCycle, bufferedDataObservable);
|
|
31
|
+
require_consoleCollection.startConsoleCollection(configuration, lifeCycle, bufferedDataObservable);
|
|
32
|
+
bufferedDataObservable.unbuffer();
|
|
33
|
+
require_reportCollection.startReportCollection(configuration, lifeCycle);
|
|
34
|
+
const { handleLog } = require_loggerCollection.startLoggerCollection(lifeCycle);
|
|
35
|
+
require_assembly.startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError);
|
|
36
|
+
if (!(0, _kubesense_kubesense_browser_core.canUseEventBridge)()) {
|
|
37
|
+
const { stop: stopLogsBatch } = require_startLogsBatch.startLogsBatch(configuration, lifeCycle, reportError, sessionManager);
|
|
38
|
+
cleanupTasks.push(() => stopLogsBatch());
|
|
39
|
+
} else require_startLogsBridge.startLogsBridge(lifeCycle);
|
|
40
|
+
return {
|
|
41
|
+
handleLog,
|
|
42
|
+
getInternalContext: require_internalContext.startInternalContext(sessionManager).get,
|
|
43
|
+
accountContext,
|
|
44
|
+
globalContext,
|
|
45
|
+
userContext,
|
|
46
|
+
stop: () => {
|
|
47
|
+
cleanupTasks.forEach((task) => task());
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//#endregion
|
|
52
|
+
exports.startLogs = startLogs;
|
|
53
|
+
|
|
54
|
+
//# sourceMappingURL=startLogs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startLogs.js","names":["LifeCycle","sendToExtension","startReportError","startAccountContext","startUserContext","startGlobalContext","startLoggerCollection","canUseEventBridge","startLogsBatch","startInternalContext"],"sources":["../../src/boot/startLogs.ts"],"sourcesContent":["import type { BufferedObservable, BufferedData, SessionManager } from '@kubesense/kubesense-browser-core'\nimport {\n sendToExtension,\n canUseEventBridge,\n startAccountContext,\n startGlobalContext,\n startUserContext,\n startTabContext,\n} from '@kubesense/kubesense-browser-core'\nimport type { LogsConfiguration } from '../domain/configuration'\nimport { startLogsAssembly } from '../domain/assembly'\nimport { startConsoleCollection } from '../domain/console/consoleCollection'\nimport { startReportCollection } from '../domain/report/reportCollection'\nimport { startNetworkErrorCollection } from '../domain/networkError/networkErrorCollection'\nimport { startRuntimeErrorCollection } from '../domain/runtimeError/runtimeErrorCollection'\nimport { LifeCycle, LifeCycleEventType } from '../domain/lifeCycle'\nimport { startLoggerCollection } from '../domain/logger/loggerCollection'\nimport { startLogsBatch } from '../transport/startLogsBatch'\nimport { startLogsBridge } from '../transport/startLogsBridge'\nimport { startInternalContext } from '../domain/contexts/internalContext'\nimport { startReportError } from '../domain/reportError'\nimport type { CommonContext } from '../rawLogsEvent.types'\nimport type { Hooks } from '../domain/hooks'\nimport { startRUMInternalContext } from '../domain/contexts/rumInternalContext'\nimport { startSessionContext } from '../domain/contexts/sessionContext'\n\nconst LOGS_STORAGE_KEY = 'logs'\n\nexport type StartLogs = typeof startLogs\nexport type StartLogsResult = ReturnType<StartLogs>\n\nexport function startLogs(\n configuration: LogsConfiguration,\n sessionManager: SessionManager,\n getCommonContext: () => CommonContext,\n bufferedDataObservable: BufferedObservable<BufferedData>,\n hooks: Hooks\n) {\n const lifeCycle = new LifeCycle()\n const cleanupTasks: Array<() => void> = []\n\n lifeCycle.subscribe(LifeCycleEventType.LOG_COLLECTED, (log) => sendToExtension('logs', log))\n\n const reportError = startReportError(lifeCycle)\n\n // Start user and account context first to allow overrides from global context\n const { assembleEventDefaults: assembleHook } = hooks\n startSessionContext(assembleHook, configuration, sessionManager)\n const accountContext = startAccountContext(assembleHook, configuration, LOGS_STORAGE_KEY)\n const userContext = startUserContext(assembleHook, configuration, sessionManager, LOGS_STORAGE_KEY)\n const globalContext = startGlobalContext(assembleHook, configuration, LOGS_STORAGE_KEY, false)\n startRUMInternalContext(hooks)\n startTabContext(assembleHook)\n\n startNetworkErrorCollection(configuration, lifeCycle, bufferedDataObservable)\n startRuntimeErrorCollection(configuration, lifeCycle, bufferedDataObservable)\n startConsoleCollection(configuration, lifeCycle, bufferedDataObservable)\n bufferedDataObservable.unbuffer()\n startReportCollection(configuration, lifeCycle)\n const { handleLog } = startLoggerCollection(lifeCycle)\n\n startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError)\n\n if (!canUseEventBridge()) {\n const { stop: stopLogsBatch } = startLogsBatch(configuration, lifeCycle, reportError, sessionManager)\n cleanupTasks.push(() => stopLogsBatch())\n } else {\n startLogsBridge(lifeCycle)\n }\n\n const internalContext = startInternalContext(sessionManager)\n\n return {\n handleLog,\n getInternalContext: internalContext.get,\n accountContext,\n globalContext,\n userContext,\n stop: () => {\n cleanupTasks.forEach((task) => task())\n },\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AA0BA,MAAM,mBAAmB;AAKzB,SAAgB,UACd,eACA,gBACA,kBACA,wBACA,OACA;CACA,MAAM,YAAY,IAAIA,kBAAAA,UAAU;CAChC,MAAM,eAAkC,CAAC;CAEzC,UAAU,UAAA,IAA6C,SAAA,GAAQC,kCAAAA,gBAAAA,CAAgB,QAAQ,GAAG,CAAC;CAE3F,MAAM,cAAcC,oBAAAA,iBAAiB,SAAS;CAG9C,MAAM,EAAE,uBAAuB,iBAAiB;CAChD,uBAAA,oBAAoB,cAAc,eAAe,cAAc;CAC/D,MAAM,kBAAA,GAAiBC,kCAAAA,oBAAAA,CAAoB,cAAc,eAAe,gBAAgB;CACxF,MAAM,eAAA,GAAcC,kCAAAA,iBAAAA,CAAiB,cAAc,eAAe,gBAAgB,gBAAgB;CAClG,MAAM,iBAAA,GAAgBC,kCAAAA,mBAAAA,CAAmB,cAAc,eAAe,kBAAkB,KAAK;CAC7F,2BAAA,wBAAwB,KAAK;CAC7B,CAAA,GAAA,kCAAA,gBAAA,CAAgB,YAAY;CAE5B,+BAAA,4BAA4B,eAAe,WAAW,sBAAsB;CAC5E,+BAAA,4BAA4B,eAAe,WAAW,sBAAsB;CAC5E,0BAAA,uBAAuB,eAAe,WAAW,sBAAsB;CACvE,uBAAuB,SAAS;CAChC,yBAAA,sBAAsB,eAAe,SAAS;CAC9C,MAAM,EAAE,cAAcC,yBAAAA,sBAAsB,SAAS;CAErD,iBAAA,kBAAkB,eAAe,WAAW,OAAO,kBAAkB,WAAW;CAEhF,IAAI,EAAA,GAACC,kCAAAA,kBAAAA,CAAkB,GAAG;EACxB,MAAM,EAAE,MAAM,kBAAkBC,uBAAAA,eAAe,eAAe,WAAW,aAAa,cAAc;EACpG,aAAa,WAAW,cAAc,CAAC;CACzC,OACE,wBAAA,gBAAgB,SAAS;CAK3B,OAAO;EACL;EACA,oBAJsBC,wBAAAA,qBAAqB,cAIT,CAAC,CAAC;EACpC;EACA;EACA;EACA,YAAY;GACV,aAAa,SAAS,SAAS,KAAK,CAAC;EACvC;CACF;AACF"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CommonContext } from '../rawLogsEvent.types';
|
|
2
|
+
import type { LogsConfiguration } from './configuration';
|
|
3
|
+
import type { LifeCycle } from './lifeCycle';
|
|
4
|
+
import type { Hooks } from './hooks';
|
|
5
|
+
export declare function startLogsAssembly(configuration: LogsConfiguration, lifeCycle: LifeCycle, hooks: Hooks, getCommonContext: () => CommonContext, reportError: (message: string) => void, eventRateLimit?: number): void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const require_logger = require("./logger.js");
|
|
2
|
+
require("./lifeCycle.js");
|
|
3
|
+
let _kubesense_kubesense_js_core_util = require("@kubesense/kubesense-js-core/util");
|
|
4
|
+
let _kubesense_kubesense_browser_core = require("@kubesense/kubesense-browser-core");
|
|
5
|
+
let _kubesense_kubesense_js_core_time = require("@kubesense/kubesense-js-core/time");
|
|
6
|
+
let _kubesense_kubesense_js_core_assembly = require("@kubesense/kubesense-js-core/assembly");
|
|
7
|
+
//#region src/domain/assembly.ts
|
|
8
|
+
function startLogsAssembly(configuration, lifeCycle, hooks, getCommonContext, reportError, eventRateLimit) {
|
|
9
|
+
const statusWithCustom = require_logger.STATUSES.concat(["custom"]);
|
|
10
|
+
const logRateLimiters = {};
|
|
11
|
+
statusWithCustom.forEach((status) => {
|
|
12
|
+
logRateLimiters[status] = (0, _kubesense_kubesense_browser_core.createEventRateLimiter)(status, reportError, eventRateLimit);
|
|
13
|
+
});
|
|
14
|
+
lifeCycle.subscribe(0, ({ rawLogsEvent, savedCommonContext = void 0, domainContext, ktags = [] }) => {
|
|
15
|
+
const startTime = (0, _kubesense_kubesense_js_core_time.toRelativeTime)(rawLogsEvent.date);
|
|
16
|
+
const commonContext = savedCommonContext || getCommonContext();
|
|
17
|
+
const assemblyParams = {
|
|
18
|
+
startTime,
|
|
19
|
+
rawLogsEvent,
|
|
20
|
+
domainContext
|
|
21
|
+
};
|
|
22
|
+
const defaultLogsEventAttributes = hooks.assembleEventDefaults.trigger(assemblyParams);
|
|
23
|
+
if (defaultLogsEventAttributes === _kubesense_kubesense_js_core_assembly.DISCARDED) return;
|
|
24
|
+
const logsEventAttributes = hooks.assembleEvent.trigger(assemblyParams);
|
|
25
|
+
if (logsEventAttributes === _kubesense_kubesense_js_core_assembly.DISCARDED) return;
|
|
26
|
+
const defaultKtags = (0, _kubesense_kubesense_browser_core.buildTags)(configuration);
|
|
27
|
+
const log = (0, _kubesense_kubesense_js_core_util.combine)({ view: commonContext.view }, defaultLogsEventAttributes, rawLogsEvent, logsEventAttributes, { ktags: defaultKtags.concat(ktags).join(",") });
|
|
28
|
+
if (configuration.beforeSend?.(log, domainContext) === false || log.origin !== _kubesense_kubesense_browser_core.ErrorSource.AGENT && (logRateLimiters[log.status] ?? logRateLimiters["custom"]).isLimitReached()) return;
|
|
29
|
+
lifeCycle.notify(1, log);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.startLogsAssembly = startLogsAssembly;
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=assembly.js.map
|