@r_masseater/vitest-otlp 0.0.0 → 0.0.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/package.json +1 -1
- package/dist/context-COyJBDQM.mjs +0 -6
- package/dist/context-COyJBDQM.mjs.map +0 -1
- package/dist/index.d.mts +0 -98
- package/dist/index.mjs +0 -186
- package/dist/index.mjs.map +0 -1
- package/dist/semconv.d.mts +0 -4
- package/dist/semconv.mjs +0 -92
- package/dist/semconv.mjs.map +0 -1
- package/dist/setup.d.mts +0 -1
- package/dist/setup.mjs +0 -337
- package/dist/setup.mjs.map +0 -1
- package/dist/store-8DpTwYxj.d.mts +0 -9
- package/dist/store-DSDf4Wia.mjs +0 -13
- package/dist/store-DSDf4Wia.mjs.map +0 -1
- package/dist/tail.worker.js +0 -256
- package/dist/tail.worker.js.map +0 -1
- package/dist/workers.d.mts +0 -26
- package/dist/workers.mjs +0 -54
- package/dist/workers.mjs.map +0 -1
package/dist/setup.mjs
DELETED
|
@@ -1,337 +0,0 @@
|
|
|
1
|
-
import { t as FORWARD_KEY } from "./context-COyJBDQM.mjs";
|
|
2
|
-
import { r as setReceiver } from "./store-DSDf4Wia.mjs";
|
|
3
|
-
import { Array, Context, Effect, Exit, Layer, MutableRef, Option, Predicate, Record, Result, Schema, Scope, String as String$1, pipe } from "effect";
|
|
4
|
-
import { afterAll, inject } from "vite-plus/test";
|
|
5
|
-
import { connect, createServer } from "node:http2";
|
|
6
|
-
import { NodeHttpServer, NodeHttpServerRequest } from "@effect/platform-node";
|
|
7
|
-
import { HttpServer, HttpServerRequest, HttpServerResponse } from "effect/http";
|
|
8
|
-
import { create, fromBinary, fromJson, toBinary, toJson } from "@bufbuild/protobuf";
|
|
9
|
-
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
|
|
10
|
-
import { Base64, Hex } from "effect/encoding";
|
|
11
|
-
// src/environment.ts
|
|
12
|
-
const UNSET = "";
|
|
13
|
-
const POINTED = {
|
|
14
|
-
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: UNSET,
|
|
15
|
-
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT: UNSET,
|
|
16
|
-
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT: UNSET,
|
|
17
|
-
OTEL_TRACES_EXPORTER: "otlp",
|
|
18
|
-
OTEL_METRICS_EXPORTER: "otlp",
|
|
19
|
-
OTEL_LOGS_EXPORTER: "otlp"
|
|
20
|
-
};
|
|
21
|
-
const QUICK_EXPORT = {
|
|
22
|
-
OTEL_BSP_SCHEDULE_DELAY: "50",
|
|
23
|
-
OTEL_BLRP_SCHEDULE_DELAY: "50",
|
|
24
|
-
OTEL_METRIC_EXPORT_INTERVAL: "100",
|
|
25
|
-
OTEL_METRIC_EXPORT_TIMEOUT: "100"
|
|
26
|
-
};
|
|
27
|
-
const endpointFor = (address) => (env) => Option.match(Option.liftPredicate(env["OTEL_EXPORTER_OTLP_PROTOCOL"], (protocol) => protocol === "grpc"), {
|
|
28
|
-
onNone: () => address.httpEndpoint,
|
|
29
|
-
onSome: () => address.grpcEndpoint
|
|
30
|
-
});
|
|
31
|
-
const receiverEnvironment = (address) => (env) => ({
|
|
32
|
-
...pipe(QUICK_EXPORT, Record.filter((_value, name) => Predicate.isUndefined(env[name]))),
|
|
33
|
-
...POINTED,
|
|
34
|
-
OTEL_EXPORTER_OTLP_ENDPOINT: endpointFor(address)(env)
|
|
35
|
-
});
|
|
36
|
-
// src/generated/opentelemetry/proto/common/v1/common_pb.ts
|
|
37
|
-
/**
|
|
38
|
-
* Describes the file opentelemetry/proto/common/v1/common.proto.
|
|
39
|
-
*/
|
|
40
|
-
const file_opentelemetry_proto_common_v1_common = /*@__PURE__*/ fileDesc("CipvcGVudGVsZW1ldHJ5L3Byb3RvL2NvbW1vbi92MS9jb21tb24ucHJvdG8SHW9wZW50ZWxlbWV0cnkucHJvdG8uY29tbW9uLnYxIq0CCghBbnlWYWx1ZRIWCgxzdHJpbmdfdmFsdWUYASABKAlIABIUCgpib29sX3ZhbHVlGAIgASgISAASEwoJaW50X3ZhbHVlGAMgASgDSAASFgoMZG91YmxlX3ZhbHVlGAQgASgBSAASQAoLYXJyYXlfdmFsdWUYBSABKAsyKS5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbW1vbi52MS5BcnJheVZhbHVlSAASQwoMa3ZsaXN0X3ZhbHVlGAYgASgLMisub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuS2V5VmFsdWVMaXN0SAASFQoLYnl0ZXNfdmFsdWUYByABKAxIABIfChVzdHJpbmdfdmFsdWVfc3RyaW5kZXgYCCABKAVIAEIHCgV2YWx1ZSJFCgpBcnJheVZhbHVlEjcKBnZhbHVlcxgBIAMoCzInLm9wZW50ZWxlbWV0cnkucHJvdG8uY29tbW9uLnYxLkFueVZhbHVlIkcKDEtleVZhbHVlTGlzdBI3CgZ2YWx1ZXMYASADKAsyJy5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbW1vbi52MS5LZXlWYWx1ZSJlCghLZXlWYWx1ZRILCgNrZXkYASABKAkSNgoFdmFsdWUYAiABKAsyJy5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbW1vbi52MS5BbnlWYWx1ZRIUCgxrZXlfc3RyaW5kZXgYAyABKAUilAEKFEluc3RydW1lbnRhdGlvblNjb3BlEgwKBG5hbWUYASABKAkSDwoHdmVyc2lvbhgCIAEoCRI7CgphdHRyaWJ1dGVzGAMgAygLMicub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuS2V5VmFsdWUSIAoYZHJvcHBlZF9hdHRyaWJ1dGVzX2NvdW50GAQgASgNIlgKCUVudGl0eVJlZhISCgpzY2hlbWFfdXJsGAEgASgJEgwKBHR5cGUYAiABKAkSDwoHaWRfa2V5cxgDIAMoCRIYChBkZXNjcmlwdGlvbl9rZXlzGAQgAygJQnsKIGlvLm9wZW50ZWxlbWV0cnkucHJvdG8uY29tbW9uLnYxQgtDb21tb25Qcm90b1ABWihnby5vcGVudGVsZW1ldHJ5LmlvL3Byb3RvL290bHAvY29tbW9uL3YxqgIdT3BlblRlbGVtZXRyeS5Qcm90by5Db21tb24uVjFiBnByb3RvMw");
|
|
41
|
-
// src/generated/opentelemetry/proto/resource/v1/resource_pb.ts
|
|
42
|
-
/**
|
|
43
|
-
* Describes the file opentelemetry/proto/resource/v1/resource.proto.
|
|
44
|
-
*/
|
|
45
|
-
const file_opentelemetry_proto_resource_v1_resource = /*@__PURE__*/ fileDesc("Ci5vcGVudGVsZW1ldHJ5L3Byb3RvL3Jlc291cmNlL3YxL3Jlc291cmNlLnByb3RvEh9vcGVudGVsZW1ldHJ5LnByb3RvLnJlc291cmNlLnYxIqgBCghSZXNvdXJjZRI7CgphdHRyaWJ1dGVzGAEgAygLMicub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuS2V5VmFsdWUSIAoYZHJvcHBlZF9hdHRyaWJ1dGVzX2NvdW50GAIgASgNEj0KC2VudGl0eV9yZWZzGAMgAygLMigub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuRW50aXR5UmVmQoMBCiJpby5vcGVudGVsZW1ldHJ5LnByb3RvLnJlc291cmNlLnYxQg1SZXNvdXJjZVByb3RvUAFaKmdvLm9wZW50ZWxlbWV0cnkuaW8vcHJvdG8vb3RscC9yZXNvdXJjZS92MaoCH09wZW5UZWxlbWV0cnkuUHJvdG8uUmVzb3VyY2UuVjFiBnByb3RvMw", [file_opentelemetry_proto_common_v1_common]);
|
|
46
|
-
// src/generated/opentelemetry/proto/collector/logs/v1/logs_service_pb.ts
|
|
47
|
-
/**
|
|
48
|
-
* Describes the file opentelemetry/proto/collector/logs/v1/logs_service.proto.
|
|
49
|
-
*/
|
|
50
|
-
const file_opentelemetry_proto_collector_logs_v1_logs_service = /*@__PURE__*/ fileDesc("CjhvcGVudGVsZW1ldHJ5L3Byb3RvL2NvbGxlY3Rvci9sb2dzL3YxL2xvZ3Nfc2VydmljZS5wcm90bxIlb3BlbnRlbGVtZXRyeS5wcm90by5jb2xsZWN0b3IubG9ncy52MSJcChhFeHBvcnRMb2dzU2VydmljZVJlcXVlc3QSQAoNcmVzb3VyY2VfbG9ncxgBIAMoCzIpLm9wZW50ZWxlbWV0cnkucHJvdG8ubG9ncy52MS5SZXNvdXJjZUxvZ3MidQoZRXhwb3J0TG9nc1NlcnZpY2VSZXNwb25zZRJYCg9wYXJ0aWFsX3N1Y2Nlc3MYASABKAsyPy5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbGxlY3Rvci5sb2dzLnYxLkV4cG9ydExvZ3NQYXJ0aWFsU3VjY2VzcyJPChhFeHBvcnRMb2dzUGFydGlhbFN1Y2Nlc3MSHAoUcmVqZWN0ZWRfbG9nX3JlY29yZHMYASABKAMSFQoNZXJyb3JfbWVzc2FnZRgCIAEoCTKdAQoLTG9nc1NlcnZpY2USjQEKBkV4cG9ydBI/Lm9wZW50ZWxlbWV0cnkucHJvdG8uY29sbGVjdG9yLmxvZ3MudjEuRXhwb3J0TG9nc1NlcnZpY2VSZXF1ZXN0GkAub3BlbnRlbGVtZXRyeS5wcm90by5jb2xsZWN0b3IubG9ncy52MS5FeHBvcnRMb2dzU2VydmljZVJlc3BvbnNlIgBCmAEKKGlvLm9wZW50ZWxlbWV0cnkucHJvdG8uY29sbGVjdG9yLmxvZ3MudjFCEExvZ3NTZXJ2aWNlUHJvdG9QAVowZ28ub3BlbnRlbGVtZXRyeS5pby9wcm90by9vdGxwL2NvbGxlY3Rvci9sb2dzL3YxqgIlT3BlblRlbGVtZXRyeS5Qcm90by5Db2xsZWN0b3IuTG9ncy5WMWIGcHJvdG8z", [/* @__PURE__ */ fileDesc("CiZvcGVudGVsZW1ldHJ5L3Byb3RvL2xvZ3MvdjEvbG9ncy5wcm90bxIbb3BlbnRlbGVtZXRyeS5wcm90by5sb2dzLnYxIkwKCExvZ3NEYXRhEkAKDXJlc291cmNlX2xvZ3MYASADKAsyKS5vcGVudGVsZW1ldHJ5LnByb3RvLmxvZ3MudjEuUmVzb3VyY2VMb2dzIqMBCgxSZXNvdXJjZUxvZ3MSOwoIcmVzb3VyY2UYASABKAsyKS5vcGVudGVsZW1ldHJ5LnByb3RvLnJlc291cmNlLnYxLlJlc291cmNlEjoKCnNjb3BlX2xvZ3MYAiADKAsyJi5vcGVudGVsZW1ldHJ5LnByb3RvLmxvZ3MudjEuU2NvcGVMb2dzEhIKCnNjaGVtYV91cmwYAyABKAlKBgjoBxDpByKgAQoJU2NvcGVMb2dzEkIKBXNjb3BlGAEgASgLMjMub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuSW5zdHJ1bWVudGF0aW9uU2NvcGUSOwoLbG9nX3JlY29yZHMYAiADKAsyJi5vcGVudGVsZW1ldHJ5LnByb3RvLmxvZ3MudjEuTG9nUmVjb3JkEhIKCnNjaGVtYV91cmwYAyABKAkigwMKCUxvZ1JlY29yZBIWCg50aW1lX3VuaXhfbmFubxgBIAEoBhIfChdvYnNlcnZlZF90aW1lX3VuaXhfbmFubxgLIAEoBhJECg9zZXZlcml0eV9udW1iZXIYAiABKA4yKy5vcGVudGVsZW1ldHJ5LnByb3RvLmxvZ3MudjEuU2V2ZXJpdHlOdW1iZXISFQoNc2V2ZXJpdHlfdGV4dBgDIAEoCRI1CgRib2R5GAUgASgLMicub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuQW55VmFsdWUSOwoKYXR0cmlidXRlcxgGIAMoCzInLm9wZW50ZWxlbWV0cnkucHJvdG8uY29tbW9uLnYxLktleVZhbHVlEiAKGGRyb3BwZWRfYXR0cmlidXRlc19jb3VudBgHIAEoDRINCgVmbGFncxgIIAEoBxIQCgh0cmFjZV9pZBgJIAEoDBIPCgdzcGFuX2lkGAogASgMEhIKCmV2ZW50X25hbWUYDCABKAlKBAgEEAUqwwUKDlNldmVyaXR5TnVtYmVyEh8KG1NFVkVSSVRZX05VTUJFUl9VTlNQRUNJRklFRBAAEhkKFVNFVkVSSVRZX05VTUJFUl9UUkFDRRABEhoKFlNFVkVSSVRZX05VTUJFUl9UUkFDRTIQAhIaChZTRVZFUklUWV9OVU1CRVJfVFJBQ0UzEAMSGgoWU0VWRVJJVFlfTlVNQkVSX1RSQUNFNBAEEhkKFVNFVkVSSVRZX05VTUJFUl9ERUJVRxAFEhoKFlNFVkVSSVRZX05VTUJFUl9ERUJVRzIQBhIaChZTRVZFUklUWV9OVU1CRVJfREVCVUczEAcSGgoWU0VWRVJJVFlfTlVNQkVSX0RFQlVHNBAIEhgKFFNFVkVSSVRZX05VTUJFUl9JTkZPEAkSGQoVU0VWRVJJVFlfTlVNQkVSX0lORk8yEAoSGQoVU0VWRVJJVFlfTlVNQkVSX0lORk8zEAsSGQoVU0VWRVJJVFlfTlVNQkVSX0lORk80EAwSGAoUU0VWRVJJVFlfTlVNQkVSX1dBUk4QDRIZChVTRVZFUklUWV9OVU1CRVJfV0FSTjIQDhIZChVTRVZFUklUWV9OVU1CRVJfV0FSTjMQDxIZChVTRVZFUklUWV9OVU1CRVJfV0FSTjQQEBIZChVTRVZFUklUWV9OVU1CRVJfRVJST1IQERIaChZTRVZFUklUWV9OVU1CRVJfRVJST1IyEBISGgoWU0VWRVJJVFlfTlVNQkVSX0VSUk9SMxATEhoKFlNFVkVSSVRZX05VTUJFUl9FUlJPUjQQFBIZChVTRVZFUklUWV9OVU1CRVJfRkFUQUwQFRIaChZTRVZFUklUWV9OVU1CRVJfRkFUQUwyEBYSGgoWU0VWRVJJVFlfTlVNQkVSX0ZBVEFMMxAXEhoKFlNFVkVSSVRZX05VTUJFUl9GQVRBTDQQGCpZCg5Mb2dSZWNvcmRGbGFncxIfChtMT0dfUkVDT1JEX0ZMQUdTX0RPX05PVF9VU0UQABImCiFMT0dfUkVDT1JEX0ZMQUdTX1RSQUNFX0ZMQUdTX01BU0sQ/wFCcwoeaW8ub3BlbnRlbGVtZXRyeS5wcm90by5sb2dzLnYxQglMb2dzUHJvdG9QAVomZ28ub3BlbnRlbGVtZXRyeS5pby9wcm90by9vdGxwL2xvZ3MvdjGqAhtPcGVuVGVsZW1ldHJ5LlByb3RvLkxvZ3MuVjFiBnByb3RvMw", [file_opentelemetry_proto_common_v1_common, file_opentelemetry_proto_resource_v1_resource])]);
|
|
51
|
-
/**
|
|
52
|
-
* Describes the message opentelemetry.proto.collector.logs.v1.ExportLogsServiceRequest.
|
|
53
|
-
* Use `create(ExportLogsServiceRequestSchema)` to create a new message.
|
|
54
|
-
*/
|
|
55
|
-
const ExportLogsServiceRequestSchema = /*@__PURE__*/ messageDesc(file_opentelemetry_proto_collector_logs_v1_logs_service, 0);
|
|
56
|
-
/**
|
|
57
|
-
* Describes the message opentelemetry.proto.collector.logs.v1.ExportLogsServiceResponse.
|
|
58
|
-
* Use `create(ExportLogsServiceResponseSchema)` to create a new message.
|
|
59
|
-
*/
|
|
60
|
-
const ExportLogsServiceResponseSchema = /*@__PURE__*/ messageDesc(file_opentelemetry_proto_collector_logs_v1_logs_service, 1);
|
|
61
|
-
// src/generated/opentelemetry/proto/collector/metrics/v1/metrics_service_pb.ts
|
|
62
|
-
/**
|
|
63
|
-
* Describes the file opentelemetry/proto/collector/metrics/v1/metrics_service.proto.
|
|
64
|
-
*/
|
|
65
|
-
const file_opentelemetry_proto_collector_metrics_v1_metrics_service = /*@__PURE__*/ fileDesc("Cj5vcGVudGVsZW1ldHJ5L3Byb3RvL2NvbGxlY3Rvci9tZXRyaWNzL3YxL21ldHJpY3Nfc2VydmljZS5wcm90bxIob3BlbnRlbGVtZXRyeS5wcm90by5jb2xsZWN0b3IubWV0cmljcy52MSJoChtFeHBvcnRNZXRyaWNzU2VydmljZVJlcXVlc3QSSQoQcmVzb3VyY2VfbWV0cmljcxgBIAMoCzIvLm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5SZXNvdXJjZU1ldHJpY3MifgocRXhwb3J0TWV0cmljc1NlcnZpY2VSZXNwb25zZRJeCg9wYXJ0aWFsX3N1Y2Nlc3MYASABKAsyRS5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbGxlY3Rvci5tZXRyaWNzLnYxLkV4cG9ydE1ldHJpY3NQYXJ0aWFsU3VjY2VzcyJSChtFeHBvcnRNZXRyaWNzUGFydGlhbFN1Y2Nlc3MSHAoUcmVqZWN0ZWRfZGF0YV9wb2ludHMYASABKAMSFQoNZXJyb3JfbWVzc2FnZRgCIAEoCTKsAQoOTWV0cmljc1NlcnZpY2USmQEKBkV4cG9ydBJFLm9wZW50ZWxlbWV0cnkucHJvdG8uY29sbGVjdG9yLm1ldHJpY3MudjEuRXhwb3J0TWV0cmljc1NlcnZpY2VSZXF1ZXN0GkYub3BlbnRlbGVtZXRyeS5wcm90by5jb2xsZWN0b3IubWV0cmljcy52MS5FeHBvcnRNZXRyaWNzU2VydmljZVJlc3BvbnNlIgBCpAEKK2lvLm9wZW50ZWxlbWV0cnkucHJvdG8uY29sbGVjdG9yLm1ldHJpY3MudjFCE01ldHJpY3NTZXJ2aWNlUHJvdG9QAVozZ28ub3BlbnRlbGVtZXRyeS5pby9wcm90by9vdGxwL2NvbGxlY3Rvci9tZXRyaWNzL3YxqgIoT3BlblRlbGVtZXRyeS5Qcm90by5Db2xsZWN0b3IuTWV0cmljcy5WMWIGcHJvdG8z", [/* @__PURE__ */ fileDesc("CixvcGVudGVsZW1ldHJ5L3Byb3RvL21ldHJpY3MvdjEvbWV0cmljcy5wcm90bxIeb3BlbnRlbGVtZXRyeS5wcm90by5tZXRyaWNzLnYxIlgKC01ldHJpY3NEYXRhEkkKEHJlc291cmNlX21ldHJpY3MYASADKAsyLy5vcGVudGVsZW1ldHJ5LnByb3RvLm1ldHJpY3MudjEuUmVzb3VyY2VNZXRyaWNzIq8BCg9SZXNvdXJjZU1ldHJpY3MSOwoIcmVzb3VyY2UYASABKAsyKS5vcGVudGVsZW1ldHJ5LnByb3RvLnJlc291cmNlLnYxLlJlc291cmNlEkMKDXNjb3BlX21ldHJpY3MYAiADKAsyLC5vcGVudGVsZW1ldHJ5LnByb3RvLm1ldHJpY3MudjEuU2NvcGVNZXRyaWNzEhIKCnNjaGVtYV91cmwYAyABKAlKBgjoBxDpByKfAQoMU2NvcGVNZXRyaWNzEkIKBXNjb3BlGAEgASgLMjMub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuSW5zdHJ1bWVudGF0aW9uU2NvcGUSNwoHbWV0cmljcxgCIAMoCzImLm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5NZXRyaWMSEgoKc2NoZW1hX3VybBgDIAEoCSLNAwoGTWV0cmljEgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAkSDAoEdW5pdBgDIAEoCRI2CgVnYXVnZRgFIAEoCzIlLm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5HYXVnZUgAEjIKA3N1bRgHIAEoCzIjLm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5TdW1IABI+CgloaXN0b2dyYW0YCSABKAsyKS5vcGVudGVsZW1ldHJ5LnByb3RvLm1ldHJpY3MudjEuSGlzdG9ncmFtSAASVQoVZXhwb25lbnRpYWxfaGlzdG9ncmFtGAogASgLMjQub3BlbnRlbGVtZXRyeS5wcm90by5tZXRyaWNzLnYxLkV4cG9uZW50aWFsSGlzdG9ncmFtSAASOgoHc3VtbWFyeRgLIAEoCzInLm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5TdW1tYXJ5SAASOQoIbWV0YWRhdGEYDCADKAsyJy5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbW1vbi52MS5LZXlWYWx1ZUIGCgRkYXRhSgQIBBAFSgQIBhAHSgQICBAJIk0KBUdhdWdlEkQKC2RhdGFfcG9pbnRzGAEgAygLMi8ub3BlbnRlbGVtZXRyeS5wcm90by5tZXRyaWNzLnYxLk51bWJlckRhdGFQb2ludCK6AQoDU3VtEkQKC2RhdGFfcG9pbnRzGAEgAygLMi8ub3BlbnRlbGVtZXRyeS5wcm90by5tZXRyaWNzLnYxLk51bWJlckRhdGFQb2ludBJXChdhZ2dyZWdhdGlvbl90ZW1wb3JhbGl0eRgCIAEoDjI2Lm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5BZ2dyZWdhdGlvblRlbXBvcmFsaXR5EhQKDGlzX21vbm90b25pYxgDIAEoCCKtAQoJSGlzdG9ncmFtEkcKC2RhdGFfcG9pbnRzGAEgAygLMjIub3BlbnRlbGVtZXRyeS5wcm90by5tZXRyaWNzLnYxLkhpc3RvZ3JhbURhdGFQb2ludBJXChdhZ2dyZWdhdGlvbl90ZW1wb3JhbGl0eRgCIAEoDjI2Lm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5BZ2dyZWdhdGlvblRlbXBvcmFsaXR5IsMBChRFeHBvbmVudGlhbEhpc3RvZ3JhbRJSCgtkYXRhX3BvaW50cxgBIAMoCzI9Lm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5FeHBvbmVudGlhbEhpc3RvZ3JhbURhdGFQb2ludBJXChdhZ2dyZWdhdGlvbl90ZW1wb3JhbGl0eRgCIAEoDjI2Lm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5BZ2dyZWdhdGlvblRlbXBvcmFsaXR5IlAKB1N1bW1hcnkSRQoLZGF0YV9wb2ludHMYASADKAsyMC5vcGVudGVsZW1ldHJ5LnByb3RvLm1ldHJpY3MudjEuU3VtbWFyeURhdGFQb2ludCKGAgoPTnVtYmVyRGF0YVBvaW50EjsKCmF0dHJpYnV0ZXMYByADKAsyJy5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbW1vbi52MS5LZXlWYWx1ZRIcChRzdGFydF90aW1lX3VuaXhfbmFubxgCIAEoBhIWCg50aW1lX3VuaXhfbmFubxgDIAEoBhITCglhc19kb3VibGUYBCABKAFIABIQCgZhc19pbnQYBiABKBBIABI7CglleGVtcGxhcnMYBSADKAsyKC5vcGVudGVsZW1ldHJ5LnByb3RvLm1ldHJpY3MudjEuRXhlbXBsYXISDQoFZmxhZ3MYCCABKA1CBwoFdmFsdWVKBAgBEAIi5gIKEkhpc3RvZ3JhbURhdGFQb2ludBI7CgphdHRyaWJ1dGVzGAkgAygLMicub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuS2V5VmFsdWUSHAoUc3RhcnRfdGltZV91bml4X25hbm8YAiABKAYSFgoOdGltZV91bml4X25hbm8YAyABKAYSDQoFY291bnQYBCABKAYSEAoDc3VtGAUgASgBSACIAQESFQoNYnVja2V0X2NvdW50cxgGIAMoBhIXCg9leHBsaWNpdF9ib3VuZHMYByADKAESOwoJZXhlbXBsYXJzGAggAygLMigub3BlbnRlbGVtZXRyeS5wcm90by5tZXRyaWNzLnYxLkV4ZW1wbGFyEg0KBWZsYWdzGAogASgNEhAKA21pbhgLIAEoAUgBiAEBEhAKA21heBgMIAEoAUgCiAEBQgYKBF9zdW1CBgoEX21pbkIGCgRfbWF4SgQIARACItoECh1FeHBvbmVudGlhbEhpc3RvZ3JhbURhdGFQb2ludBI7CgphdHRyaWJ1dGVzGAEgAygLMicub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuS2V5VmFsdWUSHAoUc3RhcnRfdGltZV91bml4X25hbm8YAiABKAYSFgoOdGltZV91bml4X25hbm8YAyABKAYSDQoFY291bnQYBCABKAYSEAoDc3VtGAUgASgBSACIAQESDQoFc2NhbGUYBiABKBESEgoKemVyb19jb3VudBgHIAEoBhJXCghwb3NpdGl2ZRgIIAEoCzJFLm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MS5FeHBvbmVudGlhbEhpc3RvZ3JhbURhdGFQb2ludC5CdWNrZXRzElcKCG5lZ2F0aXZlGAkgASgLMkUub3BlbnRlbGVtZXRyeS5wcm90by5tZXRyaWNzLnYxLkV4cG9uZW50aWFsSGlzdG9ncmFtRGF0YVBvaW50LkJ1Y2tldHMSDQoFZmxhZ3MYCiABKA0SOwoJZXhlbXBsYXJzGAsgAygLMigub3BlbnRlbGVtZXRyeS5wcm90by5tZXRyaWNzLnYxLkV4ZW1wbGFyEhAKA21pbhgMIAEoAUgBiAEBEhAKA21heBgNIAEoAUgCiAEBEhYKDnplcm9fdGhyZXNob2xkGA4gASgBGjAKB0J1Y2tldHMSDgoGb2Zmc2V0GAEgASgREhUKDWJ1Y2tldF9jb3VudHMYAiADKARCBgoEX3N1bUIGCgRfbWluQgYKBF9tYXgixQIKEFN1bW1hcnlEYXRhUG9pbnQSOwoKYXR0cmlidXRlcxgHIAMoCzInLm9wZW50ZWxlbWV0cnkucHJvdG8uY29tbW9uLnYxLktleVZhbHVlEhwKFHN0YXJ0X3RpbWVfdW5peF9uYW5vGAIgASgGEhYKDnRpbWVfdW5peF9uYW5vGAMgASgGEg0KBWNvdW50GAQgASgGEgsKA3N1bRgFIAEoARJZCg9xdWFudGlsZV92YWx1ZXMYBiADKAsyQC5vcGVudGVsZW1ldHJ5LnByb3RvLm1ldHJpY3MudjEuU3VtbWFyeURhdGFQb2ludC5WYWx1ZUF0UXVhbnRpbGUSDQoFZmxhZ3MYCCABKA0aMgoPVmFsdWVBdFF1YW50aWxlEhAKCHF1YW50aWxlGAEgASgBEg0KBXZhbHVlGAIgASgBSgQIARACIsEBCghFeGVtcGxhchJEChNmaWx0ZXJlZF9hdHRyaWJ1dGVzGAcgAygLMicub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuS2V5VmFsdWUSFgoOdGltZV91bml4X25hbm8YAiABKAYSEwoJYXNfZG91YmxlGAMgASgBSAASEAoGYXNfaW50GAYgASgQSAASDwoHc3Bhbl9pZBgEIAEoDBIQCgh0cmFjZV9pZBgFIAEoDEIHCgV2YWx1ZUoECAEQAiqMAQoWQWdncmVnYXRpb25UZW1wb3JhbGl0eRInCiNBR0dSRUdBVElPTl9URU1QT1JBTElUWV9VTlNQRUNJRklFRBAAEiEKHUFHR1JFR0FUSU9OX1RFTVBPUkFMSVRZX0RFTFRBEAESJgoiQUdHUkVHQVRJT05fVEVNUE9SQUxJVFlfQ1VNVUxBVElWRRACKl4KDkRhdGFQb2ludEZsYWdzEh8KG0RBVEFfUE9JTlRfRkxBR1NfRE9fTk9UX1VTRRAAEisKJ0RBVEFfUE9JTlRfRkxBR1NfTk9fUkVDT1JERURfVkFMVUVfTUFTSxABQn8KIWlvLm9wZW50ZWxlbWV0cnkucHJvdG8ubWV0cmljcy52MUIMTWV0cmljc1Byb3RvUAFaKWdvLm9wZW50ZWxlbWV0cnkuaW8vcHJvdG8vb3RscC9tZXRyaWNzL3YxqgIeT3BlblRlbGVtZXRyeS5Qcm90by5NZXRyaWNzLlYxYgZwcm90bzM", [file_opentelemetry_proto_common_v1_common, file_opentelemetry_proto_resource_v1_resource])]);
|
|
66
|
-
/**
|
|
67
|
-
* Describes the message opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest.
|
|
68
|
-
* Use `create(ExportMetricsServiceRequestSchema)` to create a new message.
|
|
69
|
-
*/
|
|
70
|
-
const ExportMetricsServiceRequestSchema = /*@__PURE__*/ messageDesc(file_opentelemetry_proto_collector_metrics_v1_metrics_service, 0);
|
|
71
|
-
/**
|
|
72
|
-
* Describes the message opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse.
|
|
73
|
-
* Use `create(ExportMetricsServiceResponseSchema)` to create a new message.
|
|
74
|
-
*/
|
|
75
|
-
const ExportMetricsServiceResponseSchema = /*@__PURE__*/ messageDesc(file_opentelemetry_proto_collector_metrics_v1_metrics_service, 1);
|
|
76
|
-
// src/generated/opentelemetry/proto/collector/trace/v1/trace_service_pb.ts
|
|
77
|
-
/**
|
|
78
|
-
* Describes the file opentelemetry/proto/collector/trace/v1/trace_service.proto.
|
|
79
|
-
*/
|
|
80
|
-
const file_opentelemetry_proto_collector_trace_v1_trace_service = /*@__PURE__*/ fileDesc("CjpvcGVudGVsZW1ldHJ5L3Byb3RvL2NvbGxlY3Rvci90cmFjZS92MS90cmFjZV9zZXJ2aWNlLnByb3RvEiZvcGVudGVsZW1ldHJ5LnByb3RvLmNvbGxlY3Rvci50cmFjZS52MSJgChlFeHBvcnRUcmFjZVNlcnZpY2VSZXF1ZXN0EkMKDnJlc291cmNlX3NwYW5zGAEgAygLMisub3BlbnRlbGVtZXRyeS5wcm90by50cmFjZS52MS5SZXNvdXJjZVNwYW5zIngKGkV4cG9ydFRyYWNlU2VydmljZVJlc3BvbnNlEloKD3BhcnRpYWxfc3VjY2VzcxgBIAEoCzJBLm9wZW50ZWxlbWV0cnkucHJvdG8uY29sbGVjdG9yLnRyYWNlLnYxLkV4cG9ydFRyYWNlUGFydGlhbFN1Y2Nlc3MiSgoZRXhwb3J0VHJhY2VQYXJ0aWFsU3VjY2VzcxIWCg5yZWplY3RlZF9zcGFucxgBIAEoAxIVCg1lcnJvcl9tZXNzYWdlGAIgASgJMqIBCgxUcmFjZVNlcnZpY2USkQEKBkV4cG9ydBJBLm9wZW50ZWxlbWV0cnkucHJvdG8uY29sbGVjdG9yLnRyYWNlLnYxLkV4cG9ydFRyYWNlU2VydmljZVJlcXVlc3QaQi5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbGxlY3Rvci50cmFjZS52MS5FeHBvcnRUcmFjZVNlcnZpY2VSZXNwb25zZSIAQpwBCilpby5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbGxlY3Rvci50cmFjZS52MUIRVHJhY2VTZXJ2aWNlUHJvdG9QAVoxZ28ub3BlbnRlbGVtZXRyeS5pby9wcm90by9vdGxwL2NvbGxlY3Rvci90cmFjZS92MaoCJk9wZW5UZWxlbWV0cnkuUHJvdG8uQ29sbGVjdG9yLlRyYWNlLlYxYgZwcm90bzM", [/* @__PURE__ */ fileDesc("CihvcGVudGVsZW1ldHJ5L3Byb3RvL3RyYWNlL3YxL3RyYWNlLnByb3RvEhxvcGVudGVsZW1ldHJ5LnByb3RvLnRyYWNlLnYxIlEKClRyYWNlc0RhdGESQwoOcmVzb3VyY2Vfc3BhbnMYASADKAsyKy5vcGVudGVsZW1ldHJ5LnByb3RvLnRyYWNlLnYxLlJlc291cmNlU3BhbnMipwEKDVJlc291cmNlU3BhbnMSOwoIcmVzb3VyY2UYASABKAsyKS5vcGVudGVsZW1ldHJ5LnByb3RvLnJlc291cmNlLnYxLlJlc291cmNlEj0KC3Njb3BlX3NwYW5zGAIgAygLMigub3BlbnRlbGVtZXRyeS5wcm90by50cmFjZS52MS5TY29wZVNwYW5zEhIKCnNjaGVtYV91cmwYAyABKAlKBgjoBxDpByKXAQoKU2NvcGVTcGFucxJCCgVzY29wZRgBIAEoCzIzLm9wZW50ZWxlbWV0cnkucHJvdG8uY29tbW9uLnYxLkluc3RydW1lbnRhdGlvblNjb3BlEjEKBXNwYW5zGAIgAygLMiIub3BlbnRlbGVtZXRyeS5wcm90by50cmFjZS52MS5TcGFuEhIKCnNjaGVtYV91cmwYAyABKAkihAgKBFNwYW4SEAoIdHJhY2VfaWQYASABKAwSDwoHc3Bhbl9pZBgCIAEoDBITCgt0cmFjZV9zdGF0ZRgDIAEoCRIWCg5wYXJlbnRfc3Bhbl9pZBgEIAEoDBINCgVmbGFncxgQIAEoBxIMCgRuYW1lGAUgASgJEjkKBGtpbmQYBiABKA4yKy5vcGVudGVsZW1ldHJ5LnByb3RvLnRyYWNlLnYxLlNwYW4uU3BhbktpbmQSHAoUc3RhcnRfdGltZV91bml4X25hbm8YByABKAYSGgoSZW5kX3RpbWVfdW5peF9uYW5vGAggASgGEjsKCmF0dHJpYnV0ZXMYCSADKAsyJy5vcGVudGVsZW1ldHJ5LnByb3RvLmNvbW1vbi52MS5LZXlWYWx1ZRIgChhkcm9wcGVkX2F0dHJpYnV0ZXNfY291bnQYCiABKA0SOAoGZXZlbnRzGAsgAygLMigub3BlbnRlbGVtZXRyeS5wcm90by50cmFjZS52MS5TcGFuLkV2ZW50EhwKFGRyb3BwZWRfZXZlbnRzX2NvdW50GAwgASgNEjYKBWxpbmtzGA0gAygLMicub3BlbnRlbGVtZXRyeS5wcm90by50cmFjZS52MS5TcGFuLkxpbmsSGwoTZHJvcHBlZF9saW5rc19jb3VudBgOIAEoDRI0CgZzdGF0dXMYDyABKAsyJC5vcGVudGVsZW1ldHJ5LnByb3RvLnRyYWNlLnYxLlN0YXR1cxqMAQoFRXZlbnQSFgoOdGltZV91bml4X25hbm8YASABKAYSDAoEbmFtZRgCIAEoCRI7CgphdHRyaWJ1dGVzGAMgAygLMicub3BlbnRlbGVtZXRyeS5wcm90by5jb21tb24udjEuS2V5VmFsdWUSIAoYZHJvcHBlZF9hdHRyaWJ1dGVzX2NvdW50GAQgASgNGqwBCgRMaW5rEhAKCHRyYWNlX2lkGAEgASgMEg8KB3NwYW5faWQYAiABKAwSEwoLdHJhY2Vfc3RhdGUYAyABKAkSOwoKYXR0cmlidXRlcxgEIAMoCzInLm9wZW50ZWxlbWV0cnkucHJvdG8uY29tbW9uLnYxLktleVZhbHVlEiAKGGRyb3BwZWRfYXR0cmlidXRlc19jb3VudBgFIAEoDRINCgVmbGFncxgGIAEoByKZAQoIU3BhbktpbmQSGQoVU1BBTl9LSU5EX1VOU1BFQ0lGSUVEEAASFgoSU1BBTl9LSU5EX0lOVEVSTkFMEAESFAoQU1BBTl9LSU5EX1NFUlZFUhACEhQKEFNQQU5fS0lORF9DTElFTlQQAxIWChJTUEFOX0tJTkRfUFJPRFVDRVIQBBIWChJTUEFOX0tJTkRfQ09OU1VNRVIQBSKuAQoGU3RhdHVzEg8KB21lc3NhZ2UYAiABKAkSPQoEY29kZRgDIAEoDjIvLm9wZW50ZWxlbWV0cnkucHJvdG8udHJhY2UudjEuU3RhdHVzLlN0YXR1c0NvZGUiTgoKU3RhdHVzQ29kZRIVChFTVEFUVVNfQ09ERV9VTlNFVBAAEhIKDlNUQVRVU19DT0RFX09LEAESFQoRU1RBVFVTX0NPREVfRVJST1IQAkoECAEQAiqcAQoJU3BhbkZsYWdzEhkKFVNQQU5fRkxBR1NfRE9fTk9UX1VTRRAAEiAKG1NQQU5fRkxBR1NfVFJBQ0VfRkxBR1NfTUFTSxD/ARIqCiVTUEFOX0ZMQUdTX0NPTlRFWFRfSEFTX0lTX1JFTU9URV9NQVNLEIACEiYKIVNQQU5fRkxBR1NfQ09OVEVYVF9JU19SRU1PVEVfTUFTSxCABEJ3Ch9pby5vcGVudGVsZW1ldHJ5LnByb3RvLnRyYWNlLnYxQgpUcmFjZVByb3RvUAFaJ2dvLm9wZW50ZWxlbWV0cnkuaW8vcHJvdG8vb3RscC90cmFjZS92MaoCHE9wZW5UZWxlbWV0cnkuUHJvdG8uVHJhY2UuVjFiBnByb3RvMw", [file_opentelemetry_proto_common_v1_common, file_opentelemetry_proto_resource_v1_resource])]);
|
|
81
|
-
/**
|
|
82
|
-
* Describes the message opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest.
|
|
83
|
-
* Use `create(ExportTraceServiceRequestSchema)` to create a new message.
|
|
84
|
-
*/
|
|
85
|
-
const ExportTraceServiceRequestSchema = /*@__PURE__*/ messageDesc(file_opentelemetry_proto_collector_trace_v1_trace_service, 0);
|
|
86
|
-
/**
|
|
87
|
-
* Describes the message opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse.
|
|
88
|
-
* Use `create(ExportTraceServiceResponseSchema)` to create a new message.
|
|
89
|
-
*/
|
|
90
|
-
const ExportTraceServiceResponseSchema = /*@__PURE__*/ messageDesc(file_opentelemetry_proto_collector_trace_v1_trace_service, 1);
|
|
91
|
-
// src/normalize.ts
|
|
92
|
-
const isObject = (value) => Predicate.isObject(value);
|
|
93
|
-
const isList = (value) => Array.isArray(value);
|
|
94
|
-
const listOf = (value) => Option.getOrElse(Option.liftPredicate(value, isList), () => []);
|
|
95
|
-
const fieldOf = (name) => (value) => pipe(Option.liftPredicate(value, isObject), Option.flatMap(Record.get(name)), Option.getOrNull);
|
|
96
|
-
const whenString = (convert) => (value) => Option.match(Option.liftPredicate(value, Predicate.isString), {
|
|
97
|
-
onSome: convert,
|
|
98
|
-
onNone: () => value
|
|
99
|
-
});
|
|
100
|
-
const mapTree = (readers) => (value) => {
|
|
101
|
-
const walk = (node) => Option.match(Option.liftPredicate(node, isList), {
|
|
102
|
-
onSome: Array.map(walk),
|
|
103
|
-
onNone: () => Option.match(Option.liftPredicate(node, isObject), {
|
|
104
|
-
onNone: () => node,
|
|
105
|
-
onSome: Record.map((inner, key) => Option.match(Record.get(readers, key), {
|
|
106
|
-
onSome: (read) => read(inner),
|
|
107
|
-
onNone: () => walk(inner)
|
|
108
|
-
}))
|
|
109
|
-
})
|
|
110
|
-
});
|
|
111
|
-
return walk(value);
|
|
112
|
-
};
|
|
113
|
-
const keyOf = (pair) => pipe(fieldOf("key")(pair), Option.liftPredicate(Predicate.isString), Option.getOrElse(() => ""));
|
|
114
|
-
const kvlist = (read) => (values) => pipe(listOf(values), Array.map((pair) => [keyOf(pair), read(fieldOf("value")(pair))]), Record.fromEntries);
|
|
115
|
-
const anyValue = (value) => {
|
|
116
|
-
const readers = {
|
|
117
|
-
intValue: Number,
|
|
118
|
-
arrayValue: (inner) => pipe(listOf(fieldOf("values")(inner)), Array.map(anyValue)),
|
|
119
|
-
kvlistValue: (inner) => kvlist(anyValue)(fieldOf("values")(inner))
|
|
120
|
-
};
|
|
121
|
-
return pipe(Option.liftPredicate(value, isObject), Option.flatMap((object) => Array.head(Record.toEntries(object))), Option.map(([kind, inner]) => Option.match(Record.get(readers, kind), {
|
|
122
|
-
onSome: (read) => read(inner),
|
|
123
|
-
onNone: () => inner
|
|
124
|
-
})), Option.getOrNull);
|
|
125
|
-
};
|
|
126
|
-
const attributes = kvlist(anyValue);
|
|
127
|
-
const reencode = (decode, encode) => (text) => Result.match(decode(text), {
|
|
128
|
-
onSuccess: encode,
|
|
129
|
-
onFailure: () => text
|
|
130
|
-
});
|
|
131
|
-
const toHex = whenString(reencode(Base64.decode, Hex.encode));
|
|
132
|
-
const toBase64 = whenString(reencode(Hex.decode, Base64.encode));
|
|
133
|
-
const idsAs = (convert) => ({
|
|
134
|
-
traceId: convert,
|
|
135
|
-
spanId: convert,
|
|
136
|
-
parentSpanId: convert
|
|
137
|
-
});
|
|
138
|
-
const normalize = mapTree({
|
|
139
|
-
...idsAs(toHex),
|
|
140
|
-
attributes,
|
|
141
|
-
body: anyValue
|
|
142
|
-
});
|
|
143
|
-
const hexIdsToBase64 = mapTree(idsAs(toBase64));
|
|
144
|
-
// src/protocol.ts
|
|
145
|
-
const taggedError$1 = Schema.TaggedError;
|
|
146
|
-
var MalformedExport = class extends taggedError$1()("MalformedExport", { message: Schema.String }) {};
|
|
147
|
-
const ENDPOINTS = [
|
|
148
|
-
{
|
|
149
|
-
key: "traces",
|
|
150
|
-
httpPath: "/v1/traces",
|
|
151
|
-
grpcPath: "/opentelemetry.proto.collector.trace.v1.TraceService/Export",
|
|
152
|
-
request: ExportTraceServiceRequestSchema,
|
|
153
|
-
response: ExportTraceServiceResponseSchema
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
key: "metrics",
|
|
157
|
-
httpPath: "/v1/metrics",
|
|
158
|
-
grpcPath: "/opentelemetry.proto.collector.metrics.v1.MetricsService/Export",
|
|
159
|
-
request: ExportMetricsServiceRequestSchema,
|
|
160
|
-
response: ExportMetricsServiceResponseSchema
|
|
161
|
-
},
|
|
162
|
-
{
|
|
163
|
-
key: "logs",
|
|
164
|
-
httpPath: "/v1/logs",
|
|
165
|
-
grpcPath: "/opentelemetry.proto.collector.logs.v1.LogsService/Export",
|
|
166
|
-
request: ExportLogsServiceRequestSchema,
|
|
167
|
-
response: ExportLogsServiceResponseSchema
|
|
168
|
-
}
|
|
169
|
-
];
|
|
170
|
-
const malformed = (cause) => MalformedExport.make({ message: String(cause) });
|
|
171
|
-
const decodeJsonText = Schema.decodeUnknownEffect(Schema.fromJsonString(Schema.MutableJson));
|
|
172
|
-
const parse = (read) => Effect.try({
|
|
173
|
-
try: read,
|
|
174
|
-
catch: malformed
|
|
175
|
-
});
|
|
176
|
-
const fromProtobuf = (endpoint) => (body) => parse(() => fromBinary(endpoint.request, body));
|
|
177
|
-
const fromOtlpJson = (endpoint) => (body) => decodeJsonText(new TextDecoder().decode(body)).pipe(Effect.mapError(malformed), Effect.flatMap((json) => parse(() => fromJson(endpoint.request, hexIdsToBase64(json), { ignoreUnknownFields: true }))));
|
|
178
|
-
const normalized = (endpoint) => (message) => Effect.try({
|
|
179
|
-
try: () => normalize(toJson(endpoint.request, message)),
|
|
180
|
-
catch: malformed
|
|
181
|
-
});
|
|
182
|
-
const encoded = (endpoint) => (message) => toBinary(endpoint.request, message);
|
|
183
|
-
const gunzip = (body) => Effect.tryPromise({
|
|
184
|
-
try: () => new Response(new Blob([Uint8Array.from(body)]).stream().pipeThrough(new DecompressionStream("gzip"))).bytes(),
|
|
185
|
-
catch: malformed
|
|
186
|
-
});
|
|
187
|
-
const gunzipWhen = (compressed) => (body) => Option.match(Option.liftPredicate(body, () => compressed), {
|
|
188
|
-
onSome: gunzip,
|
|
189
|
-
onNone: () => Effect.succeed(body)
|
|
190
|
-
});
|
|
191
|
-
const LOOPBACK = "127.0.0.1";
|
|
192
|
-
const originOf = (address) => Option.match(Option.liftPredicate(address, Predicate.hasProperty("port")), {
|
|
193
|
-
onSome: ({ port }) => `http://${LOOPBACK}:${String(port)}`,
|
|
194
|
-
onNone: () => ""
|
|
195
|
-
});
|
|
196
|
-
const emptyResponse = (endpoint) => toBinary(endpoint.response, create(endpoint.response));
|
|
197
|
-
// src/grpc.ts
|
|
198
|
-
const FRAME_HEADER_BYTES = 5;
|
|
199
|
-
const LENGTH_OFFSET = 1;
|
|
200
|
-
const COMPRESSED_FLAG = 1;
|
|
201
|
-
const FIRST_BYTE = 0;
|
|
202
|
-
const ANY_FREE_PORT = 0;
|
|
203
|
-
const GrpcStatus = {
|
|
204
|
-
ok: "0",
|
|
205
|
-
invalidArgument: "3",
|
|
206
|
-
unimplemented: "12",
|
|
207
|
-
unavailable: "14"
|
|
208
|
-
};
|
|
209
|
-
const frame = (message) => {
|
|
210
|
-
const framed = new Uint8Array(FRAME_HEADER_BYTES + message.length);
|
|
211
|
-
new DataView(framed.buffer).setUint32(LENGTH_OFFSET, message.length);
|
|
212
|
-
framed.set(message, FRAME_HEADER_BYTES);
|
|
213
|
-
return framed;
|
|
214
|
-
};
|
|
215
|
-
const unframe = (request) => (framed) => gunzipWhen(framed[FIRST_BYTE] === COMPRESSED_FLAG && request.headers["grpc-encoding"] === "gzip")(framed.subarray(FRAME_HEADER_BYTES));
|
|
216
|
-
const reply = (request) => (status, message) => {
|
|
217
|
-
NodeHttpServerRequest.toServerResponse(request).addTrailers({ "grpc-status": status });
|
|
218
|
-
return HttpServerResponse.uint8Array(message, { contentType: "application/grpc" });
|
|
219
|
-
};
|
|
220
|
-
const rejected = (request, status) => () => reply(request)(status, /* @__PURE__ */ new Uint8Array());
|
|
221
|
-
const accepted = (request, endpoint) => () => reply(request)(GrpcStatus.ok, frame(emptyResponse(endpoint)));
|
|
222
|
-
const receive$1 = (store, request) => (endpoint) => request.arrayBuffer.pipe(Effect.map((buffer) => new Uint8Array(buffer)), Effect.flatMap(unframe(request)), Effect.flatMap(fromProtobuf(endpoint)), Effect.flatMap(store(endpoint)), Effect.map(accepted(request, endpoint)), Effect.catchTags({
|
|
223
|
-
MalformedExport: () => Effect.sync(rejected(request, GrpcStatus.invalidArgument)),
|
|
224
|
-
ForwardFailed: () => Effect.sync(rejected(request, GrpcStatus.unavailable))
|
|
225
|
-
}));
|
|
226
|
-
const exportCall = (store) => HttpServerRequest.HttpServerRequest.pipe(Effect.flatMap((request) => Option.match(Array.findFirst(ENDPOINTS, ({ grpcPath }) => grpcPath === request.url), {
|
|
227
|
-
onNone: () => Effect.sync(() => reply(request)(GrpcStatus.unimplemented, /* @__PURE__ */ new Uint8Array())),
|
|
228
|
-
onSome: receive$1(store, request)
|
|
229
|
-
})));
|
|
230
|
-
const serveGrpc = (store) => NodeHttpServer.make(() => createServer(), {
|
|
231
|
-
port: ANY_FREE_PORT,
|
|
232
|
-
host: LOOPBACK
|
|
233
|
-
}).pipe(Effect.orDie, Effect.tap((server) => server.serve(exportCall(store))), Effect.map((server) => originOf(server.address)));
|
|
234
|
-
// src/forward.ts
|
|
235
|
-
const taggedError = Schema.TaggedError;
|
|
236
|
-
var ForwardFailed = class extends taggedError()("ForwardFailed", { message: Schema.String }) {};
|
|
237
|
-
const failure = (origin) => (reason) => ForwardFailed.make({ message: `${origin}: ${reason}` });
|
|
238
|
-
const causedBy = (origin) => (cause) => failure(origin)(String(cause));
|
|
239
|
-
const statusOf = (headers) => Option.map(Option.fromNullishOr(headers["grpc-status"]), String);
|
|
240
|
-
const succeeded = (origin) => (code) => Effect.fromOption(Option.liftPredicate(code, (status) => status === GrpcStatus.ok)).pipe(Effect.asVoid, Effect.mapError(() => failure(origin)(`grpc-status ${code}`)));
|
|
241
|
-
const outcome = (origin) => (status) => Effect.fromOption(status).pipe(Effect.mapError(() => failure(origin)("no grpc-status")), Effect.flatMap(succeeded(origin)));
|
|
242
|
-
const requestHeaders = (endpoint) => ({
|
|
243
|
-
":method": "POST",
|
|
244
|
-
":path": endpoint.grpcPath,
|
|
245
|
-
"content-type": "application/grpc",
|
|
246
|
-
te: "trailers"
|
|
247
|
-
});
|
|
248
|
-
const exportTo = (origin, endpoint) => (message) => Effect.acquireUseRelease(Effect.sync(() => connect(origin)), (session) => Effect.callback((resume) => {
|
|
249
|
-
const status = MutableRef.make(Option.none());
|
|
250
|
-
const remember = (headers) => {
|
|
251
|
-
MutableRef.update(status, Option.orElse(() => statusOf(headers)));
|
|
252
|
-
};
|
|
253
|
-
const broken = (cause) => {
|
|
254
|
-
resume(Effect.fail(causedBy(origin)(cause)));
|
|
255
|
-
};
|
|
256
|
-
session.on("error", broken);
|
|
257
|
-
session.request(requestHeaders(endpoint)).on("response", remember).on("trailers", remember).on("error", broken).on("close", () => {
|
|
258
|
-
resume(Effect.succeed(MutableRef.get(status)));
|
|
259
|
-
}).resume().end(frame(message));
|
|
260
|
-
}).pipe(Effect.flatMap(outcome(origin))), (session) => Effect.sync(() => {
|
|
261
|
-
session.close();
|
|
262
|
-
}));
|
|
263
|
-
const forwardTo = (origins) => (endpoint) => (message) => Effect.forEach(origins, (origin) => exportTo(origin, endpoint)(message), { discard: true }).pipe(Effect.withSpan("vitest-otlp.forward"));
|
|
264
|
-
// src/http.ts
|
|
265
|
-
const HTTP_BAD_REQUEST = 400;
|
|
266
|
-
const HTTP_NOT_FOUND = 404;
|
|
267
|
-
const HTTP_SERVICE_UNAVAILABLE = 503;
|
|
268
|
-
const JSON_CONTENT_TYPE = "application/json";
|
|
269
|
-
const PROTOBUF_CONTENT_TYPE = "application/x-protobuf";
|
|
270
|
-
const JSON_ENCODING = {
|
|
271
|
-
decode: fromOtlpJson,
|
|
272
|
-
respond: () => HttpServerResponse.text("{}", { contentType: JSON_CONTENT_TYPE })
|
|
273
|
-
};
|
|
274
|
-
const PROTOBUF_ENCODING = {
|
|
275
|
-
decode: fromProtobuf,
|
|
276
|
-
respond: (endpoint) => HttpServerResponse.uint8Array(emptyResponse(endpoint), { contentType: PROTOBUF_CONTENT_TYPE })
|
|
277
|
-
};
|
|
278
|
-
const headerStartsWith = (request, name) => (expected) => pipe(Option.fromNullishOr(request.headers[name]), Option.exists(String$1.startsWith(expected)));
|
|
279
|
-
const encodingOf = (request) => Option.match(Option.liftPredicate(JSON_ENCODING, () => headerStartsWith(request, "content-type")(JSON_CONTENT_TYPE)), {
|
|
280
|
-
onSome: (json) => json,
|
|
281
|
-
onNone: () => PROTOBUF_ENCODING
|
|
282
|
-
});
|
|
283
|
-
const receive = (store, request) => (endpoint) => Effect.gen(function* receiveExport() {
|
|
284
|
-
const encoding = encodingOf(request);
|
|
285
|
-
const raw = new Uint8Array(yield* request.arrayBuffer);
|
|
286
|
-
const body = yield* gunzipWhen(headerStartsWith(request, "content-encoding")("gzip"))(raw);
|
|
287
|
-
yield* store(endpoint)(yield* encoding.decode(endpoint)(body));
|
|
288
|
-
return encoding.respond(endpoint);
|
|
289
|
-
}).pipe(Effect.catchTags({
|
|
290
|
-
MalformedExport: (malformed) => Effect.succeed(HttpServerResponse.text(malformed.message, { status: HTTP_BAD_REQUEST })),
|
|
291
|
-
ForwardFailed: (unforwarded) => Effect.succeed(HttpServerResponse.text(unforwarded.message, { status: HTTP_SERVICE_UNAVAILABLE }))
|
|
292
|
-
}));
|
|
293
|
-
const exportRequest = (store) => HttpServerRequest.HttpServerRequest.pipe(Effect.flatMap((request) => Option.match(Array.findFirst(ENDPOINTS, ({ httpPath }) => httpPath === request.url), {
|
|
294
|
-
onNone: () => Effect.succeed(HttpServerResponse.empty({ status: HTTP_NOT_FOUND })),
|
|
295
|
-
onSome: receive(store, request)
|
|
296
|
-
})));
|
|
297
|
-
const serveHttp = (store) => Layer.build(NodeHttpServer.layerTest).pipe(Effect.orDie, Effect.map(Context.get(HttpServer.HttpServer)), Effect.tap((server) => server.serve(exportRequest(store))), Effect.map((server) => originOf(server.address)));
|
|
298
|
-
// src/receiver.ts
|
|
299
|
-
const NOTHING_RECEIVED = {
|
|
300
|
-
traces: [],
|
|
301
|
-
logs: [],
|
|
302
|
-
metrics: []
|
|
303
|
-
};
|
|
304
|
-
const startReceiver = (forwardOrigins) => Effect.gen(function* receiverStart() {
|
|
305
|
-
const received = MutableRef.make(NOTHING_RECEIVED);
|
|
306
|
-
const forward = forwardTo(forwardOrigins);
|
|
307
|
-
const save = (key) => (request) => Effect.sync(() => {
|
|
308
|
-
MutableRef.update(received, (requests) => ({
|
|
309
|
-
...requests,
|
|
310
|
-
[key]: [...requests[key], request]
|
|
311
|
-
}));
|
|
312
|
-
});
|
|
313
|
-
const store = (endpoint) => (message) => forward(endpoint)(encoded(endpoint)(message)).pipe(Effect.andThen(normalized(endpoint)(message)), Effect.flatMap(save(endpoint.key)));
|
|
314
|
-
return {
|
|
315
|
-
address: {
|
|
316
|
-
httpEndpoint: yield* serveHttp(store),
|
|
317
|
-
grpcEndpoint: yield* serveGrpc(store)
|
|
318
|
-
},
|
|
319
|
-
requests: Effect.sync(() => MutableRef.get(received)),
|
|
320
|
-
clear: Effect.sync(() => {
|
|
321
|
-
MutableRef.set(received, NOTHING_RECEIVED);
|
|
322
|
-
})
|
|
323
|
-
};
|
|
324
|
-
}).pipe(Effect.withSpan("vitest-otlp.receiver.start"));
|
|
325
|
-
// src/setup.ts
|
|
326
|
-
const scope = Scope.makeUnsafe();
|
|
327
|
-
const forwardOrigins = Option.getOrElse(Option.fromNullishOr(inject(FORWARD_KEY)), () => []);
|
|
328
|
-
const receiver = await Effect.runPromise(Scope.provide(startReceiver(forwardOrigins), scope));
|
|
329
|
-
setReceiver(Option.some(receiver));
|
|
330
|
-
Object.assign(process.env, receiverEnvironment(receiver.address)(process.env));
|
|
331
|
-
const stop = Effect.sync(() => {
|
|
332
|
-
setReceiver(Option.none());
|
|
333
|
-
}).pipe(Effect.andThen(Scope.close(scope, Exit.void)));
|
|
334
|
-
afterAll(() => Effect.runPromise(stop));
|
|
335
|
-
export {};
|
|
336
|
-
|
|
337
|
-
//# sourceMappingURL=setup.mjs.map
|