Skip to content

Commit c4b375f

Browse files
committed
fix(openapi): work around insane downstream behavior of setting window in node.js in certain cases
1 parent d02a6b8 commit c4b375f

File tree

3 files changed

+30
-18
lines changed

3 files changed

+30
-18
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
"@opentelemetry/api": "^1.9.0",
6363
"@opentelemetry/exporter-prometheus": "^0.52.0",
6464
"@opentelemetry/instrumentation-dns": "^0.37.0",
65-
"@opentelemetry/instrumentation-express": "^0.40.0",
65+
"@opentelemetry/instrumentation-express": "^0.40.1",
6666
"@opentelemetry/instrumentation-generic-pool": "^0.37.0",
6767
"@opentelemetry/instrumentation-graphql": "^0.41.0",
6868
"@opentelemetry/instrumentation-http": "^0.52.0",
@@ -71,7 +71,7 @@
7171
"@opentelemetry/instrumentation-pg": "^0.42.0",
7272
"@opentelemetry/instrumentation-pino": "^0.40.0",
7373
"@opentelemetry/instrumentation-undici": "^0.3.0",
74-
"@opentelemetry/resource-detector-container": "^0.3.10",
74+
"@opentelemetry/resource-detector-container": "^0.3.11",
7575
"@opentelemetry/resource-detector-gcp": "^0.29.10",
7676
"@opentelemetry/sdk-node": "^0.52.0",
7777
"@opentelemetry/semantic-conventions": "^1.25.0",
@@ -111,7 +111,7 @@
111111
"eslint": "^8.57.0",
112112
"eslint-config-prettier": "^9.1.0",
113113
"eslint-plugin-import": "^2.29.1",
114-
"pino-pretty": "^11.1.0",
114+
"pino-pretty": "^11.2.0",
115115
"pinst": "^3.0.0",
116116
"supertest": "^7.0.0",
117117
"ts-node": "^10.9.2",

src/openapi.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,25 @@ export async function openApi<
6666
{} as Record<string, Record<string, unknown>>,
6767
);
6868

69+
// This is nuts, but there are testing frameworks or some other things
70+
// that seem to set window in Node. The OpenAPI infra will fail under that
71+
// circumstance.
72+
const window = globalThis.window;
73+
if (window) {
74+
delete (globalThis as { window: unknown }).window;
75+
}
76+
6977
app.locals.openApiSpecification = await new OpenAPIFramework({ apiDoc: apiSpec })
7078
.initialize({ visitApi() {} })
7179
.then((docs) => docs.apiDoc)
7280
.catch((error) => {
7381
app.locals.logger.error(error, 'Failed to parse and load OpenAPI spec');
7482
});
7583

