reg-cli 0.18.14 → 0.18.15
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/dist/tracing.js +130 -82
- package/package.json +8 -8
package/dist/tracing.js
CHANGED
|
@@ -3,119 +3,167 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.shutdownTracing = exports.initTracing = exports.getTracer = exports.
|
|
6
|
+
exports.withSpan = exports.startSpan = exports.startRootSpan = exports.shutdownTracing = exports.isTracingEnabled = exports.initTracing = exports.getTracer = exports.getTraceContext = exports.endRootSpan = void 0;
|
|
7
7
|
var _sdkNode = require("@opentelemetry/sdk-node");
|
|
8
8
|
var _exporterTraceOtlpHttp = require("@opentelemetry/exporter-trace-otlp-http");
|
|
9
9
|
var _api = require("@opentelemetry/api");
|
|
10
|
+
var _resources = require("@opentelemetry/resources");
|
|
11
|
+
var _semanticConventions = require("@opentelemetry/semantic-conventions");
|
|
10
12
|
var sdk = null;
|
|
11
13
|
var isInitialized = false;
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
url: 'http://localhost:4318/v1/traces' // Jaeger OTLP endpoint
|
|
17
|
-
});
|
|
18
|
-
return new _sdkNode.NodeSDK({
|
|
19
|
-
traceExporter: otlpExporter,
|
|
20
|
-
serviceName: 'reg-cli',
|
|
21
|
-
instrumentations: []
|
|
22
|
-
});
|
|
23
|
-
} else {
|
|
24
|
-
return new _sdkNode.NodeSDK({
|
|
25
|
-
serviceName: 'reg-cli',
|
|
26
|
-
instrumentations: []
|
|
27
|
-
});
|
|
28
|
-
}
|
|
14
|
+
var currentRootSpan = null;
|
|
15
|
+
var currentRootContext = null;
|
|
16
|
+
var isTracingEnabled = () => {
|
|
17
|
+
return process.env.OTEL_ENABLED === 'true' || process.env.JAEGER_ENABLED === 'true';
|
|
29
18
|
};
|
|
19
|
+
exports.isTracingEnabled = isTracingEnabled;
|
|
30
20
|
var initTracing = () => {
|
|
31
|
-
if (!isInitialized) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
21
|
+
if (!isTracingEnabled() || isInitialized) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
var endpoint = process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'http://localhost:4318/v1/traces';
|
|
25
|
+
var exporter = new _exporterTraceOtlpHttp.OTLPTraceExporter({
|
|
26
|
+
url: endpoint
|
|
27
|
+
});
|
|
28
|
+
sdk = new _sdkNode.NodeSDK({
|
|
29
|
+
resource: new _resources.Resource({
|
|
30
|
+
[_semanticConventions.SemanticResourceAttributes.SERVICE_NAME]: 'reg-cli-js',
|
|
31
|
+
[_semanticConventions.SemanticResourceAttributes.SERVICE_VERSION]: '1.0.0'
|
|
32
|
+
}),
|
|
33
|
+
traceExporter: exporter
|
|
34
|
+
});
|
|
35
|
+
sdk.start();
|
|
36
|
+
isInitialized = true;
|
|
37
|
+
if (process.env.OTEL_DEBUG === 'true') {
|
|
38
|
+
console.log('[Tracing-JS] OpenTelemetry initialized');
|
|
39
|
+
console.log(`[Tracing-JS] OTLP endpoint: ${endpoint}`);
|
|
36
40
|
}
|
|
37
41
|
};
|
|
38
42
|
exports.initTracing = initTracing;
|
|
39
43
|
var shutdownTracing = async () => {
|
|
40
44
|
if (sdk && isInitialized) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
// より長い時間を待ってからシャットダウンする
|
|
45
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
45
|
+
if (process.env.OTEL_DEBUG === 'true') {
|
|
46
|
+
console.log('[Tracing-JS] Starting SDK shutdown...');
|
|
47
|
+
}
|
|
46
48
|
await sdk.shutdown();
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
49
|
+
if (process.env.OTEL_DEBUG === 'true') {
|
|
50
|
+
console.log('[Tracing-JS] OpenTelemetry SDK shut down');
|
|
51
|
+
}
|
|
50
52
|
}
|
|
51
53
|
};
|
|
52
54
|
exports.shutdownTracing = shutdownTracing;
|
|
53
55
|
var getTracer = () => {
|
|
54
|
-
return _api.trace.getTracer('reg-cli', '0.
|
|
56
|
+
return _api.trace.getTracer('reg-cli-js', '1.0.0');
|
|
55
57
|
};
|
|
56
58
|
exports.getTracer = getTracer;
|
|
57
|
-
var
|
|
59
|
+
var startRootSpan = name => {
|
|
60
|
+
if (!isTracingEnabled() || !isInitialized) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
58
63
|
var tracer = getTracer();
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
currentRootSpan = tracer.startSpan(name);
|
|
65
|
+
currentRootContext = _api.trace.setSpan(_api.ROOT_CONTEXT, currentRootSpan);
|
|
66
|
+
if (process.env.OTEL_DEBUG === 'true') {
|
|
67
|
+
var spanContext = currentRootSpan.spanContext();
|
|
68
|
+
console.log(`[Tracing-JS] Started root span: ${name}`);
|
|
69
|
+
console.log(`[Tracing-JS] Trace ID: ${spanContext.traceId}`);
|
|
70
|
+
console.log(`[Tracing-JS] Span ID: ${spanContext.spanId}`);
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
traceId: currentRootSpan.spanContext().traceId,
|
|
74
|
+
spanId: currentRootSpan.spanContext().spanId
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
exports.startRootSpan = startRootSpan;
|
|
78
|
+
var endRootSpan = (success = true) => {
|
|
79
|
+
if (currentRootSpan) {
|
|
80
|
+
if (success) {
|
|
81
|
+
currentRootSpan.setStatus({
|
|
82
|
+
code: _api.SpanStatusCode.OK
|
|
83
|
+
});
|
|
84
|
+
} else {
|
|
85
|
+
currentRootSpan.setStatus({
|
|
86
|
+
code: _api.SpanStatusCode.ERROR
|
|
72
87
|
});
|
|
73
|
-
console.log(`[Tracing] Completed span: ${name} (${durationMs.toFixed(2)}ms)`);
|
|
74
|
-
return result;
|
|
75
|
-
} catch (err) {
|
|
76
|
-
console.log(`[Tracing] Error in span: ${name}`, err);
|
|
77
|
-
span.setStatus({
|
|
78
|
-
code: 2,
|
|
79
|
-
message: err.message
|
|
80
|
-
}); // Error
|
|
81
|
-
span.recordException(err);
|
|
82
|
-
throw err;
|
|
83
|
-
} finally {
|
|
84
|
-
span.end();
|
|
85
88
|
}
|
|
86
|
-
|
|
89
|
+
currentRootSpan.end();
|
|
90
|
+
if (process.env.OTEL_DEBUG === 'true') {
|
|
91
|
+
console.log('[Tracing-JS] Ended root span');
|
|
92
|
+
}
|
|
93
|
+
currentRootSpan = null;
|
|
94
|
+
currentRootContext = null;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
exports.endRootSpan = endRootSpan;
|
|
98
|
+
var startSpan = (name, attributes = {}) => {
|
|
99
|
+
if (!isTracingEnabled() || !isInitialized) {
|
|
100
|
+
return {
|
|
101
|
+
end: () => {},
|
|
102
|
+
setStatus: () => {},
|
|
103
|
+
setAttribute: () => {}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
var tracer = getTracer();
|
|
107
|
+
var parentContext = currentRootContext || _api.ROOT_CONTEXT;
|
|
108
|
+
var span = tracer.startSpan(name, {
|
|
109
|
+
attributes
|
|
110
|
+
}, parentContext);
|
|
111
|
+
var startTime = Date.now();
|
|
112
|
+
if (process.env.OTEL_DEBUG === 'true') {
|
|
113
|
+
console.log(`[Tracing-JS] Started span: ${name}`);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Wrap the end method to log when span ends
|
|
117
|
+
var originalEnd = span.end.bind(span);
|
|
118
|
+
span.end = () => {
|
|
119
|
+
originalEnd();
|
|
120
|
+
if (process.env.OTEL_DEBUG === 'true') {
|
|
121
|
+
var duration = Date.now() - startTime;
|
|
122
|
+
console.log(`[Tracing-JS] Ended span: ${name} (${duration}ms)`);
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
return span;
|
|
87
126
|
};
|
|
88
|
-
exports.
|
|
89
|
-
var
|
|
127
|
+
exports.startSpan = startSpan;
|
|
128
|
+
var withSpan = async (name, attributes, fn) => {
|
|
129
|
+
if (!isTracingEnabled() || !isInitialized) {
|
|
130
|
+
return fn();
|
|
131
|
+
}
|
|
90
132
|
var tracer = getTracer();
|
|
91
|
-
|
|
133
|
+
var parentContext = currentRootContext || _api.ROOT_CONTEXT;
|
|
134
|
+
return tracer.startActiveSpan(name, {
|
|
135
|
+
attributes
|
|
136
|
+
}, parentContext, async span => {
|
|
92
137
|
try {
|
|
93
|
-
|
|
94
|
-
var startTime = process.hrtime.bigint();
|
|
95
|
-
var result = fn();
|
|
96
|
-
var endTime = process.hrtime.bigint();
|
|
97
|
-
var durationMs = Number(endTime - startTime) / 1000000;
|
|
138
|
+
var result = await fn();
|
|
98
139
|
span.setStatus({
|
|
99
|
-
code:
|
|
100
|
-
}); // Success
|
|
101
|
-
span.setAttributes({
|
|
102
|
-
'reg.operation': name,
|
|
103
|
-
'reg.duration': durationMs,
|
|
104
|
-
'reg.type': 'sync'
|
|
140
|
+
code: _api.SpanStatusCode.OK
|
|
105
141
|
});
|
|
106
|
-
console.log(`[Tracing] Completed sync span: ${name} (${durationMs.toFixed(2)}ms)`);
|
|
107
142
|
return result;
|
|
108
|
-
} catch (
|
|
109
|
-
console.log(`[Tracing] Error in sync span: ${name}`, err);
|
|
143
|
+
} catch (error) {
|
|
110
144
|
span.setStatus({
|
|
111
|
-
code:
|
|
112
|
-
message:
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
throw err;
|
|
145
|
+
code: _api.SpanStatusCode.ERROR,
|
|
146
|
+
message: error.message
|
|
147
|
+
});
|
|
148
|
+
throw error;
|
|
116
149
|
} finally {
|
|
117
150
|
span.end();
|
|
151
|
+
if (process.env.OTEL_DEBUG === 'true') {
|
|
152
|
+
console.log(`[Tracing-JS] Ended span: ${name}`);
|
|
153
|
+
}
|
|
118
154
|
}
|
|
119
155
|
});
|
|
120
156
|
};
|
|
121
|
-
|
|
157
|
+
|
|
158
|
+
// For child processes - context propagation
|
|
159
|
+
exports.withSpan = withSpan;
|
|
160
|
+
var getTraceContext = () => {
|
|
161
|
+
if (currentRootSpan) {
|
|
162
|
+
return {
|
|
163
|
+
traceId: currentRootSpan.spanContext().traceId,
|
|
164
|
+
spanId: currentRootSpan.spanContext().spanId
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
return null;
|
|
168
|
+
};
|
|
169
|
+
exports.getTraceContext = getTraceContext;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "reg-cli",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.15",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"start": "node ./dist/cli.js",
|
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
"pnpm": {
|
|
35
35
|
"overrides": {
|
|
36
36
|
"set-value": "4.1.0",
|
|
37
|
-
"tar": "^
|
|
37
|
+
"tar": "^7.5.13",
|
|
38
38
|
"tar-fs": "3.1.1",
|
|
39
39
|
"ws": "8.17.1",
|
|
40
40
|
"kind-of": "^6.0.3",
|
|
41
41
|
"randomatic": "3.1.1",
|
|
42
42
|
"deep-extend": "0.6.0",
|
|
43
|
-
"lodash": "4.
|
|
43
|
+
"lodash": "4.18.1",
|
|
44
44
|
"yargs-parser": "^21.0.0",
|
|
45
45
|
"minimist": "^1.2.3",
|
|
46
46
|
"ajv": "^8.0.0",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"y18n": "^5.0.0",
|
|
54
54
|
"braces": "^3.0.0",
|
|
55
55
|
"trim-newlines": "3.0.1",
|
|
56
|
-
"brace-expansion": "
|
|
56
|
+
"brace-expansion": "5.0.5",
|
|
57
57
|
"debug": "^4.3.4"
|
|
58
58
|
}
|
|
59
59
|
},
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"glob": "7.2.3",
|
|
67
67
|
"img-diff-js": "0.5.4",
|
|
68
68
|
"jpeg-js": "^0.4.4",
|
|
69
|
-
"lodash": "4.
|
|
69
|
+
"lodash": "4.18.1",
|
|
70
70
|
"make-dir": "3.1.0",
|
|
71
71
|
"md5-file": "4.0.0",
|
|
72
72
|
"meow": "^9.0.0",
|
|
@@ -86,12 +86,12 @@
|
|
|
86
86
|
"ava": "6.4.1",
|
|
87
87
|
"copyfiles": "2.4.1",
|
|
88
88
|
"cross-env": "10.1.0",
|
|
89
|
-
"finalhandler": "2.1.
|
|
89
|
+
"finalhandler": "2.1.1",
|
|
90
90
|
"flow-bin": "0.77.0",
|
|
91
91
|
"flow-typed": "4.1.1",
|
|
92
|
-
"puppeteer": "24.
|
|
92
|
+
"puppeteer": "24.42.0",
|
|
93
93
|
"rimraf": "3.0.2",
|
|
94
|
-
"serve-static": "2.2.
|
|
94
|
+
"serve-static": "2.2.1"
|
|
95
95
|
},
|
|
96
96
|
"files": [
|
|
97
97
|
"dist",
|