@dynatrace/rum-javascript-sdk 1.329.2
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 +174 -0
- package/README.md +402 -0
- package/dist/api/constants.d.ts +1 -0
- package/dist/api/constants.js +2 -0
- package/dist/api/dynatrace-error.d.ts +3 -0
- package/dist/api/dynatrace-error.js +7 -0
- package/dist/api/global-adapter.d.ts +1 -0
- package/dist/api/global-adapter.js +4 -0
- package/dist/api/index.d.ts +65 -0
- package/dist/api/index.js +110 -0
- package/dist/api/logging.d.ts +2 -0
- package/dist/api/logging.js +8 -0
- package/dist/api/promises/index.d.ts +85 -0
- package/dist/api/promises/index.js +104 -0
- package/dist/api/promises/user-actions.d.ts +35 -0
- package/dist/api/promises/user-actions.js +48 -0
- package/dist/api/promises/wait-for-agent.d.ts +2 -0
- package/dist/api/promises/wait-for-agent.js +77 -0
- package/dist/api/promises/wait-for-send-exception-event.d.ts +9 -0
- package/dist/api/promises/wait-for-send-exception-event.js +18 -0
- package/dist/api/promises/wait-for-user-actions.d.ts +9 -0
- package/dist/api/promises/wait-for-user-actions.js +18 -0
- package/dist/api/type-guards/is-valid-agent.d.ts +2 -0
- package/dist/api/type-guards/is-valid-agent.js +4 -0
- package/dist/api/user-actions.d.ts +62 -0
- package/dist/api/user-actions.js +99 -0
- package/dist/testing/install.d.ts +15 -0
- package/dist/testing/install.js +19 -0
- package/dist/testing/test.d.ts +111 -0
- package/dist/testing/test.js +229 -0
- package/dist/types/api/dynatrace-api-types.d.ts +319 -0
- package/dist/types/api/dynatrace-api-types.js +7 -0
- package/dist/types/api/index.d.ts +1 -0
- package/dist/types/api/index.js +2 -0
- package/dist/types/index-typedoc.d.ts +31 -0
- package/dist/types/index-typedoc.js +32 -0
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +5 -0
- package/dist/types/internal/beacon-query.d.ts +29 -0
- package/dist/types/internal/beacon-query.js +32 -0
- package/dist/types/internal/data-dt-config-scope.d.ts +10 -0
- package/dist/types/internal/data-dt-config-scope.js +12 -0
- package/dist/types/internal/feature-hashes.d.ts +19 -0
- package/dist/types/internal/feature-hashes.js +22 -0
- package/dist/types/internal/index.d.ts +3 -0
- package/dist/types/internal/index.js +4 -0
- package/dist/types/rum-events/event-context/event-context.d.ts +364 -0
- package/dist/types/rum-events/event-context/event-context.js +106 -0
- package/dist/types/rum-events/event-context/index.d.ts +1 -0
- package/dist/types/rum-events/event-context/index.js +2 -0
- package/dist/types/rum-events/event-updates.d.ts +4 -0
- package/dist/types/rum-events/event-updates.js +2 -0
- package/dist/types/rum-events/index.d.ts +19 -0
- package/dist/types/rum-events/index.js +20 -0
- package/dist/types/rum-events/json-event.d.ts +84 -0
- package/dist/types/rum-events/json-event.js +2 -0
- package/dist/types/rum-events/rum-biz-event.d.ts +10 -0
- package/dist/types/rum-events/rum-biz-event.js +15 -0
- package/dist/types/rum-events/rum-event.d.ts +13 -0
- package/dist/types/rum-events/rum-event.js +3 -0
- package/dist/types/rum-events/rum-internal-selfmonitoring-event.d.ts +114 -0
- package/dist/types/rum-events/rum-internal-selfmonitoring-event.js +99 -0
- package/dist/types/rum-events/rum-long-task-event.d.ts +18 -0
- package/dist/types/rum-events/rum-long-task-event.js +10 -0
- package/dist/types/rum-events/rum-page-summary-event.d.ts +370 -0
- package/dist/types/rum-events/rum-page-summary-event.js +184 -0
- package/dist/types/rum-events/rum-selfmonitoring-event.d.ts +39 -0
- package/dist/types/rum-events/rum-selfmonitoring-event.js +32 -0
- package/dist/types/rum-events/rum-session-properties-event.d.ts +9 -0
- package/dist/types/rum-events/rum-session-properties-event.js +3 -0
- package/dist/types/rum-events/rum-standalone-csp-rule-violation-event.d.ts +16 -0
- package/dist/types/rum-events/rum-standalone-csp-rule-violation-event.js +3 -0
- package/dist/types/rum-events/rum-standalone-exception-event.d.ts +16 -0
- package/dist/types/rum-events/rum-standalone-exception-event.js +2 -0
- package/dist/types/rum-events/rum-standalone-navigation-event.d.ts +23 -0
- package/dist/types/rum-events/rum-standalone-navigation-event.js +6 -0
- package/dist/types/rum-events/rum-user-action-event.d.ts +187 -0
- package/dist/types/rum-events/rum-user-action-event.js +78 -0
- package/dist/types/rum-events/rum-user-interaction-event.d.ts +302 -0
- package/dist/types/rum-events/rum-user-interaction-event.js +131 -0
- package/dist/types/rum-events/rum-visibility-change-event.d.ts +15 -0
- package/dist/types/rum-events/rum-visibility-change-event.js +6 -0
- package/dist/types/rum-events/rum-web-request-event.d.ts +269 -0
- package/dist/types/rum-events/rum-web-request-event.js +143 -0
- package/dist/types/rum-events/schema-versions.d.ts +4 -0
- package/dist/types/rum-events/schema-versions.js +5 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/csp-fields.d.ts +38 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/csp-fields.js +23 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/exception-fields.d.ts +26 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/exception-fields.js +19 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/general-rum-error-fields.d.ts +66 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/general-rum-error-fields.js +66 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/general-rum-event-fields.d.ts +142 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/general-rum-event-fields.js +98 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/http-namespace.d.ts +16 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/http-namespace.js +11 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/index.d.ts +9 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/index.js +10 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/navigation-fields.d.ts +48 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/navigation-fields.js +47 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/page-source-fields.d.ts +9 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/page-source-fields.js +5 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/request-fields.d.ts +14 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/request-fields.js +10 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/view-source-fields.d.ts +14 -0
- package/dist/types/rum-events/shared-namespaces-and-fields/view-source-fields.js +9 -0
- package/dist/types/user-actions/index.d.ts +3 -0
- package/dist/types/user-actions/index.js +4 -0
- package/dist/types/user-actions/user-action-end-event.d.ts +28 -0
- package/dist/types/user-actions/user-action-end-event.js +2 -0
- package/dist/types/user-actions/user-action-start-options.d.ts +23 -0
- package/dist/types/user-actions/user-action-start-options.js +2 -0
- package/dist/types/user-actions/user-action-tracker.d.ts +72 -0
- package/dist/types/user-actions/user-action-tracker.js +2 -0
- package/package.json +115 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { getGlobal } from "./global-adapter.js";
|
|
2
|
+
import { isValidAgent } from "./type-guards/is-valid-agent.js";
|
|
3
|
+
import { log } from "./logging.js";
|
|
4
|
+
export { DynatraceError } from "./dynatrace-error.js";
|
|
5
|
+
/**
|
|
6
|
+
* Safe wrapper for {@link dynatrace.sendEvent} which reverts to a noop if RUM JavaScript is not available.
|
|
7
|
+
*
|
|
8
|
+
* @param fields Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
9
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
10
|
+
* using JSON.stringify. The resulting event will be populated with `fields` parameter, and
|
|
11
|
+
* modified with additional properties, thus also empty objects are valid. Only properties
|
|
12
|
+
* prefixed with `event_properties.`, the `duration` property and the `start_time` property are
|
|
13
|
+
* allowed.
|
|
14
|
+
* @param eventContext An optional context that can be used to manipulate the
|
|
15
|
+
* result event within the modification callback.
|
|
16
|
+
*/
|
|
17
|
+
export function sendEvent(fields, eventContext) {
|
|
18
|
+
guardDynatrace((dt) => {
|
|
19
|
+
dt.sendEvent(fields, eventContext);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Safe wrapper for {@link dynatrace.addEventModifier} which reverts to a noop if RUM JavaScript is not available.
|
|
24
|
+
*
|
|
25
|
+
* @param eventModifier The modifier function to modify a given (readonly) JSONEvent. It receives an optional context
|
|
26
|
+
* depending on the type of event, if available. The returned event must be a new object, otherwise
|
|
27
|
+
* modification will be ignored.
|
|
28
|
+
* @returns The unsubscriber function to turn off event modification, or undefined if RUM JavaScript is not available.
|
|
29
|
+
*/
|
|
30
|
+
export function addEventModifier(eventModifier) {
|
|
31
|
+
return guardDynatrace((dt) => {
|
|
32
|
+
return dt.addEventModifier(eventModifier);
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Safe wrapper for {@link dynatrace.runHealthCheck} which reverts to a noop if RUM JavaScript is not available.
|
|
37
|
+
*
|
|
38
|
+
* @param config The optional configuration object for the health check.
|
|
39
|
+
* @param config.logVerbose If true, verbose information is included in the health check.
|
|
40
|
+
* @param config.returnDiagnosticData If true, the diagnostic data is returned as array instead of just being logged.
|
|
41
|
+
* @param config.runDetailedOverrideCheck If true, additional information will be logged to the console for overridden native APIs.
|
|
42
|
+
* @returns A promise that settles as soon as the health check has been performed, or undefined if RUM JavaScript is not available.
|
|
43
|
+
*/
|
|
44
|
+
export function runHealthCheck(config) {
|
|
45
|
+
return guardDynatrace((dt) => {
|
|
46
|
+
return dt.runHealthCheck(config);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Safe wrapper for {@link dynatrace.identifyUser} which reverts to a noop if RUM JavaScript is not available.
|
|
51
|
+
*
|
|
52
|
+
* @param value The name of the user. For example, use a name, userid, or your user's email address.
|
|
53
|
+
*/
|
|
54
|
+
export function identifyUser(value) {
|
|
55
|
+
guardDynatrace((dt) => {
|
|
56
|
+
dt.identifyUser(value);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Safe wrapper for {@link dynatrace.sendSessionPropertyEvent} which reverts to a noop if RUM JavaScript is not available.
|
|
61
|
+
*
|
|
62
|
+
* @param fields Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
63
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
64
|
+
* using JSON.stringify. All keys must be prefixed with "session_properties.*" and must contain only
|
|
65
|
+
* lower-case characters, numbers, underscores or dots. Each dot must be followed by a lower-case
|
|
66
|
+
* character. Each underscore must be followed by a lower-case character or number.
|
|
67
|
+
*/
|
|
68
|
+
export function sendSessionPropertyEvent(fields) {
|
|
69
|
+
guardDynatrace((dt) => {
|
|
70
|
+
dt.sendSessionPropertyEvent(fields);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* This function is only available if the Error module is enabled
|
|
75
|
+
*
|
|
76
|
+
* @param error Must be a valid instance of the Error class. If an invalid value is provided, the error will not be processed or sent.
|
|
77
|
+
* @param fields Optional: Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
78
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
79
|
+
* using JSON.stringify. The resulting event will contain the provided `fields`, and is
|
|
80
|
+
* modified with additional properties, thus also empty objects are valid. Only properties
|
|
81
|
+
* prefixed with `event_properties.`, the `duration` property and the `start_time` property are
|
|
82
|
+
* allowed. String properties are limited to 5000 characters, exceeding characters are cut off.
|
|
83
|
+
* All event property keys must contain only alphabetic characters, numbers,
|
|
84
|
+
* underscores or dots. Each dot must be followed by an alphabetic character. Each underscore
|
|
85
|
+
* must be followed by an alphabetic character or number.
|
|
86
|
+
*/
|
|
87
|
+
export function sendExceptionEvent(error, fields) {
|
|
88
|
+
guardDynatrace((dt) => {
|
|
89
|
+
if (!dt.sendExceptionEvent) {
|
|
90
|
+
log("dynatrace.sendExceptionEvent is not available, the Error module might not be enabled");
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
dt.sendExceptionEvent(error, fields);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Safe wrapper for various RUM JavaScript API functions which reverts to a noop if RUM JavaScript is not available.
|
|
98
|
+
*
|
|
99
|
+
* @param fn The function to be executed if RUM JavaScript is available.
|
|
100
|
+
* @returns The result of the provided function call if RUM JavaScript is available, otherwise undefined.
|
|
101
|
+
*/
|
|
102
|
+
function guardDynatrace(fn) {
|
|
103
|
+
const globalDt = getGlobal("dynatrace");
|
|
104
|
+
if (!isValidAgent(globalDt)) {
|
|
105
|
+
log("dynatrace is not available");
|
|
106
|
+
return void 0;
|
|
107
|
+
}
|
|
108
|
+
return fn(globalDt);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zb3VyY2UvYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFdEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQXNDLEVBQUUsWUFBc0I7SUFDcEYsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDbEIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxhQUFnRztJQUM3SCxPQUFPLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUEwQjtJQUNyRCxPQUFPLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBQyxLQUFhO0lBQ3RDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ2xCLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsTUFBd0M7SUFDN0UsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUU7UUFDbEIsRUFBRSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsS0FBWSxFQUFFLE1BQXVDO0lBQ3BGLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1FBQ2xCLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN6QixHQUFHLENBQUMsc0ZBQXNGLENBQUMsQ0FBQztZQUM1RixPQUFPO1FBQ1gsQ0FBQztRQUNELEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGNBQWMsQ0FBa0UsRUFBSztJQUMxRixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBQzFCLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gICAgQXBpQ3JlYXRlZEV2ZW50UHJvcGVydGllc0V2ZW50LFxuICAgIEFwaUNyZWF0ZWRTZXNzaW9uUHJvcGVydGllc0V2ZW50LFxuICAgIEV2ZW50Q29udGV4dCxcbiAgICBIZWFsdGhDaGVja0NvbmZpZyxcbiAgICBKU09ORXZlbnQsXG4gICAgVW5zdWJzY3JpYmVyXG59IGZyb20gXCIuLi90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgZ2V0R2xvYmFsIH0gZnJvbSBcIi4vZ2xvYmFsLWFkYXB0ZXIuanNcIjtcbmltcG9ydCB7IGlzVmFsaWRBZ2VudCB9IGZyb20gXCIuL3R5cGUtZ3VhcmRzL2lzLXZhbGlkLWFnZW50LmpzXCI7XG5pbXBvcnQgeyBsb2cgfSBmcm9tIFwiLi9sb2dnaW5nLmpzXCI7XG5cbmV4cG9ydCB7IER5bmF0cmFjZUVycm9yIH0gZnJvbSBcIi4vZHluYXRyYWNlLWVycm9yLmpzXCI7XG5cbi8qKlxuICogU2FmZSB3cmFwcGVyIGZvciB7QGxpbmsgZHluYXRyYWNlLnNlbmRFdmVudH0gd2hpY2ggcmV2ZXJ0cyB0byBhIG5vb3AgaWYgUlVNIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZS5cbiAqXG4gKiBAcGFyYW0gZmllbGRzICAgICAgIE11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdCBhbmQgY2Fubm90IGNvbnRhaW4gZnVuY3Rpb25zLCB1bmRlZmluZWQsIEluZmluaXR5IGFuZCBOYU4gYXNcbiAqICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gVGhlIGBmaWVsZHNgIG5lZWQgdG8gYmUgc2VyaWFsaXphYmxlXG4gKiAgICAgICAgICAgICAgICAgICAgIHVzaW5nIEpTT04uc3RyaW5naWZ5LiBUaGUgcmVzdWx0aW5nIGV2ZW50IHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYGZpZWxkc2AgcGFyYW1ldGVyLCBhbmRcbiAqICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHRodXMgYWxzbyBlbXB0eSBvYmplY3RzIGFyZSB2YWxpZC4gT25seSBwcm9wZXJ0aWVzXG4gKiAgICAgICAgICAgICAgICAgICAgIHByZWZpeGVkIHdpdGggYGV2ZW50X3Byb3BlcnRpZXMuYCwgdGhlIGBkdXJhdGlvbmAgcHJvcGVydHkgYW5kIHRoZSBgc3RhcnRfdGltZWAgcHJvcGVydHkgYXJlXG4gKiAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQuXG4gKiBAcGFyYW0gZXZlbnRDb250ZXh0IEFuIG9wdGlvbmFsIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBtYW5pcHVsYXRlIHRoZVxuICogICAgICAgICAgICAgICAgICAgICByZXN1bHQgZXZlbnQgd2l0aGluIHRoZSBtb2RpZmljYXRpb24gY2FsbGJhY2suXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZW5kRXZlbnQoZmllbGRzOiBBcGlDcmVhdGVkRXZlbnRQcm9wZXJ0aWVzRXZlbnQsIGV2ZW50Q29udGV4dD86IHVua25vd24pOiB2b2lkIHtcbiAgICBndWFyZER5bmF0cmFjZSgoZHQpID0+IHtcbiAgICAgICAgZHQuc2VuZEV2ZW50KGZpZWxkcywgZXZlbnRDb250ZXh0KTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBTYWZlIHdyYXBwZXIgZm9yIHtAbGluayBkeW5hdHJhY2UuYWRkRXZlbnRNb2RpZmllcn0gd2hpY2ggcmV2ZXJ0cyB0byBhIG5vb3AgaWYgUlVNIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZS5cbiAqXG4gKiBAcGFyYW0gZXZlbnRNb2RpZmllciBUaGUgbW9kaWZpZXIgZnVuY3Rpb24gdG8gbW9kaWZ5IGEgZ2l2ZW4gKHJlYWRvbmx5KSBKU09ORXZlbnQuIEl0IHJlY2VpdmVzIGFuIG9wdGlvbmFsIGNvbnRleHRcbiAqICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB0aGUgdHlwZSBvZiBldmVudCwgaWYgYXZhaWxhYmxlLiBUaGUgcmV0dXJuZWQgZXZlbnQgbXVzdCBiZSBhIG5ldyBvYmplY3QsIG90aGVyd2lzZVxuICogICAgICAgICAgICAgICAgICAgICAgbW9kaWZpY2F0aW9uIHdpbGwgYmUgaWdub3JlZC5cbiAqIEByZXR1cm5zICAgICAgICAgICAgIFRoZSB1bnN1YnNjcmliZXIgZnVuY3Rpb24gdG8gdHVybiBvZmYgZXZlbnQgbW9kaWZpY2F0aW9uLCBvciB1bmRlZmluZWQgaWYgUlVNIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEV2ZW50TW9kaWZpZXIoZXZlbnRNb2RpZmllcjogKGpzb25FdmVudDogUmVhZG9ubHk8SlNPTkV2ZW50PiwgZXZlbnRDb250ZXh0PzogRXZlbnRDb250ZXh0KSA9PiBKU09ORXZlbnQgfCBudWxsKTogVW5zdWJzY3JpYmVyIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ3VhcmREeW5hdHJhY2UoKGR0KSA9PiB7XG4gICAgICAgIHJldHVybiBkdC5hZGRFdmVudE1vZGlmaWVyKGV2ZW50TW9kaWZpZXIpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIFNhZmUgd3JhcHBlciBmb3Ige0BsaW5rIGR5bmF0cmFjZS5ydW5IZWFsdGhDaGVja30gd2hpY2ggcmV2ZXJ0cyB0byBhIG5vb3AgaWYgUlVNIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZS5cbiAqXG4gKiBAcGFyYW0gY29uZmlnICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgb3B0aW9uYWwgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSBoZWFsdGggY2hlY2suXG4gKiBAcGFyYW0gY29uZmlnLmxvZ1ZlcmJvc2UgICAgICAgICAgICAgICBJZiB0cnVlLCB2ZXJib3NlIGluZm9ybWF0aW9uIGlzIGluY2x1ZGVkIGluIHRoZSBoZWFsdGggY2hlY2suXG4gKiBAcGFyYW0gY29uZmlnLnJldHVybkRpYWdub3N0aWNEYXRhICAgICBJZiB0cnVlLCB0aGUgZGlhZ25vc3RpYyBkYXRhIGlzIHJldHVybmVkIGFzIGFycmF5IGluc3RlYWQgb2YganVzdCBiZWluZyBsb2dnZWQuXG4gKiBAcGFyYW0gY29uZmlnLnJ1bkRldGFpbGVkT3ZlcnJpZGVDaGVjayBJZiB0cnVlLCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHdpbGwgYmUgbG9nZ2VkIHRvIHRoZSBjb25zb2xlIGZvciBvdmVycmlkZGVuIG5hdGl2ZSBBUElzLlxuICogQHJldHVybnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBwcm9taXNlIHRoYXQgc2V0dGxlcyBhcyBzb29uIGFzIHRoZSBoZWFsdGggY2hlY2sgaGFzIGJlZW4gcGVyZm9ybWVkLCBvciB1bmRlZmluZWQgaWYgUlVNIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1bkhlYWx0aENoZWNrKGNvbmZpZz86IEhlYWx0aENoZWNrQ29uZmlnKTogUHJvbWlzZTx1bmtub3duW10gfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ3VhcmREeW5hdHJhY2UoKGR0KSA9PiB7XG4gICAgICAgIHJldHVybiBkdC5ydW5IZWFsdGhDaGVjayhjb25maWcpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIFNhZmUgd3JhcHBlciBmb3Ige0BsaW5rIGR5bmF0cmFjZS5pZGVudGlmeVVzZXJ9IHdoaWNoIHJldmVydHMgdG8gYSBub29wIGlmIFJVTSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGUuXG4gKlxuICogQHBhcmFtIHZhbHVlIFRoZSBuYW1lIG9mIHRoZSB1c2VyLiBGb3IgZXhhbXBsZSwgdXNlIGEgbmFtZSwgdXNlcmlkLCBvciB5b3VyIHVzZXIncyBlbWFpbCBhZGRyZXNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaWRlbnRpZnlVc2VyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBndWFyZER5bmF0cmFjZSgoZHQpID0+IHtcbiAgICAgICAgZHQuaWRlbnRpZnlVc2VyKHZhbHVlKTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiBTYWZlIHdyYXBwZXIgZm9yIHtAbGluayBkeW5hdHJhY2Uuc2VuZFNlc3Npb25Qcm9wZXJ0eUV2ZW50fSB3aGljaCByZXZlcnRzIHRvIGEgbm9vcCBpZiBSVU0gSmF2YVNjcmlwdCBpcyBub3QgYXZhaWxhYmxlLlxuICpcbiAqIEBwYXJhbSBmaWVsZHMgTXVzdCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0IGFuZCBjYW5ub3QgY29udGFpbiBmdW5jdGlvbnMsIHVuZGVmaW5lZCwgSW5maW5pdHkgYW5kIE5hTiBhc1xuICogICAgICAgICAgICAgICB2YWx1ZXMsIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgcmVwbGFjZWQgd2l0aCBudWxsLiBUaGUgYGZpZWxkc2AgbmVlZCB0byBiZSBzZXJpYWxpemFibGVcbiAqICAgICAgICAgICAgICAgdXNpbmcgSlNPTi5zdHJpbmdpZnkuIEFsbCBrZXlzIG11c3QgYmUgcHJlZml4ZWQgd2l0aCBcInNlc3Npb25fcHJvcGVydGllcy4qXCIgYW5kIG11c3QgY29udGFpbiBvbmx5XG4gKiAgICAgICAgICAgICAgIGxvd2VyLWNhc2UgY2hhcmFjdGVycywgbnVtYmVycywgdW5kZXJzY29yZXMgb3IgZG90cy4gRWFjaCBkb3QgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGxvd2VyLWNhc2VcbiAqICAgICAgICAgICAgICAgY2hhcmFjdGVyLiBFYWNoIHVuZGVyc2NvcmUgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGxvd2VyLWNhc2UgY2hhcmFjdGVyIG9yIG51bWJlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbmRTZXNzaW9uUHJvcGVydHlFdmVudChmaWVsZHM6IEFwaUNyZWF0ZWRTZXNzaW9uUHJvcGVydGllc0V2ZW50KTogdm9pZCB7XG4gICAgZ3VhcmREeW5hdHJhY2UoKGR0KSA9PiB7XG4gICAgICAgIGR0LnNlbmRTZXNzaW9uUHJvcGVydHlFdmVudChmaWVsZHMpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgaWYgdGhlIEVycm9yIG1vZHVsZSBpcyBlbmFibGVkXG4gKlxuICogQHBhcmFtIGVycm9yICBNdXN0IGJlIGEgdmFsaWQgaW5zdGFuY2Ugb2YgdGhlIEVycm9yIGNsYXNzLiBJZiBhbiBpbnZhbGlkIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZXJyb3Igd2lsbCBub3QgYmUgcHJvY2Vzc2VkIG9yIHNlbnQuXG4gKiBAcGFyYW0gZmllbGRzIE9wdGlvbmFsOiBNdXN0IGJlIGEgdmFsaWQgSlNPTiBvYmplY3QgYW5kIGNhbm5vdCBjb250YWluIGZ1bmN0aW9ucywgdW5kZWZpbmVkLCBJbmZpbml0eSBhbmQgTmFOIGFzXG4gKiAgICAgICAgICAgICAgIHZhbHVlcywgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIG51bGwuIFRoZSBgZmllbGRzYCBuZWVkIHRvIGJlIHNlcmlhbGl6YWJsZVxuICogICAgICAgICAgICAgICB1c2luZyBKU09OLnN0cmluZ2lmeS4gVGhlIHJlc3VsdGluZyBldmVudCB3aWxsIGNvbnRhaW4gdGhlIHByb3ZpZGVkIGBmaWVsZHNgLCBhbmQgaXNcbiAqICAgICAgICAgICAgICAgbW9kaWZpZWQgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHRodXMgYWxzbyBlbXB0eSBvYmplY3RzIGFyZSB2YWxpZC4gT25seSBwcm9wZXJ0aWVzXG4gKiAgICAgICAgICAgICAgIHByZWZpeGVkIHdpdGggYGV2ZW50X3Byb3BlcnRpZXMuYCwgdGhlIGBkdXJhdGlvbmAgcHJvcGVydHkgYW5kIHRoZSBgc3RhcnRfdGltZWAgcHJvcGVydHkgYXJlXG4gKiAgICAgICAgICAgICAgIGFsbG93ZWQuIFN0cmluZyBwcm9wZXJ0aWVzIGFyZSBsaW1pdGVkIHRvIDUwMDAgY2hhcmFjdGVycywgZXhjZWVkaW5nIGNoYXJhY3RlcnMgYXJlIGN1dCBvZmYuXG4gKiAgICAgICAgICAgICAgIEFsbCBldmVudCBwcm9wZXJ0eSBrZXlzIG11c3QgY29udGFpbiBvbmx5IGFscGhhYmV0aWMgY2hhcmFjdGVycywgbnVtYmVycyxcbiAqICAgICAgICAgICAgICAgdW5kZXJzY29yZXMgb3IgZG90cy4gRWFjaCBkb3QgbXVzdCBiZSBmb2xsb3dlZCBieSBhbiBhbHBoYWJldGljIGNoYXJhY3Rlci4gRWFjaCB1bmRlcnNjb3JlXG4gKiAgICAgICAgICAgICAgIG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gYWxwaGFiZXRpYyBjaGFyYWN0ZXIgb3IgbnVtYmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VuZEV4Y2VwdGlvbkV2ZW50KGVycm9yOiBFcnJvciwgZmllbGRzPzogQXBpQ3JlYXRlZEV2ZW50UHJvcGVydGllc0V2ZW50KTogdm9pZCB7XG4gICAgZ3VhcmREeW5hdHJhY2UoKGR0KSA9PiB7XG4gICAgICAgIGlmICghZHQuc2VuZEV4Y2VwdGlvbkV2ZW50KSB7XG4gICAgICAgICAgICBsb2coXCJkeW5hdHJhY2Uuc2VuZEV4Y2VwdGlvbkV2ZW50IGlzIG5vdCBhdmFpbGFibGUsIHRoZSBFcnJvciBtb2R1bGUgbWlnaHQgbm90IGJlIGVuYWJsZWRcIik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZHQuc2VuZEV4Y2VwdGlvbkV2ZW50KGVycm9yLCBmaWVsZHMpO1xuICAgIH0pO1xufVxuXG4vKipcbiAqIFNhZmUgd3JhcHBlciBmb3IgdmFyaW91cyBSVU0gSmF2YVNjcmlwdCBBUEkgZnVuY3Rpb25zIHdoaWNoIHJldmVydHMgdG8gYSBub29wIGlmIFJVTSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGUuXG4gKlxuICogQHBhcmFtIGZuIFRoZSBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBpZiBSVU0gSmF2YVNjcmlwdCBpcyBhdmFpbGFibGUuXG4gKiBAcmV0dXJucyAgVGhlIHJlc3VsdCBvZiB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gY2FsbCBpZiBSVU0gSmF2YVNjcmlwdCBpcyBhdmFpbGFibGUsIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gKi9cbmZ1bmN0aW9uIGd1YXJkRHluYXRyYWNlPFQgZXh0ZW5kcyAoZHQ6IE5vbk51bGxhYmxlPHR5cGVvZiBnbG9iYWxUaGlzLmR5bmF0cmFjZT4pID0+IGFueT4oZm46IFQpOiBSZXR1cm5UeXBlPFQ+IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBnbG9iYWxEdCA9IGdldEdsb2JhbChcImR5bmF0cmFjZVwiKTtcbiAgICBpZiAoIWlzVmFsaWRBZ2VudChnbG9iYWxEdCkpIHtcbiAgICAgICAgbG9nKFwiZHluYXRyYWNlIGlzIG5vdCBhdmFpbGFibGVcIik7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuICAgIHJldHVybiBmbihnbG9iYWxEdCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LOG_PREFIX } from "./constants.js";
|
|
2
|
+
export function log(...args) {
|
|
3
|
+
console.log(LOG_PREFIX, ...args);
|
|
4
|
+
}
|
|
5
|
+
export function warn(...args) {
|
|
6
|
+
console.warn(LOG_PREFIX, ...args);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9hcGkvbG9nZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQWU7SUFDbEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxVQUFVLElBQUksQ0FBQyxHQUFHLElBQWU7SUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTE9HX1BSRUZJWCB9IGZyb20gXCIuL2NvbnN0YW50cy5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9nKC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGNvbnNvbGUubG9nKExPR19QUkVGSVgsIC4uLmFyZ3MpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2FybiguLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBjb25zb2xlLndhcm4oTE9HX1BSRUZJWCwgLi4uYXJncyk7XG59XG4iXX0=
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { ApiCreatedEventPropertiesEvent, ApiCreatedSessionPropertiesEvent, EventContext, JSONEvent } from "../../types/index.js";
|
|
2
|
+
import type { HealthCheckConfig, Unsubscriber } from "../../types/api/dynatrace-api-types.js";
|
|
3
|
+
export { DynatraceError } from "../dynatrace-error.js";
|
|
4
|
+
/**
|
|
5
|
+
* Async wrapper for {@link dynatrace.sendEvent}.
|
|
6
|
+
*
|
|
7
|
+
* @param fields Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
8
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
9
|
+
* using JSON.stringify. The resulting event will be populated with `fields` parameter, and
|
|
10
|
+
* modified with additional properties, thus also empty objects are valid. Only properties
|
|
11
|
+
* prefixed with `event_properties.`, the `duration` property and the `start_time` property are
|
|
12
|
+
* allowed.
|
|
13
|
+
* @param eventContext An optional context that can be used to manipulate the
|
|
14
|
+
* result event within the modification callback.
|
|
15
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
16
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the namespace is
|
|
17
|
+
* overridden with an incompatible object
|
|
18
|
+
*/
|
|
19
|
+
export declare function sendEvent(fields: ApiCreatedEventPropertiesEvent, eventContext?: unknown, timeout?: number): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Async wrapper for {@link dynatrace.addEventModifier}.
|
|
22
|
+
*
|
|
23
|
+
* @param eventModifier The modifier function to modify a given (readonly) JSONEvent. It receives an optional context
|
|
24
|
+
* depending on the type of event, if available. The returned event must be a new object, otherwise
|
|
25
|
+
* modification will be ignored.
|
|
26
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
27
|
+
* @returns A promise that resolves to the unsubscriber function to turn off event modification.
|
|
28
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the
|
|
29
|
+
* namespace is overridden with an incompatible object
|
|
30
|
+
*/
|
|
31
|
+
export declare function addEventModifier(eventModifier: (jsonEvent: Readonly<JSONEvent>, eventContext?: EventContext) => JSONEvent | null, timeout?: number): Promise<Unsubscriber>;
|
|
32
|
+
/**
|
|
33
|
+
* Async wrapper for {@link dynatrace.runHealthCheck}.
|
|
34
|
+
*
|
|
35
|
+
* @param config The optional configuration object for the health check.
|
|
36
|
+
* @param config.logVerbose If true, verbose information is included in the health check.
|
|
37
|
+
* @param config.returnDiagnosticData If true, the diagnostic data is returned as array instead of just being logged.
|
|
38
|
+
* @param config.runDetailedOverrideCheck If true, additional information will be logged to the console for overridden native APIs.
|
|
39
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
40
|
+
* @returns A promise that settles as soon as the health check has been performed.
|
|
41
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the
|
|
42
|
+
* timeout, or the namespace is overridden with an incompatible object
|
|
43
|
+
*/
|
|
44
|
+
export declare function runHealthCheck(config?: HealthCheckConfig, timeout?: number): Promise<unknown[] | undefined>;
|
|
45
|
+
/**
|
|
46
|
+
* Async wrapper for {@link dynatrace.identifyUser}.
|
|
47
|
+
*
|
|
48
|
+
* @param value The name of the user. For example, use a name, userid, or your user's email address.
|
|
49
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
50
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the namespace is
|
|
51
|
+
* overridden with an incompatible object
|
|
52
|
+
*/
|
|
53
|
+
export declare function identifyUser(value: string, timeout?: number): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Async wrapper for {@link dynatrace.sendSessionPropertyEvent}.
|
|
56
|
+
*
|
|
57
|
+
* @param fields Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
58
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
59
|
+
* using JSON.stringify. All keys must be prefixed with "session_properties.*" and must contain only
|
|
60
|
+
* lower-case characters, numbers, underscores or dots. Each dot must be followed by a lower-case
|
|
61
|
+
* character. Each underscore must be followed by a lower-case character or number.
|
|
62
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
63
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the namespace is
|
|
64
|
+
* overridden with an incompatible object
|
|
65
|
+
*/
|
|
66
|
+
export declare function sendSessionPropertyEvent(fields: ApiCreatedSessionPropertiesEvent, timeout?: number): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Async wrapper for {@link dynatrace.sendExceptionEvent}.
|
|
69
|
+
* This function is only available if the Error module is enabled
|
|
70
|
+
*
|
|
71
|
+
* @param error Must be a valid instance of the Error class. If an invalid value is provided, the error will not be processed or sent.
|
|
72
|
+
* @param fields Optional: Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
73
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
74
|
+
* using JSON.stringify. The resulting event will contain the provided `fields`, and is
|
|
75
|
+
* modified with additional properties, thus also empty objects are valid. Only properties
|
|
76
|
+
* prefixed with `event_properties.`, the `duration` property and the `start_time` property are
|
|
77
|
+
* allowed. String properties are limited to 5000 characters, exceeding characters are cut off.
|
|
78
|
+
* All event property keys must contain only alphabetic characters, numbers,
|
|
79
|
+
* underscores or dots. Each dot must be followed by an alphabetic character. Each underscore
|
|
80
|
+
* must be followed by an alphabetic character or number.
|
|
81
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
82
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the namespace is
|
|
83
|
+
* overridden with an incompatible object
|
|
84
|
+
*/
|
|
85
|
+
export declare function sendExceptionEvent(error: Error, fields?: ApiCreatedEventPropertiesEvent, timeout?: number): Promise<void>;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { waitForAgent } from "./wait-for-agent.js";
|
|
2
|
+
import { waitForSendExceptionEvent } from "./wait-for-send-exception-event.js";
|
|
3
|
+
export { DynatraceError } from "../dynatrace-error.js";
|
|
4
|
+
/**
|
|
5
|
+
* Async wrapper for {@link dynatrace.sendEvent}.
|
|
6
|
+
*
|
|
7
|
+
* @param fields Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
8
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
9
|
+
* using JSON.stringify. The resulting event will be populated with `fields` parameter, and
|
|
10
|
+
* modified with additional properties, thus also empty objects are valid. Only properties
|
|
11
|
+
* prefixed with `event_properties.`, the `duration` property and the `start_time` property are
|
|
12
|
+
* allowed.
|
|
13
|
+
* @param eventContext An optional context that can be used to manipulate the
|
|
14
|
+
* result event within the modification callback.
|
|
15
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
16
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the namespace is
|
|
17
|
+
* overridden with an incompatible object
|
|
18
|
+
*/
|
|
19
|
+
export async function sendEvent(fields, eventContext, timeout = 10_000) {
|
|
20
|
+
const dynatrace = await waitForAgent(timeout);
|
|
21
|
+
dynatrace.sendEvent(fields, eventContext);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Async wrapper for {@link dynatrace.addEventModifier}.
|
|
25
|
+
*
|
|
26
|
+
* @param eventModifier The modifier function to modify a given (readonly) JSONEvent. It receives an optional context
|
|
27
|
+
* depending on the type of event, if available. The returned event must be a new object, otherwise
|
|
28
|
+
* modification will be ignored.
|
|
29
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
30
|
+
* @returns A promise that resolves to the unsubscriber function to turn off event modification.
|
|
31
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the
|
|
32
|
+
* namespace is overridden with an incompatible object
|
|
33
|
+
*/
|
|
34
|
+
export async function addEventModifier(eventModifier, timeout = 10_000) {
|
|
35
|
+
const dynatrace = await waitForAgent(timeout);
|
|
36
|
+
return dynatrace.addEventModifier(eventModifier);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Async wrapper for {@link dynatrace.runHealthCheck}.
|
|
40
|
+
*
|
|
41
|
+
* @param config The optional configuration object for the health check.
|
|
42
|
+
* @param config.logVerbose If true, verbose information is included in the health check.
|
|
43
|
+
* @param config.returnDiagnosticData If true, the diagnostic data is returned as array instead of just being logged.
|
|
44
|
+
* @param config.runDetailedOverrideCheck If true, additional information will be logged to the console for overridden native APIs.
|
|
45
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
46
|
+
* @returns A promise that settles as soon as the health check has been performed.
|
|
47
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the
|
|
48
|
+
* timeout, or the namespace is overridden with an incompatible object
|
|
49
|
+
*/
|
|
50
|
+
export async function runHealthCheck(config, timeout = 10_000) {
|
|
51
|
+
const dynatrace = await waitForAgent(timeout);
|
|
52
|
+
return dynatrace.runHealthCheck(config);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Async wrapper for {@link dynatrace.identifyUser}.
|
|
56
|
+
*
|
|
57
|
+
* @param value The name of the user. For example, use a name, userid, or your user's email address.
|
|
58
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
59
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the namespace is
|
|
60
|
+
* overridden with an incompatible object
|
|
61
|
+
*/
|
|
62
|
+
export async function identifyUser(value, timeout = 10_000) {
|
|
63
|
+
const dynatrace = await waitForAgent(timeout);
|
|
64
|
+
dynatrace.identifyUser(value);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Async wrapper for {@link dynatrace.sendSessionPropertyEvent}.
|
|
68
|
+
*
|
|
69
|
+
* @param fields Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
70
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
71
|
+
* using JSON.stringify. All keys must be prefixed with "session_properties.*" and must contain only
|
|
72
|
+
* lower-case characters, numbers, underscores or dots. Each dot must be followed by a lower-case
|
|
73
|
+
* character. Each underscore must be followed by a lower-case character or number.
|
|
74
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
75
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the namespace is
|
|
76
|
+
* overridden with an incompatible object
|
|
77
|
+
*/
|
|
78
|
+
export async function sendSessionPropertyEvent(fields, timeout = 10_000) {
|
|
79
|
+
const dynatrace = await waitForAgent(timeout);
|
|
80
|
+
dynatrace.sendSessionPropertyEvent(fields);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Async wrapper for {@link dynatrace.sendExceptionEvent}.
|
|
84
|
+
* This function is only available if the Error module is enabled
|
|
85
|
+
*
|
|
86
|
+
* @param error Must be a valid instance of the Error class. If an invalid value is provided, the error will not be processed or sent.
|
|
87
|
+
* @param fields Optional: Must be a valid JSON object and cannot contain functions, undefined, Infinity and NaN as
|
|
88
|
+
* values, otherwise they will be replaced with null. The `fields` need to be serializable
|
|
89
|
+
* using JSON.stringify. The resulting event will contain the provided `fields`, and is
|
|
90
|
+
* modified with additional properties, thus also empty objects are valid. Only properties
|
|
91
|
+
* prefixed with `event_properties.`, the `duration` property and the `start_time` property are
|
|
92
|
+
* allowed. String properties are limited to 5000 characters, exceeding characters are cut off.
|
|
93
|
+
* All event property keys must contain only alphabetic characters, numbers,
|
|
94
|
+
* underscores or dots. Each dot must be followed by an alphabetic character. Each underscore
|
|
95
|
+
* must be followed by an alphabetic character or number.
|
|
96
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript to be available (default: 10000)
|
|
97
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript is not available within the timeout, or the namespace is
|
|
98
|
+
* overridden with an incompatible object
|
|
99
|
+
*/
|
|
100
|
+
export async function sendExceptionEvent(error, fields, timeout = 10_000) {
|
|
101
|
+
const sendExceptionEventGuarded = await waitForSendExceptionEvent(timeout);
|
|
102
|
+
sendExceptionEventGuarded(error, fields);
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYXBpL3Byb21pc2VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFdkQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFNBQVMsQ0FBQyxNQUFzQyxFQUFFLFlBQXNCLEVBQUUsVUFBa0IsTUFBTTtJQUNwSCxNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsYUFBZ0csRUFBRSxVQUFrQixNQUFNO0lBQzdKLE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE9BQU8sU0FBUyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3JELENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsY0FBYyxDQUFDLE1BQTBCLEVBQUUsVUFBa0IsTUFBTTtJQUNyRixNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxPQUFPLFNBQVMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FBQyxLQUFhLEVBQUUsVUFBa0IsTUFBTTtJQUN0RSxNQUFNLFNBQVMsR0FBRyxNQUFNLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM5QyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsd0JBQXdCLENBQUMsTUFBd0MsRUFBRSxVQUFrQixNQUFNO0lBQzdHLE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxLQUFZLEVBQUUsTUFBdUMsRUFBRSxVQUFrQixNQUFNO0lBQ3BILE1BQU0seUJBQXlCLEdBQUcsTUFBTSx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzRSx5QkFBeUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgICBBcGlDcmVhdGVkRXZlbnRQcm9wZXJ0aWVzRXZlbnQsXG4gICAgQXBpQ3JlYXRlZFNlc3Npb25Qcm9wZXJ0aWVzRXZlbnQsXG4gICAgRXZlbnRDb250ZXh0LFxuICAgIEpTT05FdmVudFxufSBmcm9tIFwiLi4vLi4vdHlwZXMvaW5kZXguanNcIjtcbmltcG9ydCB0eXBlIHtcbiAgICBIZWFsdGhDaGVja0NvbmZpZyxcbiAgICBVbnN1YnNjcmliZXJcbn0gZnJvbSBcIi4uLy4uL3R5cGVzL2FwaS9keW5hdHJhY2UtYXBpLXR5cGVzLmpzXCI7XG5pbXBvcnQgeyB3YWl0Rm9yQWdlbnQgfSBmcm9tIFwiLi93YWl0LWZvci1hZ2VudC5qc1wiO1xuaW1wb3J0IHsgd2FpdEZvclNlbmRFeGNlcHRpb25FdmVudCB9IGZyb20gXCIuL3dhaXQtZm9yLXNlbmQtZXhjZXB0aW9uLWV2ZW50LmpzXCI7XG5cbmV4cG9ydCB7IER5bmF0cmFjZUVycm9yIH0gZnJvbSBcIi4uL2R5bmF0cmFjZS1lcnJvci5qc1wiO1xuXG4vKipcbiAqIEFzeW5jIHdyYXBwZXIgZm9yIHtAbGluayBkeW5hdHJhY2Uuc2VuZEV2ZW50fS5cbiAqXG4gKiBAcGFyYW0gZmllbGRzICAgICAgIE11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdCBhbmQgY2Fubm90IGNvbnRhaW4gZnVuY3Rpb25zLCB1bmRlZmluZWQsIEluZmluaXR5IGFuZCBOYU4gYXNcbiAqICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gVGhlIGBmaWVsZHNgIG5lZWQgdG8gYmUgc2VyaWFsaXphYmxlXG4gKiAgICAgICAgICAgICAgICAgICAgIHVzaW5nIEpTT04uc3RyaW5naWZ5LiBUaGUgcmVzdWx0aW5nIGV2ZW50IHdpbGwgYmUgcG9wdWxhdGVkIHdpdGggYGZpZWxkc2AgcGFyYW1ldGVyLCBhbmRcbiAqICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgd2l0aCBhZGRpdGlvbmFsIHByb3BlcnRpZXMsIHRodXMgYWxzbyBlbXB0eSBvYmplY3RzIGFyZSB2YWxpZC4gT25seSBwcm9wZXJ0aWVzXG4gKiAgICAgICAgICAgICAgICAgICAgIHByZWZpeGVkIHdpdGggYGV2ZW50X3Byb3BlcnRpZXMuYCwgdGhlIGBkdXJhdGlvbmAgcHJvcGVydHkgYW5kIHRoZSBgc3RhcnRfdGltZWAgcHJvcGVydHkgYXJlXG4gKiAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQuXG4gKiBAcGFyYW0gZXZlbnRDb250ZXh0IEFuIG9wdGlvbmFsIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBtYW5pcHVsYXRlIHRoZVxuICogICAgICAgICAgICAgICAgICAgICByZXN1bHQgZXZlbnQgd2l0aGluIHRoZSBtb2RpZmljYXRpb24gY2FsbGJhY2suXG4gKiBAcGFyYW0gdGltZW91dCAgICAgIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSBSVU0gSmF2YVNjcmlwdCB0byBiZSBhdmFpbGFibGUgKGRlZmF1bHQ6IDEwMDAwKVxuICogQHRocm93cyAgICAgICAgICAgICBBIHtAbGluayBEeW5hdHJhY2VFcnJvcn0gaWYgdGhlIFJVTSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGUgd2l0aGluIHRoZSB0aW1lb3V0LCBvciB0aGUgbmFtZXNwYWNlIGlzXG4gKiAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRkZW4gd2l0aCBhbiBpbmNvbXBhdGlibGUgb2JqZWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZW5kRXZlbnQoZmllbGRzOiBBcGlDcmVhdGVkRXZlbnRQcm9wZXJ0aWVzRXZlbnQsIGV2ZW50Q29udGV4dD86IHVua25vd24sIHRpbWVvdXQ6IG51bWJlciA9IDEwXzAwMCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGR5bmF0cmFjZSA9IGF3YWl0IHdhaXRGb3JBZ2VudCh0aW1lb3V0KTtcbiAgICBkeW5hdHJhY2Uuc2VuZEV2ZW50KGZpZWxkcywgZXZlbnRDb250ZXh0KTtcbn1cblxuLyoqXG4gKiBBc3luYyB3cmFwcGVyIGZvciB7QGxpbmsgZHluYXRyYWNlLmFkZEV2ZW50TW9kaWZpZXJ9LlxuICpcbiAqIEBwYXJhbSBldmVudE1vZGlmaWVyIFRoZSBtb2RpZmllciBmdW5jdGlvbiB0byBtb2RpZnkgYSBnaXZlbiAocmVhZG9ubHkpIEpTT05FdmVudC4gSXQgcmVjZWl2ZXMgYW4gb3B0aW9uYWwgY29udGV4dFxuICogICAgICAgICAgICAgICAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSB0eXBlIG9mIGV2ZW50LCBpZiBhdmFpbGFibGUuIFRoZSByZXR1cm5lZCBldmVudCBtdXN0IGJlIGEgbmV3IG9iamVjdCwgb3RoZXJ3aXNlXG4gKiAgICAgICAgICAgICAgICAgICAgICBtb2RpZmljYXRpb24gd2lsbCBiZSBpZ25vcmVkLlxuICogQHBhcmFtIHRpbWVvdXQgICAgICAgVGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIFJVTSBKYXZhU2NyaXB0IHRvIGJlIGF2YWlsYWJsZSAoZGVmYXVsdDogMTAwMDApXG4gKiBAcmV0dXJucyAgICAgICAgICAgICBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgdW5zdWJzY3JpYmVyIGZ1bmN0aW9uIHRvIHR1cm4gb2ZmIGV2ZW50IG1vZGlmaWNhdGlvbi5cbiAqIEB0aHJvd3MgICAgICAgICAgICAgIEEge0BsaW5rIER5bmF0cmFjZUVycm9yfSBpZiB0aGUgUlVNIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhlIHRpbWVvdXQsIG9yIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlIGlzIG92ZXJyaWRkZW4gd2l0aCBhbiBpbmNvbXBhdGlibGUgb2JqZWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhZGRFdmVudE1vZGlmaWVyKGV2ZW50TW9kaWZpZXI6IChqc29uRXZlbnQ6IFJlYWRvbmx5PEpTT05FdmVudD4sIGV2ZW50Q29udGV4dD86IEV2ZW50Q29udGV4dCkgPT4gSlNPTkV2ZW50IHwgbnVsbCwgdGltZW91dDogbnVtYmVyID0gMTBfMDAwKTogUHJvbWlzZTxVbnN1YnNjcmliZXI+IHtcbiAgICBjb25zdCBkeW5hdHJhY2UgPSBhd2FpdCB3YWl0Rm9yQWdlbnQodGltZW91dCk7XG4gICAgcmV0dXJuIGR5bmF0cmFjZS5hZGRFdmVudE1vZGlmaWVyKGV2ZW50TW9kaWZpZXIpO1xufVxuXG4vKipcbiAqIEFzeW5jIHdyYXBwZXIgZm9yIHtAbGluayBkeW5hdHJhY2UucnVuSGVhbHRoQ2hlY2t9LlxuICpcbiAqIEBwYXJhbSBjb25maWcgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvcHRpb25hbCBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGhlYWx0aCBjaGVjay5cbiAqIEBwYXJhbSBjb25maWcubG9nVmVyYm9zZSAgICAgICAgICAgICAgIElmIHRydWUsIHZlcmJvc2UgaW5mb3JtYXRpb24gaXMgaW5jbHVkZWQgaW4gdGhlIGhlYWx0aCBjaGVjay5cbiAqIEBwYXJhbSBjb25maWcucmV0dXJuRGlhZ25vc3RpY0RhdGEgICAgIElmIHRydWUsIHRoZSBkaWFnbm9zdGljIGRhdGEgaXMgcmV0dXJuZWQgYXMgYXJyYXkgaW5zdGVhZCBvZiBqdXN0IGJlaW5nIGxvZ2dlZC5cbiAqIEBwYXJhbSBjb25maWcucnVuRGV0YWlsZWRPdmVycmlkZUNoZWNrIElmIHRydWUsIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gd2lsbCBiZSBsb2dnZWQgdG8gdGhlIGNvbnNvbGUgZm9yIG92ZXJyaWRkZW4gbmF0aXZlIEFQSXMuXG4gKiBAcGFyYW0gdGltZW91dCAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgUlVNIEphdmFTY3JpcHQgdG8gYmUgYXZhaWxhYmxlIChkZWZhdWx0OiAxMDAwMClcbiAqIEByZXR1cm5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcHJvbWlzZSB0aGF0IHNldHRsZXMgYXMgc29vbiBhcyB0aGUgaGVhbHRoIGNoZWNrIGhhcyBiZWVuIHBlcmZvcm1lZC5cbiAqIEB0aHJvd3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEge0BsaW5rIER5bmF0cmFjZUVycm9yfSBpZiB0aGUgUlVNIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0LCBvciB0aGUgbmFtZXNwYWNlIGlzIG92ZXJyaWRkZW4gd2l0aCBhbiBpbmNvbXBhdGlibGUgb2JqZWN0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5IZWFsdGhDaGVjayhjb25maWc/OiBIZWFsdGhDaGVja0NvbmZpZywgdGltZW91dDogbnVtYmVyID0gMTBfMDAwKTogUHJvbWlzZTx1bmtub3duW10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBkeW5hdHJhY2UgPSBhd2FpdCB3YWl0Rm9yQWdlbnQodGltZW91dCk7XG4gICAgcmV0dXJuIGR5bmF0cmFjZS5ydW5IZWFsdGhDaGVjayhjb25maWcpO1xufVxuXG4vKipcbiAqIEFzeW5jIHdyYXBwZXIgZm9yIHtAbGluayBkeW5hdHJhY2UuaWRlbnRpZnlVc2VyfS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgICBUaGUgbmFtZSBvZiB0aGUgdXNlci4gRm9yIGV4YW1wbGUsIHVzZSBhIG5hbWUsIHVzZXJpZCwgb3IgeW91ciB1c2VyJ3MgZW1haWwgYWRkcmVzcy5cbiAqIEBwYXJhbSB0aW1lb3V0IFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSBSVU0gSmF2YVNjcmlwdCB0byBiZSBhdmFpbGFibGUgKGRlZmF1bHQ6IDEwMDAwKVxuICogQHRocm93cyAgICAgICAgQSB7QGxpbmsgRHluYXRyYWNlRXJyb3J9IGlmIHRoZSBSVU0gSmF2YVNjcmlwdCBpcyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aGUgdGltZW91dCwgb3IgdGhlIG5hbWVzcGFjZSBpc1xuICogICAgICAgICAgICAgICAgb3ZlcnJpZGRlbiB3aXRoIGFuIGluY29tcGF0aWJsZSBvYmplY3RcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlkZW50aWZ5VXNlcih2YWx1ZTogc3RyaW5nLCB0aW1lb3V0OiBudW1iZXIgPSAxMF8wMDApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBkeW5hdHJhY2UgPSBhd2FpdCB3YWl0Rm9yQWdlbnQodGltZW91dCk7XG4gICAgZHluYXRyYWNlLmlkZW50aWZ5VXNlcih2YWx1ZSk7XG59XG5cbi8qKlxuICogQXN5bmMgd3JhcHBlciBmb3Ige0BsaW5rIGR5bmF0cmFjZS5zZW5kU2Vzc2lvblByb3BlcnR5RXZlbnR9LlxuICpcbiAqIEBwYXJhbSBmaWVsZHMgIE11c3QgYmUgYSB2YWxpZCBKU09OIG9iamVjdCBhbmQgY2Fubm90IGNvbnRhaW4gZnVuY3Rpb25zLCB1bmRlZmluZWQsIEluZmluaXR5IGFuZCBOYU4gYXNcbiAqICAgICAgICAgICAgICAgIHZhbHVlcywgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSByZXBsYWNlZCB3aXRoIG51bGwuIFRoZSBgZmllbGRzYCBuZWVkIHRvIGJlIHNlcmlhbGl6YWJsZVxuICogICAgICAgICAgICAgICAgdXNpbmcgSlNPTi5zdHJpbmdpZnkuIEFsbCBrZXlzIG11c3QgYmUgcHJlZml4ZWQgd2l0aCBcInNlc3Npb25fcHJvcGVydGllcy4qXCIgYW5kIG11c3QgY29udGFpbiBvbmx5XG4gKiAgICAgICAgICAgICAgICBsb3dlci1jYXNlIGNoYXJhY3RlcnMsIG51bWJlcnMsIHVuZGVyc2NvcmVzIG9yIGRvdHMuIEVhY2ggZG90IG11c3QgYmUgZm9sbG93ZWQgYnkgYSBsb3dlci1jYXNlXG4gKiAgICAgICAgICAgICAgICBjaGFyYWN0ZXIuIEVhY2ggdW5kZXJzY29yZSBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgbG93ZXItY2FzZSBjaGFyYWN0ZXIgb3IgbnVtYmVyLlxuICogQHBhcmFtIHRpbWVvdXQgVGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIFJVTSBKYXZhU2NyaXB0IHRvIGJlIGF2YWlsYWJsZSAoZGVmYXVsdDogMTAwMDApXG4gKiBAdGhyb3dzICAgICAgICBBIHtAbGluayBEeW5hdHJhY2VFcnJvcn0gaWYgdGhlIFJVTSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGUgd2l0aGluIHRoZSB0aW1lb3V0LCBvciB0aGUgbmFtZXNwYWNlIGlzXG4gKiAgICAgICAgICAgICAgICBvdmVycmlkZGVuIHdpdGggYW4gaW5jb21wYXRpYmxlIG9iamVjdFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZFNlc3Npb25Qcm9wZXJ0eUV2ZW50KGZpZWxkczogQXBpQ3JlYXRlZFNlc3Npb25Qcm9wZXJ0aWVzRXZlbnQsIHRpbWVvdXQ6IG51bWJlciA9IDEwXzAwMCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGR5bmF0cmFjZSA9IGF3YWl0IHdhaXRGb3JBZ2VudCh0aW1lb3V0KTtcbiAgICBkeW5hdHJhY2Uuc2VuZFNlc3Npb25Qcm9wZXJ0eUV2ZW50KGZpZWxkcyk7XG59XG5cbi8qKlxuICogQXN5bmMgd3JhcHBlciBmb3Ige0BsaW5rIGR5bmF0cmFjZS5zZW5kRXhjZXB0aW9uRXZlbnR9LlxuICogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBpZiB0aGUgRXJyb3IgbW9kdWxlIGlzIGVuYWJsZWRcbiAqXG4gKiBAcGFyYW0gZXJyb3IgICBNdXN0IGJlIGEgdmFsaWQgaW5zdGFuY2Ugb2YgdGhlIEVycm9yIGNsYXNzLiBJZiBhbiBpbnZhbGlkIHZhbHVlIGlzIHByb3ZpZGVkLCB0aGUgZXJyb3Igd2lsbCBub3QgYmUgcHJvY2Vzc2VkIG9yIHNlbnQuXG4gKiBAcGFyYW0gZmllbGRzICBPcHRpb25hbDogTXVzdCBiZSBhIHZhbGlkIEpTT04gb2JqZWN0IGFuZCBjYW5ub3QgY29udGFpbiBmdW5jdGlvbnMsIHVuZGVmaW5lZCwgSW5maW5pdHkgYW5kIE5hTiBhc1xuICogICAgICAgICAgICAgICAgdmFsdWVzLCBvdGhlcndpc2UgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gVGhlIGBmaWVsZHNgIG5lZWQgdG8gYmUgc2VyaWFsaXphYmxlXG4gKiAgICAgICAgICAgICAgICB1c2luZyBKU09OLnN0cmluZ2lmeS4gVGhlIHJlc3VsdGluZyBldmVudCB3aWxsIGNvbnRhaW4gdGhlIHByb3ZpZGVkIGBmaWVsZHNgLCBhbmQgaXNcbiAqICAgICAgICAgICAgICAgIG1vZGlmaWVkIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzLCB0aHVzIGFsc28gZW1wdHkgb2JqZWN0cyBhcmUgdmFsaWQuIE9ubHkgcHJvcGVydGllc1xuICogICAgICAgICAgICAgICAgcHJlZml4ZWQgd2l0aCBgZXZlbnRfcHJvcGVydGllcy5gLCB0aGUgYGR1cmF0aW9uYCBwcm9wZXJ0eSBhbmQgdGhlIGBzdGFydF90aW1lYCBwcm9wZXJ0eSBhcmVcbiAqICAgICAgICAgICAgICAgIGFsbG93ZWQuIFN0cmluZyBwcm9wZXJ0aWVzIGFyZSBsaW1pdGVkIHRvIDUwMDAgY2hhcmFjdGVycywgZXhjZWVkaW5nIGNoYXJhY3RlcnMgYXJlIGN1dCBvZmYuXG4gKiAgICAgICAgICAgICAgICBBbGwgZXZlbnQgcHJvcGVydHkga2V5cyBtdXN0IGNvbnRhaW4gb25seSBhbHBoYWJldGljIGNoYXJhY3RlcnMsIG51bWJlcnMsXG4gKiAgICAgICAgICAgICAgICB1bmRlcnNjb3JlcyBvciBkb3RzLiBFYWNoIGRvdCBtdXN0IGJlIGZvbGxvd2VkIGJ5IGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyLiBFYWNoIHVuZGVyc2NvcmVcbiAqICAgICAgICAgICAgICAgIG11c3QgYmUgZm9sbG93ZWQgYnkgYW4gYWxwaGFiZXRpYyBjaGFyYWN0ZXIgb3IgbnVtYmVyLlxuICogQHBhcmFtIHRpbWVvdXQgVGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIFJVTSBKYXZhU2NyaXB0IHRvIGJlIGF2YWlsYWJsZSAoZGVmYXVsdDogMTAwMDApXG4gKiBAdGhyb3dzICAgICAgICBBIHtAbGluayBEeW5hdHJhY2VFcnJvcn0gaWYgdGhlIFJVTSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGUgd2l0aGluIHRoZSB0aW1lb3V0LCBvciB0aGUgbmFtZXNwYWNlIGlzXG4gKiAgICAgICAgICAgICAgICBvdmVycmlkZGVuIHdpdGggYW4gaW5jb21wYXRpYmxlIG9iamVjdFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc2VuZEV4Y2VwdGlvbkV2ZW50KGVycm9yOiBFcnJvciwgZmllbGRzPzogQXBpQ3JlYXRlZEV2ZW50UHJvcGVydGllc0V2ZW50LCB0aW1lb3V0OiBudW1iZXIgPSAxMF8wMDApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZW5kRXhjZXB0aW9uRXZlbnRHdWFyZGVkID0gYXdhaXQgd2FpdEZvclNlbmRFeGNlcHRpb25FdmVudCh0aW1lb3V0KTtcbiAgICBzZW5kRXhjZXB0aW9uRXZlbnRHdWFyZGVkKGVycm9yLCBmaWVsZHMpO1xufVxuIl19
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { UserActionStartOptions, UserActionTracker } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Async wrapper for {@link dynatrace.userActions.create}.
|
|
4
|
+
*
|
|
5
|
+
* @param options An optional options object to configure the user action.
|
|
6
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript and user actions module to be available (default: 10000)
|
|
7
|
+
* @returns A promise that resolves to a `UserActionTracker` object.
|
|
8
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
9
|
+
*/
|
|
10
|
+
export declare function create(options?: UserActionStartOptions, timeout?: number): Promise<UserActionTracker>;
|
|
11
|
+
/**
|
|
12
|
+
* Async wrapper for {@link dynatrace.userActions.subscribe}.
|
|
13
|
+
*
|
|
14
|
+
* @param subscriber A callback function that is called whenever Dynatrace creates a new user action.
|
|
15
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript and user actions module to be available (default: 10000)
|
|
16
|
+
* @returns A promise that resolves to an unsubscriber function.
|
|
17
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
18
|
+
*/
|
|
19
|
+
export declare function subscribe(subscriber: (userAction: UserActionTracker) => void, timeout?: number): Promise<() => void>;
|
|
20
|
+
/**
|
|
21
|
+
* Async wrapper for {@link dynatrace.userActions.setAutomaticDetection}.
|
|
22
|
+
*
|
|
23
|
+
* @param automaticDetection If false, disables automatic user action detection, otherwise enables it.
|
|
24
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript and user actions module to be available (default: 10000)
|
|
25
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
26
|
+
*/
|
|
27
|
+
export declare function setAutomaticDetection(automaticDetection: boolean, timeout?: number): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Async wrapper for {@link dynatrace.userActions.current}.
|
|
30
|
+
*
|
|
31
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript and user actions module to be available (default: 10000)
|
|
32
|
+
* @returns A promise that resolves to the current user action, or `undefined` if no user action is in progress.
|
|
33
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
34
|
+
*/
|
|
35
|
+
export declare function getCurrent(timeout?: number): Promise<UserActionTracker | undefined>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { waitForUserActions } from "./wait-for-user-actions.js";
|
|
2
|
+
/**
|
|
3
|
+
* Async wrapper for {@link dynatrace.userActions.create}.
|
|
4
|
+
*
|
|
5
|
+
* @param options An optional options object to configure the user action.
|
|
6
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript and user actions module to be available (default: 10000)
|
|
7
|
+
* @returns A promise that resolves to a `UserActionTracker` object.
|
|
8
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
9
|
+
*/
|
|
10
|
+
export async function create(options, timeout = 10_000) {
|
|
11
|
+
const userActions = await waitForUserActions(timeout);
|
|
12
|
+
return userActions.create(options);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Async wrapper for {@link dynatrace.userActions.subscribe}.
|
|
16
|
+
*
|
|
17
|
+
* @param subscriber A callback function that is called whenever Dynatrace creates a new user action.
|
|
18
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript and user actions module to be available (default: 10000)
|
|
19
|
+
* @returns A promise that resolves to an unsubscriber function.
|
|
20
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
21
|
+
*/
|
|
22
|
+
export async function subscribe(subscriber, timeout = 10_000) {
|
|
23
|
+
const userActions = await waitForUserActions(timeout);
|
|
24
|
+
return userActions.subscribe(subscriber);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Async wrapper for {@link dynatrace.userActions.setAutomaticDetection}.
|
|
28
|
+
*
|
|
29
|
+
* @param automaticDetection If false, disables automatic user action detection, otherwise enables it.
|
|
30
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript and user actions module to be available (default: 10000)
|
|
31
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
32
|
+
*/
|
|
33
|
+
export async function setAutomaticDetection(automaticDetection, timeout = 10_000) {
|
|
34
|
+
const userActions = await waitForUserActions(timeout);
|
|
35
|
+
userActions.setAutomaticDetection(automaticDetection);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Async wrapper for {@link dynatrace.userActions.current}.
|
|
39
|
+
*
|
|
40
|
+
* @param timeout Timeout in milliseconds to wait for the RUM JavaScript and user actions module to be available (default: 10000)
|
|
41
|
+
* @returns A promise that resolves to the current user action, or `undefined` if no user action is in progress.
|
|
42
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
43
|
+
*/
|
|
44
|
+
export async function getCurrent(timeout = 10_000) {
|
|
45
|
+
const userActions = await waitForUserActions(timeout);
|
|
46
|
+
return userActions.current;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc291cmNlL2FwaS9wcm9taXNlcy91c2VyLWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFaEU7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsTUFBTSxDQUFDLE9BQWdDLEVBQUUsVUFBa0IsTUFBTTtJQUNuRixNQUFNLFdBQVcsR0FBRyxNQUFNLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUFDLFVBQW1ELEVBQUUsVUFBa0IsTUFBTTtJQUN6RyxNQUFNLFdBQVcsR0FBRyxNQUFNLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RELE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxxQkFBcUIsQ0FBQyxrQkFBMkIsRUFBRSxVQUFrQixNQUFNO0lBQzdGLE1BQU0sV0FBVyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsV0FBVyxDQUFDLHFCQUFxQixDQUFDLGtCQUFrQixDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsVUFBVSxDQUFDLFVBQWtCLE1BQU07SUFDckQsTUFBTSxXQUFXLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN0RCxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgICBVc2VyQWN0aW9uU3RhcnRPcHRpb25zLFxuICAgIFVzZXJBY3Rpb25UcmFja2VyXG59IGZyb20gXCIuLi8uLi90eXBlcy9pbmRleC5qc1wiO1xuaW1wb3J0IHsgd2FpdEZvclVzZXJBY3Rpb25zIH0gZnJvbSBcIi4vd2FpdC1mb3ItdXNlci1hY3Rpb25zLmpzXCI7XG5cbi8qKlxuICogQXN5bmMgd3JhcHBlciBmb3Ige0BsaW5rIGR5bmF0cmFjZS51c2VyQWN0aW9ucy5jcmVhdGV9LlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIEFuIG9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHRvIGNvbmZpZ3VyZSB0aGUgdXNlciBhY3Rpb24uXG4gKiBAcGFyYW0gdGltZW91dCBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgUlVNIEphdmFTY3JpcHQgYW5kIHVzZXIgYWN0aW9ucyBtb2R1bGUgdG8gYmUgYXZhaWxhYmxlIChkZWZhdWx0OiAxMDAwMClcbiAqIEByZXR1cm5zICAgICAgIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGEgYFVzZXJBY3Rpb25UcmFja2VyYCBvYmplY3QuXG4gKiBAdGhyb3dzICAgICAgICBBIHtAbGluayBEeW5hdHJhY2VFcnJvcn0gaWYgdGhlIFJVTSBKYXZhU2NyaXB0IG9yIHVzZXIgYWN0aW9ucyBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhlIHRpbWVvdXRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZShvcHRpb25zPzogVXNlckFjdGlvblN0YXJ0T3B0aW9ucywgdGltZW91dDogbnVtYmVyID0gMTBfMDAwKTogUHJvbWlzZTxVc2VyQWN0aW9uVHJhY2tlcj4ge1xuICAgIGNvbnN0IHVzZXJBY3Rpb25zID0gYXdhaXQgd2FpdEZvclVzZXJBY3Rpb25zKHRpbWVvdXQpO1xuICAgIHJldHVybiB1c2VyQWN0aW9ucy5jcmVhdGUob3B0aW9ucyk7XG59XG5cbi8qKlxuICogQXN5bmMgd3JhcHBlciBmb3Ige0BsaW5rIGR5bmF0cmFjZS51c2VyQWN0aW9ucy5zdWJzY3JpYmV9LlxuICpcbiAqIEBwYXJhbSBzdWJzY3JpYmVyIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgd2hlbmV2ZXIgRHluYXRyYWNlIGNyZWF0ZXMgYSBuZXcgdXNlciBhY3Rpb24uXG4gKiBAcGFyYW0gdGltZW91dCAgICBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgUlVNIEphdmFTY3JpcHQgYW5kIHVzZXIgYWN0aW9ucyBtb2R1bGUgdG8gYmUgYXZhaWxhYmxlIChkZWZhdWx0OiAxMDAwMClcbiAqIEByZXR1cm5zICAgICAgICAgIEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIGFuIHVuc3Vic2NyaWJlciBmdW5jdGlvbi5cbiAqIEB0aHJvd3MgICAgICAgICAgIEEge0BsaW5rIER5bmF0cmFjZUVycm9yfSBpZiB0aGUgUlVNIEphdmFTY3JpcHQgb3IgdXNlciBhY3Rpb25zIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aGUgdGltZW91dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gc3Vic2NyaWJlKHN1YnNjcmliZXI6ICh1c2VyQWN0aW9uOiBVc2VyQWN0aW9uVHJhY2tlcikgPT4gdm9pZCwgdGltZW91dDogbnVtYmVyID0gMTBfMDAwKTogUHJvbWlzZTwoKSA9PiB2b2lkPiB7XG4gICAgY29uc3QgdXNlckFjdGlvbnMgPSBhd2FpdCB3YWl0Rm9yVXNlckFjdGlvbnModGltZW91dCk7XG4gICAgcmV0dXJuIHVzZXJBY3Rpb25zLnN1YnNjcmliZShzdWJzY3JpYmVyKTtcbn1cblxuLyoqXG4gKiBBc3luYyB3cmFwcGVyIGZvciB7QGxpbmsgZHluYXRyYWNlLnVzZXJBY3Rpb25zLnNldEF1dG9tYXRpY0RldGVjdGlvbn0uXG4gKlxuICogQHBhcmFtIGF1dG9tYXRpY0RldGVjdGlvbiBJZiBmYWxzZSwgZGlzYWJsZXMgYXV0b21hdGljIHVzZXIgYWN0aW9uIGRldGVjdGlvbiwgb3RoZXJ3aXNlIGVuYWJsZXMgaXQuXG4gKiBAcGFyYW0gdGltZW91dCAgICAgICAgICAgIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSBSVU0gSmF2YVNjcmlwdCBhbmQgdXNlciBhY3Rpb25zIG1vZHVsZSB0byBiZSBhdmFpbGFibGUgKGRlZmF1bHQ6IDEwMDAwKVxuICogQHRocm93cyAgICAgICAgICAgICAgICAgICBBIHtAbGluayBEeW5hdHJhY2VFcnJvcn0gaWYgdGhlIFJVTSBKYXZhU2NyaXB0IG9yIHVzZXIgYWN0aW9ucyBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhlIHRpbWVvdXRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNldEF1dG9tYXRpY0RldGVjdGlvbihhdXRvbWF0aWNEZXRlY3Rpb246IGJvb2xlYW4sIHRpbWVvdXQ6IG51bWJlciA9IDEwXzAwMCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVzZXJBY3Rpb25zID0gYXdhaXQgd2FpdEZvclVzZXJBY3Rpb25zKHRpbWVvdXQpO1xuICAgIHVzZXJBY3Rpb25zLnNldEF1dG9tYXRpY0RldGVjdGlvbihhdXRvbWF0aWNEZXRlY3Rpb24pO1xufVxuXG4vKipcbiAqIEFzeW5jIHdyYXBwZXIgZm9yIHtAbGluayBkeW5hdHJhY2UudXNlckFjdGlvbnMuY3VycmVudH0uXG4gKlxuICogQHBhcmFtIHRpbWVvdXQgVGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIFJVTSBKYXZhU2NyaXB0IGFuZCB1c2VyIGFjdGlvbnMgbW9kdWxlIHRvIGJlIGF2YWlsYWJsZSAoZGVmYXVsdDogMTAwMDApXG4gKiBAcmV0dXJucyAgICAgICBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgY3VycmVudCB1c2VyIGFjdGlvbiwgb3IgYHVuZGVmaW5lZGAgaWYgbm8gdXNlciBhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MuXG4gKiBAdGhyb3dzICAgICAgICBBIHtAbGluayBEeW5hdHJhY2VFcnJvcn0gaWYgdGhlIFJVTSBKYXZhU2NyaXB0IG9yIHVzZXIgYWN0aW9ucyBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhlIHRpbWVvdXRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnQodGltZW91dDogbnVtYmVyID0gMTBfMDAwKTogUHJvbWlzZTxVc2VyQWN0aW9uVHJhY2tlciB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IHVzZXJBY3Rpb25zID0gYXdhaXQgd2FpdEZvclVzZXJBY3Rpb25zKHRpbWVvdXQpO1xuICAgIHJldHVybiB1c2VyQWN0aW9ucy5jdXJyZW50O1xufVxuIl19
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { log, warn } from "../logging.js";
|
|
2
|
+
import { DynatraceError } from "../dynatrace-error.js";
|
|
3
|
+
import { getGlobal } from "../global-adapter.js";
|
|
4
|
+
import { isValidAgent } from "../type-guards/is-valid-agent.js";
|
|
5
|
+
const INVALID_ASSIGNMENT_MESSAGE = "An invalid object was assigned to the `dynatrace` namespace. This can lead to unexpected behavior when using the API. The assigned object: ";
|
|
6
|
+
const setupPropertyListenerOnce = once(setupPropertyListener);
|
|
7
|
+
const waitingPromises = new Map();
|
|
8
|
+
let nextPromiseId = 0;
|
|
9
|
+
let currentAgent = void 0;
|
|
10
|
+
function setupPropertyListener() {
|
|
11
|
+
Object.defineProperty(globalThis, "dynatrace", {
|
|
12
|
+
set: (value) => {
|
|
13
|
+
if (isValidAgent(value)) {
|
|
14
|
+
log("RUM JavaScript available, continuing API execution.");
|
|
15
|
+
currentAgent = value;
|
|
16
|
+
resolveAllWaitingPromises(value);
|
|
17
|
+
}
|
|
18
|
+
else if (value) {
|
|
19
|
+
rejectAllWaitingPromises(new DynatraceError(INVALID_ASSIGNMENT_MESSAGE, value));
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
get: () => {
|
|
23
|
+
return currentAgent;
|
|
24
|
+
},
|
|
25
|
+
configurable: true
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
function resolveAllWaitingPromises(agent) {
|
|
29
|
+
waitingPromises.forEach((promise) => {
|
|
30
|
+
clearTimeout(promise.timeoutId);
|
|
31
|
+
promise.resolve(agent);
|
|
32
|
+
});
|
|
33
|
+
waitingPromises.clear();
|
|
34
|
+
}
|
|
35
|
+
function rejectAllWaitingPromises(error) {
|
|
36
|
+
waitingPromises.forEach((promise) => {
|
|
37
|
+
clearTimeout(promise.timeoutId);
|
|
38
|
+
promise.reject(error);
|
|
39
|
+
});
|
|
40
|
+
waitingPromises.clear();
|
|
41
|
+
}
|
|
42
|
+
function removeWaitingPromise(promiseId) {
|
|
43
|
+
waitingPromises.delete(promiseId);
|
|
44
|
+
}
|
|
45
|
+
export function waitForAgent(timeout = 10_000) {
|
|
46
|
+
const globalDt = getGlobal("dynatrace");
|
|
47
|
+
if (isValidAgent(globalDt)) {
|
|
48
|
+
return Promise.resolve(globalDt);
|
|
49
|
+
}
|
|
50
|
+
else if (globalDt) {
|
|
51
|
+
return Promise.reject(new DynatraceError(INVALID_ASSIGNMENT_MESSAGE, globalDt));
|
|
52
|
+
}
|
|
53
|
+
setupPropertyListenerOnce();
|
|
54
|
+
warn("RUM JavaScript is not available yet. API execution halted until it is.");
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
const promiseId = nextPromiseId++;
|
|
57
|
+
const timeoutId = setTimeout(() => {
|
|
58
|
+
removeWaitingPromise(promiseId);
|
|
59
|
+
reject(new DynatraceError("Timeout waiting for RUM JavaScript."));
|
|
60
|
+
}, timeout);
|
|
61
|
+
waitingPromises.set(promiseId, { resolve, reject, timeoutId });
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* @param fn the function to be only called once
|
|
66
|
+
* @returns the once wrapper function that calls either the given function the first time or does nothing otherwise
|
|
67
|
+
*/
|
|
68
|
+
function once(fn) {
|
|
69
|
+
let callable = function (...args) {
|
|
70
|
+
callable = () => void 0;
|
|
71
|
+
return fn.apply(this, args);
|
|
72
|
+
};
|
|
73
|
+
return function (...args) {
|
|
74
|
+
return callable.apply(this, args);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1mb3ItYWdlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYXBpL3Byb21pc2VzL3dhaXQtZm9yLWFnZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDSCxHQUFHLEVBQ0gsSUFBSSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBUWhFLE1BQU0sMEJBQTBCLEdBQUcsNklBQTZJLENBQUM7QUFFakwsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU5RCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBMEIsQ0FBQztBQUMxRCxJQUFJLGFBQWEsR0FBVyxDQUFDLENBQUM7QUFDOUIsSUFBSSxZQUFZLEdBQTZCLEtBQUssQ0FBQyxDQUFDO0FBRXBELFNBQVMscUJBQXFCO0lBQzFCLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRTtRQUMzQyxHQUFHLEVBQUUsQ0FBQyxLQUFjLEVBQUUsRUFBRTtZQUNwQixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN0QixHQUFHLENBQUMscURBQXFELENBQUMsQ0FBQztnQkFDM0QsWUFBWSxHQUFHLEtBQUssQ0FBQztnQkFDckIseUJBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsQ0FBQztpQkFBTSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNmLHdCQUF3QixDQUFDLElBQUksY0FBYyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDcEYsQ0FBQztRQUNMLENBQUM7UUFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFO1lBQ04sT0FBTyxZQUFZLENBQUM7UUFDeEIsQ0FBQztRQUNELFlBQVksRUFBRSxJQUFJO0tBQ3JCLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxTQUFTLHlCQUF5QixDQUFDLEtBQW1CO0lBQ2xELGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNoQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDSCxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDNUIsQ0FBQztBQUVELFNBQVMsd0JBQXdCLENBQUMsS0FBcUI7SUFDbkQsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQ2hDLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUNILGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM1QixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxTQUFpQjtJQUMzQyxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLFVBQWtCLE1BQU07SUFDakQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXhDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7U0FBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLGNBQWMsQ0FBQywwQkFBMEIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCx5QkFBeUIsRUFBRSxDQUFDO0lBRTVCLElBQUksQ0FBQyx3RUFBd0UsQ0FBQyxDQUFDO0lBRS9FLE9BQU8sSUFBSSxPQUFPLENBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDakQsTUFBTSxTQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFFbEMsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUM5QixvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxNQUFNLENBQUMsSUFBSSxjQUFjLENBQUMscUNBQXFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVaLGVBQWUsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsSUFBSSxDQUNULEVBQTZCO0lBRTdCLElBQUksUUFBUSxHQUFHLFVBQW1CLEdBQUcsSUFBTztRQUN4QyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoQyxDQUFDLENBQUM7SUFFRixPQUFPLFVBQW1CLEdBQUcsSUFBTztRQUNoQyxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IGR5bmF0cmFjZSBhcyBEdEFwaSB9IGZyb20gXCIuLi8uLi90eXBlcy9hcGkvZHluYXRyYWNlLWFwaS10eXBlcy5qc1wiO1xuaW1wb3J0IHtcbiAgICBsb2csXG4gICAgd2FyblxufSBmcm9tIFwiLi4vbG9nZ2luZy5qc1wiO1xuaW1wb3J0IHsgRHluYXRyYWNlRXJyb3IgfSBmcm9tIFwiLi4vZHluYXRyYWNlLWVycm9yLmpzXCI7XG5pbXBvcnQgeyBnZXRHbG9iYWwgfSBmcm9tIFwiLi4vZ2xvYmFsLWFkYXB0ZXIuanNcIjtcbmltcG9ydCB7IGlzVmFsaWRBZ2VudCB9IGZyb20gXCIuLi90eXBlLWd1YXJkcy9pcy12YWxpZC1hZ2VudC5qc1wiO1xuXG5pbnRlcmZhY2UgV2FpdGluZ1Byb21pc2Uge1xuICAgIHJlc29sdmU6IChhZ2VudDogdHlwZW9mIER0QXBpKSA9PiB2b2lkO1xuICAgIHJlamVjdDogKGVycm9yOiBEeW5hdHJhY2VFcnJvcikgPT4gdm9pZDtcbiAgICB0aW1lb3V0SWQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+O1xufVxuXG5jb25zdCBJTlZBTElEX0FTU0lHTk1FTlRfTUVTU0FHRSA9IFwiQW4gaW52YWxpZCBvYmplY3Qgd2FzIGFzc2lnbmVkIHRvIHRoZSBgZHluYXRyYWNlYCBuYW1lc3BhY2UuIFRoaXMgY2FuIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvciB3aGVuIHVzaW5nIHRoZSBBUEkuIFRoZSBhc3NpZ25lZCBvYmplY3Q6IFwiO1xuXG5jb25zdCBzZXR1cFByb3BlcnR5TGlzdGVuZXJPbmNlID0gb25jZShzZXR1cFByb3BlcnR5TGlzdGVuZXIpO1xuXG5jb25zdCB3YWl0aW5nUHJvbWlzZXMgPSBuZXcgTWFwPG51bWJlciwgV2FpdGluZ1Byb21pc2U+KCk7XG5sZXQgbmV4dFByb21pc2VJZDogbnVtYmVyID0gMDtcbmxldCBjdXJyZW50QWdlbnQ6IHR5cGVvZiBEdEFwaSB8IHVuZGVmaW5lZCA9IHZvaWQgMDtcblxuZnVuY3Rpb24gc2V0dXBQcm9wZXJ0eUxpc3RlbmVyKCk6IHZvaWQge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShnbG9iYWxUaGlzLCBcImR5bmF0cmFjZVwiLCB7XG4gICAgICAgIHNldDogKHZhbHVlOiB1bmtub3duKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNWYWxpZEFnZW50KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxvZyhcIlJVTSBKYXZhU2NyaXB0IGF2YWlsYWJsZSwgY29udGludWluZyBBUEkgZXhlY3V0aW9uLlwiKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50QWdlbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICByZXNvbHZlQWxsV2FpdGluZ1Byb21pc2VzKHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICByZWplY3RBbGxXYWl0aW5nUHJvbWlzZXMobmV3IER5bmF0cmFjZUVycm9yKElOVkFMSURfQVNTSUdOTUVOVF9NRVNTQUdFLCB2YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBnZXQ6ICgpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50QWdlbnQ7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQWxsV2FpdGluZ1Byb21pc2VzKGFnZW50OiB0eXBlb2YgRHRBcGkpOiB2b2lkIHtcbiAgICB3YWl0aW5nUHJvbWlzZXMuZm9yRWFjaCgocHJvbWlzZSkgPT4ge1xuICAgICAgICBjbGVhclRpbWVvdXQocHJvbWlzZS50aW1lb3V0SWQpO1xuICAgICAgICBwcm9taXNlLnJlc29sdmUoYWdlbnQpO1xuICAgIH0pO1xuICAgIHdhaXRpbmdQcm9taXNlcy5jbGVhcigpO1xufVxuXG5mdW5jdGlvbiByZWplY3RBbGxXYWl0aW5nUHJvbWlzZXMoZXJyb3I6IER5bmF0cmFjZUVycm9yKTogdm9pZCB7XG4gICAgd2FpdGluZ1Byb21pc2VzLmZvckVhY2goKHByb21pc2UpID0+IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHByb21pc2UudGltZW91dElkKTtcbiAgICAgICAgcHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH0pO1xuICAgIHdhaXRpbmdQcm9taXNlcy5jbGVhcigpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVXYWl0aW5nUHJvbWlzZShwcm9taXNlSWQ6IG51bWJlcik6IHZvaWQge1xuICAgIHdhaXRpbmdQcm9taXNlcy5kZWxldGUocHJvbWlzZUlkKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdhaXRGb3JBZ2VudCh0aW1lb3V0OiBudW1iZXIgPSAxMF8wMDApOiBQcm9taXNlPHR5cGVvZiBEdEFwaT4ge1xuICAgIGNvbnN0IGdsb2JhbER0ID0gZ2V0R2xvYmFsKFwiZHluYXRyYWNlXCIpO1xuXG4gICAgaWYgKGlzVmFsaWRBZ2VudChnbG9iYWxEdCkpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShnbG9iYWxEdCk7XG4gICAgfSBlbHNlIGlmIChnbG9iYWxEdCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IER5bmF0cmFjZUVycm9yKElOVkFMSURfQVNTSUdOTUVOVF9NRVNTQUdFLCBnbG9iYWxEdCkpO1xuICAgIH1cblxuICAgIHNldHVwUHJvcGVydHlMaXN0ZW5lck9uY2UoKTtcblxuICAgIHdhcm4oXCJSVU0gSmF2YVNjcmlwdCBpcyBub3QgYXZhaWxhYmxlIHlldC4gQVBJIGV4ZWN1dGlvbiBoYWx0ZWQgdW50aWwgaXQgaXMuXCIpO1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHR5cGVvZiBEdEFwaT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBwcm9taXNlSWQgPSBuZXh0UHJvbWlzZUlkKys7XG5cbiAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICByZW1vdmVXYWl0aW5nUHJvbWlzZShwcm9taXNlSWQpO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBEeW5hdHJhY2VFcnJvcihcIlRpbWVvdXQgd2FpdGluZyBmb3IgUlVNIEphdmFTY3JpcHQuXCIpKTtcbiAgICAgICAgfSwgdGltZW91dCk7XG5cbiAgICAgICAgd2FpdGluZ1Byb21pc2VzLnNldChwcm9taXNlSWQsIHsgcmVzb2x2ZSwgcmVqZWN0LCB0aW1lb3V0SWQgfSk7XG4gICAgfSk7XG59XG5cbi8qKlxuICogQHBhcmFtIGZuIHRoZSBmdW5jdGlvbiB0byBiZSBvbmx5IGNhbGxlZCBvbmNlXG4gKiBAcmV0dXJucyAgdGhlIG9uY2Ugd3JhcHBlciBmdW5jdGlvbiB0aGF0IGNhbGxzIGVpdGhlciB0aGUgZ2l2ZW4gZnVuY3Rpb24gdGhlIGZpcnN0IHRpbWUgb3IgZG9lcyBub3RoaW5nIG90aGVyd2lzZVxuICovXG5mdW5jdGlvbiBvbmNlPEEgZXh0ZW5kcyBhbnlbXSwgUiwgVD4oXG4gICAgZm46ICh0aGlzOiBULCAuLi5hcmc6IEEpID0+IFJcbik6ICgodGhpczogVCwgLi4uYXJnOiBBKSA9PiBSIHwgdW5kZWZpbmVkKSB7XG4gICAgbGV0IGNhbGxhYmxlID0gZnVuY3Rpb24gKHRoaXM6IFQsIC4uLmFyZ3M6IEEpOiBSIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY2FsbGFibGUgPSAoKSA9PiB2b2lkIDA7XG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0aGlzOiBULCAuLi5hcmdzOiBBKTogUiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBjYWxsYWJsZS5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9O1xufVxuIl19
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { sendExceptionEvent } from "../index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Waits for the RUM JavaScript and error module to become available.
|
|
4
|
+
*
|
|
5
|
+
* @param timeout Timeout in milliseconds to wait for the error module to be available (default: 10000)
|
|
6
|
+
* @returns A promise that resolves to the error module
|
|
7
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or error module is not available within the timeout
|
|
8
|
+
*/
|
|
9
|
+
export declare function waitForSendExceptionEvent(timeout?: number): Promise<typeof sendExceptionEvent>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DynatraceError } from "../dynatrace-error.js";
|
|
2
|
+
import { waitForAgent } from "./wait-for-agent.js";
|
|
3
|
+
/**
|
|
4
|
+
* Waits for the RUM JavaScript and error module to become available.
|
|
5
|
+
*
|
|
6
|
+
* @param timeout Timeout in milliseconds to wait for the error module to be available (default: 10000)
|
|
7
|
+
* @returns A promise that resolves to the error module
|
|
8
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or error module is not available within the timeout
|
|
9
|
+
*/
|
|
10
|
+
export async function waitForSendExceptionEvent(timeout = 10_000) {
|
|
11
|
+
const dynatrace = await waitForAgent(timeout);
|
|
12
|
+
if (dynatrace.sendExceptionEvent) {
|
|
13
|
+
return dynatrace.sendExceptionEvent;
|
|
14
|
+
}
|
|
15
|
+
// If not immediately available, it means the module is disabled
|
|
16
|
+
throw new DynatraceError("The `dynatrace.sendExceptionEvent` function is not available. Ensure the Error module is enabled in your RUM configuration.");
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1mb3Itc2VuZC1leGNlcHRpb24tZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zb3VyY2UvYXBpL3Byb21pc2VzL3dhaXQtZm9yLXNlbmQtZXhjZXB0aW9uLWV2ZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFbkQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSx5QkFBeUIsQ0FBQyxVQUFrQixNQUFNO0lBQ3BFLE1BQU0sU0FBUyxHQUFHLE1BQU0sWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlDLElBQUksU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDL0IsT0FBTyxTQUFTLENBQUMsa0JBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVELGdFQUFnRTtJQUNoRSxNQUFNLElBQUksY0FBYyxDQUFDLDZIQUE2SCxDQUFDLENBQUM7QUFDNUosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgc2VuZEV4Y2VwdGlvbkV2ZW50IH0gZnJvbSBcIi4uL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBEeW5hdHJhY2VFcnJvciB9IGZyb20gXCIuLi9keW5hdHJhY2UtZXJyb3IuanNcIjtcbmltcG9ydCB7IHdhaXRGb3JBZ2VudCB9IGZyb20gXCIuL3dhaXQtZm9yLWFnZW50LmpzXCI7XG5cbi8qKlxuICogV2FpdHMgZm9yIHRoZSBSVU0gSmF2YVNjcmlwdCBhbmQgZXJyb3IgbW9kdWxlIHRvIGJlY29tZSBhdmFpbGFibGUuXG4gKlxuICogQHBhcmFtIHRpbWVvdXQgVGltZW91dCBpbiBtaWxsaXNlY29uZHMgdG8gd2FpdCBmb3IgdGhlIGVycm9yIG1vZHVsZSB0byBiZSBhdmFpbGFibGUgKGRlZmF1bHQ6IDEwMDAwKVxuICogQHJldHVybnMgICAgICAgQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGVycm9yIG1vZHVsZVxuICogQHRocm93cyAgICAgICAgQSB7QGxpbmsgRHluYXRyYWNlRXJyb3J9IGlmIHRoZSBSVU0gSmF2YVNjcmlwdCBvciBlcnJvciBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSB3aXRoaW4gdGhlIHRpbWVvdXRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JTZW5kRXhjZXB0aW9uRXZlbnQodGltZW91dDogbnVtYmVyID0gMTBfMDAwKTogUHJvbWlzZTx0eXBlb2Ygc2VuZEV4Y2VwdGlvbkV2ZW50PiB7XG4gICAgY29uc3QgZHluYXRyYWNlID0gYXdhaXQgd2FpdEZvckFnZW50KHRpbWVvdXQpO1xuXG4gICAgaWYgKGR5bmF0cmFjZS5zZW5kRXhjZXB0aW9uRXZlbnQpIHtcbiAgICAgICAgcmV0dXJuIGR5bmF0cmFjZS5zZW5kRXhjZXB0aW9uRXZlbnQ7XG4gICAgfVxuXG4gICAgLy8gSWYgbm90IGltbWVkaWF0ZWx5IGF2YWlsYWJsZSwgaXQgbWVhbnMgdGhlIG1vZHVsZSBpcyBkaXNhYmxlZFxuICAgIHRocm93IG5ldyBEeW5hdHJhY2VFcnJvcihcIlRoZSBgZHluYXRyYWNlLnNlbmRFeGNlcHRpb25FdmVudGAgZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4gRW5zdXJlIHRoZSBFcnJvciBtb2R1bGUgaXMgZW5hYmxlZCBpbiB5b3VyIFJVTSBjb25maWd1cmF0aW9uLlwiKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { UserActions } from "../../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Waits for the RUM JavaScript and user actions module to become available.
|
|
4
|
+
*
|
|
5
|
+
* @param timeout Timeout in milliseconds to wait for the user actions module to be available (default: 10000)
|
|
6
|
+
* @returns A promise that resolves to the user actions module
|
|
7
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
8
|
+
*/
|
|
9
|
+
export declare function waitForUserActions(timeout?: number): Promise<UserActions>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DynatraceError } from "../dynatrace-error.js";
|
|
2
|
+
import { waitForAgent } from "./wait-for-agent.js";
|
|
3
|
+
/**
|
|
4
|
+
* Waits for the RUM JavaScript and user actions module to become available.
|
|
5
|
+
*
|
|
6
|
+
* @param timeout Timeout in milliseconds to wait for the user actions module to be available (default: 10000)
|
|
7
|
+
* @returns A promise that resolves to the user actions module
|
|
8
|
+
* @throws A {@link DynatraceError} if the RUM JavaScript or user actions module is not available within the timeout
|
|
9
|
+
*/
|
|
10
|
+
export async function waitForUserActions(timeout = 10_000) {
|
|
11
|
+
const dynatrace = await waitForAgent(timeout);
|
|
12
|
+
if (dynatrace.userActions) {
|
|
13
|
+
return dynatrace.userActions;
|
|
14
|
+
}
|
|
15
|
+
// If not immediately available, it means the module is disabled
|
|
16
|
+
throw new DynatraceError("The `dynatrace.userActions` module is not available. Ensure the User Actions module is enabled in your RUM configuration.");
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FpdC1mb3ItdXNlci1hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc291cmNlL2FwaS9wcm9taXNlcy93YWl0LWZvci11c2VyLWFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVuRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUFDLFVBQWtCLE1BQU07SUFDN0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFOUMsSUFBSSxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEIsT0FBTyxTQUFTLENBQUMsV0FBVyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsTUFBTSxJQUFJLGNBQWMsQ0FBQywySEFBMkgsQ0FBQyxDQUFDO0FBQzFKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVzZXJBY3Rpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBEeW5hdHJhY2VFcnJvciB9IGZyb20gXCIuLi9keW5hdHJhY2UtZXJyb3IuanNcIjtcbmltcG9ydCB7IHdhaXRGb3JBZ2VudCB9IGZyb20gXCIuL3dhaXQtZm9yLWFnZW50LmpzXCI7XG5cbi8qKlxuICogV2FpdHMgZm9yIHRoZSBSVU0gSmF2YVNjcmlwdCBhbmQgdXNlciBhY3Rpb25zIG1vZHVsZSB0byBiZWNvbWUgYXZhaWxhYmxlLlxuICpcbiAqIEBwYXJhbSB0aW1lb3V0IFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIHRoZSB1c2VyIGFjdGlvbnMgbW9kdWxlIHRvIGJlIGF2YWlsYWJsZSAoZGVmYXVsdDogMTAwMDApXG4gKiBAcmV0dXJucyAgICAgICBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgdXNlciBhY3Rpb25zIG1vZHVsZVxuICogQHRocm93cyAgICAgICAgQSB7QGxpbmsgRHluYXRyYWNlRXJyb3J9IGlmIHRoZSBSVU0gSmF2YVNjcmlwdCBvciB1c2VyIGFjdGlvbnMgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUgd2l0aGluIHRoZSB0aW1lb3V0XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB3YWl0Rm9yVXNlckFjdGlvbnModGltZW91dDogbnVtYmVyID0gMTBfMDAwKTogUHJvbWlzZTxVc2VyQWN0aW9ucz4ge1xuICAgIGNvbnN0IGR5bmF0cmFjZSA9IGF3YWl0IHdhaXRGb3JBZ2VudCh0aW1lb3V0KTtcblxuICAgIGlmIChkeW5hdHJhY2UudXNlckFjdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGR5bmF0cmFjZS51c2VyQWN0aW9ucztcbiAgICB9XG5cbiAgICAvLyBJZiBub3QgaW1tZWRpYXRlbHkgYXZhaWxhYmxlLCBpdCBtZWFucyB0aGUgbW9kdWxlIGlzIGRpc2FibGVkXG4gICAgdGhyb3cgbmV3IER5bmF0cmFjZUVycm9yKFwiVGhlIGBkeW5hdHJhY2UudXNlckFjdGlvbnNgIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlLiBFbnN1cmUgdGhlIFVzZXIgQWN0aW9ucyBtb2R1bGUgaXMgZW5hYmxlZCBpbiB5b3VyIFJVTSBjb25maWd1cmF0aW9uLlwiKTtcbn1cbiJdfQ==
|