Skip to content

Commit 36b5b5f

Browse files
committed
fix: polyfill promise with resolvers
1 parent d86e3e1 commit 36b5b5f

File tree

4 files changed

+38
-0
lines changed

4 files changed

+38
-0
lines changed

src/router.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import './utils/promise-with-resolvers'
2+
13
import { createRouter } from '@tanstack/react-router'
24
import { setupRouterSsrQueryIntegration } from '@tanstack/react-router-ssr-query'
35
import { routeTree } from './routeTree.gen'

src/server.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import './utils/promise-with-resolvers'
12
import './instrument.server.mjs'
23

34
import { wrapFetchWithSentry } from '@sentry/tanstackstart-react'

src/start.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import './utils/promise-with-resolvers'
2+
13
import {
24
sentryGlobalFunctionMiddleware,
35
sentryGlobalRequestMiddleware,
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
declare global {
2+
interface PromiseConstructor {
3+
withResolvers?<T>(): {
4+
promise: Promise<T>
5+
reject: (reason?: unknown) => void
6+
resolve: (value: T | PromiseLike<T>) => void
7+
}
8+
}
9+
}
10+
11+
if (typeof Promise.withResolvers !== 'function') {
12+
Object.defineProperty(Promise, 'withResolvers', {
13+
configurable: true,
14+
value: function withResolvers<T>() {
15+
let resolve!: (value: T | PromiseLike<T>) => void
16+
let reject!: (reason?: unknown) => void
17+
18+
const promise = new Promise<T>((nextResolve, nextReject) => {
19+
resolve = nextResolve
20+
reject = nextReject
21+
})
22+
23+
return {
24+
promise,
25+
reject,
26+
resolve,
27+
}
28+
},
29+
writable: true,
30+
})
31+
}
32+
33+
export {}

0 commit comments

Comments
 (0)