Skip to content

Commit 44e5e26

Browse files
committed
Rebase and resolve conflicts
1 parent 85f6398 commit 44e5e26

26 files changed

+1108
-19
lines changed

.github/component-label-map.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,10 @@ pkg:propagator-aws-xray-lambda:
292292
- changed-files:
293293
- any-glob-to-any-file:
294294
- propagators/propagator-aws-xray-lambda/**
295+
pkg:instrumentation-page-view:
296+
- changed-files:
297+
- any-glob-to-any-file:
298+
- plugins/web/opentelemetry-instrumentation-page-view/**
295299
pkg-status:unmaintained:
296300
- changed-files:
297301
- any-glob-to-any-file:

.github/component_owners.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ components:
155155
- obecny
156156
plugins/web/opentelemetry-plugin-react-load:
157157
- martinkuba
158+
plugins/web/opentelemetry-instrumentation-page-view:
159+
- Abinet18
160+
- martinkuba
158161
propagators/opentelemetry-propagator-instana:
159162
- kirrg001
160163
propagators/opentelemetry-propagator-ot-trace: []
@@ -163,6 +166,5 @@ components:
163166
- jj22ee
164167
propagators/propagator-aws-xray-lambda: [ ]
165168
# Unmaintained
166-
167169
ignored-authors:
168170
- renovate-bot

.release-please-manifest.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
"plugins/web/opentelemetry-instrumentation-long-task": "0.47.0",
6363
"plugins/web/opentelemetry-instrumentation-user-interaction": "0.47.0",
6464
"plugins/web/opentelemetry-plugin-react-load": "0.34.0",
65+
"plugins/web/opentelemetry-instrumentation-page-view": "0.39.0",
6566
"propagators/opentelemetry-propagator-instana": "0.4.0",
6667
"propagators/opentelemetry-propagator-ot-trace": "0.28.0",
6768
"propagators/propagator-aws-xray": "2.1.0",

examples/web/examples/document-load/index.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,14 @@
2525
<script type="text/javascript" src="document-load.js"></script>
2626
<br/>
2727
<button id="button1">Test WebTracer with ZoneContextManager - async</button>
28+
<nav>
29+
<a href="document-load/route1" data-link>Route 1</a>
30+
<a href="document-load/route2" data-link>Route 2</a>
31+
</nav>
32+
33+
<div id="content">
34+
<!-- Content will be loaded here -->
35+
</div>
2836

2937
</body>
3038

examples/web/examples/document-load/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,3 +113,4 @@ const prepareClickEvent = () => {
113113
};
114114

115115
window.addEventListener('load', prepareClickEvent);
116+
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<title>Page View Plugin Example</title>
7+
<base href="/">
8+
9+
<!--
10+
https://www.w3.org/TR/trace-context/
11+
Set the `traceparent` in the server's HTML template code. It should be
12+
dynamically generated server side to have the server's request trace Id,
13+
a parent span Id that was set on the server's request span, and the trace
14+
flags to indicate the server's sampling decision
15+
(01 = sampled, 00 = notsampled).
16+
'{version}-{traceId}-{spanId}-{sampleDecision}'
17+
-->
18+
<!-- <meta name="traceparent" content="00-ab42124a3c573678d4d8b21ba52df3bf-d21f7bc17caa5aba-01">-->
19+
20+
<meta name="viewport" content="width=device-width, initial-scale=1">
21+
</head>
22+
23+
<body>
24+
Example of using Web Tracer with document load plugin with console exporter and collector exporter
25+
<script type="text/javascript" src="page-view.js"></script>
26+
<br/>
27+
<nav>
28+
<a href="page-view/route1" data-link>Route 1</a>
29+
<a href="page-view/route2" data-link>Route 2</a>
30+
</nav>
31+
32+
<div id="content">
33+
<!-- Content will be loaded here -->
34+
</div>
35+
36+
</body>
37+
38+
</html>
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { context, trace } from '@opentelemetry/api';
2+
import { events } from '@opentelemetry/api-events';
3+
import { EventLoggerProvider } from '@opentelemetry/sdk-events';
4+
import { LoggerProvider,SimpleLogRecordProcessor,ConsoleLogRecordExporter } from '@opentelemetry/sdk-logs';
5+
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http'
6+
import { registerInstrumentations } from '@opentelemetry/instrumentation';
7+
import { Resource } from '@opentelemetry/resources';
8+
import { SEMRESATTRS_SERVICE_NAME } from '@opentelemetry/semantic-conventions';
9+
import { PageViewInstrumentation } from "@opentelemetry/instrumentation-page-view";
10+
11+
const loggerProvider = new LoggerProvider({resource: new Resource({[SEMRESATTRS_SERVICE_NAME]: 'web-service-dl'})});
12+
13+
loggerProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(new ConsoleLogRecordExporter()));
14+
loggerProvider.addLogRecordProcessor(new SimpleLogRecordProcessor(new OTLPLogExporter()));
15+
const eventLoggerProvider = new EventLoggerProvider(loggerProvider);
16+
events.setGlobalEventLoggerProvider(eventLoggerProvider);
17+
18+
registerInstrumentations({
19+
instrumentations: [
20+
new PageViewInstrumentation({enabled:false})
21+
],
22+
});
23+
24+
// Define routes and their content
25+
const routes = {
26+
'/page-view/route1': '<h2>Welcome to Route 1</h2><p>This is the content for Route 1.</p>',
27+
'/page-view/route2': '<h2>Welcome to Route 2</h2><p>This is the content for Route 2.</p>'
28+
};
29+
30+
// Function to navigate to a route
31+
function navigateTo(url) {
32+
console.log('Navigating to', url);
33+
history.pushState(null, null, url);
34+
handleRouteChange();
35+
}
36+
37+
// Function to handle the route change
38+
function handleRouteChange() {
39+
const path = window.location.pathname; // Get current path
40+
const routeContent = routes[path] || `<h2>Not on Route </h2>`;
41+
document.getElementById('content').innerHTML = routeContent;
42+
}
43+
44+
// Attach event listeners to navigation links
45+
46+
const attachEventListenersToLinks = () => {
47+
document.querySelectorAll('a[data-link]').forEach(link => {
48+
console.log('attach event listener to link', link.href)
49+
link.addEventListener('click', (event) => {
50+
console.log('Link clicked', event.target.href)
51+
event.preventDefault();
52+
navigateTo(event.target.href);
53+
});
54+
});
55+
}
56+
57+
window.addEventListener('popstate', handleRouteChange);
58+
const loadTimeSetup = () => {
59+
handleRouteChange();
60+
attachEventListenersToLinks();
61+
}
62+
window.addEventListener('load', loadTimeSetup);

examples/web/package.json

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
"description": "Example of using web plugins in browser",
66
"main": "index.js",
77
"scripts": {
8-
"docker:start": "cd ./docker && docker compose down && docker compose up",
9-
"docker:startd": "cd ./docker && docker compose down && docker compose up -d",
10-
"start": "webpack-dev-server --progress --color --port 8090 --config ./webpack.config.js --hot --host 0.0.0.0"
8+
"docker:start": "cd ./docker && docker-compose down && docker-compose up",
9+
"docker:startd": "cd ./docker && docker-compose down && docker-compose up -d",
10+
"start": "webpack serve --mode development --progress --port 8090 --config webpack.config.js --hot --host 0.0.0.0 --static examples"
1111
},
1212
"repository": {
1313
"type": "git",
@@ -30,21 +30,24 @@
3030
"@babel/core": "^7.21.8",
3131
"babel-loader": "^8.3.0",
3232
"ts-loader": "^6.2.2",
33-
"webpack": "5.89.0",
34-
"webpack-cli": "^5.0.0",
35-
"webpack-dev-server": "^4.0.0",
36-
"webpack-merge": "^4.2.2"
33+
"webpack": "^5.93.0",
34+
"webpack-cli": "^5.1.4",
35+
"webpack-dev-server": "^5.0.4",
36+
"webpack-merge": "^6.0.1"
3737
},
3838
"dependencies": {
3939
"@opentelemetry/api": "^1.4.1",
40+
"@opentelemetry/api-events": "^0.52.1",
4041
"@opentelemetry/auto-instrumentations-web": "^0.32.2",
4142
"@opentelemetry/context-zone": "^1.13.0",
43+
"@opentelemetry/exporter-logs-otlp-http": "^0.52.1",
4244
"@opentelemetry/exporter-trace-otlp-http": "^0.39.1",
4345
"@opentelemetry/instrumentation": "^0.39.1",
44-
"@opentelemetry/instrumentation-document-load": "^0.32.2",
4546
"@opentelemetry/instrumentation-user-interaction": "^0.32.3",
4647
"@opentelemetry/instrumentation-xml-http-request": "^0.39.1",
4748
"@opentelemetry/propagator-b3": "^1.13.0",
49+
"@opentelemetry/sdk-events": "^0.52.1",
50+
"@opentelemetry/sdk-logs": "^0.52.1",
4851
"@opentelemetry/sdk-trace-web": "^1.13.0",
4952
"@opentelemetry/semantic-conventions": "^1.27.0"
5053
},

examples/web/webpack.config.js

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
'use strict';
22

33
const webpack = require('webpack');
4-
const webpackMerge = require('webpack-merge');
4+
const { merge } = require('webpack-merge');
55
const path = require('path');
66

77
const directory = path.resolve(__dirname);
88

99
const common = {
1010
mode: 'development',
1111
entry: {
12-
'document-load': 'examples/document-load/index.js',
13-
meta: 'examples/meta/index.js',
14-
'user-interaction': 'examples/user-interaction/index.js',
12+
'document-load': path.resolve(__dirname, 'examples/document-load/index.js'),
13+
meta: path.resolve(__dirname, 'examples/meta/index.js'),
14+
'user-interaction': path.resolve(__dirname, 'examples/user-interaction/index.js'),
15+
'page-view': path.resolve(__dirname, 'examples/page-view/index.js'),
1516
},
1617
output: {
1718
path: path.resolve(__dirname, 'dist'),
@@ -22,15 +23,15 @@ const common = {
2223
module: {
2324
rules: [
2425
{
25-
test: /\.js[x]?$/,
26-
exclude: /(node_modules)/,
26+
test: /\.jsx?$/,
27+
exclude: /node_modules/,
2728
use: {
2829
loader: 'babel-loader',
2930
},
3031
},
3132
{
3233
test: /\.ts$/,
33-
exclude: /(node_modules)/,
34+
exclude: /node_modules/,
3435
use: {
3536
loader: 'ts-loader',
3637
},
@@ -46,14 +47,22 @@ const common = {
4647
},
4748
};
4849

49-
module.exports = webpackMerge(common, {
50+
const devConfig = {
5051
devtool: 'eval-source-map',
5152
devServer: {
52-
static: path.resolve(path.join(__dirname, "examples")),
53+
static: {
54+
directory: path.resolve(__dirname, 'examples'),
55+
},
56+
compress: true,
57+
port: 8090,
58+
hot: true,
59+
host: '0.0.0.0',
5360
},
5461
plugins: [
5562
new webpack.DefinePlugin({
5663
'process.env.NODE_ENV': JSON.stringify('development'),
5764
}),
5865
],
59-
});
66+
};
67+
68+
module.exports = merge(common, devConfig);
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
build

0 commit comments

Comments
 (0)