@wertzui/ngx-restworld-client 14.0.0 → 14.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/services/opentelemetry.service.mjs +80 -5
- package/fesm2022/wertzui-ngx-restworld-client.mjs +79 -4
- package/fesm2022/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/lib/services/opentelemetry.service.d.ts +6 -1
- package/lib/services/opentelemetry.service.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -8,10 +8,73 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
import * as i1 from "./settings.service";
|
|
9
9
|
export class OpenTelemetryService {
|
|
10
10
|
_settingsService;
|
|
11
|
+
_defaultInputConfigs = {
|
|
12
|
+
"@opentelemetry/instrumentation-xml-http-request": {
|
|
13
|
+
propagateTraceHeaderCorsUrls: /.*/,
|
|
14
|
+
applyCustomAttributesOnSpan: (span, xhr) => {
|
|
15
|
+
span.setAttribute("client.address", window.location.href);
|
|
16
|
+
span.setAttribute("client.port", window.location.port);
|
|
17
|
+
span.setAttribute("browser.language", navigator.language);
|
|
18
|
+
if (URL.canParse(xhr.responseURL)) {
|
|
19
|
+
const url = new URL(xhr.responseURL);
|
|
20
|
+
span.setAttribute("url.domain", url.hostname);
|
|
21
|
+
span.setAttribute("url.full", url.href);
|
|
22
|
+
span.setAttribute("url.path", url.pathname);
|
|
23
|
+
span.setAttribute("url.port", url.port);
|
|
24
|
+
span.setAttribute("url.scheme", url.protocol.replace(":", ""));
|
|
25
|
+
if (url.search)
|
|
26
|
+
span.setAttribute("url.query", url.search.replace("?", ""));
|
|
27
|
+
if ("name" in span && typeof span.name === "string") {
|
|
28
|
+
span.updateName(span.name + " " + (url.pathname.startsWith("/") ? url.pathname.substring(1) : url.pathname));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"@opentelemetry/instrumentation-fetch": {
|
|
34
|
+
propagateTraceHeaderCorsUrls: /.*/,
|
|
35
|
+
applyCustomAttributesOnSpan: (span, request) => {
|
|
36
|
+
span.setAttribute("client.address", window.location.href);
|
|
37
|
+
span.setAttribute("client.port", window.location.port);
|
|
38
|
+
span.setAttribute("browser.language", navigator.language);
|
|
39
|
+
if ("url" in request && typeof request.url === "string" && URL.canParse(request.url)) {
|
|
40
|
+
const url = new URL(request.url);
|
|
41
|
+
span.setAttribute("url.domain", url.hostname);
|
|
42
|
+
span.setAttribute("url.full", url.href);
|
|
43
|
+
span.setAttribute("url.path", url.pathname);
|
|
44
|
+
span.setAttribute("url.port", url.port);
|
|
45
|
+
span.setAttribute("url.scheme", url.protocol.replace(":", ""));
|
|
46
|
+
if (url.search)
|
|
47
|
+
span.setAttribute("url.query", url.search.replace("?", ""));
|
|
48
|
+
if ("name" in span && typeof span.name === "string") {
|
|
49
|
+
span.updateName(span.name + " " + (url.pathname.startsWith("/") ? url.pathname.substring(1) : url.pathname));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"@opentelemetry/instrumentation-user-interaction": {
|
|
55
|
+
enabled: false,
|
|
56
|
+
shouldPreventSpanCreation: (eventType, element, span) => {
|
|
57
|
+
const shouldCreate = this._lastLocation !== window.location.href ||
|
|
58
|
+
Date.now() - this._lastTime > 1000 ||
|
|
59
|
+
this._lastElement !== element ||
|
|
60
|
+
//(eventType === "click" && (element.tagName === "A" || element.tagName === "Button")) ||
|
|
61
|
+
(eventType === "submit");
|
|
62
|
+
if (shouldCreate) {
|
|
63
|
+
this._lastLocation = window.location.href;
|
|
64
|
+
this._lastTime = Date.now();
|
|
65
|
+
this._lastElement = element;
|
|
66
|
+
}
|
|
67
|
+
return !shouldCreate;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
_lastElement = null;
|
|
72
|
+
_lastTime = 0;
|
|
73
|
+
_lastLocation = null;
|
|
11
74
|
constructor(_settingsService) {
|
|
12
75
|
this._settingsService = _settingsService;
|
|
13
76
|
}
|
|
14
|
-
async initialize() {
|
|
77
|
+
async initialize(configureOptions) {
|
|
15
78
|
await this._settingsService.ensureInitialized();
|
|
16
79
|
const clientSettings = this._settingsService.settings;
|
|
17
80
|
if (!clientSettings)
|
|
@@ -35,8 +98,9 @@ export class OpenTelemetryService {
|
|
|
35
98
|
return [key, value];
|
|
36
99
|
}));
|
|
37
100
|
}
|
|
101
|
+
const traceExporterEndpoint = exporterEndpoint.endsWith("/") ? exporterEndpoint + "v1/traces" : exporterEndpoint + "/v1/traces";
|
|
38
102
|
const otlpExporterConfiguration = {
|
|
39
|
-
url:
|
|
103
|
+
url: traceExporterEndpoint,
|
|
40
104
|
headers: headersObj,
|
|
41
105
|
compression: "gzip",
|
|
42
106
|
};
|
|
@@ -56,11 +120,22 @@ export class OpenTelemetryService {
|
|
|
56
120
|
}
|
|
57
121
|
if (serviceName)
|
|
58
122
|
provider.resource.attributes['service.name'] = serviceName;
|
|
123
|
+
// apply given options
|
|
124
|
+
let config;
|
|
125
|
+
if (typeof configureOptions === 'function') {
|
|
126
|
+
config = configureOptions(this._defaultInputConfigs);
|
|
127
|
+
}
|
|
128
|
+
else if (typeof configureOptions === 'object') {
|
|
129
|
+
config = configureOptions;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
config = this._defaultInputConfigs;
|
|
133
|
+
}
|
|
59
134
|
// Registering instrumentations
|
|
60
135
|
registerInstrumentations({
|
|
61
136
|
instrumentations: [
|
|
62
|
-
getWebAutoInstrumentations()
|
|
63
|
-
]
|
|
137
|
+
getWebAutoInstrumentations(config),
|
|
138
|
+
]
|
|
64
139
|
});
|
|
65
140
|
}
|
|
66
141
|
static GetSampler(tracesSampler, tracesSamplerArg) {
|
|
@@ -92,4 +167,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
92
167
|
providedIn: "root"
|
|
93
168
|
}]
|
|
94
169
|
}], ctorParameters: () => [{ type: i1.SettingsService }] });
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnRlbGVtZXRyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9zZXJ2aWNlcy9vcGVudGVsZW1ldHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaE4sT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUNBQXlDLENBQUM7OztBQU01RSxNQUFNLE9BQU8sb0JBQW9CO0lBQ0Y7SUFBN0IsWUFBNkIsZ0JBQWlDO1FBQWpDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7SUFDOUQsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVoRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1FBQ3RELElBQUksQ0FBQyxjQUFjO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUVsRCxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNsRixNQUFNLGVBQWUsR0FBRyxjQUFjLENB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WUFDN0MsS0FBSyx1QkFBdUI7Z0JBQzFCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRSxLQUFLLHdCQUF3QjtnQkFDM0IsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEUsS0FBSywwQkFBMEI7Z0JBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQzFELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRjtnQkFDRSxPQUFPLElBQUksZUFBZSxFQUFFLENBQUM7U0FDaEM7SUFDSCxDQUFDO3VHQXZGVSxvQkFBb0I7MkdBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IHJlZ2lzdGVySW5zdHJ1bWVudGF0aW9ucyB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbic7XHJcbmltcG9ydCB7IEFsd2F5c09mZlNhbXBsZXIsIEFsd2F5c09uU2FtcGxlciwgQmF0Y2hTcGFuUHJvY2Vzc29yLCBDb25zb2xlU3BhbkV4cG9ydGVyLCBQYXJlbnRCYXNlZFNhbXBsZXIsIFNpbXBsZVNwYW5Qcm9jZXNzb3IsIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgV2ViVHJhY2VyUHJvdmlkZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9zZGstdHJhY2Utd2ViJztcclxuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4vc2V0dGluZ3Muc2VydmljZVwiO1xyXG5pbXBvcnQgeyBab25lQ29udGV4dE1hbmFnZXIgfSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvY29udGV4dC16b25lXCI7XHJcbmltcG9ydCB7IGdldFdlYkF1dG9JbnN0cnVtZW50YXRpb25zIH0gZnJvbSBcIkBvcGVudGVsZW1ldHJ5L2F1dG8taW5zdHJ1bWVudGF0aW9ucy13ZWJcIjtcclxuaW1wb3J0IHsgT1RMUFRyYWNlRXhwb3J0ZXIgfSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvZXhwb3J0ZXItdHJhY2Utb3RscC1odHRwXCI7XHJcbmltcG9ydCB7IENvbXByZXNzaW9uQWxnb3JpdGhtIH0gZnJvbSAnQG9wZW50ZWxlbWV0cnkvb3RscC1leHBvcnRlci1iYXNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgT3BlblRlbGVtZXRyeVNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3NldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0aWFsaXplKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLmVuc3VyZUluaXRpYWxpemVkKCk7XHJcblxyXG4gICAgY29uc3QgY2xpZW50U2V0dGluZ3MgPSB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3M7XHJcbiAgICBpZiAoIWNsaWVudFNldHRpbmdzKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NldHRpbmdzIGFyZSBub3QgbG9hZGVkIHlldC4nKTtcclxuXHJcbiAgICBjb25zdCBleHBvcnRlckVuZHBvaW50ID0gY2xpZW50U2V0dGluZ3MuZXh0ZW5zaW9uc1tcIk9URUxfRVhQT1JURVJfT1RMUF9FTkRQT0lOVFwiXTtcclxuICAgIGNvbnN0IGV4cG9ydGVySGVhZGVycyA9IGNsaWVudFNldHRpbmdzLmV4dGVuc2lvbnNbXCJPVEVMX0VYUE9SVEVSX09UTFBfSEVBREVSU1wiXTtcclxuICAgIGNvbnN0IHNlcnZpY2VOYW1lID0gY2xpZW50U2V0dGluZ3MuZXh0ZW5zaW9uc1tcIk9URUxfU0VSVklDRV9OQU1FXCJdO1xyXG4gICAgY29uc3QgcmVzb3VyY2VBdHRyaWJ1dGVzID0gY2xpZW50U2V0dGluZ3MuZXh0ZW5zaW9uc1tcIk9URUxfUkVTT1VSQ0VfQVRUUklCVVRFU1wiXTtcclxuICAgIGNvbnN0IHRyYWNlc1NhbXBsZXIgPSBjbGllbnRTZXR0aW5ncy5leHRlbnNpb25zW1wiT1RFTF9UUkFDRVNfU0FNUExFUlwiXTtcclxuICAgIGNvbnN0IHRyYWNlc1NhbXBsZXJBcmcgPSBjbGllbnRTZXR0aW5ncy5leHRlbnNpb25zW1wiT1RFTF9UUkFDRVNfU0FNUExFUl9BUkdcIl07XHJcblxyXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgV2ViVHJhY2VyUHJvdmlkZXIoeyBzYW1wbGVyOiBPcGVuVGVsZW1ldHJ5U2VydmljZS5HZXRTYW1wbGVyKHRyYWNlc1NhbXBsZXIsIHRyYWNlc1NhbXBsZXJBcmcpIH0pO1xyXG5cclxuICAgIGlmICghZXhwb3J0ZXJFbmRwb2ludClcclxuICAgICAgcHJvdmlkZXIuYWRkU3BhblByb2Nlc3NvcihuZXcgU2ltcGxlU3BhblByb2Nlc3NvcihuZXcgQ29uc29sZVNwYW5FeHBvcnRlcigpKSk7XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IGhlYWRlcnNPYmogPSB7fTtcclxuICAgICAgaWYgKGV4cG9ydGVySGVhZGVycykge1xyXG4gICAgICAgIGhlYWRlcnNPYmogPSBPYmplY3QuZnJvbUVudHJpZXMoXHJcbiAgICAgICAgICBleHBvcnRlckhlYWRlcnNcclxuICAgICAgICAgICAgLnNwbGl0KFwiLFwiKVxyXG4gICAgICAgICAgICAubWFwKChoZWFkZXI6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGhlYWRlci5zcGxpdChcIj1cIik7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIFtrZXksIHZhbHVlXTtcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBvdGxwRXhwb3J0ZXJDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICAgIHVybDogZXhwb3J0ZXJFbmRwb2ludCxcclxuICAgICAgICBoZWFkZXJzOiBoZWFkZXJzT2JqLFxyXG4gICAgICAgIGNvbXByZXNzaW9uOiBcImd6aXBcIiBhcyBDb21wcmVzc2lvbkFsZ29yaXRobSxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHByb3ZpZGVyLmFkZFNwYW5Qcm9jZXNzb3IobmV3IEJhdGNoU3BhblByb2Nlc3NvcihuZXcgT1RMUFRyYWNlRXhwb3J0ZXIob3RscEV4cG9ydGVyQ29uZmlndXJhdGlvbikpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm92aWRlci5yZWdpc3Rlcih7XHJcbiAgICAgIC8vIENoYW5naW5nIGRlZmF1bHQgY29udGV4dE1hbmFnZXIgdG8gdXNlIFpvbmVDb250ZXh0TWFuYWdlciAtIHN1cHBvcnRzIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zIC0gb3B0aW9uYWxcclxuICAgICAgY29udGV4dE1hbmFnZXI6IG5ldyBab25lQ29udGV4dE1hbmFnZXIoKSxcclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChyZXNvdXJjZUF0dHJpYnV0ZXMpIHtcclxuICAgICAgcmVzb3VyY2VBdHRyaWJ1dGVzXHJcbiAgICAgICAgLnNwbGl0KFwiLFwiKVxyXG4gICAgICAgIC5tYXAoKGF0dHJpYnV0ZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBhdHRyaWJ1dGUuc3BsaXQoXCI9XCIpO1xyXG4gICAgICAgICAgcHJvdmlkZXIucmVzb3VyY2UuYXR0cmlidXRlc1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNlcnZpY2VOYW1lKVxyXG4gICAgICBwcm92aWRlci5yZXNvdXJjZS5hdHRyaWJ1dGVzWydzZXJ2aWNlLm5hbWUnXSA9IHNlcnZpY2VOYW1lO1xyXG5cclxuICAgIC8vIFJlZ2lzdGVyaW5nIGluc3RydW1lbnRhdGlvbnNcclxuICAgIHJlZ2lzdGVySW5zdHJ1bWVudGF0aW9ucyh7XHJcbiAgICAgIGluc3RydW1lbnRhdGlvbnM6IFtcclxuICAgICAgICBnZXRXZWJBdXRvSW5zdHJ1bWVudGF0aW9ucygpXHJcbiAgICAgIF0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIEdldFNhbXBsZXIodHJhY2VzU2FtcGxlcj86IHN0cmluZywgdHJhY2VzU2FtcGxlckFyZz86IHN0cmluZykge1xyXG4gICAgc3dpdGNoICh0cmFjZXNTYW1wbGVyKSB7XHJcbiAgICAgIGNhc2UgXCJhbHdheXNfb25cIjpcclxuICAgICAgICByZXR1cm4gbmV3IEFsd2F5c09uU2FtcGxlcigpO1xyXG4gICAgICBjYXNlIFwiYWx3YXlzX29mZlwiOlxyXG4gICAgICAgIHJldHVybiBuZXcgQWx3YXlzT2ZmU2FtcGxlcigpO1xyXG4gICAgICBjYXNlIFwidHJhY2VpZHJhdGlvXCI6XHJcbiAgICAgICAgY29uc3QgcmF0aW8gPSBOdW1iZXIucGFyc2VGbG9hdCh0cmFjZXNTYW1wbGVyQXJnID8/IFwiMVwiKTtcclxuICAgICAgICByZXR1cm4gbmV3IFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlcihyYXRpbyk7XHJcbiAgICAgIGNhc2UgXCJwYXJlbnRiYXNlZF9hbHdheXNfb25cIjpcclxuICAgICAgICByZXR1cm4gbmV3IFBhcmVudEJhc2VkU2FtcGxlcih7IHJvb3Q6IG5ldyBBbHdheXNPblNhbXBsZXIoKSB9KTtcclxuICAgICAgY2FzZSBcInBhcmVudGJhc2VkX2Fsd2F5c19vZmZcIjpcclxuICAgICAgICByZXR1cm4gbmV3IFBhcmVudEJhc2VkU2FtcGxlcih7IHJvb3Q6IG5ldyBBbHdheXNPZmZTYW1wbGVyKCkgfSk7XHJcbiAgICAgIGNhc2UgXCJwYXJlbnRiYXNlZF90cmFjZWlkcmF0aW9cIjpcclxuICAgICAgICBjb25zdCByYXRpbzIgPSBOdW1iZXIucGFyc2VGbG9hdCh0cmFjZXNTYW1wbGVyQXJnID8/IFwiMVwiKTtcclxuICAgICAgICByZXR1cm4gbmV3IFBhcmVudEJhc2VkU2FtcGxlcih7IHJvb3Q6IG5ldyBUcmFjZUlkUmF0aW9CYXNlZFNhbXBsZXIocmF0aW8yKSB9KTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gbmV3IEFsd2F5c09uU2FtcGxlcigpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
170
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnRlbGVtZXRyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXJlc3R3b3JsZC1jbGllbnQvc3JjL2xpYi9zZXJ2aWNlcy9vcGVudGVsZW1ldHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFaE4sT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxFQUE0QiwwQkFBMEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7QUFPNUUsTUFBTSxPQUFPLG9CQUFvQjtJQXdFRjtJQXRFWixvQkFBb0IsR0FBNkI7UUFDaEUsaURBQWlELEVBQUU7WUFDakQsNEJBQTRCLEVBQUUsSUFBSTtZQUNsQywyQkFBMkIsRUFBRSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRTtvQkFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29CQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQzlDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLEdBQUcsQ0FBQyxNQUFNO3dCQUNaLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUU5RCxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTt3QkFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7cUJBQzlHO2lCQUNGO1lBQ0gsQ0FBQztTQUNGO1FBQ0Qsc0NBQXNDLEVBQUU7WUFDdEMsNEJBQTRCLEVBQUUsSUFBSTtZQUNsQywyQkFBMkIsRUFBRSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxRCxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2RCxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUQsSUFBSSxLQUFLLElBQUksT0FBTyxJQUFJLE9BQU8sT0FBTyxDQUFDLEdBQUcsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ3BGLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDakMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO29CQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxHQUFHLENBQUMsTUFBTTt3QkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFFOUQsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7d0JBQ25ELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3FCQUM5RztpQkFDRjtZQUNILENBQUM7U0FDRjtRQUNELGlEQUFpRCxFQUFFO1lBQ2pELE9BQU8sRUFBRSxLQUFLO1lBQ2QseUJBQXlCLEVBQUUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFO2dCQUN0RCxNQUFNLFlBQVksR0FDaEIsSUFBSSxDQUFDLGFBQWEsS0FBSyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7b0JBQzNDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUk7b0JBQ2xDLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTztvQkFDN0IseUZBQXlGO29CQUN6RixDQUFDLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFFM0IsSUFBSSxZQUFZLEVBQUU7b0JBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7b0JBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQztpQkFDN0I7Z0JBRUQsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUN2QixDQUFDO1NBQ0Y7S0FDRixDQUFDO0lBRU0sWUFBWSxHQUF1QixJQUFJLENBQUM7SUFDeEMsU0FBUyxHQUFXLENBQUMsQ0FBQztJQUN0QixhQUFhLEdBQWtCLElBQUksQ0FBQztJQUU1QyxZQUE2QixnQkFBaUM7UUFBakMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFpQjtJQUM5RCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxnQkFBb0g7UUFDbkksTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUVoRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO1FBQ3RELElBQUksQ0FBQyxjQUFjO1lBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUVsRCxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsNkJBQTZCLENBQUMsQ0FBQztRQUNsRixNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDaEYsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2pGLE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN2RSxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUU5RSxNQUFNLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEgsSUFBSSxDQUFDLGdCQUFnQjtZQUNuQixRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQzNFO1lBQ0gsSUFBSSxVQUFVLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLElBQUksZUFBZSxFQUFFO2dCQUNuQixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDN0IsZUFBZTtxQkFDWixLQUFLLENBQUMsR0FBRyxDQUFDO3FCQUNWLEdBQUcsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO29CQUN0QixNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3ZDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDVDtZQUVELE1BQU0scUJBQXFCLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLFlBQVksQ0FBQztZQUVoSSxNQUFNLHlCQUF5QixHQUFHO2dCQUNoQyxHQUFHLEVBQUUscUJBQXFCO2dCQUMxQixPQUFPLEVBQUUsVUFBVTtnQkFDbkIsV0FBVyxFQUFFLE1BQThCO2FBQzVDLENBQUM7WUFFRixRQUFRLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JHO1FBRUQsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNoQiwwR0FBMEc7WUFDMUcsY0FBYyxFQUFFLElBQUksa0JBQWtCLEVBQUU7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxrQkFBa0IsRUFBRTtZQUN0QixrQkFBa0I7aUJBQ2YsS0FBSyxDQUFDLEdBQUcsQ0FBQztpQkFDVixHQUFHLENBQUMsQ0FBQyxTQUFpQixFQUFFLEVBQUU7Z0JBQ3pCLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDMUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFFRCxJQUFJLFdBQVc7WUFDYixRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsR0FBRyxXQUFXLENBQUM7UUFFN0Qsc0JBQXNCO1FBQ3RCLElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFVBQVUsRUFBRTtZQUMxQyxNQUFNLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDdEQ7YUFDSSxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxFQUFFO1lBQzdDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQztTQUMzQjthQUNJO1lBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztTQUNwQztRQUVELCtCQUErQjtRQUMvQix3QkFBd0IsQ0FBQztZQUN2QixnQkFBZ0IsRUFBRTtnQkFDaEIsMEJBQTBCLENBQUMsTUFBTSxDQUFDO2FBQ25DO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBc0IsRUFBRSxnQkFBeUI7UUFDekUsUUFBUSxhQUFhLEVBQUU7WUFDckIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUMvQixLQUFLLFlBQVk7Z0JBQ2YsT0FBTyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDaEMsS0FBSyxjQUFjO2dCQUNqQixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLGdCQUFnQixJQUFJLEdBQUcsQ0FBQyxDQUFDO2dCQUN6RCxPQUFPLElBQUksd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0MsS0FBSyx1QkFBdUI7Z0JBQzFCLE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNqRSxLQUFLLHdCQUF3QjtnQkFDM0IsT0FBTyxJQUFJLGtCQUFrQixDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbEUsS0FBSywwQkFBMEI7Z0JBQzdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLElBQUksR0FBRyxDQUFDLENBQUM7Z0JBQzFELE9BQU8sSUFBSSxrQkFBa0IsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoRjtnQkFDRSxPQUFPLElBQUksZUFBZSxFQUFFLENBQUM7U0FDaEM7SUFDSCxDQUFDO3VHQTVLVSxvQkFBb0I7MkdBQXBCLG9CQUFvQixjQUZuQixNQUFNOzsyRkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IHJlZ2lzdGVySW5zdHJ1bWVudGF0aW9ucyB9IGZyb20gJ0BvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbic7XHJcbmltcG9ydCB7IEFsd2F5c09mZlNhbXBsZXIsIEFsd2F5c09uU2FtcGxlciwgQmF0Y2hTcGFuUHJvY2Vzc29yLCBDb25zb2xlU3BhbkV4cG9ydGVyLCBQYXJlbnRCYXNlZFNhbXBsZXIsIFNpbXBsZVNwYW5Qcm9jZXNzb3IsIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgV2ViVHJhY2VyUHJvdmlkZXIgfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9zZGstdHJhY2Utd2ViJztcclxuaW1wb3J0IHsgU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSBcIi4vc2V0dGluZ3Muc2VydmljZVwiO1xyXG5pbXBvcnQgeyBab25lQ29udGV4dE1hbmFnZXIgfSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvY29udGV4dC16b25lXCI7XHJcbmltcG9ydCB7IEluc3RydW1lbnRhdGlvbkNvbmZpZ01hcCwgZ2V0V2ViQXV0b0luc3RydW1lbnRhdGlvbnMgfSBmcm9tIFwiQG9wZW50ZWxlbWV0cnkvYXV0by1pbnN0cnVtZW50YXRpb25zLXdlYlwiO1xyXG5pbXBvcnQgeyBPVExQVHJhY2VFeHBvcnRlciB9IGZyb20gXCJAb3BlbnRlbGVtZXRyeS9leHBvcnRlci10cmFjZS1vdGxwLWh0dHBcIjtcclxuaW1wb3J0IHsgQ29tcHJlc3Npb25BbGdvcml0aG0gfSBmcm9tICdAb3BlbnRlbGVtZXRyeS9vdGxwLWV4cG9ydGVyLWJhc2UnO1xyXG5pbXBvcnQgeyBDb250ZXh0LCBDb250ZXh0TWFuYWdlciwgUk9PVF9DT05URVhULCBjcmVhdGVDb250ZXh0S2V5IH0gZnJvbSBcIkBvcGVudGVsZW1ldHJ5L2FwaVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBPcGVuVGVsZW1ldHJ5U2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRJbnB1dENvbmZpZ3M6IEluc3RydW1lbnRhdGlvbkNvbmZpZ01hcCA9IHtcclxuICAgIFwiQG9wZW50ZWxlbWV0cnkvaW5zdHJ1bWVudGF0aW9uLXhtbC1odHRwLXJlcXVlc3RcIjoge1xyXG4gICAgICBwcm9wYWdhdGVUcmFjZUhlYWRlckNvcnNVcmxzOiAvLiovLFxyXG4gICAgICBhcHBseUN1c3RvbUF0dHJpYnV0ZXNPblNwYW46IChzcGFuLCB4aHIpID0+IHtcclxuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcImNsaWVudC5hZGRyZXNzXCIsIHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcImNsaWVudC5wb3J0XCIsIHdpbmRvdy5sb2NhdGlvbi5wb3J0KTtcclxuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcImJyb3dzZXIubGFuZ3VhZ2VcIiwgbmF2aWdhdG9yLmxhbmd1YWdlKTtcclxuICAgICAgICBpZiAoVVJMLmNhblBhcnNlKHhoci5yZXNwb25zZVVSTCkpIHtcclxuICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoeGhyLnJlc3BvbnNlVVJMKTtcclxuICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKFwidXJsLmRvbWFpblwiLCB1cmwuaG9zdG5hbWUpO1xyXG4gICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoXCJ1cmwuZnVsbFwiLCB1cmwuaHJlZik7XHJcbiAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcInVybC5wYXRoXCIsIHVybC5wYXRobmFtZSk7XHJcbiAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcInVybC5wb3J0XCIsIHVybC5wb3J0KTtcclxuICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKFwidXJsLnNjaGVtZVwiLCB1cmwucHJvdG9jb2wucmVwbGFjZShcIjpcIiwgXCJcIikpO1xyXG4gICAgICAgICAgaWYgKHVybC5zZWFyY2gpXHJcbiAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKFwidXJsLnF1ZXJ5XCIsIHVybC5zZWFyY2gucmVwbGFjZShcIj9cIiwgXCJcIikpO1xyXG5cclxuICAgICAgICAgIGlmIChcIm5hbWVcIiBpbiBzcGFuICYmIHR5cGVvZiBzcGFuLm5hbWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgc3Bhbi51cGRhdGVOYW1lKHNwYW4ubmFtZSArIFwiIFwiICsgKHVybC5wYXRobmFtZS5zdGFydHNXaXRoKFwiL1wiKSA/IHVybC5wYXRobmFtZS5zdWJzdHJpbmcoMSkgOiB1cmwucGF0aG5hbWUpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBcIkBvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi1mZXRjaFwiOiB7XHJcbiAgICAgIHByb3BhZ2F0ZVRyYWNlSGVhZGVyQ29yc1VybHM6IC8uKi8sXHJcbiAgICAgIGFwcGx5Q3VzdG9tQXR0cmlidXRlc09uU3BhbjogKHNwYW4sIHJlcXVlc3QpID0+IHtcclxuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcImNsaWVudC5hZGRyZXNzXCIsIHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcImNsaWVudC5wb3J0XCIsIHdpbmRvdy5sb2NhdGlvbi5wb3J0KTtcclxuICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcImJyb3dzZXIubGFuZ3VhZ2VcIiwgbmF2aWdhdG9yLmxhbmd1YWdlKTtcclxuICAgICAgICBpZiAoXCJ1cmxcIiBpbiByZXF1ZXN0ICYmIHR5cGVvZiByZXF1ZXN0LnVybCA9PT0gXCJzdHJpbmdcIiAmJiBVUkwuY2FuUGFyc2UocmVxdWVzdC51cmwpKSB7XHJcbiAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHJlcXVlc3QudXJsKTtcclxuICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKFwidXJsLmRvbWFpblwiLCB1cmwuaG9zdG5hbWUpO1xyXG4gICAgICAgICAgc3Bhbi5zZXRBdHRyaWJ1dGUoXCJ1cmwuZnVsbFwiLCB1cmwuaHJlZik7XHJcbiAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcInVybC5wYXRoXCIsIHVybC5wYXRobmFtZSk7XHJcbiAgICAgICAgICBzcGFuLnNldEF0dHJpYnV0ZShcInVybC5wb3J0XCIsIHVybC5wb3J0KTtcclxuICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKFwidXJsLnNjaGVtZVwiLCB1cmwucHJvdG9jb2wucmVwbGFjZShcIjpcIiwgXCJcIikpO1xyXG4gICAgICAgICAgaWYgKHVybC5zZWFyY2gpXHJcbiAgICAgICAgICAgIHNwYW4uc2V0QXR0cmlidXRlKFwidXJsLnF1ZXJ5XCIsIHVybC5zZWFyY2gucmVwbGFjZShcIj9cIiwgXCJcIikpO1xyXG5cclxuICAgICAgICAgIGlmIChcIm5hbWVcIiBpbiBzcGFuICYmIHR5cGVvZiBzcGFuLm5hbWUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgc3Bhbi51cGRhdGVOYW1lKHNwYW4ubmFtZSArIFwiIFwiICsgKHVybC5wYXRobmFtZS5zdGFydHNXaXRoKFwiL1wiKSA/IHVybC5wYXRobmFtZS5zdWJzdHJpbmcoMSkgOiB1cmwucGF0aG5hbWUpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBcIkBvcGVudGVsZW1ldHJ5L2luc3RydW1lbnRhdGlvbi11c2VyLWludGVyYWN0aW9uXCI6IHtcclxuICAgICAgZW5hYmxlZDogZmFsc2UsXHJcbiAgICAgIHNob3VsZFByZXZlbnRTcGFuQ3JlYXRpb246IChldmVudFR5cGUsIGVsZW1lbnQsIHNwYW4pID0+IHtcclxuICAgICAgICBjb25zdCBzaG91bGRDcmVhdGUgPVxyXG4gICAgICAgICAgdGhpcy5fbGFzdExvY2F0aW9uICE9PSB3aW5kb3cubG9jYXRpb24uaHJlZiB8fFxyXG4gICAgICAgICAgRGF0ZS5ub3coKSAtIHRoaXMuX2xhc3RUaW1lID4gMTAwMCB8fFxyXG4gICAgICAgICAgdGhpcy5fbGFzdEVsZW1lbnQgIT09IGVsZW1lbnQgfHxcclxuICAgICAgICAgIC8vKGV2ZW50VHlwZSA9PT0gXCJjbGlja1wiICYmIChlbGVtZW50LnRhZ05hbWUgPT09IFwiQVwiIHx8IGVsZW1lbnQudGFnTmFtZSA9PT0gXCJCdXR0b25cIikpIHx8XHJcbiAgICAgICAgICAoZXZlbnRUeXBlID09PSBcInN1Ym1pdFwiKTtcclxuXHJcbiAgICAgICAgaWYgKHNob3VsZENyZWF0ZSkge1xyXG4gICAgICAgICAgdGhpcy5fbGFzdExvY2F0aW9uID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgICB0aGlzLl9sYXN0VGltZSA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICB0aGlzLl9sYXN0RWxlbWVudCA9IGVsZW1lbnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gIXNob3VsZENyZWF0ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgX2xhc3RFbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2xhc3RUaW1lOiBudW1iZXIgPSAwO1xyXG4gIHByaXZhdGUgX2xhc3RMb2NhdGlvbjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgX3NldHRpbmdzU2VydmljZTogU2V0dGluZ3NTZXJ2aWNlKSB7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbml0aWFsaXplKGNvbmZpZ3VyZU9wdGlvbnM/OiBJbnN0cnVtZW50YXRpb25Db25maWdNYXAgfCAoKGlucHV0Q29uZmlnczogSW5zdHJ1bWVudGF0aW9uQ29uZmlnTWFwKSA9PiBJbnN0cnVtZW50YXRpb25Db25maWdNYXApKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLl9zZXR0aW5nc1NlcnZpY2UuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcclxuXHJcbiAgICBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncztcclxuICAgIGlmICghY2xpZW50U2V0dGluZ3MpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignU2V0dGluZ3MgYXJlIG5vdCBsb2FkZWQgeWV0LicpO1xyXG5cclxuICAgIGNvbnN0IGV4cG9ydGVyRW5kcG9pbnQgPSBjbGllbnRTZXR0aW5ncy5leHRlbnNpb25zW1wiT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UXCJdO1xyXG4gICAgY29uc3QgZXhwb3J0ZXJIZWFkZXJzID0gY2xpZW50U2V0dGluZ3MuZXh0ZW5zaW9uc1tcIk9URUxfRVhQT1JURVJfT1RMUF9IRUFERVJTXCJdO1xyXG4gICAgY29uc3Qgc2VydmljZU5hbWUgPSBjbGllbnRTZXR0aW5ncy5leHRlbnNpb25zW1wiT1RFTF9TRVJWSUNFX05BTUVcIl07XHJcbiAgICBjb25zdCByZXNvdXJjZUF0dHJpYnV0ZXMgPSBjbGllbnRTZXR0aW5ncy5leHRlbnNpb25zW1wiT1RFTF9SRVNPVVJDRV9BVFRSSUJVVEVTXCJdO1xyXG4gICAgY29uc3QgdHJhY2VzU2FtcGxlciA9IGNsaWVudFNldHRpbmdzLmV4dGVuc2lvbnNbXCJPVEVMX1RSQUNFU19TQU1QTEVSXCJdO1xyXG4gICAgY29uc3QgdHJhY2VzU2FtcGxlckFyZyA9IGNsaWVudFNldHRpbmdzLmV4dGVuc2lvbnNbXCJPVEVMX1RSQUNFU19TQU1QTEVSX0FSR1wiXTtcclxuXHJcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBXZWJUcmFjZXJQcm92aWRlcih7IHNhbXBsZXI6IE9wZW5UZWxlbWV0cnlTZXJ2aWNlLkdldFNhbXBsZXIodHJhY2VzU2FtcGxlciwgdHJhY2VzU2FtcGxlckFyZykgfSk7XHJcblxyXG4gICAgaWYgKCFleHBvcnRlckVuZHBvaW50KVxyXG4gICAgICBwcm92aWRlci5hZGRTcGFuUHJvY2Vzc29yKG5ldyBTaW1wbGVTcGFuUHJvY2Vzc29yKG5ldyBDb25zb2xlU3BhbkV4cG9ydGVyKCkpKTtcclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgaGVhZGVyc09iaiA9IHt9O1xyXG4gICAgICBpZiAoZXhwb3J0ZXJIZWFkZXJzKSB7XHJcbiAgICAgICAgaGVhZGVyc09iaiA9IE9iamVjdC5mcm9tRW50cmllcyhcclxuICAgICAgICAgIGV4cG9ydGVySGVhZGVyc1xyXG4gICAgICAgICAgICAuc3BsaXQoXCIsXCIpXHJcbiAgICAgICAgICAgIC5tYXAoKGhlYWRlcjogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgW2tleSwgdmFsdWVdID0gaGVhZGVyLnNwbGl0KFwiPVwiKTtcclxuICAgICAgICAgICAgICByZXR1cm4gW2tleSwgdmFsdWVdO1xyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHRyYWNlRXhwb3J0ZXJFbmRwb2ludCA9IGV4cG9ydGVyRW5kcG9pbnQuZW5kc1dpdGgoXCIvXCIpID8gZXhwb3J0ZXJFbmRwb2ludCArIFwidjEvdHJhY2VzXCIgOiBleHBvcnRlckVuZHBvaW50ICsgXCIvdjEvdHJhY2VzXCI7XHJcblxyXG4gICAgICBjb25zdCBvdGxwRXhwb3J0ZXJDb25maWd1cmF0aW9uID0ge1xyXG4gICAgICAgIHVybDogdHJhY2VFeHBvcnRlckVuZHBvaW50LFxyXG4gICAgICAgIGhlYWRlcnM6IGhlYWRlcnNPYmosXHJcbiAgICAgICAgY29tcHJlc3Npb246IFwiZ3ppcFwiIGFzIENvbXByZXNzaW9uQWxnb3JpdGhtLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgcHJvdmlkZXIuYWRkU3BhblByb2Nlc3NvcihuZXcgQmF0Y2hTcGFuUHJvY2Vzc29yKG5ldyBPVExQVHJhY2VFeHBvcnRlcihvdGxwRXhwb3J0ZXJDb25maWd1cmF0aW9uKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3ZpZGVyLnJlZ2lzdGVyKHtcclxuICAgICAgLy8gQ2hhbmdpbmcgZGVmYXVsdCBjb250ZXh0TWFuYWdlciB0byB1c2UgWm9uZUNvbnRleHRNYW5hZ2VyIC0gc3VwcG9ydHMgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgLSBvcHRpb25hbFxyXG4gICAgICBjb250ZXh0TWFuYWdlcjogbmV3IFpvbmVDb250ZXh0TWFuYWdlcigpLFxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHJlc291cmNlQXR0cmlidXRlcykge1xyXG4gICAgICByZXNvdXJjZUF0dHJpYnV0ZXNcclxuICAgICAgICAuc3BsaXQoXCIsXCIpXHJcbiAgICAgICAgLm1hcCgoYXR0cmlidXRlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGF0dHJpYnV0ZS5zcGxpdChcIj1cIik7XHJcbiAgICAgICAgICBwcm92aWRlci5yZXNvdXJjZS5hdHRyaWJ1dGVzW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc2VydmljZU5hbWUpXHJcbiAgICAgIHByb3ZpZGVyLnJlc291cmNlLmF0dHJpYnV0ZXNbJ3NlcnZpY2UubmFtZSddID0gc2VydmljZU5hbWU7XHJcblxyXG4gICAgLy8gYXBwbHkgZ2l2ZW4gb3B0aW9uc1xyXG4gICAgbGV0IGNvbmZpZztcclxuICAgIGlmICh0eXBlb2YgY29uZmlndXJlT3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25maWcgPSBjb25maWd1cmVPcHRpb25zKHRoaXMuX2RlZmF1bHRJbnB1dENvbmZpZ3MpO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAodHlwZW9mIGNvbmZpZ3VyZU9wdGlvbnMgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGNvbmZpZyA9IGNvbmZpZ3VyZU9wdGlvbnM7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgY29uZmlnID0gdGhpcy5fZGVmYXVsdElucHV0Q29uZmlncztcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZWdpc3RlcmluZyBpbnN0cnVtZW50YXRpb25zXHJcbiAgICByZWdpc3Rlckluc3RydW1lbnRhdGlvbnMoe1xyXG4gICAgICBpbnN0cnVtZW50YXRpb25zOiBbXHJcbiAgICAgICAgZ2V0V2ViQXV0b0luc3RydW1lbnRhdGlvbnMoY29uZmlnKSxcclxuICAgICAgXVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBHZXRTYW1wbGVyKHRyYWNlc1NhbXBsZXI/OiBzdHJpbmcsIHRyYWNlc1NhbXBsZXJBcmc/OiBzdHJpbmcpIHtcclxuICAgIHN3aXRjaCAodHJhY2VzU2FtcGxlcikge1xyXG4gICAgICBjYXNlIFwiYWx3YXlzX29uXCI6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBbHdheXNPblNhbXBsZXIoKTtcclxuICAgICAgY2FzZSBcImFsd2F5c19vZmZcIjpcclxuICAgICAgICByZXR1cm4gbmV3IEFsd2F5c09mZlNhbXBsZXIoKTtcclxuICAgICAgY2FzZSBcInRyYWNlaWRyYXRpb1wiOlxyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gTnVtYmVyLnBhcnNlRmxvYXQodHJhY2VzU2FtcGxlckFyZyA/PyBcIjFcIik7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBUcmFjZUlkUmF0aW9CYXNlZFNhbXBsZXIocmF0aW8pO1xyXG4gICAgICBjYXNlIFwicGFyZW50YmFzZWRfYWx3YXlzX29uXCI6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJlbnRCYXNlZFNhbXBsZXIoeyByb290OiBuZXcgQWx3YXlzT25TYW1wbGVyKCkgfSk7XHJcbiAgICAgIGNhc2UgXCJwYXJlbnRiYXNlZF9hbHdheXNfb2ZmXCI6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJlbnRCYXNlZFNhbXBsZXIoeyByb290OiBuZXcgQWx3YXlzT2ZmU2FtcGxlcigpIH0pO1xyXG4gICAgICBjYXNlIFwicGFyZW50YmFzZWRfdHJhY2VpZHJhdGlvXCI6XHJcbiAgICAgICAgY29uc3QgcmF0aW8yID0gTnVtYmVyLnBhcnNlRmxvYXQodHJhY2VzU2FtcGxlckFyZyA/PyBcIjFcIik7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQYXJlbnRCYXNlZFNhbXBsZXIoeyByb290OiBuZXcgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyKHJhdGlvMikgfSk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBbHdheXNPblNhbXBsZXIoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -3339,10 +3339,73 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImpor
|
|
|
3339
3339
|
|
|
3340
3340
|
class OpenTelemetryService {
|
|
3341
3341
|
_settingsService;
|
|
3342
|
+
_defaultInputConfigs = {
|
|
3343
|
+
"@opentelemetry/instrumentation-xml-http-request": {
|
|
3344
|
+
propagateTraceHeaderCorsUrls: /.*/,
|
|
3345
|
+
applyCustomAttributesOnSpan: (span, xhr) => {
|
|
3346
|
+
span.setAttribute("client.address", window.location.href);
|
|
3347
|
+
span.setAttribute("client.port", window.location.port);
|
|
3348
|
+
span.setAttribute("browser.language", navigator.language);
|
|
3349
|
+
if (URL.canParse(xhr.responseURL)) {
|
|
3350
|
+
const url = new URL(xhr.responseURL);
|
|
3351
|
+
span.setAttribute("url.domain", url.hostname);
|
|
3352
|
+
span.setAttribute("url.full", url.href);
|
|
3353
|
+
span.setAttribute("url.path", url.pathname);
|
|
3354
|
+
span.setAttribute("url.port", url.port);
|
|
3355
|
+
span.setAttribute("url.scheme", url.protocol.replace(":", ""));
|
|
3356
|
+
if (url.search)
|
|
3357
|
+
span.setAttribute("url.query", url.search.replace("?", ""));
|
|
3358
|
+
if ("name" in span && typeof span.name === "string") {
|
|
3359
|
+
span.updateName(span.name + " " + (url.pathname.startsWith("/") ? url.pathname.substring(1) : url.pathname));
|
|
3360
|
+
}
|
|
3361
|
+
}
|
|
3362
|
+
}
|
|
3363
|
+
},
|
|
3364
|
+
"@opentelemetry/instrumentation-fetch": {
|
|
3365
|
+
propagateTraceHeaderCorsUrls: /.*/,
|
|
3366
|
+
applyCustomAttributesOnSpan: (span, request) => {
|
|
3367
|
+
span.setAttribute("client.address", window.location.href);
|
|
3368
|
+
span.setAttribute("client.port", window.location.port);
|
|
3369
|
+
span.setAttribute("browser.language", navigator.language);
|
|
3370
|
+
if ("url" in request && typeof request.url === "string" && URL.canParse(request.url)) {
|
|
3371
|
+
const url = new URL(request.url);
|
|
3372
|
+
span.setAttribute("url.domain", url.hostname);
|
|
3373
|
+
span.setAttribute("url.full", url.href);
|
|
3374
|
+
span.setAttribute("url.path", url.pathname);
|
|
3375
|
+
span.setAttribute("url.port", url.port);
|
|
3376
|
+
span.setAttribute("url.scheme", url.protocol.replace(":", ""));
|
|
3377
|
+
if (url.search)
|
|
3378
|
+
span.setAttribute("url.query", url.search.replace("?", ""));
|
|
3379
|
+
if ("name" in span && typeof span.name === "string") {
|
|
3380
|
+
span.updateName(span.name + " " + (url.pathname.startsWith("/") ? url.pathname.substring(1) : url.pathname));
|
|
3381
|
+
}
|
|
3382
|
+
}
|
|
3383
|
+
}
|
|
3384
|
+
},
|
|
3385
|
+
"@opentelemetry/instrumentation-user-interaction": {
|
|
3386
|
+
enabled: false,
|
|
3387
|
+
shouldPreventSpanCreation: (eventType, element, span) => {
|
|
3388
|
+
const shouldCreate = this._lastLocation !== window.location.href ||
|
|
3389
|
+
Date.now() - this._lastTime > 1000 ||
|
|
3390
|
+
this._lastElement !== element ||
|
|
3391
|
+
//(eventType === "click" && (element.tagName === "A" || element.tagName === "Button")) ||
|
|
3392
|
+
(eventType === "submit");
|
|
3393
|
+
if (shouldCreate) {
|
|
3394
|
+
this._lastLocation = window.location.href;
|
|
3395
|
+
this._lastTime = Date.now();
|
|
3396
|
+
this._lastElement = element;
|
|
3397
|
+
}
|
|
3398
|
+
return !shouldCreate;
|
|
3399
|
+
}
|
|
3400
|
+
}
|
|
3401
|
+
};
|
|
3402
|
+
_lastElement = null;
|
|
3403
|
+
_lastTime = 0;
|
|
3404
|
+
_lastLocation = null;
|
|
3342
3405
|
constructor(_settingsService) {
|
|
3343
3406
|
this._settingsService = _settingsService;
|
|
3344
3407
|
}
|
|
3345
|
-
async initialize() {
|
|
3408
|
+
async initialize(configureOptions) {
|
|
3346
3409
|
await this._settingsService.ensureInitialized();
|
|
3347
3410
|
const clientSettings = this._settingsService.settings;
|
|
3348
3411
|
if (!clientSettings)
|
|
@@ -3366,8 +3429,9 @@ class OpenTelemetryService {
|
|
|
3366
3429
|
return [key, value];
|
|
3367
3430
|
}));
|
|
3368
3431
|
}
|
|
3432
|
+
const traceExporterEndpoint = exporterEndpoint.endsWith("/") ? exporterEndpoint + "v1/traces" : exporterEndpoint + "/v1/traces";
|
|
3369
3433
|
const otlpExporterConfiguration = {
|
|
3370
|
-
url:
|
|
3434
|
+
url: traceExporterEndpoint,
|
|
3371
3435
|
headers: headersObj,
|
|
3372
3436
|
compression: "gzip",
|
|
3373
3437
|
};
|
|
@@ -3387,11 +3451,22 @@ class OpenTelemetryService {
|
|
|
3387
3451
|
}
|
|
3388
3452
|
if (serviceName)
|
|
3389
3453
|
provider.resource.attributes['service.name'] = serviceName;
|
|
3454
|
+
// apply given options
|
|
3455
|
+
let config;
|
|
3456
|
+
if (typeof configureOptions === 'function') {
|
|
3457
|
+
config = configureOptions(this._defaultInputConfigs);
|
|
3458
|
+
}
|
|
3459
|
+
else if (typeof configureOptions === 'object') {
|
|
3460
|
+
config = configureOptions;
|
|
3461
|
+
}
|
|
3462
|
+
else {
|
|
3463
|
+
config = this._defaultInputConfigs;
|
|
3464
|
+
}
|
|
3390
3465
|
// Registering instrumentations
|
|
3391
3466
|
registerInstrumentations({
|
|
3392
3467
|
instrumentations: [
|
|
3393
|
-
getWebAutoInstrumentations()
|
|
3394
|
-
]
|
|
3468
|
+
getWebAutoInstrumentations(config),
|
|
3469
|
+
]
|
|
3395
3470
|
});
|
|
3396
3471
|
}
|
|
3397
3472
|
static GetSampler(tracesSampler, tracesSamplerArg) {
|