From e65ff545fe18f453c61208864d77b2b58ee6d487 Mon Sep 17 00:00:00 2001
From: Marten Hennoch <mhennoch@splunk.com>
Date: Mon, 9 Nov 2020 12:35:37 +0200
Subject: [PATCH 1/2] fix(plugin-document-load): check if getEntriesByType is
 available before using it

---
 .../src/documentLoad.ts                       |  4 +-
 .../test/documentLoad.test.ts                 | 51 +++++++++++++------
 2 files changed, 38 insertions(+), 17 deletions(-)

diff --git a/plugins/web/opentelemetry-plugin-document-load/src/documentLoad.ts b/plugins/web/opentelemetry-plugin-document-load/src/documentLoad.ts
index 7becf0a299..2cd3242051 100644
--- a/plugins/web/opentelemetry-plugin-document-load/src/documentLoad.ts
+++ b/plugins/web/opentelemetry-plugin-document-load/src/documentLoad.ts
@@ -73,7 +73,7 @@ export class DocumentLoad extends BasePlugin<unknown> {
    * @param rootSpan
    */
   private _addResourcesSpans(rootSpan: Span): void {
-    const resources: PerformanceResourceTiming[] = otperformance.getEntriesByType(
+    const resources: PerformanceResourceTiming[] = otperformance.getEntriesByType?.(
       'resource'
     ) as PerformanceResourceTiming[];
     if (resources) {
@@ -163,7 +163,7 @@ export class DocumentLoad extends BasePlugin<unknown> {
    */
   private _getEntries() {
     const entries: PerformanceEntries = {};
-    const performanceNavigationTiming = (otperformance.getEntriesByType(
+    const performanceNavigationTiming = (otperformance.getEntriesByType?.(
       'navigation'
     )[0] as unknown) as PerformanceEntries;
 
diff --git a/plugins/web/opentelemetry-plugin-document-load/test/documentLoad.test.ts b/plugins/web/opentelemetry-plugin-document-load/test/documentLoad.test.ts
index 6e2ce8ebf7..609cda203a 100644
--- a/plugins/web/opentelemetry-plugin-document-load/test/documentLoad.test.ts
+++ b/plugins/web/opentelemetry-plugin-document-load/test/documentLoad.test.ts
@@ -511,21 +511,7 @@ describe('DocumentLoad Plugin', () => {
     });
   });
 
-  describe('when navigation entries types are NOT available then fallback to "performance.timing"', () => {
-    let spyEntries: any;
-    beforeEach(() => {
-      spyEntries = sinon.stub(window.performance, 'getEntriesByType');
-      spyEntries.withArgs('navigation').returns([]);
-      spyEntries.withArgs('resource').returns([]);
-      Object.defineProperty(window.performance, 'timing', {
-        writable: true,
-        value: entriesFallback,
-      });
-    });
-    afterEach(() => {
-      spyEntries.restore();
-    });
-
+  function shouldExportCorrectSpan() {
     it('should export correct span with events', done => {
       const spyOnEnd = sinon.spy(dummyExporter, 'export');
       plugin.enable(moduleExports, provider, logger, config);
@@ -557,6 +543,41 @@ describe('DocumentLoad Plugin', () => {
         done();
       });
     });
+  }
+
+  describe('when navigation entries types are NOT available then fallback to "performance.timing"', () => {
+    let spyEntries: any;
+    beforeEach(() => {
+      spyEntries = sinon.stub(window.performance, 'getEntriesByType');
+      spyEntries.withArgs('navigation').returns([]);
+      spyEntries.withArgs('resource').returns([]);
+
+      Object.defineProperty(window.performance, 'timing', {
+        writable: true,
+        value: entriesFallback,
+      });
+    });
+    afterEach(() => {
+      spyEntries.restore();
+    });
+
+    shouldExportCorrectSpan();
+  });
+
+  describe('when getEntriesByType is not defined then fallback to "performance.timing"', () => {
+    beforeEach(() => {
+      Object.defineProperty(window.performance, 'getEntriesByType', {
+        writable: true,
+        value: undefined,
+      });
+
+      Object.defineProperty(window.performance, 'timing', {
+        writable: true,
+        value: entriesFallback,
+      });
+    });
+
+    shouldExportCorrectSpan();
   });
 
   describe('when navigation entries types and "performance.timing" are NOT available', () => {

From 6cae7c686c840135a3eef6088c02f85081cfbf2b Mon Sep 17 00:00:00 2001
From: Marten Hennoch <mhennoch@splunk.com>
Date: Thu, 10 Dec 2020 14:18:20 +0200
Subject: [PATCH 2/2] fix: lint

---
 .../node/opentelemetry-instrumentation-graphql/src/types.ts   | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/plugins/node/opentelemetry-instrumentation-graphql/src/types.ts b/plugins/node/opentelemetry-instrumentation-graphql/src/types.ts
index 9c157e5d92..c3c78b3653 100644
--- a/plugins/node/opentelemetry-instrumentation-graphql/src/types.ts
+++ b/plugins/node/opentelemetry-instrumentation-graphql/src/types.ts
@@ -63,9 +63,7 @@ export interface GraphQLInstrumentationConfig {
 /**
  * Merged and parsed config of default instrumentation config and GraphQL
  */
-export type GraphQLInstrumentationParsedConfig = Required<
-  GraphQLInstrumentationConfig
-> &
+export type GraphQLInstrumentationParsedConfig = Required<GraphQLInstrumentationConfig> &
   InstrumentationConfig;
 
 export type executeFunctionWithObj = (