@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.
Files changed (166) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +90 -2
  3. package/bundle/kubesense-logs.js +1 -0
  4. package/cjs/boot/logsPublicApi.d.ts +231 -0
  5. package/cjs/boot/logsPublicApi.js +75 -0
  6. package/cjs/boot/logsPublicApi.js.map +1 -0
  7. package/cjs/boot/preStartLogs.d.ts +8 -0
  8. package/cjs/boot/preStartLogs.js +105 -0
  9. package/cjs/boot/preStartLogs.js.map +1 -0
  10. package/cjs/boot/startLogs.d.ts +35 -0
  11. package/cjs/boot/startLogs.js +54 -0
  12. package/cjs/boot/startLogs.js.map +1 -0
  13. package/cjs/domain/assembly.d.ts +5 -0
  14. package/cjs/domain/assembly.js +35 -0
  15. package/cjs/domain/assembly.js.map +1 -0
  16. package/cjs/domain/configuration.d.ts +306 -0
  17. package/cjs/domain/configuration.js +86 -0
  18. package/cjs/domain/configuration.js.map +1 -0
  19. package/cjs/domain/console/consoleCollection.d.ts +20 -0
  20. package/cjs/domain/console/consoleCollection.js +37 -0
  21. package/cjs/domain/console/consoleCollection.js.map +1 -0
  22. package/cjs/domain/contexts/commonContext.d.ts +2 -0
  23. package/cjs/domain/contexts/commonContext.js +13 -0
  24. package/cjs/domain/contexts/commonContext.js.map +1 -0
  25. package/cjs/domain/contexts/internalContext.d.ts +7 -0
  26. package/cjs/domain/contexts/internalContext.js +11 -0
  27. package/cjs/domain/contexts/internalContext.js.map +1 -0
  28. package/cjs/domain/contexts/rumInternalContext.d.ts +2 -0
  29. package/cjs/domain/contexts/rumInternalContext.js +32 -0
  30. package/cjs/domain/contexts/rumInternalContext.js.map +1 -0
  31. package/cjs/domain/contexts/sessionContext.d.ts +4 -0
  32. package/cjs/domain/contexts/sessionContext.js +20 -0
  33. package/cjs/domain/contexts/sessionContext.js.map +1 -0
  34. package/cjs/domain/contexts/trackingConsentContext.d.ts +3 -0
  35. package/cjs/domain/contexts/trackingConsentContext.js +14 -0
  36. package/cjs/domain/contexts/trackingConsentContext.js.map +1 -0
  37. package/cjs/domain/createErrorFieldFromRawError.d.ts +10 -0
  38. package/cjs/domain/createErrorFieldFromRawError.js +15 -0
  39. package/cjs/domain/createErrorFieldFromRawError.js.map +1 -0
  40. package/cjs/domain/hooks.d.ts +28 -0
  41. package/cjs/domain/hooks.js +13 -0
  42. package/cjs/domain/hooks.js.map +1 -0
  43. package/cjs/domain/lifeCycle.d.ts +24 -0
  44. package/cjs/domain/lifeCycle.js +6 -0
  45. package/cjs/domain/lifeCycle.js.map +1 -0
  46. package/cjs/domain/logger/isAuthorized.d.ts +17 -0
  47. package/cjs/domain/logger/isAuthorized.js +34 -0
  48. package/cjs/domain/logger/isAuthorized.js.map +1 -0
  49. package/cjs/domain/logger/loggerCollection.d.ts +7 -0
  50. package/cjs/domain/logger/loggerCollection.js +47 -0
  51. package/cjs/domain/logger/loggerCollection.js.map +1 -0
  52. package/cjs/domain/logger.d.ts +48 -0
  53. package/cjs/domain/logger.js +112 -0
  54. package/cjs/domain/logger.js.map +1 -0
  55. package/cjs/domain/networkError/networkErrorCollection.d.ts +9 -0
  56. package/cjs/domain/networkError/networkErrorCollection.js +57 -0
  57. package/cjs/domain/networkError/networkErrorCollection.js.map +1 -0
  58. package/cjs/domain/plugins.d.ts +49 -0
  59. package/cjs/domain/plugins.js +12 -0
  60. package/cjs/domain/plugins.js.map +1 -0
  61. package/cjs/domain/remoteSdkConfiguration.d.ts +26 -0
  62. package/cjs/domain/remoteSdkConfiguration.js +67 -0
  63. package/cjs/domain/remoteSdkConfiguration.js.map +1 -0
  64. package/cjs/domain/report/reportCollection.d.ts +13 -0
  65. package/cjs/domain/report/reportCollection.js +30 -0
  66. package/cjs/domain/report/reportCollection.js.map +1 -0
  67. package/cjs/domain/reportError.d.ts +2 -0
  68. package/cjs/domain/reportError.js +20 -0
  69. package/cjs/domain/reportError.js.map +1 -0
  70. package/cjs/domain/runtimeError/runtimeErrorCollection.d.ts +14 -0
  71. package/cjs/domain/runtimeError/runtimeErrorCollection.js +29 -0
  72. package/cjs/domain/runtimeError/runtimeErrorCollection.js.map +1 -0
  73. package/cjs/domainContext.types.d.ts +11 -0
  74. package/cjs/entries/main.d.ts +33 -0
  75. package/cjs/entries/main.js +31 -0
  76. package/cjs/entries/main.js.map +1 -0
  77. package/cjs/logsEvent.types.d.ts +192 -0
  78. package/cjs/rawLogsEvent.types.d.ts +59 -0
  79. package/cjs/transport/startLogsBatch.d.ts +4 -0
  80. package/cjs/transport/startLogsBatch.js +22 -0
  81. package/cjs/transport/startLogsBatch.js.map +1 -0
  82. package/cjs/transport/startLogsBridge.d.ts +2 -0
  83. package/cjs/transport/startLogsBridge.js +13 -0
  84. package/cjs/transport/startLogsBridge.js.map +1 -0
  85. package/esm/boot/logsPublicApi.mjs +75 -0
  86. package/esm/boot/logsPublicApi.mjs.map +1 -0
  87. package/esm/boot/preStartLogs.mjs +105 -0
  88. package/esm/boot/preStartLogs.mjs.map +1 -0
  89. package/esm/boot/startLogs.mjs +54 -0
  90. package/esm/boot/startLogs.mjs.map +1 -0
  91. package/esm/domain/assembly.mjs +35 -0
  92. package/esm/domain/assembly.mjs.map +1 -0
  93. package/esm/domain/configuration.mjs +84 -0
  94. package/esm/domain/configuration.mjs.map +1 -0
  95. package/esm/domain/console/consoleCollection.mjs +36 -0
  96. package/esm/domain/console/consoleCollection.mjs.map +1 -0
  97. package/esm/domain/contexts/commonContext.mjs +13 -0
  98. package/esm/domain/contexts/commonContext.mjs.map +1 -0
  99. package/esm/domain/contexts/internalContext.mjs +11 -0
  100. package/esm/domain/contexts/internalContext.mjs.map +1 -0
  101. package/esm/domain/contexts/rumInternalContext.mjs +32 -0
  102. package/esm/domain/contexts/rumInternalContext.mjs.map +1 -0
  103. package/esm/domain/contexts/sessionContext.mjs +20 -0
  104. package/esm/domain/contexts/sessionContext.mjs.map +1 -0
  105. package/esm/domain/contexts/trackingConsentContext.mjs +14 -0
  106. package/esm/domain/contexts/trackingConsentContext.mjs.map +1 -0
  107. package/esm/domain/createErrorFieldFromRawError.mjs +15 -0
  108. package/esm/domain/createErrorFieldFromRawError.mjs.map +1 -0
  109. package/esm/domain/hooks.mjs +13 -0
  110. package/esm/domain/hooks.mjs.map +1 -0
  111. package/esm/domain/lifeCycle.mjs +7 -0
  112. package/esm/domain/lifeCycle.mjs.map +1 -0
  113. package/esm/domain/logger/isAuthorized.mjs +32 -0
  114. package/esm/domain/logger/isAuthorized.mjs.map +1 -0
  115. package/esm/domain/logger/loggerCollection.mjs +47 -0
  116. package/esm/domain/logger/loggerCollection.mjs.map +1 -0
  117. package/esm/domain/logger.mjs +110 -0
  118. package/esm/domain/logger.mjs.map +1 -0
  119. package/esm/domain/networkError/networkErrorCollection.mjs +56 -0
  120. package/esm/domain/networkError/networkErrorCollection.mjs.map +1 -0
  121. package/esm/domain/plugins.mjs +12 -0
  122. package/esm/domain/plugins.mjs.map +1 -0
  123. package/esm/domain/remoteSdkConfiguration.mjs +65 -0
  124. package/esm/domain/remoteSdkConfiguration.mjs.map +1 -0
  125. package/esm/domain/report/reportCollection.mjs +30 -0
  126. package/esm/domain/report/reportCollection.mjs.map +1 -0
  127. package/esm/domain/reportError.mjs +20 -0
  128. package/esm/domain/reportError.mjs.map +1 -0
  129. package/esm/domain/runtimeError/runtimeErrorCollection.mjs +29 -0
  130. package/esm/domain/runtimeError/runtimeErrorCollection.mjs.map +1 -0
  131. package/esm/entries/main.mjs +27 -0
  132. package/esm/entries/main.mjs.map +1 -0
  133. package/esm/transport/startLogsBatch.mjs +22 -0
  134. package/esm/transport/startLogsBatch.mjs.map +1 -0
  135. package/esm/transport/startLogsBridge.mjs +13 -0
  136. package/esm/transport/startLogsBridge.mjs.map +1 -0
  137. package/package.json +53 -3
  138. package/src/boot/logsPublicApi.ts +427 -0
  139. package/src/boot/preStartLogs.ts +192 -0
  140. package/src/boot/startLogs.ts +83 -0
  141. package/src/domain/assembly.ts +73 -0
  142. package/src/domain/configuration.ts +176 -0
  143. package/src/domain/console/consoleCollection.ts +58 -0
  144. package/src/domain/contexts/commonContext.ts +15 -0
  145. package/src/domain/contexts/internalContext.ts +19 -0
  146. package/src/domain/contexts/rumInternalContext.ts +60 -0
  147. package/src/domain/contexts/sessionContext.ts +34 -0
  148. package/src/domain/contexts/trackingConsentContext.ts +18 -0
  149. package/src/domain/createErrorFieldFromRawError.ts +22 -0
  150. package/src/domain/hooks.ts +40 -0
  151. package/src/domain/lifeCycle.ts +25 -0
  152. package/src/domain/logger/isAuthorized.ts +33 -0
  153. package/src/domain/logger/loggerCollection.ts +69 -0
  154. package/src/domain/logger.ts +202 -0
  155. package/src/domain/networkError/networkErrorCollection.ts +104 -0
  156. package/src/domain/plugins.ts +72 -0
  157. package/src/domain/remoteSdkConfiguration.ts +105 -0
  158. package/src/domain/report/reportCollection.ts +47 -0
  159. package/src/domain/reportError.ts +20 -0
  160. package/src/domain/runtimeError/runtimeErrorCollection.ts +51 -0
  161. package/src/domainContext.types.ts +21 -0
  162. package/src/entries/main.ts +65 -0
  163. package/src/logsEvent.types.ts +198 -0
  164. package/src/rawLogsEvent.types.ts +74 -0
  165. package/src/transport/startLogsBatch.ts +29 -0
  166. 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