1.10.0
🚀 Features
- feat(api): integrate the Logs API into
@opentelemetry/api#4862 @hectorhdzg - feat(api): add imperative
context.attach()for setting context across callback boundaries thatwith()cannot wrap. #6845 @pichlermarcattach()returns aTokenwhosedispose()method restores the previous context. Usetoken.dispose()to detach.attachis an optional method on theContextManagerinterface; when the active context manager does not implement it,context.attach()logs a warning and returns a no-op token.
- feat(api): add
AnyValuetype (of typeunknown) and extendAttributestype values to useAnyValue#6780 @trentm- This is part of supporting OTEP 4485.
- This is a breaking change for SDK implementations, in that they may need to support more attribute types for any APIs that accept
AttributesorAnyValue. Implementors should refer to the OTEP 4485 link above for "MUST / SHOULD" requirements for complex attributes handling. See also the attributes-handling utilities provided by@opentelemetry/coreto help. For example,cleanSimpleAttributes()can be used to limit user-provided attributes to the set of value types supported in earlier@opentelemetry/apiversions. - This change is typically not a breaking change for users of
@opentelemetry/api. There is one possible breaking case: If a TypeScript user was using theAttributestype in their own code and using TypeScript Narrowing to reduce an attribute value to an expected type (example here). It is expected that this usage should be rare and, likely, limited to SDK implementations, if at all. (If this impacted your code, please let us know.) - Note for users of attributes: Simple attributes SHOULD be used whenever possible. Instrumentations SHOULD assume that backends do not index individual properties of complex attributes, that querying or aggregating on such properties is inefficient and complicated, and that reporting complex attributes carries higher performance overhead.
🐛 Bug Fixes
- fix(api): cap tracestate list-members and total length in the deprecated
TraceState.set()so it stays in step withTraceStatefrom@opentelemetry/core#6964 @Zuhef - fix: resolve the ESM build through the
defaultexport condition instead ofimport, so a resolver that activates neitherimportnorrequirestill finds an entry point #7132 @overbalance
📚 Documentation
- docs(api): complete
@sinceannotations for the public API #7023 @nabeelamjadsheikh- Adds the three missing exported-type annotations and the member-level annotations for methods and properties introduced after their enclosing type.
- Corrects
Attributes,AttributeValueandTracerOptionsfrom1.3.0to1.1.0; all three were already importable in 1.1.0 via wildcard re-export.
🏠 Internal
- build: migrate the package build from
tsctotsdown, emitting dual CJS/ESM output from a singledist/directory #6293 @overbalance- The public entry points are unchanged:
@opentelemetry/apiand@opentelemetry/api/experimental. This package already declared anexportsmap, so deep imports such as@opentelemetry/api/build/src/...were rejected before this change and continue to be. - The emitted files moved out of
build/src(CJS),build/esmandbuild/esnext(ESM) intodist/, using.cjs/.mjsextensions with matching.d.cts/.d.mtsdeclarations. The non-standardesnextcondition has been dropped in favour of the standardimport/requireconditions.
- The public entry points are unchanged:
- perf(api): add getGlobal fast-path #6956 @legendecas
- chore: remove the redundant
modulefield frompackage.json; bundlers resolve the ESM build through theexportsmap #7130 @overbalance