@pydantic/logfire-browser 0.6.0 → 0.7.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/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var l=Object.defineProperty;var f=(e,r,t)=>r in e?l(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var g=(e,r,t)=>f(e,typeof r!="symbol"?r+"":r,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@opentelemetry/api"),E=require("@opentelemetry/context-zone"),_=require("@opentelemetry/exporter-trace-otlp-http"),R=require("@opentelemetry/instrumentation"),b=require("@opentelemetry/resources"),u=require("@opentelemetry/sdk-trace-web"),n=require("@opentelemetry/semantic-conventions"),a=require("@opentelemetry/semantic-conventions/incubating"),s=require("@pydantic/logfire-api");function A(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const i=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const d=A(s),T="target_xpath",w="event_type";function L(e){e.diagLogLevel!==void 0&&o.diag.setLogger(new o.DiagConsoleLogger,e.diagLogLevel),e.scrubbing!==void 0&&d.configureLogfireApi({scrubbing:e.scrubbing});const r=b.resourceFromAttributes({[a.ATTR_BROWSER_LANGUAGE]:navigator.language,[n.ATTR_SERVICE_NAME]:e.serviceName??"logfire-browser",[n.ATTR_SERVICE_VERSION]:e.serviceVersion??"0.0.1",[n.ATTR_TELEMETRY_SDK_LANGUAGE]:n.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS,[n.ATTR_TELEMETRY_SDK_NAME]:"logfire-browser",...e.environment?{[a.ATTR_DEPLOYMENT_ENVIRONMENT_NAME]:e.environment}:{},[n.ATTR_TELEMETRY_SDK_VERSION]:"0.6.0",...navigator.userAgentData?{[a.ATTR_BROWSER_BRANDS]:navigator.userAgentData.brands.map(c=>`${c.brand} ${c.version}`),[a.ATTR_BROWSER_MOBILE]:navigator.userAgentData.mobile,[a.ATTR_BROWSER_PLATFORM]:navigator.userAgentData.platform}:{[n.ATTR_USER_AGENT_ORIGINAL]:navigator.userAgent}});o.diag.info("logfire-browser: starting");const t=new u.WebTracerProvider({idGenerator:new s.ULIDGenerator,resource:r,spanProcessors:[new m(new u.BatchSpanProcessor(new _.OTLPTraceExporter({...e.traceExporterConfig,url:e.traceUrl}),e.batchSpanProcessorConfig))]});e.enableZoneContextManager!==!1&&(o.diag.info("logfire-browser: enable zone context manager"),t.register({contextManager:new E.ZoneContextManager}));const i=R.registerInstrumentations({instrumentations:e.instrumentations??[],tracerProvider:t});return async()=>{o.diag.info("logfire-browser: shutting down"),i(),await t.forceFlush(),await t.shutdown(),o.diag.info("logfire-browser: shut down complete")}}class m{constructor(r){g(this,"wrapped");this.wrapped=r}async forceFlush(){return this.wrapped.forceFlush()}onEnd(r){console.log("on end",r),this.wrapped.onEnd(r)}onStart(r,t){if(a.ATTR_HTTP_URL in r.attributes){const i=new URL(r.attributes[a.ATTR_HTTP_URL]);Reflect.set(r,"name",`${r.name} ${i.pathname}`)}T in r.attributes&&Reflect.set(r,"name",`${r.attributes[w]??"unknown"} ${r.attributes[T]??""}`),this.wrapped.onStart(r,t)}async shutdown(){return this.wrapped.shutdown()}}Object.defineProperty(exports,"DiagLogLevel",{enumerable:!0,get:()=>o.DiagLogLevel});exports.configure=L;Object.keys(s).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>s[e]})});
1
+ "use strict";var f=Object.defineProperty;var E=(e,r,t)=>r in e?f(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t;var g=(e,r,t)=>E(e,typeof r!="symbol"?r+"":r,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@opentelemetry/api"),d=require("@opentelemetry/context-zone"),_=require("@opentelemetry/instrumentation"),R=require("@opentelemetry/resources"),l=require("@opentelemetry/sdk-trace-web"),o=require("@opentelemetry/semantic-conventions"),i=require("@opentelemetry/semantic-conventions/incubating"),c=require("@pydantic/logfire-api"),u=require("@opentelemetry/otlp-exporter-base"),b=require("@opentelemetry/otlp-exporter-base/browser-http"),A=require("@opentelemetry/otlp-transformer");function p(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const m=p(c);class L extends u.OTLPExporterBase{constructor(r,t){const s={...u.mergeOtlpSharedConfigurationWithDefaults({compression:r.compression,concurrencyLimit:r.concurrencyLimit,timeoutMillis:r.timeoutMillis},{},u.getSharedConfigurationDefaults()),agentOptions:{keepAlive:!0},headers:()=>({"Content-Type":"application/json",...r.headers??{},...t?t():{}}),url:r.url??"http://localhost:4318/v1/traces"};super(b.createOtlpXhrExportDelegate(s,A.JsonTraceSerializer))}}const T="target_xpath",h="event_type";function w(){return{}}function O(e){e.diagLogLevel!==void 0&&a.diag.setLogger(new a.DiagConsoleLogger,e.diagLogLevel),e.scrubbing!==void 0&&m.configureLogfireApi({scrubbing:e.scrubbing});const r=R.resourceFromAttributes({[i.ATTR_BROWSER_LANGUAGE]:navigator.language,[o.ATTR_SERVICE_NAME]:e.serviceName??"logfire-browser",[o.ATTR_SERVICE_VERSION]:e.serviceVersion??"0.0.1",[o.ATTR_TELEMETRY_SDK_LANGUAGE]:o.TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS,[o.ATTR_TELEMETRY_SDK_NAME]:"logfire-browser",...e.environment?{[i.ATTR_DEPLOYMENT_ENVIRONMENT_NAME]:e.environment}:{},[o.ATTR_TELEMETRY_SDK_VERSION]:"0.7.0",...navigator.userAgentData?{[i.ATTR_BROWSER_BRANDS]:navigator.userAgentData.brands.map(s=>`${s.brand} ${s.version}`),[i.ATTR_BROWSER_MOBILE]:navigator.userAgentData.mobile,[i.ATTR_BROWSER_PLATFORM]:navigator.userAgentData.platform}:{[o.ATTR_USER_AGENT_ORIGINAL]:navigator.userAgent}});a.diag.info("logfire-browser: starting");const t=new l.WebTracerProvider({idGenerator:new c.ULIDGenerator,resource:r,spanProcessors:[new S(new l.BatchSpanProcessor(new L({...e.traceExporterConfig,url:e.traceUrl},e.traceExporterHeaders??w),e.batchSpanProcessorConfig))]});e.enableZoneContextManager!==!1&&(a.diag.info("logfire-browser: enable zone context manager"),t.register({contextManager:new d.ZoneContextManager}));const n=_.registerInstrumentations({instrumentations:e.instrumentations??[],tracerProvider:t});return async()=>{a.diag.info("logfire-browser: shutting down"),n(),await t.forceFlush(),await t.shutdown(),a.diag.info("logfire-browser: shut down complete")}}class S{constructor(r){g(this,"wrapped");this.wrapped=r}async forceFlush(){return this.wrapped.forceFlush()}onEnd(r){this.wrapped.onEnd(r)}onStart(r,t){if(i.ATTR_HTTP_URL in r.attributes){const n=new URL(r.attributes[i.ATTR_HTTP_URL]);Reflect.set(r,"name",`${r.name} ${n.pathname}`)}T in r.attributes&&Reflect.set(r,"name",`${r.attributes[h]??"unknown"} ${r.attributes[T]??""}`),this.wrapped.onStart(r,t)}async shutdown(){return this.wrapped.shutdown()}}Object.defineProperty(exports,"DiagLogLevel",{enumerable:!0,get:()=>a.DiagLogLevel});exports.configure=O;Object.keys(c).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(exports,e)&&Object.defineProperty(exports,e,{enumerable:!0,get:()=>c[e]})});
package/dist/index.d.cts CHANGED
@@ -46,6 +46,11 @@ export declare interface LogfireConfigOptions {
46
46
  * configures the trace exporter.
47
47
  */
48
48
  traceExporterConfig?: TraceExporterConfig;
49
+ /**
50
+ * Any additional HTTP headers to be sent with the trace exporter requests.
51
+ * This is useful for authentication or other custom headers.
52
+ */
53
+ traceExporterHeaders?: () => Record<string, string>;
49
54
  /**
50
55
  * The URL of your trace exporter proxy endpoint.
51
56
  */
package/dist/index.d.ts CHANGED
@@ -46,6 +46,11 @@ export declare interface LogfireConfigOptions {
46
46
  * configures the trace exporter.
47
47
  */
48
48
  traceExporterConfig?: TraceExporterConfig;
49
+ /**
50
+ * Any additional HTTP headers to be sent with the trace exporter requests.
51
+ * This is useful for authentication or other custom headers.
52
+ */
53
+ traceExporterHeaders?: () => Record<string, string>;
49
54
  /**
50
55
  * The URL of your trace exporter proxy endpoint.
51
56
  */
package/dist/index.js CHANGED
@@ -1,55 +1,86 @@
1
- var T = Object.defineProperty;
2
- var E = (e, r, t) => r in e ? T(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
3
- var i = (e, r, t) => E(e, typeof r != "symbol" ? r + "" : r, t);
4
- import { diag as o, DiagConsoleLogger as c } from "@opentelemetry/api";
5
- import { DiagLogLevel as k } from "@opentelemetry/api";
6
- import { ZoneContextManager as f } from "@opentelemetry/context-zone";
7
- import { OTLPTraceExporter as R } from "@opentelemetry/exporter-trace-otlp-http";
8
- import { registerInstrumentations as u } from "@opentelemetry/instrumentation";
9
- import { resourceFromAttributes as _ } from "@opentelemetry/resources";
10
- import { WebTracerProvider as m, BatchSpanProcessor as A } from "@opentelemetry/sdk-trace-web";
11
- import { TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS as l, ATTR_USER_AGENT_ORIGINAL as w, ATTR_TELEMETRY_SDK_VERSION as L, ATTR_TELEMETRY_SDK_NAME as b, ATTR_TELEMETRY_SDK_LANGUAGE as d, ATTR_SERVICE_VERSION as S, ATTR_SERVICE_NAME as v } from "@opentelemetry/semantic-conventions";
12
- import { ATTR_BROWSER_PLATFORM as p, ATTR_BROWSER_MOBILE as h, ATTR_BROWSER_BRANDS as N, ATTR_DEPLOYMENT_ENVIRONMENT_NAME as M, ATTR_BROWSER_LANGUAGE as D, ATTR_HTTP_URL as s } from "@opentelemetry/semantic-conventions/incubating";
13
- import * as O from "@pydantic/logfire-api";
14
- import { ULIDGenerator as P } from "@pydantic/logfire-api";
1
+ var u = Object.defineProperty;
2
+ var g = (e, r, t) => r in e ? u(e, r, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[r] = t;
3
+ var i = (e, r, t) => g(e, typeof r != "symbol" ? r + "" : r, t);
4
+ import { diag as o, DiagConsoleLogger as T } from "@opentelemetry/api";
5
+ import { DiagLogLevel as er } from "@opentelemetry/api";
6
+ import { ZoneContextManager as m } from "@opentelemetry/context-zone";
7
+ import { registerInstrumentations as E } from "@opentelemetry/instrumentation";
8
+ import { resourceFromAttributes as f } from "@opentelemetry/resources";
9
+ import { WebTracerProvider as l, BatchSpanProcessor as R } from "@opentelemetry/sdk-trace-web";
10
+ import { TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS as A, ATTR_USER_AGENT_ORIGINAL as _, ATTR_TELEMETRY_SDK_VERSION as p, ATTR_TELEMETRY_SDK_NAME as d, ATTR_TELEMETRY_SDK_LANGUAGE as h, ATTR_SERVICE_VERSION as L, ATTR_SERVICE_NAME as w } from "@opentelemetry/semantic-conventions";
11
+ import { ATTR_BROWSER_PLATFORM as b, ATTR_BROWSER_MOBILE as S, ATTR_BROWSER_BRANDS as v, ATTR_DEPLOYMENT_ENVIRONMENT_NAME as x, ATTR_BROWSER_LANGUAGE as D, ATTR_HTTP_URL as s } from "@opentelemetry/semantic-conventions/incubating";
12
+ import * as N from "@pydantic/logfire-api";
13
+ import { ULIDGenerator as M } from "@pydantic/logfire-api";
15
14
  export * from "@pydantic/logfire-api";
16
- const g = "target_xpath", G = "event_type";
17
- function K(e) {
18
- e.diagLogLevel !== void 0 && o.setLogger(new c(), e.diagLogLevel), e.scrubbing !== void 0 && O.configureLogfireApi({ scrubbing: e.scrubbing });
19
- const r = _({
15
+ import { OTLPExporterBase as O, mergeOtlpSharedConfigurationWithDefaults as C, getSharedConfigurationDefaults as P } from "@opentelemetry/otlp-exporter-base";
16
+ import { createOtlpXhrExportDelegate as G } from "@opentelemetry/otlp-exporter-base/browser-http";
17
+ import { JsonTraceSerializer as I } from "@opentelemetry/otlp-transformer";
18
+ class B extends O {
19
+ constructor(r, t) {
20
+ const a = {
21
+ ...C(
22
+ {
23
+ compression: r.compression,
24
+ concurrencyLimit: r.concurrencyLimit,
25
+ timeoutMillis: r.timeoutMillis
26
+ },
27
+ {},
28
+ P()
29
+ ),
30
+ agentOptions: { keepAlive: !0 },
31
+ headers: () => ({
32
+ "Content-Type": "application/json",
33
+ ...r.headers ?? {},
34
+ ...t ? t() : {}
35
+ }),
36
+ url: r.url ?? "http://localhost:4318/v1/traces"
37
+ };
38
+ super(G(a, I));
39
+ }
40
+ }
41
+ const c = "target_xpath", U = "event_type";
42
+ function y() {
43
+ return {};
44
+ }
45
+ function q(e) {
46
+ e.diagLogLevel !== void 0 && o.setLogger(new T(), e.diagLogLevel), e.scrubbing !== void 0 && N.configureLogfireApi({ scrubbing: e.scrubbing });
47
+ const r = f({
20
48
  [D]: navigator.language,
21
- [v]: e.serviceName ?? "logfire-browser",
22
- [S]: e.serviceVersion ?? "0.0.1",
23
- [d]: l,
24
- [b]: "logfire-browser",
25
- ...e.environment ? { [M]: e.environment } : {},
49
+ [w]: e.serviceName ?? "logfire-browser",
50
+ [L]: e.serviceVersion ?? "0.0.1",
51
+ [h]: A,
52
+ [d]: "logfire-browser",
53
+ ...e.environment ? { [x]: e.environment } : {},
26
54
  // eslint-disable-next-line no-undef
27
- [L]: "0.6.0",
55
+ [p]: "0.7.0",
28
56
  ...navigator.userAgentData ? {
29
- [N]: navigator.userAgentData.brands.map((a) => `${a.brand} ${a.version}`),
30
- [h]: navigator.userAgentData.mobile,
31
- [p]: navigator.userAgentData.platform
57
+ [v]: navigator.userAgentData.brands.map((a) => `${a.brand} ${a.version}`),
58
+ [S]: navigator.userAgentData.mobile,
59
+ [b]: navigator.userAgentData.platform
32
60
  } : {
33
- [w]: navigator.userAgent
61
+ [_]: navigator.userAgent
34
62
  }
35
63
  });
36
64
  o.info("logfire-browser: starting");
37
- const t = new m({
38
- idGenerator: new P(),
65
+ const t = new l({
66
+ idGenerator: new M(),
39
67
  resource: r,
40
68
  spanProcessors: [
41
- new x(
42
- new A(
43
- new R({ ...e.traceExporterConfig, url: e.traceUrl }),
69
+ new V(
70
+ new R(
71
+ new B(
72
+ { ...e.traceExporterConfig, url: e.traceUrl },
73
+ e.traceExporterHeaders ?? y
74
+ ),
44
75
  e.batchSpanProcessorConfig
45
76
  )
46
77
  )
47
78
  ]
48
79
  });
49
80
  e.enableZoneContextManager !== !1 && (o.info("logfire-browser: enable zone context manager"), t.register({
50
- contextManager: new f()
81
+ contextManager: new m()
51
82
  }));
52
- const n = u({
83
+ const n = E({
53
84
  instrumentations: e.instrumentations ?? [],
54
85
  tracerProvider: t
55
86
  });
@@ -57,7 +88,7 @@ function K(e) {
57
88
  o.info("logfire-browser: shutting down"), n(), await t.forceFlush(), await t.shutdown(), o.info("logfire-browser: shut down complete");
58
89
  };
59
90
  }
60
- class x {
91
+ class V {
61
92
  constructor(r) {
62
93
  i(this, "wrapped");
63
94
  this.wrapped = r;
@@ -66,20 +97,20 @@ class x {
66
97
  return this.wrapped.forceFlush();
67
98
  }
68
99
  onEnd(r) {
69
- console.log("on end", r), this.wrapped.onEnd(r);
100
+ this.wrapped.onEnd(r);
70
101
  }
71
102
  onStart(r, t) {
72
103
  if (s in r.attributes) {
73
104
  const n = new URL(r.attributes[s]);
74
105
  Reflect.set(r, "name", `${r.name} ${n.pathname}`);
75
106
  }
76
- g in r.attributes && Reflect.set(r, "name", `${r.attributes[G] ?? "unknown"} ${r.attributes[g] ?? ""}`), this.wrapped.onStart(r, t);
107
+ c in r.attributes && Reflect.set(r, "name", `${r.attributes[U] ?? "unknown"} ${r.attributes[c] ?? ""}`), this.wrapped.onStart(r, t);
77
108
  }
78
109
  async shutdown() {
79
110
  return this.wrapped.shutdown();
80
111
  }
81
112
  }
82
113
  export {
83
- k as DiagLogLevel,
84
- K as configure
114
+ er as DiagLogLevel,
115
+ q as configure
85
116
  };
package/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "stats",
22
22
  "monitoring"
23
23
  ],
24
- "version": "0.6.0",
24
+ "version": "0.7.0",
25
25
  "type": "module",
26
26
  "main": "./dist/index.cjs",
27
27
  "module": "./dist/index.js",
@@ -51,8 +51,10 @@
51
51
  "dependencies": {
52
52
  "@opentelemetry/api": "^1.9.0",
53
53
  "@opentelemetry/context-zone": "^2.0.1",
54
+ "@opentelemetry/core": "^2.0.1",
54
55
  "@opentelemetry/exporter-trace-otlp-http": "^0.202.0",
55
56
  "@opentelemetry/instrumentation": "^0.202.0",
57
+ "@opentelemetry/otlp-exporter-base": "^0.203.0",
56
58
  "@opentelemetry/resources": "^2.0.1",
57
59
  "@pydantic/logfire-api": "*"
58
60
  },