84+
if (window) {
85+
(globalThis as { window: unknown }).window = window;
86+
};
87+
7688
const defaultOptions: OAPIOpts = {
7789
apiSpec,
7890
ignoreUndocumented: true,

yarn.lock

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -754,7 +754,7 @@ __metadata:
754754
"@opentelemetry/api": ^1.9.0
755755
"@opentelemetry/exporter-prometheus": ^0.52.0
756756
"@opentelemetry/instrumentation-dns": ^0.37.0
757-
"@opentelemetry/instrumentation-express": ^0.40.0
757+
"@opentelemetry/instrumentation-express": ^0.40.1
758758
"@opentelemetry/instrumentation-generic-pool": ^0.37.0
759759
"@opentelemetry/instrumentation-graphql": ^0.41.0
760760
"@opentelemetry/instrumentation-http": ^0.52.0
@@ -763,7 +763,7 @@ __metadata:
763763
"@opentelemetry/instrumentation-pg": ^0.42.0
764764
"@opentelemetry/instrumentation-pino": ^0.40.0
765765
"@opentelemetry/instrumentation-undici": ^0.3.0
766-
"@opentelemetry/resource-detector-container": ^0.3.10
766+
"@opentelemetry/resource-detector-container": ^0.3.11
767767
"@opentelemetry/resource-detector-gcp": ^0.29.10
768768
"@opentelemetry/sdk-node": ^0.52.0
769769
"@opentelemetry/semantic-conventions": ^1.25.0
@@ -796,7 +796,7 @@ __metadata:
796796
lodash: ^4.17.21
797797
minimist: ^1.2.8
798798
pino: ^9.1.0
799-
pino-pretty: ^11.1.0
799+
pino-pretty: ^11.2.0
800800
pinst: ^3.0.0
801801
read-pkg-up: ^7.0.1
802802
request-ip: ^3.3.0
@@ -931,16 +931,16 @@ __metadata:
931931
languageName: node
932932
linkType: hard
933933

934-
"@opentelemetry/instrumentation-express@npm:^0.40.0":
935-
version: 0.40.0
936-
resolution: "@opentelemetry/instrumentation-express@npm:0.40.0"
934+
"@opentelemetry/instrumentation-express@npm:^0.40.1":
935+
version: 0.40.1
936+
resolution: "@opentelemetry/instrumentation-express@npm:0.40.1"
937937
dependencies:
938938
"@opentelemetry/core": ^1.8.0
939939
"@opentelemetry/instrumentation": ^0.52.0
940940
"@opentelemetry/semantic-conventions": ^1.22.0
941941
peerDependencies:
942942
"@opentelemetry/api": ^1.3.0
943-
checksum: 4bc398ac1237608eb7d308277ef9e8872275b21f68565c6514596fb9071623d730107af2ec4ca1a83407a21f254f2ed3362d1f251dc8ec9cd7c4d1883ed98bfd
943+
checksum: 6634182e7d02c3afa73bb01277a1bbaf6dace104cda74b29dad5515d624b6bdb1846b8bf038fa4cf6009091bee6f4b3dbb01bb8b01d022d0c9e158b4440ae586
944944
languageName: node
945945
linkType: hard
946946

@@ -1131,15 +1131,15 @@ __metadata:
11311131
languageName: node
11321132
linkType: hard
11331133

1134-
"@opentelemetry/resource-detector-container@npm:^0.3.10":
1135-
version: 0.3.10
1136-
resolution: "@opentelemetry/resource-detector-container@npm:0.3.10"
1134+
"@opentelemetry/resource-detector-container@npm:^0.3.11":
1135+
version: 0.3.11
1136+
resolution: "@opentelemetry/resource-detector-container@npm:0.3.11"
11371137
dependencies:
11381138
"@opentelemetry/resources": ^1.0.0
11391139
"@opentelemetry/semantic-conventions": ^1.22.0
11401140
peerDependencies:
11411141
"@opentelemetry/api": ^1.0.0
1142-
checksum: 2e169693f5fd3fa412db89780837991cdf05a80b4e629c6d8f44089eef6733ceca0e43d7c240a93448651e086a736cdba55d45c3fe4f533efa91a0c619628ac3
1142+
checksum: 900c4f2466899a8a03613b3b6216e2954e8f65232c679dac208d08bcd755bd5c3c2473f61fd265b0b42531bee7d6aae83e96e47e3ebd02d2f5960fef2f340ca3
11431143
languageName: node
11441144
linkType: hard
11451145

@@ -6259,9 +6259,9 @@ __metadata:
62596259
languageName: node
62606260
linkType: hard
62616261

6262-
"pino-pretty@npm:^11.1.0":
6263-
version: 11.1.0
6264-
resolution: "pino-pretty@npm:11.1.0"
6262+
"pino-pretty@npm:^11.2.0":
6263+
version: 11.2.0
6264+
resolution: "pino-pretty@npm:11.2.0"
62656265
dependencies:
62666266
colorette: ^2.0.7
62676267
dateformat: ^4.6.3
@@ -6279,7 +6279,7 @@ __metadata:
62796279
strip-json-comments: ^3.1.1
62806280
bin:
62816281
pino-pretty: bin.js
6282-
checksum: 6f76de3ea0397f3dab7a12ad05fa5224783c0813076daec319b43e07b5c70d006212204ff338f74cdc108a7b427b2e1cf821fd53e2a10d607747c7caf436b538
6282+
checksum: 158eae8f214c0cc03b1dd0e51516aaa2ba4ba392039310a5a1ff3e7ac5050533f8eaee4dcf3f74d7f6c7b3479ecc802a8ab13f2f12c96161255f99f12ce282e2
62836283
languageName: node
62846284
linkType: hard
62856285

0 commit comments

Comments
 (0)