baggage-impl.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright The OpenTelemetry Authors
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * https://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. export class BaggageImpl {
  17. constructor(entries) {
  18. this._entries = entries ? new Map(entries) : new Map();
  19. }
  20. getEntry(key) {
  21. const entry = this._entries.get(key);
  22. if (!entry) {
  23. return undefined;
  24. }
  25. return Object.assign({}, entry);
  26. }
  27. getAllEntries() {
  28. return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);
  29. }
  30. setEntry(key, entry) {
  31. const newBaggage = new BaggageImpl(this._entries);
  32. newBaggage._entries.set(key, entry);
  33. return newBaggage;
  34. }
  35. removeEntry(key) {
  36. const newBaggage = new BaggageImpl(this._entries);
  37. newBaggage._entries.delete(key);
  38. return newBaggage;
  39. }
  40. removeEntries(...keys) {
  41. const newBaggage = new BaggageImpl(this._entries);
  42. for (const key of keys) {
  43. newBaggage._entries.delete(key);
  44. }
  45. return newBaggage;
  46. }
  47. clear() {
  48. return new BaggageImpl();
  49. }
  50. }
  51. //# sourceMappingURL=baggage-impl.js.map